Useful shortcuts for vi editor

Sunday 8 May 2011

T-SQL’de Constraint Konusu (Kısıtlar)

T-SQL Constraint konusunu inceleyemeye çalışacağız.

Kısıtlar çeşitlerine göre 5 başlıkta incelenmektedir. Bunlar;
  • NOT NULL
  • DEFAULT
  • UNIQUE
  • CHECK
  • PRIMARY AND FOREIGN KEY

Sırayla bu ifadeler nasıl kullanılıyor aşağıdaki tablo yardımıyla bakalım.

CREATE TABLE Sinavlar
(
SinavID int NOT NULL UNIQUE,
FK_OgrenciID int REFERENCES Ogrenciler (OgrenciID) NOT NULL,
FK_DersID int REFERENCES Ders(DersID) NOT NULL,
Notu int NOT NULL CHECK (Notu =>0 AND Notu <=100),
Tarih date DEFAULT GETDATE()
)

NOT NULL:

Tablo içindeki istenilen verilerin boş kalmasını engellemek için kullanılan bir kısıttır.

  • Sınavlar tablosunda SinavID ve Notu sütunlarının değerinin boş kalmaması istendi.

Tablo oluşturduktan sonra da kısıtlarımızı yazabiliriz;

ALTER TABLE Sinavlar
ALTER COLUMN Notu int NOT NULL

DEFAULT:

Tablo içindeki istenilen verilere herhangi bir değer atanmamışsa otomatik olarak bir değer yazılması anlamı taşıyan bir kısıttır.

  • Sınavlar tablosunda Tarih sütununun değeri, eğer bir değer atanmazsa o anda tabloya girilen kayıt (insert işlemi) anındaki tarih bilgisi olması istendi.

Tablo sonrası kısıt yazımı;

ALTER TABLE Sinavlar
ALTER COLUMN Tarih SET DEFAULT GETDATE()

İlgili kısıdı tablodan kaldırmak için;

ALTER TABLE Sinavlar
ALTER COLUMN Tarih DROP DEFAULT

UNIQUE:

Tablo içindeki istenilen verilerin diğer verilerden farklı olmasını sağlayan bir kısıttır.

  • Sınavlar tablosunda SinavID sütununun değeri, benzersiz (unique) olması sağlandı.

Tablo sonrası kısıt yazımı;

ALTER TABLE Sinavlar
ADD CONSTRAINT uq_SinavID UNIQUE (SinavID)

İlgili kısıdı tablodan kaldırmak için;

ALTER TABLE Sinavlar
DROP CONSTRAINT uq_SinavID

CHECK:

Tablo içindeki istenilen verilerin belirli bir kural aralığında olmasını sağlayan bir kısıttır.

  • Sınavlar tablosunda Notu sütunun değeri 0 ila 100 arasında olması sağlandı.

Tablo sonrası kısıt yazımı;

ALTER TABLE Sinavlar
ADD CONSTRAINT chk_Not CHECK (Notu=>0 AND Notu=<=100)

İlgili kısıdı tablodan kaldırmak için;

ALTER TABLE Sinavlar
DROP CONSTRAINT uq_chk_Not

PRIMARY KEY:

Tablo içindeki her bir kaydın farklılığını gösteren, her bir satıra bir kimlik kazandıran bir anahtardır. Her bir tablo için en fazla bir adet primary key (birincil anahtar) tanımlanabilir ve birincil anahtar sütunu boş değer (null) alamaz. Unique ile primary key yaptıkları aynıdır. Primary key tanımlandığında otomatik olarak unique kısıdı tabloya eklenir. Ayrıca unique kısıdı birincil anahtardan farklı olarak istenilen sayıda bir tabloda tanımlanabilir.

Tablo sonrası kısıt yazımı;

ALTER TABLE Sinavlar
ADD CONSTRAINT pk_SinavID PRIMARY KEY (SinavID)

İlgili kısıdı tablodan kaldırmak için;

ALTER TABLE Sinavlar
DROP CONSTRAINT pk_SinavID

FOREIGN KEY:

Tabloları birbirine bağlamak için kullanılan bir anahtardır. Türkçe olarak İkincil veya yabancı anahtar denilebilir.

  • Sınavlar tablosunda FK_OgrenciID ve FK_DersID sütununları Ogrenciler ve Ders tablolarındaki birincil anahtarlar ile eşleşmektedir.

Tablo sonrası kısıt yazımı;

ALTER TABLE Sinavlar
ADD CONSTRAINT fk_OgrenciID FOREIGN KEY (FK_OgrenciID)
REFERENCES Ogrenciler(OgrenciID)

İlgili kısıdı tablodan kaldırmak için;

ALTER TABLE Sinavlar
DROP CONSTRAINT fk_OgrenciID

Herkese iyi çalışmalar. J