CodeGym /Kurslar /SQL SELF /Rəqəmsal data tipləri: INTEGER, NUME...

Rəqəmsal data tipləri: INTEGER, NUMERIC, FLOAT

SQL SELF
Səviyyə, Dərs
Mövcuddur

Bu gün PostgreSQL-də rəqəmsal data tipləri barədə danışacağıq. Əgər heç vaxt "42" kimi bir rəqəmi, maliyyə hesablamalarını və ya bəlkə də millisekundları necə saxlamaq barədə düşünmüsənsə, düz yerə gəlmisən. Gəlin baxaq, hansı tip hansı işə yarayır ki, sən və dataların rahat olsun.

PostgreSQL-də rəqəmsal data tipləri əsasən üç qrupa bölünür:

  1. Tam ədədlər (INTEGER): vergül hissəsi olmayan ədədləri saxlamaq üçün. Məsələn, 1, 42, -7 kimi adi ədədlər.
  2. Dəqiq ədədlər (NUMERIC): vergüldən sonra sabit sayda rəqəmlə ədədləri saxlamaq üçün. Maliyyə hesablamalarında çox vacibdir, çünki dəqiqlik bəzən həyatdan da vacib olur.
  3. Üzən vergüllü ədədlər (REAL): çox böyük və ya çox kiçik ədədləri saxlamaq üçün. NUMERIC-dən az dəqiqdir, amma elmi hesablamalar üçün idealdır.

INTEGER tipi

INTEGER — tam ədədlər üçün data tipidir. Vergül hissəsi olmayan ədədləri saxlamaq lazım olanda istifadə olunur. PostgreSQL-də INTEGER-in üç növü var ki, müxtəlif diapazonları əhatə etsin:

  • SMALLINT: kiçik tam ədəd tipi. Diapazon: -32,768-dən 32,767-ə qədər.
  • INTEGER (və ya INT): standart tam ədəd tipi. Diapazon: -2,147,483,648-dən 2,147,483,647-ə qədər.
  • BIGINT: böyük ədədlər üçün. Diapazon: -9,223,372,036,854,775,808-dən 9,223,372,036,854,775,807-ə qədər.

Təsəvvür elə ki, bizdə students adlı bir cədvəl var, burada tələbələrin adı, yaşı və topladıqları kreditlərin (akademik balların) sayı saxlanılır:

id name age credits
1 Otto Nate 21 30
2 Maria Chi 22 45
3 Peter Val 20 60
4 Anna Song 23 50
5 Sophie Zhang 21 35

İndi sadə bir SQL-sorgusu ilə tələbələrin adını, yaşını və kreditlərini çıxaraq:

SELECT name, age, credits
FROM students;

Nəticə:

name age credits
Otto Nate 21 30
Maria Chi 22 45
Peter Val 20 60
Anna Song 23 50
Sophie Zhang 21 35

INTEGER nə vaxt istifadə olunur?

  • İdentifikatorların (id, sifariş nömrəsi və s.) saxlanması üçün.
  • Hər hansı bir şeyin miqdarını saxlamaq üçün (məsələn, anbardakı məhsul sayı, tələbə sayı və s.).

NUMERIC tipi

NUMERIC — sabit vergüllü dəqiq ədədlər üçün data tipidir. Əgər 123.456 kimi bir şeyi saxlamaq lazımdırsa və bir rəqəm səhvi sənə nüfuz və ya pul başa gələ bilərsə, NUMERIC istifadə et.

Yazılış forması: NUMERIC(precision, scale), burada:

  • precision — ümumi rəqəmlərin sayı (vergüldən əvvəl və sonra olanlar daxil).
  • scale — vergüldən sonra olan rəqəmlərin sayı.

Məsələn, NUMERIC(6, 2) maksimum 6 rəqəmli və onlardan 2-si vergüldən sonra olan ədədləri saxlamağa imkan verir.

Gəlin maliyyə tranzaksiyaları üçün bir cədvəl yaradaq:

id description amount
1 Təhsil üçün ödəniş 2345.67
2 Aylıq təqaüd 500.00
3 Laboratoriya haqqı 145.99
4 Kitabxana cəriməsi 12.75
5 Konfransa qeydiyyat 320.50

İndi tranzaksiyaların siyahısını çıxaraq:

SELECT description, amount
FROM transactions;

Nəticə:

description amount
Təhsil üçün ödəniş 2345.67
Aylıq təqaüd 500.00
Laboratoriya haqqı 145.99
Kitabxana cəriməsi 12.75
Konfransa qeydiyyat 320.50

