DEFINITIONS

Definitions More Info.
Definition ID559
TitleSQL
CategoryNOTES
DefinitionUNIQUE (BENZERSIZ) INDEX OLUSTURULMASI
Definition Description/* UNIQUE (BENZERSIZ) INDEX OLUSTURULMASI: -- Bu özellik kazandırıldığı zaman, index özelliği kazandırılımış sütuna girilecek değer,tekrar edilemez. Yani, aynı veriden sadece bir kez girilebilir. -- Eğer tabloda bir Primary Key veya Unique Constraint varsa; otomatik olarak Unique Index oluşturur. Hem Clustered Index, hem de Nonclustered Index yapılarında kullanılabilecek bu özellik için, dikkat edilecek hususları listeleyelim; -- Eğer tabloda veri varsa ve index oluştururken veya sonradan Unique özelliği kazandırılıyorsa SQL Server; önceki kayıtlarda tekrar edilen kayıtların olup olmadığını kontrol eder, varsa hata verir. -- Yeni kayıt girerken veya bir kayıt üzerinde değişklik yaparken; bu kayıt mükerrerse, hata oluşur. -- Sadece aynı olmasını istemediğiniz sütunlara; bu özelliği kazandırmak gerekir. */ -- Mükerrer kayıt girilmesini engellemek için, Unique Index oluşturalım use yuksel if exists (select name from sysindexes where name='cl_musterino') begin drop index cl_musterino on musteriler print 'silindi' end go create unique nonclustered index cl_musterino on musteri ( musterino asc ) go -- index drop edelim drop index cl_musterino on musteri -- şimdi musterino kısmına iki adet daha 101 ve bira adet 102 nolu kayıtları mükerrer olarak ekleyelim insert into musteri values (101,'yüksel inan','053632671710','kadıköy') insert into musteri values (101,'nihat demirli','053699999999','amkara') insert into musteri values (102,'sibel yanar','053244444444','kadıköy') -- şimdi tekrar index oluşturmaya çalışalım if exists (select name from sysindexes where name='cl_musterino') begin drop index cl_musterino on musteri print 'index silindi' end go create unique nonclustered index cl_musterino on musteri ( musterino asc ) /* Bu gibi durumlarda kayıtlarımızın sayısı çok fazla olabilir ve hangi kayıttan ne kadar mükerrer var? bunu liste şeklinde görüp, önlem almak isterseniz, aşağıdaki kodu yazmanız gerekir */ Select musterino, count(musterino) as Tekrarlananlar from musteri group by musterino /* Ancak tekrarlanan kayıtların 1 den fazla olanlarını görmek için aşağıdaki kodu yazmak gerekir. Grup yapıldığı zaman WHERE yerine, koşul için HAVING komutu kullanılır. */ select musterino,count(musterino) as tekrarlananlar from musteri group by musterino having count(musterino)>1 order by musterino
RecordBycunay
Record Date04-07-2014 17:59:37
Düzenle
Kopyala
Sil