Key
Constraintler
1-Entity Constraint
2-Domain Constraint
3-Referential
İntegrity Constraint(R.I.C)
4-Primary Key/ Entity Cons.
5-Foreign Key/R.I.C
6-Unique Constraint/Entity
Cons.
7-Check Constraint
8-Default Constraint
9-Rule/Domain Cons.
10-Default Nesnesi/Domain
Cons.
Constraint
Tipleri;
Domain Constraint:Sütunlara
verilen kısaltmalardır.
Entity Constraint:Tek tek satırlarla ilgilenir. Her satıra farklı bir değer girilmesi
gerekir.(Primary Key- Unique gibi)
-Referential
İntegrity Constraint(R.I.C):Bir sütundaki değerlerin aynı tablodaki veya
farklı tablodaki veriler ile eşleştiği zaman oluşur.
Unique Constraint: Entity
Constraint’tir.Her satıra tek tek bakar.Değer sadece 1 kez girilir. TC kimlik
numarası gibi. Primary Key’den tek farkı boş (null) ile geçilebilir olması.
Tablo Oluştururken Unique Oluşturma
create table
tablo_adı(
<alan_adı> int
not null primary key,
<alan_adı>
<veri tipi> not null Unique)
Tabloya Sonradan Unique Oluşturma
alter table
<tablo_adı>
add constraint
<alan_adı>
unique <(alan_adı)>
o Unique Constraint ile ilgili bir örnek:
create table nakliyeciler( nakno int, adi varchar(20),
Soyadi varchar(20),sehir varchar(20),bolge varchar(20),
postakodu varchar(20), telefon varchar(20) unique )
insert into nakliyeciler values(1,'ayse', 'yılmaz',
'istanbul','marmara','23456','1234')
insert into nakliyeciler (nakno) values(3)
select * from nakliyeciler
delete nakliyeciler where nakno=1
alter table nakliyeciler
add constraint uksoyadi
unique(soyadi)
--Nakliyeciler tablosuna uksoyadi adlı bir constraint
ekliyoruz. Unique (soyadi) ile de soyadi alanını unique contsraint yapıyoruz.
insert into nakliyeciler (soyadi,telefon)
values('yılmazz','1234')
insert into nakliyeciler (soyadi,telefon)
values('yılmazzz','12345')
select * from nakliyeciler
Union:
Aynı veri tiplerinin
alt alta gelmesine dikkat edilmesi gerekir.
All: Kullanılan yerlerde istenilen tüm
veriler gösterilir.
Distinct:
Kullanılan yerlerde tekrar edilen veriler gösterilmez.
Kullanımı:
select
<alan_adı>, <alan_adı> from <tablo_adı>
union
select
<alan_adı>, <alan_adı> from <tablo_adı>
select
<alan_adı> from tablo_adı>
union all
select
<alan_adı> from <tablo_adı>
select distinct
<alan_adı> from <tablo_adı>
select distinct
<alan_adı> from <tablo_adı>
Primary Key:Girilen
değerler ve metinlerde aynısı var mı diye bakar, aynısı var ise değer girişine
izin vermez.Entity Constraint’ten satır satır bakar.Tablonun temel
alanıdır.Daha çok indexlerde kullanılır.
Tablo Oluşturulurken Primary Key Ekleme
create table
tablo_adı(
<alan_adı>
<veri tipi> identity not null primary key,<alan_adı> <veri
tipi>, <alan_adı> <veri tipi>, <alan_adı><veri
tipi>, <alan_adı> <veri tipi>)
Sonradan Primary Key Ekleme
alter table <tablo
adı>
add constraint
<tablo_adı>
primary key<(alan
adı)>
-Foreign Key :R.I.C’dir.Referans alarak işini yapar.
Var Olan Tabloya Sonradan Foreign Key Eklemek
alter table
<tablo_adı>
add constraint
<alan_adı>
foreign key
(<alan_adı>) references <tablo_adı>(<alan_adı>)
Default Nesnesi:Kullanıcı
tabloya kayıt girer ve bazılarını boş geçerse
daha önceden belirttiğimiz default nesnesi onun boş geçtiği yere
geçer.Default nesnesi de mesela şehir alanına özel “İstanbul” olabilir,
böylelikle kullanıcı şehir alanına boş kayıt girse bile daha sonra tabloda
“İstanbul” olarak gözükecektir.Global değişken gibi.
Default İptal Etme
exec sp_unbindefault
'<tablo_adı>.<alan_adı>'
Default Constraint:Domaindir.Sadece
1 tablodaki şehir sütununu değiştirebilirsin.Yerel değişken gibi.
o Default
Constraint ile ilgili bir örnek:
create table sehir(
sehirno int, sehiradı varchar(20) default ('istanbul'))
insert into sehir(sehirno) values(2)
insert into sehir values (2,'adana')
select * from sehir
alter table maliyet
add constraint dftarih
default getdate() for tarih
--Burada dftarih
adında constraint oluşturuyoruz. Getdate() ile tarih için şuanki tarihi alıyoruz.
Exec sp_helpconstraint özelliği:Bu şart
constraintin özelliklerini gösterir.
Drop özelliği: Dizinler, tablolar ve veritabanlarını
silmeyi sağlar.
Kullanımı:
drop rule
<değer> kuralı tamamen siler,
kaldırır.
drop default
<değer> defaultu tamamen siler, kaldırır.
Örnek: drop table siparisler
Alter: Daha önce yaratılmış nesnenin değiştirilmesini
sağlar. Örneğin bir tablonun tasarımını değiştirmek gibi.
o Bir başka örnek;
create default cins
as 'kalem'
exec sp_helpconstraint
exec sp_bindefault 'cins','maliyet.cinsi'
select * from maliyet
--Burada kalem adında default nesnesi oluşturuyoruz. exec
sp_helpconstraint i le constraint özelliklerini görüyoruz. exec sp_bindefault
'cins','maliyet.cinsi' ile de cins nesnesini maliyet tablosunun cins alanına
bağlıyoruz.
insert into maliyet (urunno) values(8)
exec sp_unbindefault 'maliyet.cinsi'
drop default cins
--Burada maliyet tablosunun cinsi alanında kurulan bağı
kaldırıyoruz.
Rule Nesnesi:Domaindir.Kural
oluşturur,kayıtlardan kurala bakarak sonuç çıkarır.
Kullanımı:
create rule
<değişken_adı>
as
@<değişken_adı><karşılaştırma operatörü><değer>
o Rule Nesnesi
ile ilgili bir örnek:
create rule ucret
as @ucret>1000
--burada ücret adında kural oluşturup aşağıdada koşulunu
belirtiyoruz. Bu koşulla girilen kayıtlardaki giriş 1000den büyük olmalıdır.
Rule nesnesinin bağı bağlama ve bağlamama
özelliği vardır;
Tabloya Önceden Oluşturulan Rule U Atama
Kullanımı: exec
sp_bindrule <'değer'>, '<tablo_adı>.<alan_adı>'
Örnek: sp_bindrule 'ucret','personeldetaylar.pmaas'
select * from personeldetaylar
--Burada ucret kuralını personeldetaylar tablosundaki
maas alanına bağlıyoruz.
insert into personeldetaylar values (5,60,1)
Rule’u Kaldırma
sp_unbindrule 'personeldetaylar.pmaas'
--Burada kurulan bağı kaldırıyoruz.Ama kaldırırken
bağlanan alanı yazıyoruz.
insert into personeldetaylar values(8,1700,'aa',1)
select * from personeldetaylar
drop rule ucret
--Drop rule özelliği de yapılan kuralı kaldırır.
Check Constraint:Verilen kontrole uyan kayıtları alır,uymayanları kabul etmez.
Tablo Oluştururken Check Constraint Ekleme
create table
<tablo_adı>(
<alan_adı>
<veritipi>,
<alan_adı>
<veritipi>,
<alan_adı>
<veritipi>,
CHECK
<(alan_adı)>)
Tabloya Sonradan Check Constraint Ekleme
alter table
<tablo_adı>
add constraint
<alan_adı>
CHECK
<(alan_adı)>
With Nocheck özelliği:
Tabloya sonradan constraint eklerken önceki eklenen kayıtlar uymuyorsa etmesini
sağlar
Kullanımı:
alter table
<tablo_adı>
with nocheck
add constraint
<alan_adı>
check
<(alan_adı)>
Nocheck: Nocheck yerine sadece check
yazarsak adı kontrol görevini uygular.
Kullanımı:
alter table
<tablo_adı>
nocheck
constraint
<alan_adı>
o Check Constraint ile ilgili bir örnek:
create table maliyet( urunno int, cinsi varchar(20),
birimfiyati money check(birimfiyati>5))
--Buradaki check koşulu birimfiyatının 5 ten büyük olması
kuralını sağlıyor.
insert into maliyet values(1,'kalem',6)
select * from maliyet
alter table maliyet
add constraint chcinsi
check(cinsi like'_____')
--Maliyet tablosuna chcinsi adlı bir constraint
ekliyoruz. Check koşuluyla da cinsi alanının 5 karakterli ‘_____’ olması için
gereken koşulu yazıyoruz.
insert into maliyet values(3,'defte',7)
select * from maliyet
alter table nakliyeciler with nocheck
add constraint cptelefon
check (telefon like
'[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
--Buradaki with nocheck belirtilen check koşuluna
uymamayı belirtiyor.
insert into nakliyeciler(soyadi,telefon) values ('yılmaz','12345678909')
alter table maliyet
nocheck
constraint chcinsi
-Burada da daha önce belirtilen koşulu yoksayıyoruz. Ve
bunun sayesinde aşağıdaki gibi 6 karakterli kayıt girebiliyoruz;
insert into maliyet values(6,'cetvel',9)
select * from maliyet
Cascade:Silme ve
güncelleme işlemlerini otomatik olarak yapar.
-On delete cascade:Siler
-On update cascade:Günceller.
Kullanımı
: create
table <tablo_adı>(
<alan_adı>
<veri tipi>,
<alan_adı>
<veri tipi>,
<alan_adı>
<veri tipi>,
constraint
<alan_adı> primary key<(alan_adı)>,
constraint
<alan_adı> foreign key<(alan_adı)>
references
<tablo_adı><(alan_adı)>
on update cascade,
on delete cascade)
Eğer silme kısmının otomatik ama güncelleme
kısmının otomatik olmamasını istiyorsak;
On delete cascade
On update no active
2sinin de olmamasını
istiyorsak yanına “no active” yazarız.
Hiç yorum yok:
Yorum Gönder