MySQL-də verilənlərin tipi

"MySQL"-də cədvəl yaradarkən hər bir sütun üçün verilənlərin tipini təyin etmək lazımdır. Sütunlar üçün düzgün verilənlər tipinin seçilməsi verilənlər bazasının ilkin layihələndirilməsinin bir hissəsidir. Verilənlərin tipi məlumatlardan düzgün, təyinatı üzrə istifadə edilməsinə zəmanət verir. Həmçinin sütunlar üçün düzgün təyin edilmiş verilənlər tipi "MySQL"-ə sorğuları optimallaşdırmağa və diskin yerindən səmərəli istifadəyə imkan verir.

Bu dərsdə "MySQL"-də əsas verilənlər tipi haqqında məlumat, həmçinin bu və ya digər verilənlər tipindən hansı hallarda istifadə edilməsi barədə tövsiyələr veriləcək.

Ədədi verilənlər tipləri

Ədədlərin saxlanılması üçün istifadə olunur. MySQL tam ədədlər, sürüşkən nöqtəli ədədlər və sabit nöqtəli ədədlər kimi verilənlər tipini dəstəkləyir.

Tam ədəd tipləri

Tam ədəd tipləri aşağıdakılardır:

  • TINYINT
  • SMALLINT
  • MEDIUMINT
  • INT
  • BIGINT

Tam ədədlər işarəli (SIGNED) və işarəsiz (UNSIGNED) ola bilərlər. SIGNED atributundan istifadə edilməsi sütunda həm müsbət, həm də mənfi ədədləri saxlamağa imkan verir. UNSIGNED atributu isə sütunda yalnız müsbət ədədləri saxlamağa imkan verir, bu halda dəstəklənən diapazon iki dəfə artır. UNSIGNED atributundan istifadə aşağıdakı hallarda faydalıdır: məsələn, məhsulların sayı, yaxud dərslərin sayı mənfi ədəd ola bilməz.

Sürüşkən nöqtəli ədəd tipləri

Sürüşkən nöqtəli ədəd tipləri aşağıdakılardır:

  • FLOAT
  • DOUBLE

Bu verilənlər tipləri təqribi qiymətləri saxlamaq üçün istifadə olunur.

MySQL 8.0.17 versiyasınadək FLOATDOUBLE verilənlər tipləri UNSIGNED diapazonunu dəstəkləyirdilər, lakin o, tam ədədlərdə olduğu kimi deyil, fərqli işləyirdi. UNSIGNED diapazonu sadəcə sütunda mənfi ədədləri saxlamağı qadağan edirdi, maksimum qiymət isə artmırdı. MySQL 8.0.17 versiyasından etibarən sürüşkən nöqtəli ədəd tipləri üçün UNSIGNED atributundan istifadə tövsiyə olunmur və köhnəlmiş hesab edilir.

Sabit nöqtəli ədəd tipləri

Bu verilənlər tipi verilmiş dəqiqliyi saxlamaq üçün istifadə olunur. Ona görə bu tip dəqiqliyin vacib olduğu hallar üçün (məsələn, pul məlumatları) lazımdır.

"MySQL"-də sabit nöqtəli ədəd tiplərini saxlamaq üçün aşağıdakı tiplərdən istifadə olunur:

  • DECIMAL
  • NUMERIC

"MySQL"-də "NUMERIC" tipi "DECIMAL"-ın sinonimidir. Hər iki tipdən istifadə etmək mümkündür, nəticə eyni olacaq. Bu tip təyin edilmiş sütunlarda 65-dək rəqəmdən

Verilənlərin tipi Diskdə tutduğu yer (bayt) Dəstəklədiyi diapazon Təsvir
TINYINT 1 -128-dən 127-dək, 0-dan 255-dək

TINYINT - 128-dən 127-dək, TINYINT UNSIGNED isə 0-dan 255-dək olan diapazonda istənilən tam ədədi saxlaya bilir

