COMMIT: Oluşturulan transaction işlemi başarılı bir şekilde gerçekleştiğinde yapılan değişikliklerin veritabanına kalıcı olarak aktarılmasıdır.

Benzer belgeler
Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı Ara Öğr. Gör. Murat KEÇECĠOĞLU

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

Bölüm 4: DDL Veri Tanımlama Dili

SORGULAR. Öğr.Gör.Volkan Altıntaş

Bu işleçlerin dışında, aşağıda belirtilen karşılaştırma işleçlerinden de yararlanılır.

BİLİŞİM TEKNOLOJİLERİ

SQL sorguları çalıştırıldığında veriler tablo üzerinden iki yöntemle alınır.

Veritabanına Uygulanması

5 SQL- Yapısal Sorgulama Dili. Veritabanı 1

Veritabanı Tasarımı. Veritabanı Hareketleri

TESİ. indeks. söylenebilir?? bir ilişkidir d) Hiçbiri. veya somutlaştırılmış. düzeyidir? sağlayabilir? sına. d) Hepsi. olabilir? c) Verilerin d) Hepsi

BLGM 354 DENEY 1 * GİRİŞ

KISITLAMALAR (CONSTRAINT)

VERİ TABANI YÖNETİM SİSTEMLERİ I

Veritabanı Tasarımı. NOT NULL ve UNIQUE Kısıtlamaları Tanımlama

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

VERĐTABANI YÖNETĐM SĐSTEMLERĐ

VERİTABANI Veritabanı Yönetimi

1 Temel Kavramlar. Veritabanı 1

SQL TRIGGERS (Tetikleyiciler)

SQL veri tabalarına erişmek ve onları kullanmak için geliştirilmiş bir lisandır.

VERİ TABANI ve YÖNETİMİ

Veritabanı Tasarımı. Sütun Değerlerini Güncelleme ve Satırları Silme

Veritabanı. SQL (Structured Query Language)

TRIGGER. Trigger lar, tablo üzerinde tanımlanabilen ve bu tablo üzerinde bir işlem gerçekleştiğinde tetiklenen programlama ögeleridir.

Üst Düzey Programlama

1 Temel Kavramlar. Veritabanı 1

Veritabanı Tasarımı. İndeksler ve Eşanlamlar

Tavsiye Edilen Önhazırlık Temel SQL Server 2000 bilgisi edinmek.

BÖLÜM- 8: DİĞER ŞEMA NESNELERİNİ OLUŞTURMA

TEMEL SQL SORGU ÖRNEKLERİ. Yukarıdaki sorguyu yazıp çalıştırdığımızda db_market adında bir veritabanı oluşturulur.

Veri Tabanı Hafta Dersi

Veritabanı Tasarımı. Tablo Değiştirme

SQL Komutları (2) Uzm. Murat YAZICI

VERİ TABANI YÖNETİM SİSTEMLERİ-II

SORGULAR VE ÇEŞİTLERİ II

Veritabanı Yönetim Sistemleri (Veritabanı Tasarımı) SQL (Structured Query Language)

ACCESS PLATFORMUNDA SQL

EBE-368 Veri Tabanı Yönetim Sistemleri İlişkisel Model (The Relational Model)

Veritabanı Tasarımı. Kullanıcı Erişimini Kontrol Etme

PostgreSQL ve PL/pgSQL

SQL e Giriş. Uzm. Murat YAZICI

ÜNİTE NESNE TABANLI PROGRAMLAMA I. Uzm. Orhan ÇELİKER VERİTABANI SORGULARI İÇİNDEKİLER HEDEFLER

20461C Querying Microsoft SQL Server Modül Seviye Belirleme Testi

Birden Çok Tabloda Sorgulama (Join)

Veri Tabanı Hafta Dersi

DESTEK DOKÜMANI. Ürün : Tiger Enterprise/ Tiger Plus/ Go Plus/Go Bölüm : Kurulum İşlemleri

İnternet Programcılığı

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

VERİ TABANI ve YÖNETİMİ

Veri Tabanı Tasarım ve Yönetimi

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım.

Veritabanı sistemlerinde veri bütünlüğünü sağlayabilmek için CONSTRAINTS olarak adlandırılan bazı zorlayıcı ifadeler kullanılabilir.

Veritabanı Tasarımı. DML İşlemleri ve Görünümler

Veritabanı Tasarımı. Kartezyen Çarpım ve Join İşlemleri

VERİ TABANI YÖNETİM SİSTEMLERİ

SP_RENAMEDB eski_isim, yeni_isim VEYA SP_RENAMEDB 'eski isim', 'yeni isim'

VİEW (SANAL TABLO) 1. View Nedir? 2. View ler ile Çalışmak 3. View Oluşturmanın Yararları Veri güvenliği; Birim dönüştürmeleri;

FABREKA YAZILIM ELEKTRONİK DANIŞMANLIK TİC. LTD. ŞTİ.

TETİKLEYİCİ. Tetikleyici Ne Zaman Kullanılır? Çeşitli amaçlara uygun olarak tetikleyiciler kullanılabilir.

VERİ TABANI YÖNETİM SİSTEMLERİ I

Veri Tabanı Yönetim Sistemleri Bölüm - 7

EKLEME SORGUSU. 2) ornekveritabani.accdb isimli veritabanınızı çift tıklayarak açınız. Sorarsa, İçeriği Etkinleştir komutunu uygulayınız.

BÖLÜM -7: TABLOLARI OLUŞTURMA VE YÖNETME

Güz Yarıyılı MT 487 Bilgisayarda Veri Yapıları Final Çalışma Soruları

SQL'e Giriş. SELECT Deyimi. SQL Komutları. 1. DDL (Data Definition Language - Veri Tanımlama Dili)

ORACLE DA KÜRSÖRLER. Gerekli sistem değişkenleri

UZAKTAN EĞİTİM MERKEZİ

Yukarıdakilerden hangileri DML (Data Manipulation Language) ile gerçekleştirilir?

PostgreSQL ve PL/pgSQL

-- işareti tek satırlık açıklamalarda kullanılır. Açıklama olarak yazılan satırın önüne konulması yeterlidir.

13 Aralık Đlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL. Đlgili Modül/ler : Raporlar. Kullanıcı Tanımlı Raporlar Bölümünden Yapabildiklerimiz

AKINSOFT Barkod 4. AKINSOFT Barkod 4 Yardım Dosyası. Doküman Versiyon : Tarih : Sayfa-1. Copyright 2010 AKINSOFT

YAPISAL SORGULAMA DİLİ (SQL)

IN ve NOT IN Tablodaki alan içeriklerine ulaşmak için IN deyimi kullanılır.

VERİ TABANI UYGULAMALARI

IdeaSoft E-Ticaret ile LOGO Ticari Yazılım Entegrasyon Kullanım Kılavuzu

Tablolar Arası İlşikiler ve Alan Özellikleri Siparis.musteri_no musteri.musteri_no Siparis.urun_kodu musteri.urun_kodu

1. Hafta MS SQL Server 2008 Kurulum ve Tanıtımı BPR255 Veritabanı. Bu Derste Öğrenecekleriniz: Kurulum:

VERİ TABANI YÖNETİM SİSTEMLERİ I

ELEKTRA LOGO AKTARIM PROGRAMI...3

Genel Kavramlar. Bilgisayar ortamında işlenebilecek durumda bulunan kayıtlar. Birbiri ile ilişkili veriler topluluğu ve veriler arası ilişkiler

Animasyon Teknikleri, Ses ve Video İşlemleri 1 / 18

Veritabanı Tasarımı. Tablo Oluşturma

Mühendislikte Veri Tabanları Dersi Uygulamaları (ArcGIS-SQL)

İNTERNET PROGRAMLAMA 2 A S P. N E T. Marmara Teknik Bilimler MYO / Hafta 5 Veri Tabanı İşlemleri

İçindekiler Tablosu Talep Destek Yönetim Sistemi Programı...3

VERİTABANI ve YÖNETİMİ

New Project. User guide

Veritabanı Tasarımı. SQL Deyimi Anatomisi

ACCESS DERS Tablolarda Düzenleme

VERİ TABANI YÖNETİM SİSTEMLERİ II. 9. FORMLAR ve ORACLE FORMS PROGRAMINDA FORM OLUŞTURMA

VERİ TABANI YÖNETİM SİSTEMLERİ I

1. VERİ TABANI KAVRAMLARI VE VERİ TABANI OLUŞTUMA

10-Veri Tabanları.

Veri Tabanı-I 5.Hafta

EROL AKGÜL

BİR İNŞAAT ŞİRKETİNİN DEPO İŞLERİ TAKİP PROGRAMININ ACCESS İLE OLUŞTURULMASI

SQL'e Giriş. SELECT Deyimi. SQL Komutları. Yardımcı Deyimler

STORED PROCEDURE LER (Saklı Yordamlar)

Transkript:

TRANSACTION Bir transaction bir veya daha fazla SQL ifadesinden meydana gelen tek bir işlemdir. SQL ifadelerinin tamamı bir bütün olarak düşünülür ve daha küçük iş parçalarına ayrılamaz. Özellikle ardı ardına gelen ve birbiriyle bağımlı birden fazla işlemin tek bir işlem olarak kullanılmasını sağlar. Bir transaction içerdiği SQL ifadelerin tamamını ya gerçekleştirir. Ya da hiçbirini gerçekleştirmez. SQL ifadelerinin bir bölümünün uygulanması gibi bir işlem söz konusu olamaz. İşlemlerin tamamı gerçekleşmediği sürece işlemlerin hiçbiri gerçekleşmemiş sayılır. Diyelim ki Urun tablosunda iki adet aynı üründen bulunsun. Aynı olan ürünler arasında aktarma yapmak isteyelim. Bir üründen 10 adet diğerine ekleme işlemini yaptırmak isteyelim. Bu işlemin iki adımı vardır. İlk adımı bir ürünün stok miktarından edilecek olan 10 adet düşülmelidir. İkinci adım ise diğer ürünün stok miktarına 10 adet eklenmelidir. UPDATE Urun SET StokMiktari=StokMiktari-10 WHERE IDUrun=77 UPDATE Urun SET StokMiktari=StokMiktari+10 WHERE IDUrun=79 Bu işlemlerden birinci gerçekleştikten sonra herhangi bir sorundan dolayı ikinci işlem gerçekleşmezse stok miktarlarında ciddi sorunlar yaşanabilir. Birinci üründen 10 adet azaltılır ama diğer ürünün stoğuna 10 adet aktarılmaz. Bu tür sorunları engellemek için TRANSACTION yapıları kullanılır. Bu iki işlemi tek bir işlem gibi göreceğinden herhangi birisi gerçekleşmediği zaman diğer gerçekleşen işlemleri de yok sayacaktır. Yani gerçekleşen işlemleri geri alacaktır(rollback). Eğer gerçekleşen işlemlerin tamamı sorunsuz bir şekilde gerçekleşirse, tüm işlemleri kalıcı(commit) hale getirecektir. COMMIT: Oluşturulan transaction işlemi başarılı bir şekilde gerçekleştiğinde yapılan değişikliklerin veritabanına kalıcı olarak aktarılmasıdır. ROOLBACK: Transaction işlemi içerisindeki SQL ifadelerinden herhangi birisi işlevini yerine getirmediği zaman Rollback işlemi ile veriler ilk haline geri getirilir. TRANSACTION LOG: Transacation log dosyası, transaction ile bir veritabanında meydana gelen tüm değişikliklerin sıralı olarak kaydedildiği dosyadır. Transaction ya hep ya hiç mantığıyla çalıştığı için başlangıç ve bitiş noktaları belirlenmelidir. Transaction ilk SQL ifadesi BEGIN TRANSACTION ifadesi ile başlar. COMMIT veya ROLLBACK ifadesi ile son bulur.

Urun tablosunda transaction gerçekleştirelim.iki adet UPDATE ifadesi ve bir select ifadesi içerir. Ürün tablosu içindeki ürünlerin birimfiyatlarını 0 ve ürün isimlerini de deneme yapacaktır. Bu iki update ile veriler üzerinde değişiklik yapılacak select ile tablonun son hali listelenecektir. BEGIN TRANSACTION UPDATE Urun SET Birimfiyati=0 UPDATE Urun SET UrunAdi='Deneme' SELECT * FROM Urun ROLLBACK Burada dikkat edilirse ROLLBACK ile son bulmuştur. Bunun anlamı gerçekleştirilen tüm değişiklikleri iptal et anlamındadır. SELECT * FROM Urun dediğimiz zaman tablo üzerinde herhangi bir değişiklik olmadığını görürüz. Eğer COMMIT ile bitirilseydi yapılan değişiklikler kalıcı olarak veritabanına aktarılacaktı. SAVEPOINT Uzun transaction işlemleri için transaction kendi içerisinde SAVEPOINTS adı verilen küçük bölümlere ayrılabilir. Her bir bölüm Commit ile veri tabanına transfer edilebilir veya Rollback ile yapılan değişiklikler geri alınabilir. SAVE TRANSACTION savepoint_ismi ile oluşturulur. COMMIT ROLLBACK TRANSACTION savepoint_ismi

Transaction işlemi başladığında herhangi bir değişiklik yapmadan önceki durumu A noktası olarak belirlenmiştir. Daha sonra istenilen SQL ifadeleri kullanılır ve herhangi bir hata oluşursa veriler A noktasındaki duruma geri döner, hata olmazsa yapılan ilk değişiklikleri de içeren veri durumu B noktası olarak belirlenir. İkinci bölümdeki SQL ifadeleri kullanılır ve herhangi bir hata oluşursa bundan önceki durum olan B noktasına geri döner. Yani ilk bölümde yapılan değişiklikler geçerliliğini korumuş olur. Eğer hata olmazsa yapılan değişikliklerin tamamı veritabanına aktarılır. Uygulama: Sipariş Sayısı 50 nin üstündeki Ürünlerin birim fiyatlarına %10 daha sonra tüm Ürünlerin birim fiyatlarına %25 ilave eden Transaction işlemine ait T-SQL kodları aşağıdaki gibidir. BEGIN TRANSACTION USE SiparisTakip UPDATE Urun SET Birimfiyati=Birimfiyati*1.10 WHERE SiparisSayisi>50 UPDATE Urun SET Birimfiyati=Birimfiyati*1.25 SELECT * FROM Urun ROLLBACK

Uygulama: Miktarı 5 üstü ve Birim Fiyatı 5 TL üstü siparişlerin İndirim Oranlarını 20 Puan daha sonra tüm siparişlerin İndirim oranlarını 5 Puan arttıran Transaction işlemine ait T-SQL komutları aşağıdaki gibidir(hata Kontrolü Yapılacak). BEGIN TRANSACTION USE SiparisTakip UPDATE SiparisDetay SET Indirim=Indirim+20 WHERE Miktar>5 AND BirimFiyati>5 UPDATE SiparisDetay SET Indirim=Indirim+5 SELECT * FROM SiparisDetay IF @@ERROR=0 PRINT'HATA YOK' ELSE PRINT'HATA VAR' ROLLBACK

Uygulama: Önceki yapılan uygulamaları SAVE TRANSACTION ile bölümlere ayırarak tüm işlemleri tek bir Transaction işlemiyle gerçekleştiren T-SQL Komutu aşağıdaki gibidir. BEGIN TRANSACTION USE SiparisTakip SAVE TRANSACTION BIRIMFIYAT UPDATE Urun SET Birimfiyati=Birimfiyati*1.10 WHERE SiparisSayisi>50 UPDATE Urun SET Birimfiyati=Birimfiyati*1.25 SELECT * FROM Urun ROLLBACK TRANSACTION BIRIMFIYAT SAVE TRANSACTION INDIRIMLER UPDATE SiparisDetay SET Indirim=Indirim+20 WHERE Miktar>5 AND BirimFiyati>5 UPDATE SiparisDetay SET Indirim=Indirim+5 SELECT * FROM SiparisDetay IF @@ERROR=0 PRINT'HATA YOK' ELSE PRINT'HATA VAR' ROLLBACK TRANSACTION INDIRIMLER --Transaction Başlangıç --1. Bölüm Başlangıç --1. Bölüm Bitiş --2. Bölüm Başlangıç --2. Bölüm Bitiş GÖRÜNÜM(VIEW) Görünüm (view), sorguları basitleştirmek, erişim izinlerini düzenlemek, farklı sunuculardaki benzer verileri karşılaştırmak ve bazen sorgu süresini kısaltmak için kullanılan, aslında var olmayan, SELECT ifadesi ile tanımlanmış sanal tablolardır. Tabloları, olduğundan farklı göstermek için filtreler kullanılır. Bu gibi işlemler için view kullanılır. View ler kaydedilmiş sorgulardan oluşur.

Bir view in verileri aldığı asıl tabloya temel tablo denir. View, temel tabloda bulunan sütun ya da sütunları veya satırları kapsayabileceği gibi birden fazla temel tablo üzerinde tanımlanmış olabilir. View ler Hangi Amaçlar İçin Kullanılır? Kullanıcıların, önemli bir tabloda istenilen sütun veya satırlarıgörmek, Kullanıcıların, uygun birim dönüşümleri yapılmış değerlerini (mil, km gibi) görmek, Tablolarda bulunan verileri başka bir tablo formatında sunmak, Karmaşık sorgularıbasitleştirmek amacıyla kullanılır. View Oluşturmak Tablolarla aynı özelliklere sahiptir. En fazla 1024 sütun oluşturulabilir. View, CREATE VIEW ifadesi kullanılarak oluşturulur. Genel Kullanımı CREATE VIEW view_adı AS SELECT sütun_adları FROM temel_tablo View, iki türlü oluşturulabilir: T-SQL kod yazarak Object Explorer da aktif veritabanı görünümünden New View komutunu vererek T-SQL ile View Oluşturmak Personel veritabanındaki Person_Bilgi tablosunda, cinsiyeti Kadın olan personeli ad, soyad ve bölümüyle gösterecek bir view hazırlayalım.

Yeni bir Query açarak, view i oluşturmak için CREATE View ile görünüme bir isim verilir. SELECT ile tablodan kullanılacak alanlar belirlenir. WHERE ile istenirse birşart konulabilir. Yeni bir Query daha açarak oluşturulan view in çalıştırılmasıgerekir. V_Cinsiyet view ini çalıştırdığınızda verilen şarta göre sonuçları Results penceresinde görebilirsiniz. Management Studio ile View Oluşturmak. Veri tabanı içindeki Views klasörü üzerinde fareyle sağ tuşu tıklayınız Açılan Add Table penceresinde kullanacağınız Person_Bilgi tablosunu seçerek Add komut düğmesini tıklayınız. Close düğmesiyle de pencereyi kapatınız.

Eklenen tablo içersinde kullanılacak alanlarıişaretleyiniz. Alanlarıseçtiğinizde SELECT ifadesi otomatik olarak yazılacaktır. Cinsiyeti kadın olan personel view ile gösterileceğinden Cinsiyet alanında bir filtreleme yapılması gerekmektedir. Oluşturulan view i vereceğiniz bir isimle (V_CinsiyetKadin) kaydediniz. Son olarak view i çalıştırmak kaldı. Open View komutuyla oluşturulan view i çalıştırınız. View çalıştıktan sonra verilenölçütlere göre sonucu görebilirsiniz.

View lerde sütun adları belirtilmediği sürece temel tabloda bulunan sütun adlarıyla aynı olur. View le sütun adlarını ihtiyaca göre de değiştirebilirsiniz. View de sütunlar için veri tipi belirtilmez çünkü view, temel tablodan baz alındığı için sütun veri tipleri temel tablodaki veri tipleriyle aynıolur. Aynıörneği sütun adlarını değiştirerek yazarsak sorguyu çalıştırdığınızda view in sonucu aşağıdaki gibi olacaktır. Uygulama: Birim Fiyatı 5 TL nin üstündeki Ürünlerin Adı, Birim Miktarı ve Birim Fiyatlarını görüntüleyen View ı oluşturmak için gerekli T-SQL komutu aşağıdaki gibidir. CREATE VIEW URUN_5TL_USTU AS SELECT Urun.UrunAdi,Urun.BirimMiktari,Urun.Birimfiyati FROM Urun WHERE Urun.Birimfiyati>5 Komut çalıştırılınca oluştuırulan View Views klasöründe Refresh yapınca görünür.

SELECT * FROM [SiparisTakip].[dbo].[URUN_5TL_USTU] Komutuyla oluşturulan View içeriği görüntülenebilir. Uygulama: Alışveriş yapan Müşteri Adı Soyadı ve alkdıkları Ürün Adlarını gösteren bir View oluşturmak için gerekli T-SQL komutu aşağıdaki gibidir. CREATE VIEW MUSTERI_URUN(MUSTERI_ADI_SOYADI, URUN_ADI) AS SELECT Musteri.AdiSoyadi, Urun.UrunAdi FROM Musteri INNER JOIN Siparis ON Musteri.IDMusteri=Siparis.IDMusteri INNER JOIN SiparisDetay ON Siparis.IDSiparis=SiparisDetay.IDSiparis INNER JOIN Urun ON SiparisDetay.IDUrun=Urun.IDUrun SELECT * FROM [SiparisTakip].[dbo].[MUSTERI_URUN]

İNDEKS(INDEX) İndeks, tablolardan veri çekmek için gerekli sorgular çalıştırılırken gereken süreyi azaltmak amacıyla kullanılır. Kayıt sayısının milyonlarla ifade edildiği durumlarda çok önemli bir yere sahiptir. İndeksi bir örnekle anlatmak gerekirse bir ilaç deposunu hayalinizde canlandırınız. İlaçların raflardaki dizilişlerini ele alınız. Bir ilaç aradığınızda, ilaçlar bir kurala göre dizilmemişse her bir ilacı tek tek kontrol etmeniz gerekir. İlaçları raflara alfabetik olarak dizerseniz, her bir ilacı tek tek gözden geçirmek zorunda kalmazsınız. Aynı şekilde, ilaç numaralarına göre sıralanmış bir liste olursa bu ölçütlere göre de aradığınız ilacı kolayca bulabilirsiniz. İlişkisel Veri Tabanında İndeksler Veri tabanlarında indeks oluşturarak verileri, veri tabanında kayıtlı oldukları sıradan değil de başka bir sırada gösterebiliriz. Temelde indekslerin ilişkisel veri tabanında şu üç işlevi vardır: Tekil indeksler, veri ilişkilerini ve veri bütünlüğünü sağlayan birincil anahtar alanlar oluşturmada kullanılır. İndeks olan alanın değerine göre bir kaydın kayıtlar arasındaki sırasını gösterir. Sorguların neticelenme sürelerini kısaltır. Küme ve Küme Olmayan İndeksler Küme indekslere clustered index, küme olmayan indekslere de nonclustered index de denir. Clustered indekste tabloda yer alan kayıtlar, fiziksel olarak indeks tanımlı sütuna göre dizilirler. Bir clustered indeks tarandığında varılan son nokta verinin kendisidir. Bu yüzden, clustered indeksle yapılan aramalar çok hızlı sonuç verirler. Bir tabloda en fazla bir tane clustered indeks tanımlanabilir. Clustered indeks, özellikle aralık sorguları için yüksek performans sağlar. SQL Server da tanımlanan bir clustered indeks sütununa karşılık, kaydedilen değerlerin mutlaka daha önce kaydedilmemiş bir değer olması, yani tekil olması gerekir. Bu durum, bir tablonun Primary Key Constraint veya Unique Key Constraint tanımlı sütunu üstünde tanımlı indeksler için sorun çıkarmaz. SQL Server, verilere erişmek için bir clustered indeksi iki şekilde kullanabilir: Clustered indeks araması (seek): Sorgu sonucunda dönecek kayıtlar üstünde bir kısıtlama varsa (WHERE cümleciği gibi), clustered indeks araması kullanılır. Clustered indeks taraması(scan): Sorgu sonucunda dönecek kayıtlar üstünde bir kısıtlama yoksa clustered indeks taraması kullanılır.

Tablo üstünde clustered indeksin diğer indekslerden önce oluşturulmasında fayda vardır. Çünkü diğer indekslerin tamamında bu indeksin oluşturulduğu tekil değer kullanılır. Nonclustered indeks, ya yığın (heap) üzerinden veya clustered indeksin üzerinden verilere erişebilir. Tek başına, doğrudan verilere erişemez. Nonclustered indeksler veri erişiminde hızı artırır ancak clustered indeks araması veya clustered indeks taraması ile birlikte kullanılabilir olduğundan performansları clustered indekslerden daha düşüktür. İndeks Oluşturmak İndeks oluşturmak için kullanılabilecek en basit ifade şu şekildedir: CREATE indeks_tipi INDEX indeks_adı ON tablo_adı(sütun_adı) Genel kullanımda; İndeks_tipi: Unique clustered veya sadece clustered, nonclustered şeklinde indeksin tipini belirtir. Tip belirtilmediğinde nonclustered dir. İndeks_adı: İndekse verilen isim. Tablo_adı: İndeksin tanımlandığı tablo ya da view adı. Sütun_adı: Tablo ya da view de indekslenmesi istenen sütun veya sütunların ismi. Örnek Person_Bilgi tablosunda Sicil_No sütunu üstünde Clustered Index tanımlansın. CREATE CLUSTERED INDEX Ind_Sicil ON Person_Bilgi (Sicil_No) SQL Server da sıralı indeks oluşturabilir. Sıralı indeks için ASC veya DESC deyimleri sütun adlarıyla beraber kullanılır. Varsayılan sıralama değeri ASC dir. Örnek Uniqueİndeks CREATE INDEX Ind_Brut_Ucret ON Person_Bilgi (Brut_Ucret DESC) Verilerin tekrarlanmaması için kullanılır. Verilerin tekrarlanmaması için UNIQUE deyimini kullanmak yeterlidir. Veri alma ve tekrarı önlemede aynı indeks kullanılabilir. UNIQUE indeks, hem clustered hem de nonclustered tipte olabilir. Kısıtlayıcı (Primary Key Constraint veya Unique Constraint) tanımı yapıldığında Unique indeks otomatik olarak oluşur. Bu oluşum yapılırken indeksin clustered olup olmayacağı belirtilmelidir. Kullanıcı bir seçenek belirtmezse

Primary Key Constraint SQL Server ca Unique indeks olarak Unique Constraint de nonclustered unique indeks olarak belirlenir. Örnek ALTER TABLE Person_Bilgi ADD CONSTRAINT PK_Sicil PRIMARY KEY(Sicil_No) CLUSTERED Karma (Composite)veya Birleşik İndeks Birbiriyle ilişkili tablolar arasında bir tablonun iki sütunu birincil anahtar olarak belirlenebilir. Bu duruma karmaşık veya birleşik indeks denir. Örnek ALTER TABLE Personel ADD CONSTRAINT PK_Personel PRIMARY KEY (TCKimlikNo,Sicil_No) CLUSTERED İndeks te Değişiklik Yapmak İndekslerde çeşitli amaçlar doğrultusunda değişiklikler yapılabilir. Bir indeks, yeniden derlenebilir (rebuild), yeniden düzenlenebilir (reorganize), kullanıma kapatılabilir (disable) ve seçenekleri değiştirilebilir (set). Bir indekste değişiklik iki yolla yapılabilir: Management Studio ve DDL ifadelerinden ALTER INDEX komutu indekste değişiklikler yapılmasını sağlar. İndekste değişiklik yapmak için tabloda oluşturulmuş indeks üzerinde fareyle sağ tıklayınız ve Properties komutunu seçiniz. Properties komutunu verdiğinizde indeksle ilgili bilgiler ekrana gelecektir.

Bu pencere üzerinden indeksin tipini değiştirebilir, unique özelliği verebilir, yeni bir indeks daha ekleyebilirsiniz. ALTER INDEX in kullanımı ise şöyledir: ALTER INDEX indeks_adıveya ALL ON (tablo_adı.indeks_adı) ( REBUILD veya REORGANIZE veya DISABLE veya SET (indeks_seçenekleri) )