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.