SMALLINT 2 -32768-dən 32767-dək, 0-dan 65535-dək SMALLINT - 32768-dən 32767-dək, SMALLINT UNSIGNED isə 0-dan 65535-dək olan diapazonda istənilən tam ədədi saxlaya bilir
MEDIUMINT 3 -8388608-dən 8388608-dək, 0-dan 16777215-dək MEDIUMINT - 8388608-dən 8388608-dək, MEDIUMINT
UNSIGNED isə 0-dan 16777215-dək olan diapazonda istənilən tam ədədi saxlaya bilir
INT, INTEGER 4 -2147683648-dən 2147683648-dək, 0-dan 4294967295-dək INT - 2147683648-dən 2147683648-dək, INT UNSIGNED isə 0-dan 4294967295-dək olan diapazonda istənilən tam ədədi saxlaya bilir
BIGINT 8 -263-dən 263-1-dək, 0-dan 264-dək BIGINT - 263-dən 263-1-dək, BIGINT UNSIGNED isə 0-dan 264-dək olan diapazonda istənilən  tam ədədi saxlaya bilir
DECIMAL Sütunda saxlanılan qiymətdən asılıdır parametrlərdən asılıdır Onluq kəsr ədədlərinin saxlanılması üçün istifadə edilir. Məsələn, salary DECIMAL(5,2) nümunəsində 5 ədədin dəqiqliyi (precision), 2 isə miqyası (scale) anlamındadır. Daha sadə dillə izah etsək, bu tipdə maksimal olaraq 5 rəqəmdən və vergüldən sonra maksimal olaraq 2 rəqəmdən ibarət olan onluq kəsr ədədlər saxlanıla bilər. Baxdığımız nümunədə sütunda -999.99-dan 999.99-dək olan diapazonda ədəd saxlanıla bilər. Bu zaman vergüldən qabaq olan rəqəmlərin sayı p – s qaydasında hesablanır, yəni DECIMAL(5,2) tipində vergüldən qabaq yalnız 3 rəqəm yazıla bilər
FLOAT 4 -3.402823466E+38-dən -1.175494351E-38-dək, 1.175494351E-38-dən 3.402823466E+38-dək Tək dəqiqlikli kəsr ədədləri saxlaya bilir
DOUBLE 8  -1.7976931348623157E+308-dən -2.2250738585072014E-308-dək, 2.2250738585072014E-308-dən 1.7976931348623157E+308-dək İkiqat dəqiqlikli kəsr ədədləri saxlaya bilir

Sətir verilənlər tipləri

Verilənlərin tipi Diskdə tutduğu yer (bayt) Təsvir
CHAR 255 Məsələn, CHAR(10) - 10 simvoldan ibarət sətrdir. Əgər cədvəldə bu sütunda 6 simvoldan ibarət sətir saxlanılırsa, onda sətrə 4 boşluq simvolu əlavə edilir və yekunda 10 simvol alınır. Məsələn, uzunluğu həmişə eyni olan heşlərin qiymətinin saxlanılmasında istifadə edilə bilər
VARCHAR 65535 CHAR tipindən fərqli olaraq cədvəlin sütununda VARCHAR tipində saxlanılan sətir lazım olduğu qədər disk yeri tutur
TINYBLOB, TINYTEXT 255 Cədvəlin sütununda sətirləri saxlayır
ENUM 1-2  

Tarix və zaman tipləri

