ENUM and SET data types
ENUM və SET-i oxuyarkən xoşuma gəldi. Maraqlı gəldi deyə bilərik hətta 🙂
Dərhal işə qoyulsaq və bir table yaratsaq:
create table employees ( name varchar(25), occupation ENUM ('President','Sales Manager','System Adminstrator') );
Və dərhal bir insert etsək:
insert into employees (name,occupation) values('Shahriyar','President');
Hər şey uğurla gedir və output:
indi isə sorğunu biraz dəyişək və:
insert into employees (name,occupation) values('Ehmed','Finance');
Output isə dəhşətlidir 🙂 :
Səbəb-Çünki “Finance” yazısı table-ı yaradarkən ENUM listin içində deyildir. Yəni insert edərkən yalniz ‘President’,’Sales Manager’,’System Adminstrator’-a icazə var. Eyni error :
insert into employees (name,occupation) values('Ehmed','');
Yazarkən de çıxır. Yəni ENUM sütununa ne səhv məlumat, nə də ki boş (NULL) məlumat daxil etmək mümkün deyil.
ENUM haqqında digər maraqlı bir şey isə-“ENUM sütun definition gördüyünüz kimi string-lərlər verilir.Ancaq daxilen MySQL bu məlumatları integer olaraq saxlayır. Yəni, ‘President’=1 ‘Sales Manager’=2 ‘System Adminstrator’=3 “.
Bu məlumatı yadda saxlayırıq və yeni bir table yaradırıq:
create table age_list( age int, list_of ENUM('0','1','2','3','4') );
Yuxarıda dediyimiz tərifə əsasən nəticə çıxardırıq ki: ‘0’=1, ‘1’=2, ‘2’=3, ‘3’=4, ‘4’=5.
indi isə 1ci insert-imizi edək:
insert into age_list (age,list_of) values (18,'3');
Output bizim gözlədiyimiz kimidir:
Və super ikinci insert-imiz:
insert into age_list (age,list_of) values (18,3);
Output bizim gözlədiyimiz kimi deyil malesef 🙂 :
Məncə anlaşıldı nəyə görə belə olduğu 🙂
O ki qaldı SET-ə onda biraz sadəlik hökm sürür.
Bir table yaradaq:
create table show_xestelik( xestelikler SET('olumcul','yungulvari','orta-agir') );
Gülməyə ehtiyac var ağlıma indiki halda ancaq bu gəldi 🙂
Daha sonra 3 ədəd insert verək:
insert into show_xestelik (xestelikler) values(''); insert into show_xestelik (xestelikler) values('olumcul'); insert into show_xestelik (xestelikler) values('yungulvari,orta-agir');
SET-də boş(NULL) məlumat daxil etmək olurmuş. Sübutumuz:
Boş məlumatın yeri görsənir 😉 Lakin SET-də də list-də olmayan məlumat daxil edildikdə ENUM-dakı kimi error verir.
Təşəkkürlər.