- SQL'de oluşturmuş olduğumuz tablolar içinde yer alan her bir kolonda eşsiz şekilde, yani benzersiz birbirinden farklı veriler bulunmasını isteyebiliriz.
- Bunun için bu tür alanlar tanımlanırken Unique Key Contsraint tanımı yapılır.
- Unique Key Contsraint tanımının Primary Key den farkı Unique Key'in bir tabloda birden fazla olmasıdır, Primary Key ise tabloda sadece 1 adet olabilir. NULL veriler de içerebilir.
- Ayrıca tablolarımızı oluştururken UNIQUE kısıtlaması yapabildiğimiz gibi, daha sonradan var olan tablolar üzerinde de UNIQUE kısıtlaması yapabiliriz.
- Bir tabloda birden çok UNIQUE sınırlaması getirilebilinir fakat sadece bir tane PRIMARY KEY sınırlaması getirilebilinir.
Yeni bir tablo oluşturulmasında Unique Key Contsraint Kullanımı:
CREATE TABLE Yazarlar
(
No int NOT NULL UNIQUE,
Soyad varchar(255) NOT NULL,
Ad varchar(255),
Yayinevi varchar(255)
)
Yeni bir tablo oluşturulmasında birden fazla alanda Unique Key Contsraint Kullanımı:
Var olan tabloda sonradan ekleme yaparken Unique ve ALTER Kullanımı:
Birden fazla alanda ekleme yaparken Unique ve ALTER Kullanımı:
UNIQUE alanı normale çevirmek istersek DROP ifadesini kullanmamız gerekir:
Birden fazla 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 CONSTRAINT ifadesinden sonra sadece alana adını yazabiliriz.
CREATE TABLE Yazarlar
(
id int NOT NULL,
adi_soyadi varchar(20) NOT NULL ,
Yayinevi varchar(20),
CONSTRAINT id_no UNIQUE (id,adi_soyadi)
)
Var olan tabloda sonradan ekleme yaparken Unique ve ALTER Kullanımı:
ALTER TABLE Yazarlar
ADD UNIQUE (No)
Birden fazla alanda ekleme yaparken Unique ve ALTER Kullanımı:
ALTER TABLE Yazarlar
ADD CONSTRAINT id_no UNIQUE (id,adi_soyadi)
UNIQUE alanı normale çevirmek istersek DROP ifadesini kullanmamız gerekir:
ALTER TABLE Yazarlar
DROP CONSTRAINT id_no
Birden fazla 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 CONSTRAINT ifadesinden sonra sadece alana adını yazabiliriz.