Verilənlərin tipi Diskdə tutduğu yer (bayt) Təsvir
DATE 3 bayt 1 yanvar 1000-ci il tarixindən 31 dekabr 9999-cu ilədək olan tarixi saxlayır. Cədvəlin sütununda tarixi saxlamaq üçün YYYY-MM-DD formatından istifadə edilir
TIME 3 '-838:59:59'-dən '838:59:59'-dək olan zamanı saxlayır. Cədvəlin sütununda zamanı saxlamaq üçün HH:MM:SS formatından istifadə edilir
DATETIME 8 Tarix və zamanı saxlayır. '1000-01-01 00:00:00'-dən '9999-12-31 23:59:59'-dək olan diapazonu dəstəkləyir. Cədvəlin sütununda tarix və zamanı saxlamaq üçün YYYY-MM-DD HH:MM:SS formatından istifadə olunur
TIMESTAMP 4 Həmçinin cədvəlin sütununda tarix və zamanı saxlayır. '1970-01-01 00:00:01' UTC-dən '2038-01-19 03:14:07' UTC-yədək olan diapazonu dəstəkləyir
YEAR 1 Cədvəlin sütununda ili saxlayır. 1901-dən 2155-ci ilədək olan diapazonu dəstəkləyir

Sütunun tipi olmasaydı istənilən məlumatı ora daxil etmək olardı, məsələn: sətir, ədəd, pul və s. Belə olan halda verilənlərin daxil edilməsi və sorğusu çətinləşər və ya heç mümkün olmazdı. Beləliklə, verilənlər tiplərini təyin etməklə cədvələ daxil edilən məlumatlara məhdudiyyət qoyulur.

Cədvəlin strukutunun formalaşdırılması üçün sütun seçimi zamanı bu və ya digər verilənlər tipinin diskdə tutduğu yeri diqqətə almaq lazımdır: məsələn, əgər sütundakı qiymətin heç vaxt 100 ədədini ötməyəcəyinə əminsinizsə, o zaman TINYINT tipini seçin. Yaxud sütunda yalnız müsbət tam ədədləri saxlamaq nəzərdə tutulursa, o zaman UNSIGNED atributunun tətbiqi qiymət diapazonunu iki dəfə artımağa imkan verir.

Sütunların parametrləri

Parametrlərin köməyilə sütunların "davranışını" tənzimləmək olar. Aşağıdakı parametrlərdən istifadə edə bilərik:

PRIMARY_KEY

PRIMARY_KEY parametri cədvəldə başlıca açarı təyin edir. Başlıca açarın qiyməti unikal olmalıdır və cədvəldə təkrarlanmamalıdır. Bundan başqa, PRIMARY_KEY parametri təyin edilmiş sütun NULL qiymətini ala bilməz. Yuxarıda users cədvəlinin yaradılması vaxtı PRIMARY_KEY parametrindən istifadə etmişdik.

AUTO_INCREMENT

Cədvəldə başlıca açar təyin edilmiş sütunun tipi bir çox hallarda ədədi verilənlər tipi (bu tip digər tiplərlə müqayisədə daha sürətli emal edilir) olur və cədvələ hər dəfə yeni sətir əlavə edildikdə həmin sütunun qiymətinin avtomatik olaraq artması üçün AUTO_INCREMENT parametrindən istifadə edilir. Burda users cədvəlinin yaradılması vaxtı AUTO_INCREMENT parametrindən də istifadə etmişdik.

UNIQUE

UNIQUE parametri təyin edilmiş sütun yalnız unikal qiymət ala bilər. Burda users cədvəlinin yaradılması vaxtı, həmçinin UNIQUE parametrindən istifadə edilib.

NULL və NOT NULL

NULL parametri onu bildirir ki, sütun NULL qiymətini ala bilər.

NOT NULL parametri isə onu bildirir ki, sütun NULL qiymətini ala bilməz.

Məlumat üçün bildirim ki, başlıca açar (PRIMARY KEY) NULL qiymətini ala bilməz.

DEFAULT

DEFAULT parametri sütun üçün başlanğıc qiyməti təyin edir. Əgər INSERT operatoru vasitəsilə cədvələ məlumat əlavə etdikdə sütunun qiyməti göstərilməyibsə, həmin sütun üçün avtomatik olaraq DEFAULT parametri ilə təyin edilmiş başlanğıc qiymət istifadə ediləcək.

0

Şərh yazmaq üçün hesabınıza daxil olun.