SQL'de Constraint (Kısıtlayıcı) ve Constraint Türleri

Constraint (Kısıtlayıcı): Veri üzerindeki mantıksal sınırlamalara kısıt adı verilir. Bu kısıtlamalar veritabanına eklenebilecek ya da bir güncellemeyle değiştirilebilecek veri değerlerini sınırlar. Kısıtlamalar, tabloların tanımlanmasıyla beraber oluşan öğelerdir. Kısıtlamalar ile Rule (kural) ve Default’ların (varsayılan) yapabileceği işler yapılabilir. 

Constraintler tablo oluştururken CREATE TABLE komutuyla tanımlanabilir. 
Tablo oluşturulmuşsa ALTER TABLE komutuyla bu işlem gerçekleşir. 

Constraint Türleri

Primary Key Constraint: Birincil anahtar kısıtlayıcı anlamındadır. Her kaydın farklı olması demektir. Her tablonun en fazla 1 adet Primary Key Constraint’i olabilir.

Unique Constraint: Tekil alan kısıtlayıcı anlamındadır. Birincil anahtar olan ve tablodaki diğer alanlar içinde aynı içeriğe sahip verilerin olmaması için Unique Constraint tanımlanır. T.C.Kimlik Numarası. Primary Key ve Hasta Dosya No Unique şeklinde bir tanımlama Unique Constraint’e bir örnektir.

Foreign Key Constraint: Yabancıl anahtar kısıtlayıcı anlamındadır. Bir tablodaki bir sütuna ait verilerin başka bir tablonun belirli bir sütunundan gelmesini denetler. Sadece bağladığımız sütundaki değerleri içerebilir.

Default Constraint: Varsayılan kısıtlayıcı anlamındadır. Tablodaki herhangi bir alan için girilmesi gereken bir değerin atanmasıdır. INSERT komutu için geçerlidir. Örneğin, kişi bilgilerinin alındığı bir tabloda kişinin uyruğunun girilmesi işleminde varsayılan değer olarak "T.C." atanabilir.

Check Constraint: Kontrol kısıtlacıyı anlamındadır. Belirtilen formata göre verilerin girilmesini sağlar. T.C. numara alanına 11 karakterin girilmesi ve konrolü Check Constraint ile sağlanabilir.

Constraint Örnek:


Örneğimizi inceleyelim. 

İlk olarak CREATE DATABASE CONSORNEK - "CONSORNEK" adında bir database oluşturuyoruz.

USE CONSORNEK ile işlem yapacağımız database'i seçili hale getiriyoruz.

CREATE TABLE HASTA
(
HASTA_NO INT PRIMARY KEY IDENTITY(1,1),
AD NVARCHAR(25),
SOYAD NVARCHAR(25),
DOGUMTARIHI DATE,
CONSTRAINT YASKISITLA Check(DATEDIFF(YEAR,DOGUMTARIHI,GetDate())>18 and DATEDIFF(YEAR,DOGUMTARIHI,GetDate())<75)
)

işlem tablomuzu ve sutunlarımızı oluşturup veri tiplerini belirliyoruz. 
Son satırda Constraint’imizi yani kısıtımızı"YASKISITLA" ismiyle belirtiyoruz.

INSERT HASTA (AD,SOYAD,DOGUMTARIHI) 
VALUES ('IBRAHIM','BAYRAKTAR','05.08.1982')

INSERT komutuyla tablomuza ve veritiplerine uygun değerleri giriyoruz.

Örnekte kısaca HASTA tablosuna kayıt işlemi yaptırıyoruz. Fakat tanımladığımız Constrait ile sadece 18/75 yaş aralığında kişilerin kaydına izin verilmesini sağlıyoruz.