Archive

Posts Tagged ‘unique key’

Indexes

Avqust 10, 2011 1 şərh

index-lərin nəyə lazım olduğundan danışmayacam dünyaca məşhurdu çünki.
MySQL-də 3 tip ümumi index var:
1.PRİMARY KEY
2.UNİQUE
3.bir də non-unique index-lər.

Table yaradarkən index-ləmə
Yeni table yaradarkən index-ləmək üçün:

create table index_show(
id int not null,
firstname varchar(25) not null,
lastname varchar(25) not null,
index(id)  --id column index-lendi artiq 
);

Və daha sonra table-a baxsaq

desc index_show;

output-umuz işarələnib:
table output

Eyni zamanda onu da deyək ki eyni zamanda bir neçə sütunu index-ləmək mümkündür.Buna Composite Key deyilir.

create table index_show(
id int not null,
firstname varchar(25) not null,
lastname varchar(25) not null,
index(id,firstname,lastname)  --id column index-lendi artiq 
);

output yuxarıdakı ilə eynidir.
table output

Lakin Parallel İndex-lər şəklində yazdıqda:

create table index_show(
id int not null,
firstname varchar(25) not null,
lastname varchar(25) not null,
index(id),
index (firstname),
index(lastname)   
);

Output-da hər üç sütunun ayrı-ayrı index-ləndiyi görsənir:
table output
Səbəbini bilirəmsə arap oluyum 🙂

Gələk əsas məsələyə PRİMARY KEY(PK) və UNİQUE.
PK üçün kodumuz:

create table index_show(
id int not null,
firstname varchar(25) not null,
lastname varchar(25) not null,
primary key(id)
);

Və output olaraq da:
primary key output

PK üçün də eyni zamanda Composite Key qaydası mövcuddur və İNDEX-dən fərqli olaraq hamısı ayrı-ayrılıqda sıralanır:

create table index_show(
id int not null,
firstname varchar(25) not null,
lastname varchar(25) not null,
primary key(id,firstname,lastname)
);

Ayrılıqda sıralanmanı göstərən output:
primary key output

Lakin Paralel olaraq Primary Key verdikdə,yəni 2 və ya daha çox PK yazdıqda ERROR verir.

create table index_show(
id int not null,
firstname varchar(25) not null,
lastname varchar(25) not null,
primary key(id),
primary key (firstname)
);

ERROR:
primary key output

Səbəb bir table-da yalnız bir PK ola bilər.Əgər bu belədirsə, onda nəyə görə Composite PK yazmaq mümkündür? 🙂 Bilmirəm 🙂

Unique Key-ə gəlirik. İlk öncə onu deyim ki hər hansl NOT NULL column-a Unique vermək elə onu Primary Key kimi elan etməkdir. Sadəcə PK-da əgər column definition-da açıq şəkildə NOT NULL verilməyibsə, MySQL implicit şəkildə PK şəklində index-lənmiş column-u NOT NULL edir. Əgər bunu sınasaq:

create table index_show(
id int not null,
firstname varchar(25) not null,
lastname varchar(25) not null,
unique (id,firstname)
);

və yenə DESCRİBE versək, output olaraq yuxarıdakı məlumatın doğruluğu sübut olunar.
unique output

İndi isə sütunun birini NOT NULL digərini isə NULL olaraq saxlayaq:

create table index_show(
id int not null,
firstname varchar(25),
lastname varchar(25) not null,
unique (id,firstname)
);

Output Fərqlidir:

unique key

İndi isə paralel olaraq Unique Key verək. lakin yenə da bir sütunu NOT NULL digərini isə NULL saxlayaq:

create table index_show(
id int not null,
firstname varchar(25),
lastname varchar(25) not null,
unique (id),
unique (firstname)
);

Output yenə fərqlidir 🙂

unique paralel output

Əslində mövzunu başa düşürük amma beyinlər sulanır məncə 🙂
Təşəkkürlər. Sualımı Comment-də verəcəm.

Kateqoriyalar: MySQL Etiketlər: , , ,