Arxiv

Posts Tagged ‘enum’

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:
Output of query

indi isə sorğunu biraz dəyişək və:

insert into employees (name,occupation) values('Ehmed','Finance');

Output isə dəhşətlidir 🙂 :
Query output

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:
output
Və super ikinci insert-imiz:

insert into age_list (age,list_of) values (18,3);

Output bizim gözlədiyimiz kimi deyil malesef 🙂 :
output

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:
set output

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.

Kateqoriyalar: MySQL Etiketlər: , , ,