T-SQL’ de kullandığımız constraintler, veritabanımızda kolonlarımız üzerinde bazı kısıtlamalar yapmamızı sağlar.Bunlar default,check,primary key,unique,foreign key constrainleri olmak üzere 5 grupta toplayabiliriz.
--Veritabanlarında düzenleme işlemleri alter komutu ile gerçekleştirilir. --alter dbonesnesi dboAdı --düzenlenecek kısım use Northwind alter table Orders add OrderName nvarchar -- orders tablosuna nvarchar türünde OrderName kolonu ekler. alter table Orders drop column OrderName --eklediğimiz OrderName kolonunu "drop" ifadesiyle kaldırdık. --Kısıtlayıcılar ile ilgili örnek yapmak için northwind veritabanımızda "deneme" adlı bir tablo oluşturalım create table deneme ( Id int primary key identity(1,1), Cop1 nvarchar(10) , Cop2 nvarchar (15), Tel nvarchar(11), ) alter table deneme --alter komutu ile deneme tablosunda çalışacağımızı belirttik. add constraint dc_deneme default 'NULL' for Tel --default constraint ile deneme tablosunda Tel kolonuna veri girilmediği zaman NULL yazılmasını sağladık. --default komutundan istediğimiz herşeyi yazdırabiliriz.Bazı özel fonksiyonları da kullanabiliriz. alter table deneme add constraint cc_deneme check(YEAR(Cop1)<2013) --check constraint kolona girilecek verinin belirli şartlar dahilinde girilmesine izin verdik. --cop1 kolonuna 2013 yılından küçük değerler girilebilir.Ama bu kısıtlayıcı eklemeden önce veritabanımızda --2013 yılından büyük veri varsa bize hata fırlatacaktır.Önceki verileri görmezden gelip bundan sonraki kayıtlar --için kısıtlamamızı çalıştırabiliriz. alter table deneme with nocheck add constraint cc_deneme check(YEAR(Cop1)<2013)--with nocheck önceki kısıtlamaya uygun olmayan verileri görmezden geldi. alter table deneme add constraint pk_deneme primary key (Id) --Id kolonu tablonun primary keyi olmuştur. Diğer tabloların foreign keyi ile ilişki kurmak için kullanılır. alter table deneme add constraint uk_deneme unique (Cop2) --Unique constraint tek amacı belirtilen kolonun tekil olmasını sağlamaktır. create table denemea ( Id int primary key identity(1,1), kelime1 nvarchar(20) ) --ForeignKey kısıtlaması için iki yeni tablo oluşturduk. create table denemeb ( Id1 int primary key identity (1,1), kelime2 nvarchar(20) ) alter table deneme add constraint fk_deneme foreign key (Id) references denemeb (Id1) --denemea tablosundaki Id kolonu foreign key yaptık ve denemeb tablosundaki --Id1 kolonuna bağladık.Artık denemeb tablosundan denemea tablosunda karşılığı olan --veri silinip yada güncellenemez. --Delete ve Update komutlarındaki verilerin davranışları için cascade,set null,set default ayarları yapılmalıdır.