VER TABANI PROGRAMCILARINA PUÇLARI



Benzer belgeler
«BM364» Veritabanı Uygulamaları

SQL Server 2008 ile Tanışma"

Microsoft SQL Server Sorgulama

Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Veri Tabanı ve Yönetimi (BİL 301)

«BM364» Veritabanı Uygulamaları

Veri Taban ve Visual Basic

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

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

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

«BM364» Veritabanı Uygulamaları-2

Mysql Veritabanı Komutları

SQL Komutları (2) Uzm. Murat YAZICI

1 MICROSOFT SQL SERVER A GENEL BAKIŞ

Veri Tabanı Hafta Dersi

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

Ders Tanıtım Sunumu. Database Managegement II. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

«BM364» Veritabanı Uygulamaları

Veri Bütünlüğü ve Constraint ler. Veritabanı 1

«BM364» Veritabanı Uygulamaları

Yazılımcılar İçin SQL Server 2008 ve Veritabanı Programlama

Oracle da kullanılan veri tipleri:

ÜNİTE 8 SQL Dili ve T-SQL Uygulamaları

8 Oracle da tablo yapısı içinde otomatik artan kolon yoktur. (identity kolon

SQL TRIGGERS (Tetikleyiciler)

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

ACCESS PLATFORMUNDA SQL

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

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

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

Kullanıcı tanımlı fonksiyonlar SQL2000 ile gelen özelliklerden biridir. Fonksiyonlar tek bir değer veya tablo döndürmek için kullanılır.

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

VB de Veri Türleri 1

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

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

Her bölüm için kısa bazı girişler yapılacak ve bölüm içerisinde anlatılacak olan konuların genel başlıkları belirtilecektir.

Veri Tabanı Programlamaya Giriş

T-SQL NEDİR? Microsoft T-SQL Transact-SQL

SQL'e Giriş 2. CREATE TABLE tabloadı (kolon isimleri ve veri türleri) (BOLUM_NO NUMBER, BOLUM_ADI CHAR(10));

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

Yaz l mc lar çin SQL Server 2012 ve Veritaban Programlama

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

08221 Veri Tabanı II. Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı Eki Çarş. Perş. Öğr. Gör. Murat KEÇECĠOĞLU

MODÜL. Verileri Sorgulamak" Yaşar GÖZÜDELİ.

Maltepe Üniversitesi Endüstri Mühendisliği Bölümü Veri Tabanı Yönetimi (END 210)

Veri Tabanı ve Yönetimi

SQL e Giriş. Uzm. Murat YAZICI

VERİ TABANI ve YÖNETİMİ

2- Total de 8000 byte yer tutup 4000 karakter olarak kullanabildiğimiz tip aşağıdakilerden hangisidir?

YAPISAL SORGULAMA DİLİ. BARIŞ ARIBURNU barisariburnu.com

Veri Tabanı-I 5.Hafta

Veritabanı İşlemleri

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

Cursor. Bir veri tipi olarak da ele alınabilen Transact-SQL Sunucu Cursor şu aşamalardan geçirilerek kullanılır.

SORGULAR VE ÇEŞİTLERİ II

Data Programming SQL Language. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

KULLANICI TANIMLI FONKSİYONLAR

SIMCC - Simülasyon Kontrol Merkezi. SIMCC Genel Bak&8. Simülasyon nedir?

PostgreSQL ve PL/pgSQL

EBE-368 Veri Tabanı Yönetim Sistemleri SQL

Bölüm 8 Ön Ürün ve Hzl Uygulama Gelitirme. 8lk Kullanc Tepkileri. Dört Çeit Ön Ürün. Ana Konular. Yamal Ön Ürün. Ön Ürün Gelitirme

SQL PROGRAMLAMA. Bir batch, bir arada bulunan bir dizi SQL deyimidir. Batch ayıracı GO deyimidir.

Veri Tabanı SQL Server ve Management Studio kurulum linkleri:

SUNGURLU MESLEK YÜKSEKOKULU 5. T-SQL

MSSQL Server 2000 Kurulumu

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

EROL AKGÜL

FIRAT ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BİLGİSAYAR SİSTEMLERİ LABORATUVARI- DENEY NO:3 CLIENT SERVER ORTAMINDA VERİTABANI KULLANIMI

Gruplama (aggregate) fonksiyonları bir dizi değer üzerinde hesaplama yaparlar ve bir sonuç

VERİTABANI Veritabanı Yönetimi

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

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

VERİ TABANI ve YÖNETİMİ

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

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

«BM364» Veritabanı Uygulamaları

Fonksiyonlar istenilen deger tipinde dönüs yapabilir. INT, VARCHAR deger döndürebileceğiniz gibi bir tablo da döndürebilirsiniz.

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

SQL Stored Procedure

İlk Konsol Uygulamamız 2 İlk Windows Uygulamamız 9.Net Framework Yapısı 18 Neler Öğrendik 19. Veri Tipleri 24 Tanımlı Veri Tipleri 27 Basit Tipler 28

1 ORACLE 11G DATABASE SERVER LE

Veritabanına Uygulanması

Bir çeşit prosedür. Ancak bu prosedür kendiliğinden çalışır. Çalışması için tabloya veri eklemek, veri silmek, veri değiştirmek yeterlidir.

PostgreSQL ve PL/pgSQL

EXISTS VE NOT EXISTS fonksiyonları

1. Araçların tüm bilgilerini ve bağlı oldukları kiralama noktasının adres ve telefonunu içeren tam listesi:

STORED PROCEDURE LER (Saklı Yordamlar)

SQL Kod ile Tablo Oluşturma

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

1 - Adi A Harfi İle Biten Kişilerin Listesi İçin Hangisi Kullanılmalıdır? Select * From Kisiler Where Adi End A Select * From Kisiler Where Adi Like

Nesneler üzerinde değişiklik yapmak için kullanılır. Veri tabanındaki nesnelerin oluşturulabilmesi için CREATE komutu kullanılır.

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

T.C GAZİ ÜNİVERSİTESİ BİLİŞİM ENSTİTÜSÜ YÖNETİM BİLİŞİM SİSTEMLERİ ANA BİLİM DALI MS SQL KOMUTLARI VE MS SQL KOMUTLARI İLE İLGİLİ UYGULAMALAR

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Asp.Net Veritabanı İşlemleri

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.

Aşağıdaki tabloyu inceleyin. Sorgulama işlemlerini bu tabloya göre yapacağız.

Modeli OSI AA. OSI modeli. larnnn ilk günlerinde farkl firmalar kendilerine özel teknolojilerle aa. Bilgisayar (dijital) alara

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

Veritabanı Yönetim Sistemleri (Başarım Eniyileme Performance Tuning)

Transkript:

EK A VERTABANI PROGRAMCILARINA PUÇLARI Bu ksmda, veritabann daha etkin kullanabilmek için ihtiyaç duyacamz, ama kitap ak içerisinde, ak datmamak adna yer verilememi önemli hususlarn özeti yer almakta. Bu çerçevede SQL Server 2000, 2005 ve 2008'deki verilerinizi 2012'ye aktarma konusu da ele alnmakta. Ayrca bölüm içerisinde size çeitli gereksinimleriniz için ufuk açmay hedefleyen, gerek duyduunuzda baka kaynaklardan detaylandrmanz gereken önemli hususlara yer verilmitir. EK B C# VE OOP KILAVUZU Bu ksm, T-SQL'i bir programlama dili olarak bilenler için C# diline hzl bir balangç maksatl eklenmitir. Ünitenin sonlarna doru nesneye dayal programlamann genel bir özetini ve takip eden sayfalarda da 3N katman mimarisi için örnek bir uygulama bulabilirsiniz. EK A ve EK B Bölümlerinin Tamamn CD çerisinde Bulabilirsiniz.

EK C BÖLÜM SONU SORU CEVAPLARI Bu bölümde her bir bölümün sonunda yer alan tekrar sorularnn cevap anahtarlar yer almaktadr. 1. Bölüm 1. Verileri tablolara bölerek saklayan ve tablolar arasnda ilikiler tanmlamaya olanak salayan veritaban sistemine likisel Veritaban denir. 2. likisel Veritabanlarnda sorgu amaçl kullanlan genel dile SQL denir. 3. Birinci Anahtar: Bir tablodaki varlklar ayrt edici olarak bulunan ve tekrar etmeyen satra verilen addr. Yabanc Anahtar: Bir varla ait ek bilgilerin bulunduu baka tablo(lar)da, varl temsil etmek üzere bulunan birincil anahtar deerlerini içeren sütuna yabanc anahtar denir. 4. Management Studio nesne temelli ve T-SQL temelli veritaban yönetim ilevleri için kullanlan SQL Server 2005 istemci yazlmdr. 5. SQL Server Configuration Manager, SQL Server servislerinin balatlp durdurulmasn salar. letim sisteminde çalan dier servisler de dahil servislerle ilgili daha detayl bilgi Denetim Masas, Yönetimsel Araçlar, Hizmetler ksmndan alnabilir. 6. SQL Server içerisinde C# ile yazlm bir kod yer alabilir. Bu kodun çalmasndan CLR birimi sorumludur. 7. Tablo, view, stored procedure, trigger, constraint, indeks, sütun, role, kullanc, login, veritaban, kuruk, kontrat 8. SQL Server 2 farkl sunucu seviyeli kullanc eriim modu destekler: Windows Only ve Mixed Mode. Her biri konu içerisinde ele alnmtr. 9. Bir ilikisel veritaban sorgulama Seçme, z düürme ve birletirme ilemleri desteklenmelidir. 10. Management Studio ve SqlCmd ortamlarnda T-SQL yazlp çaltrlabilir. 11. SQL 3 alt dil grubundan oluur: DDL: CREATE, ALTER, DROP DML: SELECT, INSERT, UPDATE, DELETE DCL: GRANT, DENY, REVOKE 12. SUM(), MIN(), MAX(), COUNT(), GETDATE(), MONTH(), REPLACE(), CONCAT()

666 Yazlmclar çin SQL Server 2012 ve Veritaban Programlama 2. Bölüm 1. Bir uygulamann veritaban katmann tasarlamak 3 aamada ele alnmaldr: KAVRAMSAL: programn kullanlaca ortam ile ilgili model MANTIKSAL: veritabannn teoriler ekseninde ve programclara göre ekillenmi hali FZKSEL: veritabannn gerçek olarak çaltrlabilir ve stabil halini gösteren model 2. Bir veritabannda performans kayglarndan ötürü denormalizasyonlara bavurulacaksa, bu fiziksel model seviyesinde ele alnmaldr. 3. Bir veritabannn boyunu ve artm miktarn ilk haldeki veri miktar ve zaman içerisinde eklenecek veri eilimi ile kestirebiliriz. 4. Tempdb veritabannn boyutu ve bulunduu disk eriimleri hzlandrmak için önemlidir. 5. Bir proje bittikten sonra sürekli olarak Türkçe karakter problemleri ile karlald- nda, veritaban ve sunucu seviyeli Collation ayarlarnn düzgün olarak yaplandrlmas gerekiyor demektir. 6. Bir uygulamada veritaban seviyesinde, veri eklemek ve deitirme gibi ilemlerde tarih formatnda problem çekildiinde, veritabanna erien kullancnn default dilinin Türkçe olmas ileri kolaylatracaktr. 7. SQL Server, tanmsal veri bütünlüü tekniklerinden Constraint, Rule ve Default nesnelerine destek verir. 8. DEFAULT nesnesi ile ide olan Constraint Default Constraint'dir. Rule nesnesi Check Constraint'in ilevini yerine getirir. Check constraint ayn ilevi daha az efor ile yerine getirebilir. 9. Birim Bütünlüü ile Domain Bütünlüü arasndaki en temel fark, birim bütünlüü bir satra ait verilerin kendi içerisinde tutarl olmasn hedeflerken, domain bütünlüü bir sütuna ait verilerin kendi içinde uyumlu olmasn hedefler. 10. Bir tabloda en fazla bir tane Primary Key Constraint yeralabilir. 11. Unique Constraint Primary Key Constraint'e ramen bir tabloda, PK dnda tekil olmas gereken sütunlar olduunda kullanlr. UC null olabilir, PK olamaz. Bir tabloda birden fazla fazla UC olabilir ama sadece bir tane PK olabilir. 12. Bir tabloya Unique Constraint eklenmek istediinde, tabloda önceden varolan kaytlarn en fazla bir tanesinin NULL olmas ve bütün deerlerin birbirinden farkl olmas gerekir. 13. Bir tablonun bir sütununa gelebilecek deerlerin, baka bir tablonun içerdii deerlerden olmasnn SQL Server tarafndan denetlenmesi isteniyorsa hangi Constraint tanmlanmaldr? 14. Ya dorudan Management Studio nesne yönetim arayüzleri ile veya u yap ile: ALTER TABLE tablo_ismi ALTER COLUMN sutun_ismi SET DEFAULT default_deger fonksiyon_ismi()

Ek C: Bölüm Sonu Soru Cevaplar 667 15. likili iki tablodan birindeki veriler silindiinde veya güncellendiinde, ilikili bulunduu tabloya deiikliin yanstlabilmesi için basamakl veri bütünlüü tanmnn yaplm olmas gerekir. Aksi halde veri deiimi hiç yaplmaz. 16. Veri eklemekle ilgili bir ilem için Constraint'ler zorluk çkaryorsa gerçekletirilebilecek en pratik çözüm bir süre constraint'leri susturmak, verileri ekleyip tutarl hale getirdikten sonra geri açmaktr. 17. Rule ve Default nesnelerinin yapabilecei eyleri Constraint'ler yapabildii halde, SQL Server bu nesnelere geriye doru uyumluluk için destek vermeye devam etmektedir. 3. Bölüm 1. Sorgu belli kriterleri salayan verileri veritabanndan seçmek demektir. Genel olarak bir sorgu SELECT, FROM ve WHERE yan cümleciklerinden olutur. 2. Tekrarlayan satrlar indirgemek için DISTINCT deyimi kullanlr. 3. Metin ve tarihsel sabitler tek trnak içerisine alnarak kullanlr. Saysal sabitler dorudan kullanlr. 4. oker karakterler(_, % ve [XYZ] ile [^XYZ]) sadece LIKE operatörü ile kullanlabilirler, '=' ile kullanlamaz. 5. Tarihi istenilen formatta göstermek için CONVERT fonksiyonu kullanlr. 6. SELECT isim + ' '' ' + soyad FROM tblkullanici 7. Altsorgu bir SELECT ifadesi içerisinde baka bir SELECT ifadesi daha yer almasdr. Altsorgu ile ilgili [NOT] IN, [NOT] EXISTS gibi kelimeler ayrlm kelimeler kullanlabilir. 8. Normalizasyon amacyla farkl tablolara dalm verileri birletirip bir tek tabloymu gibi sorgulamak gerektiinde JOIN kullanrz. 9. Inner Join ile Outer Join arasndaki temel fark; birletirmeye katlan her iki tabloda sadece eleen kaytlar gelmesi gerektiinde INNER JOIN, tablolardan elemeyenlerin de sonuçta yer almas gerektiinde de OUTER JOIN ifadeleri kullanlmasdr. 10. Full Outer Join'e birletirmeye katlan her iki tablonun da fazladan olan satrlarn görmek gerektiinde ihtiyaç duyulur. 11. WHERE ile HAVING arasndaki fark, HAVING'in gruplanm veriler üstünde filtreleme yapmasna ramen, WHERE'in gruplamaya girmeden önce filtreleme yapmasdr. 12. CUBE, GROUP BY'dan sonra yer alan her sütun için içten da doru bütün farkl kombinasyonlardaki gruplamal fonksiyon sonuçlarn bulur. ROLLUP ise, sadece içten da doru sonuçlar korele eder. 13. GROUP BY verileri gruplara ayrarak sorgulamak amacyla kullanlr. ORDER BY ise verileri seçme ilemi bittikten sonra sraya koymak için kullanlr. 14. COMPUTE'in kullanld her yerde, COMPUTE BY ifadesi kullanlamaz. COMPUTE BY ifadesi kullanabilmek için, sorguda, ORDER BY deyimi ile birlikte, ilgili sütunun yeralmas gerekir. COMPUTE için böyle bir kstlama yoktur. 15. Bir tabloda yer alan bütün kaytlar, loglamadan boaltmak için TRUNCATE TABLE deyimi kullanlr.

668 Yazlmclar çin SQL Server 2012 ve Veritaban Programlama 16. Bir tablodaki veriler, baka bir tablodaki veriler de kullanlarak güncellenmek durumunda iken oluturulan bir sorguda alt sorgu kullanlmazsa, hem MS Access hem de MS SQL Server tarafndan kullanlamaz. Çünkü veri güncelleme esnasnda yaplan JOIN ilemi bu iki VTYS için farkldr. 17. CTE ve Türetilmi tablo birbirine ilev olarak çok benzer. Ancak CTE rekürsif sorgulara olanak tanmas ve baz birkaç ileme izin vermebilmesi nedeniyle türetilmi tabloya nazaran daha ilevsel olabilmektedir. 18. PIVOT ve UNPIVOT satr içerisindeki deerlerden sütun olutururken veya sütunlar birer satr deeriymi gibi göstermek için kullanlrlar. 19. Bir tablodaki satrlarda yer alan verilerden her birine baklarak ayr ayr ilemler yapmak gerekiyorsa, Cursor tür bir deiken ile verilere erimemiz gerekir. 20. Transact-SQL Sunucu Cursor'ler ve API Sunucu Cursor'ler olmak üzere iki farkl Cursor türü için SQL Server 2005 destek salar. Cursorler'den kilitlenme ve performans kayplar nedeniyle kaçnmak gerekir. 4. Bölüm 1. View'ler karmak veritaban emalarn basitletirmek için, güvenlik ve yetkilendirme maksatl, birim dönüümleri gibi farkl görünmesi gerekli veri ihtiyacn karlamak maksatl, indekslenerek performans maksatl kullanlabilirler. 2. WITH CHECK OPTIONS,baz satrlara eriimi olmayan bir view üstünden kapsam dndaki verilere müdahale edilmesini engellemek amaçl kullanlr. 3. view sadece kayt döndüren ifadeler tayin etmek için kullanlr. Oysa senonim, tablo, stored procedure gibi bir çok türden nesne için kalc takma ad tayin etmede kullanlabilir. 4. Unique olmayan Clustered Indeks tanmlanabilir. Hatta bu genellikle doru kullanldnda performans artrc bir unsur olabilir. 5. Bir sütuna girilen verinin tekilliini salamak için Constraint tanmlamadan çözüm üretilebilir. Constraint yerine tekil indekslerle de kaytlar tekil olmaya zorlanabilir. 6. Bir indeks için fillfactor deeri verilmezse, Global Fillfactor deerleri(sunucu veya veritaban seviyeli default ayarlar) esas alnarak indeks oluturulur. 7. Oluturulmu bir indeks'in fillfactor deerini ALTER INDEX REBUILD ile deitirmek mümkündür. 8. Primary Key Constraint ve Unique Key Constraint'lerin izdüümü olarak otomatik Unique Indeksler tanmlanr. Bu indeksler DROP INDEX ile silinemezler. Constraint silindii zaman otomatik olarak silinirler. 9. Clustred Indeks'ler ve daha önce indekslenmi sütunlar, covering indeks için, tekrardan indekslenmezler. Bu nedenle, geriye kalan iki sütunun indekslenmesi yeterlidir. CREATE INDEX idx_covering ON tblurun(urunkod,urunad)

Ek C: Bölüm Sonu Soru Cevaplar 669 10. CREATE UNIQUE CLUSTRED INDEX cx_marka ON tblmarka (MarkaKod, Marka) ile tanmlanan indeks, SELECT markakod, marka FROM tblmarka WHERE marka='vestel' Sorgusu için, idealdir. Çünkü, covering indeks'tir ve daha da iyi bir durum, clustred bir indekstir. 11. Bir indeks için sralama verilmezse, anahtarlar artan srada(asc) olarak varsaylr. Bu nedenle de artan deerler eklinde sralanr. 12. Bir tablo sadece bir tek nonclustred indeks içeriyorsa, bir heap tanmlanr. Verilere, bu heap üstünden eriilir. 13. Sktrma veya filtreli indeks yaklamlar ile indeks boyutlar küçük tutulabilir. 14. Database Tuning Advisor bir Sql Profiler trace dosyasn veya bizim belirlediimiz bir sorguyu ele alarak bu sorgu ile ilgili iyiletirmeler önerir. SQL Profiler, SQL Server'a gelen ve çaltrlan ifadeleri takip etmek maksatl kullanlr. Bu takibat kaydedip daha sonra DTA ile analiz edebiliriz. 5. Bölüm 1. Stored Procedure'ler sistem stored procedure'leri, CLR Stored Procedure'ler, Extended Stored Procedure'ler ve kullanc tanml stored procedure'ler gibi türler halinde incelenebilirler. 2. Bir stored procedure'ün tanmnda hangi tablolara atfta bulunulduunu sp_depends örenebiliriz. 3. Bir stored procedure'ün kaynak kodunu WITH ENCRYPTION seçenei ile tanmlanarak, bir bir stored procedure'ün kaynak kodunu korumal hale getirebiliriz. Encrypted Stored Procedure'ler SQL Profiler tarafndan da görüntülenmezler ve Replike edilemezler. 4. Girdi parametreler, stored procedure'e deer aktarmak için standart bir giri tanmlar. Çkt parametreler, özellikle stored procedure'ün birden fazla deer döndürmesi veya INTEGER türü dnda deer döndürmesi gerektiinde kullanlr. RETURN deyimi, stored procedure sadece bir tek deer döndürecekse ve bu deer de INTEGER ise kullanlabilir. Genellikle hata kodu, sorgudan etkilenen kayt gibi de- erleri döndürmek için kullanlr 5. Çaltrma plan, Procedure Cash denilen bölgede tutulduu için, karmak stored procedure'ler genel olarak ikinci çaltrmada, ilk çaltrmaya göre daha hzl çalrlar. 6. Yerel Stored Procedure'ler oturuma özgüdür. Ayn anda oturum açan fakl kullanclar birbirlerinin geçici stored procedure'lerini göremezler. 7. Bir stored procedure ilk çalmasnda hzl sonuç getirmesine ramen takip eden çalmalarnda yava sonuç getiriyorsa, stored procedure'ün her çaltrlmada, yeniden derlenmesi gerekiyor demektir. Bunun için, stored procedure'ün WITH RECOMPILE seçenei ile tanmlanmas performans artrc etkide bulunabilir

670 Yazlmclar çin SQL Server 2012 ve Veritaban Programlama 8. Stored Procedure, derlenmitir. Yani çaltrma plan procedure cash denilen hafza bölgesinde tutulmaktadr. lk çaltrmadan sonraki çaltrmalarda daha hzl netice verir. Script ise, hiç bir derlemeye tabi tutulmaz. Her çaltrlmasnda bütün ilemler batan ele alnr. 9. Kullanc tanml fonksiyonlar hesaplanm sütun oluturmada kullanlabilir. Sütun olarak kullanlm bir kullanc tanml fonksiyon deterministik ise indekslenebilir. 10. Tablo gibi ve sütun gibi olmak üzere ilevsel olarak iki farkl Kullanc Tanml Fonksiyon vardr. 11. Bir view parametre alamaz. Parametre alacak view gereksinimi için Tablo gibi davranan Kullanc Tanml Fonksiyonlar kullanlabilir. 12. Fonksiyonlar, yan etkide bulunamadklar için sistemdeki verileri deitiremezler. Veritabanna veri ekleme ve silme gibi ilemler için veritaban uç noktas olarak fonksiyonlar deil, stored procedure'ler kullanlr. 13. T-SQL dnda CLR dillerinde de KTF programlanabilir. Özellikle CPU'yu youn kullanacak ilemler için tercih etmek 14. Bir tablo ile bir fonksiyonu, ayet tablonun bir sütununu fonksiyon parametre olarak alyorsa, APPLY operatörü yardm ile birletirebiliriz. Ama fonksiyon tablodan bamsz tablo tipi sonuç döndürüyorsa, APPLY operatörü olmadan, JOIN ifadesi ile birletirme yaplabilir. 15. EXEC() ve sp_executesql arasndaki fark, sp_executesql'in çaltrma plan optimize edilebilir ifadeler çaltrmak için uygun olmasdr. Bir veritabanndaki bütün indeksleri yeniden derleyecek bir program yazmanz gerekse plan derleme gereksinimi olmadndan EXEC() fonksiyonu ama dinamik olarak oluturulmas gereken ve çok sayda verilerin olduu bir tabloyu sorgulayan bir ifadeyi parametrik çaltrmak gerekiyorsa sp_executesql stored procedure'ünü tercih etmek mantkl olacaktr. 16. Bir SP içerisinde TRY-CATCH yaps kullanlmayan noktada hata meydana gelirse hata ele alnamaz ve program kullancsna programn çalmasnn krlmas olarak yansr. 17. RAISERROR fonksiyonu ile bir hata ortama frlatldnda balant kopuyorsa, hatann seviyesi 21 veya daha yukardaki bir deer ile frlatldn gösterir. 6. Bölüm 1. XML veriyi XQuery ile sorgularz. 2. XML bir veri tipinin 5 farkl metodu vardr..query: XQuery sogular için kullanlr.value: Deerleri skaler bir veritaban tipine döndürür.exist: Bir XQuery sorgu sonunun olup olmadna bakar.nodes: Bir XML düümü döndürmek için kullanlr.modify: XML-DML ifadeleri çaltrmak için kullanlr 3. XML veri tipini herhangi bir metin tür(meslea NVARCHAR(MAX) )veri tipinden ayran en önemli fark binary olarak parse edilmi olmas ve bu nedenle de çeitli geçerlilik denetlemelerine ve sorgulamalara tabi tutulabiliyor olmasdr.

Ek C: Bölüm Sonu Soru Cevaplar 671 4. birincil ve ikincil indeks tanmlanabilir. XML sütun üstünde indeks tanmlamas, ait olduu tablonun birincil anahtar olmasn ve sütun üstünde bir birincil XML indeks tanmlanm olmasn gerektirir. 5. XML bir veriyi sadece veritabannda tutmak için ilikisele çevirmek, gereksiz ilem maliyeti getirdii için tercih edilmez. 6. FOR XML tabular sorgu sonuçlarn XML'e dönütürür. 7. OPEN XML, XML verileri ilikisel domaine dönütürmede kullanlr. Yardmc sistem stored procedure'leri sp_xml_preparedocument ve sp_xml_removedocument'dir. 7. Bölüm 1. Daha küçük parçalara ayrlamayan bir dize ilemin bir bütün olarak ele alnmasn salayan yapya transaction denir. 2. SQL Server 3 çeit transaction'a destek verir: Otomatik Sabitleme: Normal olarak SQL Server'in çalt Transaction modudur. SQL Server'e gelen her bir batch tek bir transaction olarak ele alnr ve transaction, batch'in çaltrlmas biter bitmez SQL Server tarafndan bitirilir. Harici Transaction: Programc tarafndan BEGIN TRAN ile balatlan ve programc veya sistem tarafndan bitirilebilen, genel manada kastedilen transaction modudur. Dahili Transaction: SQL Server'in belli ifadelerden önce otomatik transaction balatmas eklindeki mod olup, bu moda geçirme iini kullancnn veya programcnn yapmas gerekir. Bu modda, her bir transaction açldnda, sonlandrma ii kullancya braklmtr. 3. Ortak zamanl çalmada ortaya çkan sorunlar: Kayp Güncelleme(Lost Update) Tekrarlamasz Okuma(non-repeatable Read) Hayalet Okuma(fantom-read) Kirli Okuma(dirty read) 4. SQL Server u izolasyon seviyelerine destek salar: Read Uncommited Read Commited Repeatable Read Serialisible 5. ki proses veya kullancdan her biri fakl ilemler yaparken aslnda karlkl olarak dierinin bir sonraki admn tkayan ve bu nedenle de her ikisi de ilerleyemeyen proseslerin içinde bulunduklar duruma dead lock denir.

672 Yazlmclar çin SQL Server 2012 ve Veritaban Programlama 6. sp_lock ve sp_who sistem stored procedure'leri kullanlarak, kaynaklardan hangilerini kimler tarafndan kilitlendii görüntülenir. Ardndan kilitleme yapan transaction ksm gözden geçirilir. 7. Trigger'lar Stored Procedure'lerden ayran özellikler: Dardan parametre almazlar stediimiz zaman devreye sokamayz. Sadece belli veri deiimlerinde(ekleme- Silme veya Güncelleme annda) devreye girerler AFTER trigger'lar transaction'dan sonra devreye girerler Tablolar üstünde tanmlanabilirler. Baka bir yerden çarlamazlar ve sonuç döndürülemezler. 8. Ayn veritaban içerisindeki yabanc anahtar kontrolü, basamakl veri bütünlüü, bir SQL ifadesinin etkiledii kayt saysnn gösterilmesi 9. UPDATE ve DELETE ilemlerinin her ikisi için de devreye girecek bir AFTER trigger' yazlabilir. Ayn ekilde bir INSTEAD OF trigger' da yazlabilir. Ancak bu durumda, UPDATE ve DELETE ilemlerinden herhangi biri için ikinci bir INSTEAD OF trigger' tanmlanamaz. 10. Trigger'lar da Constraint'ler gibi belli bir süre için devre d braklabilirler. Constraint'lerden farkl olarak, trigger pasif iken gerçekletirilen ilemleri, trigger aktif edildiinde denetleyemez. Bunun için, ALTER TABLE tablo_ismi DISABLE TRIGGER trigger_ismi ALL yaps kullanlr. 11. Bir tablo üstünde INSTEAD OF trigger varsa, ilk olarak bu tepkimeye girer. Arkasndan Constraint tepki verebilir. Constraint'ten sonra, tanml bulunan trigger'lardan biri devreye girer. Ancak hangisinin önce girecei belirlenemez. Bu nedenle, en son tepkimeye girecek nesne iki INSERT tirgger'ndan biridir ancak hangisi olaca garanti edilemez. Garanti etmek için, bir tek AFTER INSERT trigger' içerisinde bu iki trigger'n uygun srada çarlmas gerekir. 12. AFTER UPDATE trigger' devreye girdiinde, hem Inserted hem de Deleted sözde tablolarn oluturur. 8. Bölüm 1. Assembly, CLR temelli kodlarn datm ve versiyonlama birimine verilen addr. SQL Server için assembly sadece dll uzantl CLR kütüphanelerine verilen addr. 2. Bir veritabannn yedei alndnda CLR bileenleri ve assembly'ler de yedeklenir. 3. Bir assembly içerisinde yer alan metotlar ve tipleri görmek mümkündür. SELECT * FROM sys.assembly_modules Sorgusu bu türden bir bilgi almak için kullanlabilir.

Ek C: Bölüm Sonu Soru Cevaplar 673 4. CLR ortamnda Stored Procedure, Trigger, Kullanc Tanml Fonksiyon, Kullanc Tanml Tip ve Kullanc Tanml Grupsallar programlamak mümkündür. 5. Trigger, Stored Procedure ve skaler tip kullanc tanml fonksiyonlar sadece metodlar eletirmekle tanmlayabiliriz. 6. Teorik olarak, CLR bileenlerini T-SQL'e ramen kullanmay CPU'yu youn olarak kullanan ilemler,.net kütüphanesine gereksinim duyan programlar, düük seviye veri ilemi yapan ve veritaban seviyeli veri eriimleri dndaki ilemlerde kullanlr. 7. Genelde Cursor yaplarndan kaçnmak için ve sistemde hali hazrda bulunmayan grupsal fonksiyonlar için grupsallar kullanmak gerekir. SUM fonksiyonunu biz yazdnzda daha hzl çalmaz. Çünkü gerçek SUM fonksiyonu alt seviyeli olarak gerçeklenmitir. 9. Bölüm 1. Uzaktaki bir SQL Server'daki verileri hzl bir balant üstünden, yereldeki SQL Server'in içerdii verilerle birlikte sorgulamanz gerekiyorsa bal sunucu tanmlayarak bu tanmlama üstünden sorgulamak yeterli olacaktr. 2. Metin dosyalarn, Excel ve Access dosyalarn SQL Server'da birer tablo gibi sorgulayabiliriz. Bunun için OLE-DB Driver'larn dinamik olarak yükleyecek cümlecikleri yazarz veya bir bal sunucu tanmlayp bu sunucu üstünden bu kaynaklar sorgulayabiliriz. 3. Programlanabilir öelerden Stored Procedure'ler ve Skaler sonuç döndüren kullanc tanml fonksiyonlar bir XML Web Servisi metodu olarak darya açlabilir. 4. Bir endpoint XML Web Servisi olarak yaplandrld ise, platform bamsz olarak, XML Web Servisi tüketebilen her türlü uygulama balanabilir. 5. Service Broker mimarisini gerçeklemek için Tip, Contract, Mesaj, Kuyruk, Servis Program, Servis, Route gibi bileenler kullanlr. 6. Service Broker, SOA temelli mimariyi veritaban seviyesinde gerçeklemek gerekti- inde kullanlr. 10. Bölüm 1. ADO.NET 2 çeit veri eriimine olanak salar: Bal Mod ve Kopuk mod. 2. Ayn anda iki tane DataReader bir tek connection üstünden veritabanna ADO.NET 2.0'dan itibaren MARS destei sayesinde eriebilir. Ayr iki Command nesnesi ile. 3. Bal modda bir veritaban eriimi kodlamak için 1. Connection nesnesinin Open() metodu, 2. Command nesnesinin dönecek deer türüne uygun bir metodu (Tabular sonuç için ExecuteReader()) ve son olarak SqlDataReader üstünden herhangi bir satra eriebilmek için Read() metodu kullanlr. 4. DataSet, veritabannn minyatür olandr. DataTable ve constraint gibi nenseler içerir. DataSet için minyatür veritaban tabiri kullanlmasnn nedeni temel veritaban bileenlerini içermesinden kaynaklanmaktadr. 5. Veri balama, veritabanndan gelen verileri kullanc arayüzlerine ilintilendirme sistematii demektir. 6. ASP.NET, Hzl Uygulama Gelitirme yaklamna SqlDataSource bileeni ile destek verir.

EK D DÜKKAN VERTABANI EMASI

676 Yazlmclar çin SQL Server 2012 ve Veritaban Programlama

EK E CD KULLANIM KILAVUZU CD Kullanım Kılavuzu Kitapta anlatlan örnekleri en azndan kstl olarak çaltrabilmeniz için lisanslama ücreti gerektirmeyen araçlardan bir ksmn CD içerisinde bulabilirsiniz. Araçlar Kitapta anlatlan örnekleri en azndan kstl olarak çaltrabilmeniz için gerekli araçlardan bir ksmn CD içerisinde bulabilirsiniz. SQL Server Express Edition SQL Server 2012'nin ücretsiz sürümü olan SSExpressEdition' DVD içerisinde DVD\1.aracalar_kurulumlar\SQLExpress yolunda bulabilirsiniz. ayet 64 bitlik bir kurulum yapmanz gerekirse, uygun olan sürümü http://download.microsoft.com adresinde aratarak indrebilirsiniz. SQL Server 2012 Bileenleri SQL Server 2012 için BOL(Books Online) kurulumunu DVD\1.aracalar_kurulumlar\BOOKS_ONLINE adresinde bulabilirsiniz. Bu doküman SQL Server hakknda yardm almak için kullanabilirsiniz. Örnek Veritabanları ve Kurulumları Kitap içerisindeki sorgularn üstünde yapld örnek veritabanlarn sisteminizde SQL Sever 2012 varken attach etmek isterseniz, Görsel Ders 2.2 'yi izleyebilirsiniz veya EK- A ( DVD\5.ekler_PDF_versiyon\ SQL_SERVER_2012_EK-A.pdf ) deki Attach- Deattach bahsine göz atnz. lgili veritabanlar sktrlm olarak, DVDROM\2.veri\ dizini altnda aadaki adlarla yer almaktadr.

678 Yazlmclar çin SQL Server 2012 ve Veritaban Programlama ekil E.1: CD içerisinde yer alan veritabanlar ve ilevleri Veritaban Ad Veri Dosyas Ad lev Dukkan veritaban Dukkan Veritaban Dukkan Veritaban 2005_dukkan_mdf_ ldf.zip 2008_dukkan_mdf_ldf.zip 2012_dukkan_data_m df_ldf.zip SQL Server 2005 kullancs iseniz ve örnekleri dorudan SQL Server 2008 verileri üstünde çaltrmak isterseniz bu veritabann kullanabilirsiniz. SQL Server 2008 kullancs iseniz ve örnekleri dorudan SQL Server 2008 verileri üstünde çaltrmak isterseniz bu veritabann kullanabilirsiniz. SQL Server 2012 kullancs iseniz ve örnekleri dorudan SQL Server 2012 verileri üstünde çaltrmak isterseniz bu veritabann kullanabilirsiniz. Adventureworks AdventureworksDW AdventureWorks2008 R2_Data.zip AdventureWorksDW Denali_Data.zip Microsoft'un SQL Server 2008R2 için örnek bir bisiklet parças üreticisi veritaban Adventureworks'ü bu dosya içeri-sinde bulabilirsiniz. Microsoft'un SQL Server 2012 için örnek bir bisiklet parças üreticisi veritaban AdventureworksDW'yi bu dosya içeri-sinde bulabilirsiniz. Dikkat: Sktrlm olan bu dosyalar, SQL Server'a attach edebilmek için öncelikle diskinizde bir yere açmanz gerekir. Çalıma Dökümleri Her bir bölüme ait SQL ifadeleri dndaki uygulama örneklerini, kolayca kopyalayarak test etmenizi salamak için ve baz altrmalar yapabilmeniz için gerekli ek bilgileri \4.calisma_dokumleri\ klasörü altnda bulabilirsiniz. CD Genel Klasör Yapısı Klasor çerii 1.aracalar_kurulumlar SQL Express Kurulumlar ve BOL(Sadece x86) 2.veri Örneklerde kullanlan veritabanlarna ait dosyalar(mdf,ldf) 3.gorsel_dersler 4.calisma_dokumleri 5.ekler_PDF_versiyon 6.eski_gorseller_cep_kitaplari Kitapta geçen görsel derslere ait video dosyalar Her ünite bir.txt dosyas olmak üzere kitapta geçen SQL örnekleri Kitap ek ünitelerinin pdf versiyonlar Cep kitaplar ve benzeri pdf' dokümanlar Sunumlar ve versiyonlara ait yenilikler vs. kaynaklar(2012-2008-2005-video-ppt)

EK F SERVCE BROKERS Bu ünitede neler öreneceiz Service Broker Mimarisi Nedir ve Neden Gerek Duyulur? Service Broker Grubu Nesneler ve levleri Service Broker Temelli Mesajlama Nasl Kullanlr? Broker bildiimiz manas ile 'arac' demek. 'Service Brokers' kavramn Servis Araclar ya da halk dili ile 'Hizmet Muamelecisi' diye çevirmek mümkün. Servis Broker mimarisi de SQL Server 2005 ile hayatmza giren bir kavram. Bu kavram sayesinde veritaban katmannda Servis Temelli Mimari(SOA)'yi gerçeklemek olaan hale gelmitir. Bu ünitede SOA mimarisi çerçevesinde bir e-ticaret sitesine kayt yapan ve bu kayt ilemine binaen e-posta atan iki servisi ayr ayr gerçekleyip kendi aralarnda konumalarn salayacaz. EK F Bölümünün Tamamn CD çerisinde Bulabilirsiniz.

Kaynakça Addison Wesley, A First Look at Microsoft SQL Server 2005 for Developers Apress, Advenced-Transact SQL for SQL Server 2000 Introducing Microsoft SQL Server 2005 for Developers MS Press, MCSA/MCSE/MCDBA Self-Paced Training Kit: Microsoft SQL Server 2000 (Exam 70-228 ve 70-229 ) 2nd ed. MS Press, Microsoft SQL Server 2000 Performance Tuning Technical Reference Wrox, SQL Server 2000 Professional Database Design SAMS, Teach Yourself SQL in 21 Days Que, SQL Server 2000 Programming by Example BYTE Türkiye, Veritaban Programlama 1-2 Kitapçklar Microsoft, MSDN ve BooksOnline www.verivizyon.com www.csharpnedir.com www.microsoft.com/sql www.sswug.org www.sqlservercentral.com www.sqlserveronculeri.com

Dizin @@CONNECTION 81 @@ERROR 387, 394, 406 @@IDENTITY 144 @@ROWCOUNT 406, 485 @@SERVERNAME 81 @@TRANCOUNT 458 @@VERSION 81 1-N 104, 105, 106 A Activity Monitor 478, 479 ADD 119, 157, 170, 171, 172, 174, 175, 178, 179, 180, 279, 303, 406, 422, 426, 440, 442, 490, 517, 520, 545 Ad-Hoc 390, 392, 562, 567, 606 Aggregate 79, 225, 550, 551 AGGREGATE 79, 225, 553 Alias 136, 188, 214 ALTER 72, 74, 91, 119, 120, 122, 123, 124, 125, 126, 127, 129, 157, 168, 170, 171, 172, 174, 175, 178, 179, 180, 181, 182, 268, 270, 271, 273, 279, 303, 311, 312, 313, 314, 316, 317, 328, 367, 368, 373, 375, 376, 400, 406, 422, 424, 425, 426, 440, 442, 459, 460, 462, 471, 472, 484, 487, 490, 497, 498, 502, 503, 517, 518, 519, 520, 542, 545, 566, 658, 659, 660 Anahtar 47, 49, 92, 104, 109, 484, 490 AND 175, 186, 191, 192, 193, 194, 203, 229, 248, 257, 258, 286, 297, 298, 304, 316, 324, 334, 335, 351, 364, 365, 366, 367, 368, 371, 373, 377, 495, 643 ANSI SQL-92 40 ANSI SQL-99 223 API 121, 347, 348, 353, 379, 511, 605, 608, 648 APPLY 403, 411, 412, 413, 431, 434, 435 AS 81, 82, 126, 139, 151, 157, 173, 175, 188, 195, 201, 208, 209, 214, 215, 219, 220, 226, 227, 236, 237, 239, 240, 242, 243, 244, 245, 247, 248, 249, 250, 265, 266, 268, 270, 272, 273, 274, 275, 278, 280, 281, 310, 338, 349, 363, 364, 365, 366, 367, 368, 370, 371, 373, 375, 376, 377, 379, 380, 381, 384, 385, 390, 393, 395, 396, 397, 399, 400, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 422, 430, 431, 442, 445, 450, 451, 452, 459, 460, 487, 489, 490, 491, 492, 493, 494, 495, 498, 499, 501, 502, 515, 537, 548, 614, 638 ASC 77, 186, 194, 237, 302 ASCII 74, 137, 138, 140, 201 ASSEMBLY 346, 512, 513, 514, 517, 518, 519, 520, 521, 537 AVG() 79, 80 B BETWEN... AND... 194 BIGINT 410, 411, 487, 495 BIT 335, 395, 410 Birincil Anahtar 47, 92, 104, 398, 484 Books Online 61, 87, 125, 196, 200, 219, 221, 226, 346, 361, 555, 565 BREAK 345, 385 BULK 125, 430, 445 Bütünlük 165, 166, 178 C CASCADE 90, 91, 165, 179, 180, 494 CASE 233, 344, 357 CHECK 164, 170, 173, 174, 175, 176, 182, 268, 273, 274, 275, 276, 426, 545 CHECKPOINT 479 cmd 57, 327, 360, 476, 530, 531, 533, 534, 538, 544, 607, 610, 611, 612, 614, 615, 616, 617, 621, 623, 624, 626, 627, 628, 638 Collation 126, 139, 140 COMMIT 456, 457, 458, 459, 460, 462, 463, 468, 471, 472, 567 Compiling 362 COMPUTE 234, 261, 266, 267, 348 COMPUTED COLUMN 157, 302 Concatenation 200 Configuration Manager 54, 55, 92 CONTINUE 346 CONVERT 82, 84, 85, 202, 203, 377, 399, 400, 419, 420, 477 Corelated 209 COUNT() 79 CREATE 72, 74, 75, 87, 88, 89, 90, 114, 115, 116, 117, 121, 124, 143, 146, 151, 152, 153, 154, 155, 156, 158, 159, 168, 169, 170, 171, 172, 173, 174, 175, 176, 178, 220, 241, 245, 265, 266, 267, 268, 270,

684 Yazlmclar çin SQL Server 2012 ve Veritaban Programlama 272, 273, 274, 275, 280, 281, 301, 302, 304, 305, 306, 307, 308, 309, 310, 311, 313, 315, 318, 319, 328, 337, 363, 364, 365, 366, 368, 370, 371, 373, 375, 377, 379, 384, 390, 393, 395, 398, 399, 400, 404, 405, 406, 407, 408, 409, 410, 411, 421, 422, 430, 440, 441, 442, 445, 457, 458, 459, 462, 484, 486, 487, 489, 490, 491, 492, 493, 494, 495, 497, 498, 499, 500, 501, 512, 513, 514, 515, 537, 548, 553, 554, 557, 566, 610, 614, 627, 638, 658 CROSS APPLY 412, 413, 434, 435 CROSS JOIN 216, 220, 221, 225 CTE 235, 236, 237, 238, 239, 240, 244, 260, 261, 262, 411 CUBE 231, 232, 233, 234, 261 Ç Çkt Parametre 375 D DAC 62, 63 Dal Seviye 289 Database Tuning Advisor 321, 323, 327, 329 DBCC 128, 129, 130, 317, 319, 458, 467, 519 DBCC SHRINKDATABASE 129, 130 DBCC SHRINKFILE 129 DEADLOCK 481 DEALLOCATE 348, 350, 352, 354, 385 DECLARE 332, 333, 335, 337, 338, 340, 342, 345, 346, 348, 349, 352, 354, 376, 377, 378, 384, 385, 386, 405, 406, 410, 420, 436, 445, 487, 495, 499, 525, 557 Default 47, 114, 118, 119, 120, 163, 164, 165, 166, 167, 168, 172, 173, 176, 179, 182, 183, 184, 194, 203, 325, 364, 371, 465, 563, 666, 667 DELETE 72, 75, 78, 79, 91, 124, 158, 165, 179, 180, 236, 237, 253, 257, 258, 259, 271, 296, 319, 339, 340, 352, 355, 376, 390, 393, 457, 462, 483, 484, 485, 486, 487, 491, 492, 493, 494, 495, 505, 528, 530, 531, 541, 566 DENY 87, 90, 91, 367 DESC 72, 77, 186, 194, 195, 196, 237, 248, 250, 302, 351, 353 Deterministik 79, 84 Deve Notasyonu 73 DISTINCT 186, 187, 227, 385 Distributed Query 565 Distributed Transaction 567, 624 Domain 166, 183, 565, 666 DROP 72, 75, 91, 124, 130, 146, 153, 157, 158, 159, 173, 175, 181, 271, 307, 311, 313, 314, 315, 316, 318, 328, 340, 369, 384, 462, 484, 487, 497, 498, 502, 503, 517, 519, 520, 521, 542, 566, 658, 660, 668 DTC 622 Dukkan 116, 121, 125, 126, 133, 153, 230, 268, 269, 279, 299, 312, 316, 319, 324, 422, 423, 439, 472, 498, 504, 568, 607, 609, 618, 621, 624, 629, 645, 658, 659, 660 E ENCRYPTION 268, 270, 367, 368, 405, 487 Enterprise Manager 120, 127, 128, 129, 160, 174, 176, 180, 310, 497, 502, 562 Entity 165 Executing 362 EXISTS 186, 210, 224, 343, 373, 390, 490, 491, 492, 493, 495 Explict 458 Extend 64, 65, 288, 478 F FETCH 348, 349, 352, 354, 385, 462 FILEGROWTH 115, 116, 117, 118, 119, 127, 279 FILENAME 115, 116, 117, 118, 119, 279 FILLFACTOR 296, 299, 307, 308, 309, 312, 315, 318 Filtreli indeks 306 Filtreli ndeks 294, 305, 306 FLOAT 142, 170 Fonksiyon 48, 81, 189, 201, 202, 225, 233, 396, 404, 408, 409, 412, 508, 511, 514, 521, 542, 543, 544, 548 For 427, 485, 487 FOR BROWSE 348 FULL [OUTER] JOIN 220 G GAM 65 Geography 577 Geometry 577 GETDATE() 81, 82, 84, 87, 100, 140, 165, 172, 202, 245, 364, 365, 366, 367, 368, 371, 377, 395, 398, 404, 406, 495, 499, 614 Girdi Parametre 369, 370 Global Deikenler 336

Dizin 685 GO 75, 81, 84, 159, 174, 220, 265, 266, 275, 363, 364, 365, 367, 368, 370, 371, 373, 375, 376, 377, 390, 393, 395, 490 GOTO 346, 395, 397 GRANT 87, 88, 89, 90, 122, 367, 462 GROUP BY 186, 208, 209, 224, 227, 228, 229, 230, 231, 232, 233, 234, 261, 268, 270, 278, 344, 351, 352, 353, 419, 543, 550, 553 GROUPING 233, 554 H HASH 222 HAVING 186, 229, 230, 261, 352 Hesaplanm Alan 157, 442 HierarchyID 146, 238, 569, 570 Hiyerarik Veri 105 HOLDLOCK 466, 480 I IDENTITY 142, 143, 144, 220, 248, 259, 272, 273, 277, 280, 281, 339, 398, 399, 430, 484, 499 IF... ELSE 341 IN 186, 205, 207, 224, 242, 243, 244, 245, 246, 249, 255, 307, 312, 351, 385, 404, 410, 448, 449 Indeks 47, 51, 64, 65, 66, 128, 164, 169, 170, 264, 271, 272, 273, 278, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 295, 296, 297, 298, 301, 302, 303, 304, 306, 307, 309, 310, 311, 314, 316, 317, 318, 323, 325, 326, 328, 329, 420, 439, 440, 477, 478, 668 INNER JOIN 186, 216, 217, 218, 222, 225, 229, 364, 368, 370, 371, 390, 407, 409, 411, 450, 489, 490, 492 INSERT 75, 76, 77, 89, 90, 91, 124, 143, 144, 146, 156, 159, 165, 166, 174, 237, 241, 245, 253, 254, 255, 256, 258, 271, 272, 273, 275, 276, 281, 296, 339, 340, 351, 365, 373, 395, 399, 400, 404, 408, 409, 410, 424, 425, 430, 434, 437, 445, 457, 458, 462, 463, 483, 484, 485, 486, 487, 489, 490, 492, 493, 494, 495, 499, 501, 505, 528, 542, 566, 567, 610, 621, 624, 628, 649 INSTEAD OF 272, 483, 484, 485, 487, 494, 495, 496, 497, 503, 505, 541 INT 91, 121, 143, 146, 159, 182, 220, 241, 275, 276, 333, 340, 345, 346, 370, 373, 377, 378, 379, 386, 390, 393, 398, 399, 400, 405, 406, 407, 409, 411, 421, 430, 440, 441, 445, 499, 525, 538, 548, 614, 626, 627 Intermediate 289, 510 likisel Veritaban 39, 40, 41, 42, 53, 92, 100, 283, 293, 665 Katman 50 J JOIN 118, 124, 186, 213, 215, 216, 217, 218, 219, 220, 221, 222, 229, 230, 233, 239, 240, 242, 243, 244, 256, 257, 258, 268, 270, 272, 296, 297, 364, 365, 366, 367, 368, 370, 371, 379, 390, 407, 409, 411, 412, 423, 448, 489, 490, 491, 492, 493, 495 L LEFT [OUTER] JOIN 186, 219 LIKE 140, 175, 186, 190, 197, 198, 199, 200, 286, 327, 328, 371, 538, 611, 621, 646 LOG ON 115, 116, 117, 118 M Macar Notasyonu 73 Management Studio 49, 55, 56, 61, 71, 87, 92, 105, 114, 120, 123, 127, 128, 129, 130, 133, 153, 154, 155, 160, 162, 169, 170, 171, 176, 180, 181, 182, 280, 311, 314, 317, 322, 332, 364, 471, 472, 478, 484, 488, 489, 501, 514, 537, 562, 563, 567, 653, 654, 658, 660, 661 Master 62, 130 MAX() 79, 243 MAXSIZE 115, 116, 117, 118, 119, 127, 279 MERGE 222, 278 MIN() 79, 243 Microsoft Search 53 Mixed Extend 64, 65 Mode 49, 68, 69, 477 Model 94, 99, 100, 107, 110, 125 MODIFY 120, 127 MONEY 245, 332, 333, 338, 406, 458, 459, 460 MSDTC 567 mssqlsystemresource 63

686 Yazlmclar çin SQL Server 2012 ve Veritaban Programlama N NAME 115, 116, 117, 118, 119, 127, 279, 286, 514, 515, 537, 548, 553, 557 NEWID() 143, 146, 147, 196, 339 N-N 106, 107 NOLOCK 464, 467, 469, 480 NORECOMPUTE 312, 314 northwind 118, 490, 563, 566, 567, 568, 609 NOT 72, 74, 143, 153, 154, 155, 157, 158, 159, 169, 186, 191, 193, 205, 210, 220, 224, 257, 258, 275, 280, 343, 351, 371, 377, 421, 440, 458, 490 NOT EXISTS 186, 210, 224, 257, 258, 343, 490 NOT IN 205, 224 NULL 74, 80, 104, 125, 136, 142, 143, 146, 152, 153, 154, 155, 157, 158, 159, 164, 165, 166, 169, 170, 174, 175, 176, 179, 193, 194, 200, 218, 220, 226, 227, 231, 238, 239, 240, 243, 257, 258, 270, 272, 273, 275, 280, 310, 316, 351, 368, 371, 373, 377, 390, 393, 395, 398, 400, 405, 413, 419, 421, 435, 440, 447, 450, 451, 458, 487, 525, 526, 551, 555, 643, 659 O OLAP 45, 52, 54, 62, 241, 245, 295, 296 OLTP 45, 52, 62, 295, 296, 299 OPENROWSET 81, 430, 445, 565, 567, 568 OR 174, 175, 176, 191, 192, 205, 255, 335, 351, 373, 377, 400, 492, 643 ORDER BY 77, 81, 186, 194, 195, 196, 224, 227, 228, 229, 237, 246, 247, 248, 249, 250, 258, 261, 266, 267, 287, 309, 344, 351, 352, 353, 354, 386, 419, 427, 429, 450, 451, 543, 549 osql 58, 336 P PAD_INDEX 296, 299, 307, 308, 309, 312, 315, 318 PAGLOCK 480 Parametre 58, 115, 359, 369, 370, 373, 374, 376, 388, 420, 502, 533, 563, 565, 568, 609, 612 Parsing 362 Persist 151 PFS 65 PI() 189, 404 PIVOT 235, 241, 242, 243, 244, 245, 260, 261, 262, 385 PL/SQL 40 Point 461, 511, 578 Polygon 578 PRINT 337, 338, 343, 346, 395, 396, 397, 399, 400, 498, 501, 532 PROCEDURE 47, 337, 364, 369, 390, 393, 395, 396, 399, 400 pubs 74, 75, 78, 79, 153, 265, 364, 365 Q Queue 379, 380 R RAD 647 RAISERROR 387, 388, 389, 390, 392, 393, 396, 397, 415, 490, 491, 492, 493, 532 READ COMMITTED 480 READ UNCOMMITTED 480 READPAST 480 RECOVERY 124 Recursive 496, 497 Rekürsif 235, 238, 239, 240, 409 REPEATABLEREAD 480 REPLACE() 404 Resource 477 REVOKE 87, 90, 91, 462 RIGHT [OUTER] JOIN 186, 219 RMO 661 ROLLBACK 456, 457, 458, 459, 460, 461, 463, 467, 469, 477, 479, 481, 485, 490, 491, 492, 493, 496, 497, 498, 567 ROLLUP 232, 233, 234, 261 Root 425 ROWCOUNT 258, 339, 350, 352, 357, 366, 394, 406, 410, 485 ROWLOCK 480 Rowset 80 RULE 163, 164, 175, 183, 337, 364 S sa 67, 68, 81, 177, 179, 267, 368, 385, 459, 512, 609, 618, 639, 640, 641, 642, 649 SAC 59, 60 Satr 46, 47, 80, 101, 137, 146, 155, 165, 185, 226, 247, 248, 250, 291, 348, 356, 462, 463, 469, 480, 632

Dizin 687 SCHEMABINDING 268, 271, 309, 310, 442, 519 Seçme 39, 48, 71, 190 SERIALIZABLE 466, 468, 469, 471, 480, 481 Serialisible 466 SET 78, 125, 126, 129, 144, 146, 179, 194, 200, 256, 257, 258, 281, 311, 314, 333, 334, 335, 344, 350, 352, 357, 366, 367, 368, 370, 371, 373, 375, 376, 377, 384, 385, 386, 399, 400, 410, 420, 429, 436, 437, 438, 439, 459, 460, 467, 468, 469, 471, 472, 478, 479, 481, 487, 489, 497, 499, 512, 513, 517, 518, 525, 557, 567, 623, 641, 643, 649 Seyrek Sütun 152 Seyrek Tablo 152 SGAM 65 SHRINK 124, 125, 129 SIN() 404 SIZE 115, 116, 117, 118, 119, 127, 279 Skaler 81, 282, 404, 406, 525, 532, 543, 544, 547, 550, 612, 615 Skaler Fonksiyon 81, 282, 406 SMALLDATETIME 202, 395 SMO 616, 653, 654, 655, 656, 658, 659, 660, 661, 662 Snap-shot 468 sp_catalogs 564 sp_columns_ex 564 sp_executesql 383, 386 sp_foreignkeys 564 sp_helpdb 120, 126, 361, 364, 365, 403 sp_helptext 269, 270, 360, 361, 364, 403, 488 sp_tables_ex 564 SQL enjeksiyonu 363 Sql Profiler 473, 482 SQL Server Agent 54, 61 SqlCmd 56, 57, 58 STATISTICS 124, 307, 312, 314, 319, 320, 362 Status 128, 477, 624 Stored Procedure 40, 48, 51, 68, 75, 167, 254, 255, 265, 282, 337, 339, 347, 348, 359, 360, 361, 362, 363, 364, 365, 366, 367, 369, 370, 377, 378, 379, 383, 398, 401, 403, 404, 414, 419, 444, 445, 483, 505, 507, 508, 511, 518, 521, 523, 525, 527, 536, 537, 538, 539, 542, 547, 553, 564, 606, 610, 611, 613, 614, 615, 620, 621, 638, 654 SUM() 79, 558 Sunum Katman 50 SUSER_SNAME() 172 Sütun 41, 42, 46, 47, 91, 151, 157, 163, 165, 169, 171, 172, 173, 188, 276, 298, 388, 398, 414, 426, 476, 477, 493 sys.columns 62 sys.databases 62, 470 sys.messages 62, 387, 388, 389, 390, 396 sys.objects 61, 62, 343 sys.types 62, 153 syscomments 269, 270, 362, 368, 487 sysdatabases 114 sysmessages 387, 388, 390 systypes 153 T Tablo 40, 41, 42, 46, 51, 58, 62, 65, 67, 81, 92, 94, 101, 107, 115, 124, 133, 135, 137, 138, 141, 142, 144, 146, 155, 158, 163, 166, 175, 181, 187, 190, 191, 198, 201, 202, 203, 204, 216, 218, 221, 223, 225, 236, 240, 243, 252, 269, 282, 283, 284, 285, 291, 292, 296, 301, 316, 324, 331, 334, 335, 338, 340, 341, 354, 356, 362, 383, 388, 391, 392, 396, 398, 403, 407, 408, 411, 412, 420, 431, 437, 446, 448, 457, 460, 466, 476, 477, 478, 480, 481, 485, 486, 493, 502, 508, 511, 513, 516, 526, 527, 528, 532, 533, 541, 543, 547, 548, 550, 551, 555, 563, 564, 565, 568, 607, 609, 611, 612, 616, 632, 636, 640, 643, 644, 648, 654 TABLOCK 480 TABLOCKX 480 tempdb 62, 117, 158, 159, 312, 463, 473 TEXT 76, 100, 305, 395, 419 THEN 233, 344 TINYINT 172, 275, 398, 410 TOP 196, 224, 236, 237, 258, 261, 338, 340, 350, 351, 357, 385, 447, 448, 450, 451, 452, 453, 628 Transact SQL 40, 71, 114, 174, 180, 310, 332, 360, 363 Transaction Log 63, 113, 114, 116, 118, 127, 128, 133, 340, 505 Trigger 40, 48, 51, 163, 167, 180, 347, 348, 363, 419, 483, 484, 485, 486, 487, 489, 490, 491, 492, 494, 496, 497, 498, 500, 501, 502, 503, 504, 505, 507, 508, 511, 518, 521, 525, 528, 536, 540, 541, 542 TRUNCATE 130, 158, 259, 379, 462, 486, 491 TRY-CATCH 346, 383, 387, 395, 397, 415, 459, 460, 473 Tuning 322, 323, 324, 325, 326, 327, 328, 681 Türetilmi Sütun 187, 188, 195, 200, 406 TYPE 82, 153, 449, 450, 478, 554, 557 U Ulama 76

688 Yazlmclar çin SQL Server 2012 ve Veritaban Programlama UNION 216, 222, 223, 224, 237, 238, 239, 240, 274, 275, 276, 411, 568 UNIQUE 171, 248, 290, 293, 301, 302, 310, 313, 328, 419 UNIQUEIDENTIFIER 143 Uniform Extend 64 UPDATE 72, 75, 78, 91, 124, 146, 147, 156, 165, 179, 180, 194, 236, 237, 253, 256, 257, 258, 271, 273, 296, 320, 339, 340, 344, 355, 362, 373, 377, 410, 436, 437, 438, 439, 457, 459, 460, 462, 463, 467, 468, 470, 471, 472, 478, 481, 483, 484, 485, 486, 487, 489, 492, 493, 494, 495, 501, 505, 528, 566, 610, 623, 641, 643, 649 UPDLOCK 480 USE 56, 58, 72, 74, 75, 76, 78, 79, 87, 88, 121, 126, 265, 279, 281, 312, 320, 324, 337, 354, 356, 364, 365, 424, 467, 471, 472, 490, 610, 614 USER 48, 88, 121, 122, 124, 385, 399, 499 User Defined Type 555 V VARCHAR (MAX) 100, 156, 308, 420, 442 Veri Bütünlüü 163, 167, 168, 169, 175, 286, 634 Veri Katman 50 Veri Kontrol Dili 71, 87, 366 Veri Tanmlama Dili 39, 53, 71, 72, 113, 135, 163, 213, 235, 263, 283, 301 Vertipaq 294 View 47, 62, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 274, 275, 282, 309, 324, 325, 328, 364, 403, 404, 407, 426, 483, 485, 568, 644 W WHERE 77, 78, 79, 124, 146, 186, 190, 191, 192, 193, 194, 195, 197, 198, 199, 200, 203, 205, 206, 207, 208, 209, 210, 213, 214, 215, 216, 221, 228, 229, 230, 236, 237, 238, 239, 240, 248, 249, 255, 256, 257, 258, 259, 261, 265, 266, 273, 285, 286, 291, 293, 296, 297, 298, 303, 304, 316, 324, 327, 328, 329, 339, 340, 344, 351, 352, 355, 364, 365, 366, 367, 368, 370, 371, 373, 377, 379, 386, 389, 390, 393, 404, 405, 406, 407, 409, 410, 411, 427, 429, 433, 437, 438, 439, 441, 442, 448, 449, 450, 459, 460, 471, 472, 489, 491, 492, 493, 495, 499, 530, 531, 538, 543, 611, 614, 616, 617, 621, 623, 641, 642, 643, 646, 649 WHILE 331, 345, 346, 349, 352, 385, 410 WITH CHECK 268, 273, 274, 276, 328 Workload 323, 325 X XACT_ABORT 567 XLOCK 480 XQuery 41, 53, 145, 419, 420, 426, 427, 429, 431, 432, 433, 434, 436, 437, 438, 440, 441, 442, 454, 498 XSD 145, 419, 420, 421, 422, 423, 424, 426, 442, 449, 454, 498 Y Yn 336, 457 Z Zamanam 479 WHEN 233, 344