SQL UNIQUE Kullanımı
Tablomuzda bir alandaki verilerin tekrarlı olmasını istemiyorsak UNIQUE kriterini
kullanmamız gerekir. Tablo tasarımını yaparken bir alanın UNIQUE olup
olmayacağına iyi karar vermemiz gerekir. Çünkü daha sonradan ALTER komutu ile
alanın özelliklerini değiştirirken, ilgili alanda tekrarlayan kayıtlar varsa
UNIQUE değerini veremeyiz. PRIMARY KEY ile çokça karıştırılmaktadır. Aradaki
farkları sıralayacak olursak:
- Birden fazla alan tek bir PRIMARY KEY ile tanımlanabilir. Ancak PRIMARY KEY
yapısı her tabloda sadece bir tane olabilir. UNIQUE yapısı bir tabloda birden
fazla olabilir.
- PRIMARY KEY yapısı ile boş kayıtlara izin verilmez. UNIQUE yapısında boş
kayıtlara izi n verilir.
- PRIMARY KEY yapısı ile tablo üzerinde bir index tanımı oluşturulur her kaydın
benzersiz bir tanımı yapılır. Böylece kullandığınız uygulama geliştirme
ortamında (Ör: .NET) tablo üzerinde daha etkin sonuçlar elde edilebilir. UNIQUE
yapısında ise alandaki değerlerin benzersiz olup olmadığına bakılır. Birden
fazla alanda UNIQUE yapıldığında bunları bir index adıyla tanımlanmaı
sağlaabilir ancak bu sadece bir tanımladır.
UNIQUE Kullanım Biçimi
SQL Server / Oracle / MS Acess ortamlarında sadece bir alanda kullanım biçimine
örnek:
CREATE TABLE Personel
(
id int NOT NULL UNIQUE,
adi_soyadi varchar(20)
,
Sehir varchar(20)
) |
UNIQUE kriterini sadece bir alana vereceksek nasıl kullanılacağı gösterilmiştir.
MySQL ortamında sadece bir alanda kullanım biçimine örnek:
CREATE TABLE Personel
(
id int NOT NULL,
adi_soyadi varchar(20) ,
Sehir varchar(20),
UNIQUE (id)
) |
Görüldüğü gibi MySQL veritabanında işlem yapacaksanız UNIQUE ifadesini
sonradan belirtmeniz gerekmektedir.
MySQL / SQL Server / Oracle / MS Acess ortamlarında birden fazla alanda
kullanım biçimine örnek:
CREATE TABLE Personel
(
id int NOT NULL,
adi_soyadi varchar(20) NOT NULL ,
Sehir varchar(20),
CONSTRAINT id_no UNIQUE (id,adi_soyadi)
) |
Burada görüleceği üzere birden fazla alana UNIQUE değeri verirken CONSTRAINT
ifadesi ile bu işleme bir tanım giriliyor. Aslında bu tanım bizim tablomuzun
index alanını oluşturmaktadır. İndexleme sayesinde tablomuzdaki verilerin
bütülüğü daha sağlam olurken aramalarda da daha hızlı sonuçlar elde ederiz.
UNIQUE ifadesinden sonra ise ilgili alanları virgül ile ayırarak yazarız.
Yuakrıdaki örnekler hep yeni bir veritabanı oluşturuken kullanılan
örneklerdir. Ancak var olan bir veritabanında bir alanı UNIQUE yapmak istersek
ALTER yapısını kullanmamız gerekir.
MySQL / SQL Server / Oracle / MS Acess ortamlarında bir alanda kullanım
biçimine örnek:
ALTER TABLE Personel
ADD UNIQUE (id) |
MySQL / SQL Server / Oracle / MS Acess ortamlarında birden fazla alanda
kullanım biçimine örnek:
ALTER TABLE Personel
ADD
CONSTRAINT id_no
UNIQUE (id,adi_soyadi) |
Eğer UNIQUE olarak kriterlendirilmiş alanı normale çevirmek istersek DROP
ifadesini kullanmamız gerekir.
SQL Server / Oracle / MS Acess ortamlarında UNIQUE yapısını kaldırmak:
ALTER TABLE Personel
DROP
CONSTRAINT
id_no |
Burada dikkat edilmesi gereken nokta eğer çoklu alanda UNIQUE işlemi
yaptıysak, CONSTRAINT ifadesinden sonra tablomuzdaki alan adı değil,
oluşturduğumuz index adı yazılmalıdır. Eğer tek bir alanda oluşturduysak o zaman
CONSTRAINT ifadesinden sonra sadece alana adını yazabiliriz.
MySQL ortamlarında UNIQUE yapısını kaldırmak:
ALTER TABLE Personel
DROP INDEX
id_no |
MySQL yapısından silerken tek fark CONSTRAINT yerine INDEX ifadesi
kullanılır.