NUMERIC nə vaxt istifadə olunur?

  • Maliyyə hesablamaları (məhsulun qiyməti, maaş və s.).
  • Dəqiq ölçülərin saxlanması (çəki, uzunluq və s.).

measurements cədvəli

id mass - REAL height - REAL
1 70.5 1.83
2 64.2 1.75
3 82.3 1.92
4 55.0 1.60

İndi dəyərləri çıxaraq:

SELECT mass, height
FROM measurements;

Nəticə:

mass height
70.5 1.83
64.2 1.75
82.3 1.92
55.0 1.60

REAL nə vaxt istifadə olunur?

  • Elmi hesablamalar (atom kütləsi, Aya qədər məsafə və s.).
  • Modeling üçün, yəni kiçik səhvlər problem deyilsə.

Rəqəmsal tiplərin müqayisəsi: nə vaxt hansını seçmək?

Data tipi Diapazon Dəqiqlik İstifadə nümunələri
SMALLINT -32,768-dən 32,767-ə qədər Tam ədədlər Kiçik ədədlər (yaş, reytinqlər və s.).
INTEGER -2,147,483,648-dən 2,147,483,647-ə qədər Tam ədədlər İdentifikatorlar, miqdarlar və s.
BIGINT -9,223,372,036,854,775,808-dən 9,223,372,036,854,775,807-ə qədər Tam ədədlər Çox böyük ədədlər.
NUMERIC precisionscale-dan asılıdır Dəqiq onluq ədədlər Maliyyə, ölçülər və s.
REAL Təxminən 6 onluq rəqəm Üzən vergül Təxmini və ya elmi datalar.
DOUBLE PRECISION Təxminən 15 onluq rəqəm Yüksək dəqiqlikli üzən vergül Elm, tədqiqat və s.

Alias-lar

PostgreSQL-də bir çox rəqəmsal tipin alias-ı (sinonimi) var — bunlar alternativ adlardır, eyni cür işləyir, amma oxunuşu və ya başqa DBMS-lərlə uyğunluğu yaxşılaşdırır.

Budur, PostgreSQL-də rəqəmsal tip alias-ları üçün qısa və rahat bələdçi:

Tam ədədlər üçün alias-lar

Alias Əsl tip Ölçü Diapazon
INT INTEGER 4 bayt −2,147,483,648-dən 2,147,483,647-ə qədər
INT4 INTEGER 4 bayt (köhnə alias)
SMALLINT SMALLINT 2 bayt −32,768-dən 32,767-ə qədər
INT2 SMALLINT 2 bayt
BIGINT BIGINT 8 bayt −9 kvintilyon-dan +9 kvintilyon-a qədər
INT8 BIGINT 8 bayt

Dəqiq ədədlər üçün alias-lar

Alias Əsl tip Təyinat
DEC NUMERIC SQL-standartına görə sinonim
DECIMAL NUMERIC Eyni şey

Üzən vergüllü ədədlər üçün alias-lar

Alias Əsl tip Dəqiqlik
FLOAT DOUBLE PRECISION ~15 rəqəm (default)
FLOAT(24) REAL ~6 rəqəm
FLOAT(53) DOUBLE PRECISION ~15 rəqəm
FLOAT8 DOUBLE PRECISION Köhnə alias
FLOAT4 REAL Köhnə alias

Tipik səhvlər

Rəqəmsal tiplərlə işləyərkən bir neçə tələyə düşmək olar:

Kifayət qədər böyük data tipi seçməmək. Əgər insanların yaşı üçün SMALLINT istifadə edirsənsə, səhv edirsən. "Matrix" filmindəki robotun yaşı milyonlarla ildi, ona görə inciməsin.

Ovucları itirmək (yuvarlaqlaşdırma zamanı). Maliyyə hesablamalarında REAL istifadə etsən, qəpiklər itə bilər. Sonra isə müştərilərin etibarını da itirərsən.

Fərqli tipləri müqayisə etmək. Əgər INTEGERREAL müqayisə etsən, üzən vergüllü ədədlərin xüsusiyyətlərinə görə gözlənilməz nəticələr ala bilərsən.

2
Tapşırıq
SQL SELF, səviyyə, dərs
Bağlanıb
Temperaturun yuvarlaqlaşdırılması
Temperaturun yuvarlaqlaşdırılması
2
Tapşırıq
SQL SELF, səviyyə, dərs
Bağlanıb
Ölçü vahidlərinin çevrilməsi (km/saat → m/saniyə)
Ölçü vahidlərinin çevrilməsi (km/saat → m/saniyə)
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION