SQL UNIQUE Kullanımı
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.