MySQL
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 FLOAT
və DOUBLE
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 |
|
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.
Şərh yazmaq üçün hesabınıza daxil olun.