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



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

Microsoft SQL Server Sorgulama

«BM364» Veritabanı Uygulamaları

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

«BM364» Veritabanı Uygulamaları

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.

«BM364» Veritabanı Uygulamaları

SQL Server 2008 ile Tanışma"

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

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

VERİ TABANI ve YÖNETİMİ

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

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

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

MİLLİ SAVUNMA ÜNİVERSİTESİ KARA HARP OKULU DEKANLIĞI BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ DERS TANITIM BİLGİLERİ

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

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

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

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

VERİTABANI Veritabanı Yönetimi

İ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

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

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

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

SQL e Giriş. Uzm. Murat YAZICI

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

İNTERNET PROGRAMCILIĞI DERSİ

Veritabanı. Ders 2 VERİTABANI

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

VERİ TABANI UYGULAMALARI

Veri Tabanı Programlamaya Giriş

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

T.C. MALTEPE ÜNĠVERSĠTESĠ MÜHENDĠSLĠK FAKÜLTESĠ ENDÜSTRĠ MÜHENDĠSLĠĞĠ BÖLÜMÜ LĠSANS PROGRAMI Güz Yarıyılı

SQL Komutları (2) Uzm. Murat YAZICI

Değerlendirme Soruları 140. Şerit Kullanımı 124 Şerit Sekmeleri 124 Şeridi Gizleme 125 Eklentiler 125

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

VERİ TABANI ve YÖNETİMİ

Advanced Oracle SQL Tuning

Pursaklar İMKB Teknik ve Endüstri Meslek Lisesi

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

Oracle da kullanılan veri tipleri:

Üst Düzey Programlama

1. MİCROSOFT SQL SERVER 2014'E GİRİŞ

VERİ TABANI SİSTEMLERİ

AOSB 2017 EĞİTİM PROGRAMI

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

Veri Tabanı Hafta Dersi

Ders Kodu Yarıyıl T+U Saat Kredi AKTS. Programlama Dilleri

Veritabanı Tasarımı. Introduction to the Oracle Academy

2-Veritabanı Yönetim Sistemleri/ Temel Kavramlar

Veritabanı İşlemleri

ELIF KIOTZEOGLOU RESUL MURAD MERT PACOLARI

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

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

1 MICROSOFT SQL SERVER A GENEL BAKIŞ

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

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

1 Temel Kavramlar. Veritabanı 1

ÖĞRENME-ÖĞRETME YÖNTEM VE TEKNİKLERİ. gösterip yaptırma, uygulamalı çalışma. Anlatım, soru-cevap, gösterip yaptırma, uygulamalı çalışma.

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

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

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

PostgreSQL ve PL/pgSQL

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

Microsoft Office Access Ders İçeriği 25 Saat. Access Temel 10 saat

DSİ kapsamında oluşturulan dağınık durumdaki verilerinin düzenlenmesi, yeniden tasarlanarak tek bir coğrafi veri tabanı ortamında toplanması,

Mysql Veritabanı Komutları

Kepware Veritabanı Ürünleri. Teknolojiye Genel Bir Bakış

1 RUBY HAKINDA 1 Ruby nin Gelişim Hikayesi 1 Neden Ruby? 1 Neden Bu Kadar Popüler? 2

ANKARA ÜNİVERSİTESİ ELMADAĞ MESLEK YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI PROGRAMI DERS İÇERİKLERİ

İş Zekası için Dört-Katmanlı Veri Modellemesi Gerçekleştirimi. Harun Gökçe EG Yazılım, TOBB ETÜ

Basit SQL Sorguları Veritabanından verilerin SELECT cümleleri ile alınması işlemine sorgulama denir.

1 GİRİŞ 1 C# Hakkında Genel Bilgiler 1.Net Framework 1 CLR 2 CLR Ve CTS 2 Temel Sınıf Kütüphanesi 3 CIL 3 Algoritma Nedir? 4 Sözde Kod (Pseudocode) 5

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

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

İnternet Programcılığı

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

Veritabanı Yönetimi Bilgisayarların. Keşfi Hedefler. Veritabanı, Veri ve Bilgi. Veritabanı, Veri ve Bilgi. Veritabanı, Veri ve Bilgi

«BM364» Veritabanı Uygulamaları-2

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS

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

Mobil Cihazlardan Web Servis Sunumu

LOGO İş Zekası çözümü ile kurumsal raporlama ve analizler. Cem Yılmaz Genel Müdür LOGOBI Yazılım

ASP.NET TEMELLERİ. Öğr. Gör. Emine TUNÇEL Kırklareli Üniversitesi Pınarhisar Meslek Yüksekokulu


Öğr. Gör. Serkan AKSU 1

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

VERİTABANI. SQL (Structured Query Language)

3. sınıf. Bilgisayarla kataloglamanın doğuşu gelişimi ve bugünkü durum ele alınmaktadır. Bu derste

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

2 VISUAL STUDIO 2012 GELİŞTİRME ORTAMI

SORGULAR VE ÇEŞİTLERİ II

Uludağ Projesi, İlk Adımlar (Kalite Takımı)

ORM & Hibernate. Ahmet Demirelli. SCJP 5.0, SCWCD 1.4 ahmetdemirelli@sabanciuniv.edu

Bilgisayar Mühendisliğine Giriş. Yrd.Doç.Dr.Hacer KARACAN

Asp.Net Veritabanı İşlemleri

Excel de Pivot Tablolar Tasarım ve Kullanımı

1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9

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

EBE-368 Veri Tabanı Yönetim Sistemleri SQL

Transkript:

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

Yaşar Gözüdeli YAZILIMCILAR İÇİN SQL SERVER 2008 ve VERİTABANI PROGRAMLAMA 4. BASKI Ankara, 2009

Yazılımcılar İçin SQL Server 2008 ve Veritabanı Programlama Yaşar Gözüdeli Bilgisayar Kitapları Dizisi: 99 ISBN 978-975-02-1014-3 Dördüncü Baskı: Haziran - 2009 Seçkin Yayıncılık San. ve Tic. A.Ş. Bu kitabın her türlü yayın hakkı Seçkin Yayıncılık San. ve Tic. A.Ş.'ye aittir. Yayınevinin yazılı izni olmadan, tanıtım amaçlı toplam bir sayfayı geçmeyecek alıntılar hariç olmak üzere, hiçbir şekilde kitabın tümü veya bir kısmı herhangi bir mecrada yayınlanamaz ve çoğaltılamaz. Sayfa Tasarımı: Seçkin Yayıncılık Kapak Tasarımı: İsmail Çam Yayın ve Dağıtım: Merkez: Seçkin Yayıncılık, Sağlık Sokak No: 19/B-21 06410 Sıhhiye, ANKARA Tel: (0 312) 435 30 30 (Pbx), Faks: (0 312) 435 24 72 Şube: Ankara Adliye Sarayı K Blok Zemin Kat Sıhhiye, ANKARA Tel: (0-312) 309 52 48 Şube: Abide-i Hürriyet Caddesi 259/4 (Şişli Ceza Adliyesi Altı) Şişli - İSTANBUL Tel: (0-212) 234 34 77 Web Adresi: www.seckin.com.tr, E posta: yayin@seckin.com.tr Baskı: Sözkesen Matbaacılık, Tel: (0 312) 395 21 10

Teşekkür Bu kitabın ortaya çıkmasında en büyük fedakârlık şüphesiz ki aylarca, kendilerine ait olan zamanda bilgisayarla baş başa kalmama tahammül edebilen eşim Lale'ye, kızım Neva'ya ve oğlum Yusuf Hakan'a aittir. Kendilerine teşekkür ederim. Özellikle yeni nesil Microsoft teknolojileri konusunda beni yaşama bağlayan Özcan Koç- 'a; SQL Server'in gelişim sürecinde, kitap fikrimi sürekli taze tutan ve beni yüreklendiren, Sefer Algan ve Tolga Yaramış olmak üzere tüm arkadaşlarıma teşekkürlerimi sunarım. 9.Bölümde yer alan Uzaysal Veri Tipleri'ne olan katkılarından dolayı Mehmet Karaman'a, 10.Bölümde yer alan ADO.NET 2.0 yenilikleri bahsine katkılarından dolayı Burak Selim Şenyurt'a teşekkür ederim. Kitap içeriğini sizlerden önce okuyarak, gerek fikirleri gerekse değerlendirmeleri ile sizlere daha az hatalı bir kitap sunmam konusunda bana yardımcı olan değerli yazılım geliştirici arkadaşlarım Volkan Verim, Oğuz Kağan Yağmur ve Salih Bozkurt'a teker teker teşekkürlerimi sunarım. Kitap içeriğinin ve müfredatının genel kabul görmüş bir müfredat haline gelmesinde, INETA- MEA'nın Verivizyon'a verdiği destek şüphesiz yabana atılamaz. Bu kapsamda INETA'ya teşekkürlerimi sunarım. Yine kitap müfredatına alınmış konuların anlatımlarının olgunlaşması Verivizyon aktiviteleri ile sağlanmıştır. Verivizyon tarafından düzenlenen seminer, eğitim ve benzeri etkinliklere emeği geçen ve katılan herkese teşekkürlerimi sunarım. Kitabın düzenlenmesi ve okunabilir hale gelmesinde emeği geçen Seçkin Yayıncılık çalışanlarına ve desteklerinden dolayı bütün mesai arkadaşlarıma teşekkür ederim. Kitabın bundan önceki baskıları hakkında, teveccühlerini veya düzeltmelerini ileterek daha iyiyi arama serüvenimde bana destek veren okurlarıma teşekkür ederim. Günlük hayatta karşılaştıkları sorunları ve çözümlerini dolayısıyla da tecrübelerini benim aracılığımla siz okurlara ulaştıran yazılımcı dostlarıma, son olarak bu kitabı okumaya değer görüp elinize aldığınız için ve belki bana görüşlerinizi ileterek daha iyiyi bulmama yardımcı olacağınız için size teşekkürlerimi sunarım.

INETA Hakkında Kısa adı INETA olan International.NET Association, Microsoft.NET temelli yazılım geliştiriciler için paylaşım alanı sağlayan bir oluşum. INETA'nın hedefi, dünyanın birçok yerinde oluşturulmuş BT topluluklarının kendi üyelerini Microsoft. NET teknolojileri konusunda eğitebilmeleri ve bu teknolojilerin tanıtımını yapabilmeleri için gerekli kaynak ve destekleri sağlamak. BT Profesyoneli, yazılım geliştirici veya mimar yahut ta proje yöneticilerinden oluşan kullanıcı toplulukları INETA'nın destek verdiği topluluk kapsamında ele alınmakta. Bir kullanıcı topluluğunun INETA çerçevesinde yer alabilmesi için, herhangi bir.net alanı veya.net'in tüm alanları ile ilgileniyor olması veya birçok başka yazılım geliştirme teknolojilerinin yanı sıra.net ile de ilgileniyor olması gerekmekte. Kâr amacı gütmeyen ve bağımsız bir kuruluş olan INETA, Microsoft ve diğer sponsorlarının desteğinde, dünyanın birçok yerindeki çok sayıda kullanıcı topluluklarının yöneticileri aracılığıyla yürütülmektedir. INETA'YA Katılmak INETA üyeliği, bütün kullanıcı toplulukları için şu anda, yer, ilgi odağı ve ilişki ayrımı yapmaksızın ücretsiz yapılmakta..net ile ilgili bir grup için en etkin değer kazanımı aktif INETA katılımı ile mümkündür. Bir yazılım geliştirici olarak, INETA çerçevesinde rol alabilmek için size en yakın INETA topluluğunu www.ineta.org adresinden bulabileceğiniz gibi, uygun bir topluluk bulamamanız halinde siz de etrafınızda.net teknolojilerini kullanan yazılım geliştiricileri bir araya getirerek INETA olanaklarından faydalanıp, INETA içerisinde aktif rol üstlenebilirsiniz. INETA, üyeliğe kabul ettiği bir topluluğun muntazaman gelişimini sürdürebilmesi için, üyelerine yönelik düzenli aktivitelere teşvik etmektedir. Ayrıca üye kullanıcı topluluklarının seminer verebilmeleri için ortam ve konuşmacı sağlanması, seminer anında meşrubat ve pizza sunulması gibi konularda kullanıcı gruplarına destek olmakta, gerektiğinde kitap türü bilgilendirici materyaller ile de onların küresel eğilimlerle bütünleşmiş kalması hususunda destek sağlamaktadır. INETA hakkında daha fazla bilgi için, www.ineta.org adresine göz atabilirsiniz.

INETA'nın Önsözü Günümüzün kurumsal bilgi teknolojileri altyapılarını oluşturan bir çok veritabanı yönetim sistemi içerisinde SQL Server en yaygın kullanılanı olarak dikkat çekiyor. Her geçen gün daha fazla uygulamanın, SQL Server uyumlu olarak pazarda kendisine sağlam bir yer edindiğini görüyoruz. Bu gelişim süreci, uygulama geliştiricilerden bilgi teknolojileri yöneticilerine kadar geniş bir kitlenin MS SQL Server hakkında teknik bilgilere daha kolay ve örneklerle desteklenmiş olarak erişebileceği bir kaynak ihtiyacını doğuruyor. Yaşar Gözüdeli, SQL Server 2005 konusundaki kitabı ile başladığı yolculuğuna SQL Server 2008 ile devam ederek bu ihtiyacı karşılıyor. SQL Server ürününü gerçekleştiren yazılımcılar bir alan veya teknoloji üzerinde son derece detaylı bir uzmanlığa sahiptirler. Yazdıkları ürünün özelliklerini bilmenin ötesinde yaşadıkları için çoğu zaman bu detayları kullanıcılar veya yazılımcılara basit bir açıdan aktarmakta zorlanırlar. İşte bu noktada Yaşar Gözüdeli derin ve uzun araştırmalar gerektiren bilgileri özümseyip, onları sistematik bir şekilde okuyucusunun en çok yarar sağlayabileceği şekilde sunuyor. SQL Server 2008 dendiğinde benim aklıma gelen ilk şey güvenlik; Diğer veritabanı yönetim sistemleri ile karşılaştırıldığında uzun senelerdir sıfır veya sıfıra yakın güvenlik açığı olmasını, kurumsal güvenlik politikalarından taviz vermeden SQL Server içinde uygulanabilir olarak çıkmasına bağlıyorum. Güvenlik tam anlamıyla sağlanmasının ötesinde kolay şekilde de yönetilebilir olmalıdır. İlk kuruluşta güvenli olma, Veri kaynakları erişim kontrolleri, Veri şifreleme, aktiviteleri izleme ve kaydetme özellikleri ve bunların yönetimi SQL Server 2008 i güvenlik konusunda rahatça rakiplerinin üstüne yerleştiriyor. Yaşar Gözüdeli, SQL 2008 için yazdığı bu kitapta veritabanına girişten başlayarak sorgulamalar, Optimizasyon, T-SQL ve CLR, XML desteği, ortak zamanlı çalışma, Coğrafi Tipler, harici sunucular ve Service Broker lar ile çalışmalardan da bahseden, örneklerle zenginleştirilmiş, takibi kolay bir kaynak hazırlamış. Kitap, profesyonel çalışmalarımızda SQL Server 2008' den nasıl faydalanabileceğimizi akıcı ve kolay anlaşılabilir bir üslup ile anlatıyor. Bir önceki SQL Server 2005 kitabı 3 baskı yapan ve 3000 adet satan, alanında büyük kabul gören kitabı kadar başarılı olacağına emin olduğumuz SQL Server 2008 kitabını bize kazandıran Yaşar Gözüdeli'ye, kütüphanemizde en önlerinde yer alacak bu güncel kaynağı hazırladığı için teşekkürlerimizi sunuyoruz. Gökşin Bakır İş Ortakları ve İstemci Grup Yöneticisi, Microsoft MEA

Önsöz İnsanoğlu var olduğundan bugüne hep veriye gereksinim duydu. Ama belki bu gereksinimi hiç bugünkü kadar şiddetli değildi. Hiç şüphe yok ki bu gereksinim, yarın bugünkünden daha şiddetli olacak. Bu gereksinime paralel, verilerin birinci dereceden muhatabı olan Veritabanı Yönetim Sistemleri de sürekli olarak gelişmekte. SQL'in, standart olarak ortaya atıldığından bu yana yaklaşık 20 yıldır popülerliğini kaybetmemiş bir dil olması onun ne denli güçlü ve gereksinim duyulan bir şey olduğunu ortaya koyar. Belki bunun en büyük sebeplerinden biri, "veri" kaydının ve sorgulamasının hayatın temel bir parçası olmasındandır. Veri işleme, her geçen gün yeni gereksinimlerle karşımıza çıkmakta. SQL standardı da bu gelişmelere paralel olarak 1999, 2003, 2006 yayınlarıyla desteklendi. SQL Server 2008, bir VTYS olarak bu standartlardan payına düşeni fazlasıyla almış bir veri yönetim aracı. 2000'den 2005'e geçmeye nazaran, 2005-2008 geçişinin daha kolay bir geçiş olacağından emin olabilirsiniz. Bu yeni sürümde, SQL Server programlamanın olmazsa olmazı olan Transact SQL ile ilgili birkaç iyileştirme yer almakta. Bir veritabanı programcısı iseniz, bu yenilikleri hızlı bir şekilde öğrenmeniz sizin açınızdan hiç de zor olmayacaktır. Hatta kullanmaktan keyif alacağınızı söyleyebilirim. Şayet 2008 sürümüne, SQL Server 2000'den geçiyorsanız, T- SQL 'in sizi zorladığı hallerde CLR desteği sizin için bir kurtuluş olacaktır, mutlaka deneyin Şayet bir Coğrafi Bilgi Sistemi projesi geliştiriyorsanız, SQL Server 2008 ile birlikte gelen Uzaysal(Spatial) tipler işlerinizi oldukça kolaylaştıracaktır. Yine Site haritası gibi verilerinizi tutmak için hierarchyid tipini kullanmaktan keyif alabilirsiniz. SQL Server 2005 XML Web Servis desteğine yatırım yapan yazılımcılar, sizlere üzücü bir haberim var; 'Bir sonraki SQL Server sürümünde aradığınız bu özelliği bulamayabilirisiniz!' Bu nedenle, ilgili üniteyi kitaptan çıkarttım. Servis temelli çalışıyorsanız, veya çok fazla veri ile boğuşmanız gerektiğinden yük dağıtma ve ölçekleme yapma ihtiyacınız varsa, Service Brokers teknolojisi servislerinizin mesajlaşmasını veritabanının gücü ile buluşturacaktır. Bu konuda da bilgi edinmek sizin için elzem olabilir. Bütün bu yeni özellikleri bünyesinde barındıran bir tek ürün olarak karşımıza çıkan SQL Server 2008, bütün verilerinizi tek merkezden idare edebileceğiniz gerçek manada bir 'Veri' tabanı Yönetim Sistemi Kitap yayına hazırlanırken etrafta halen SQL Server 2000 kullanan yazılımcıların da olduğunu gördük. Bu nedenle her ne kadar SQL Server 2008 sürümü için hazırlanmış bir kitap olsa da 2000 ve 2005 sürümlerinden geçmek isteyenleri de cesaretlendirmek için yer yer çapraz sürüm kıyaslamalarına yer verdim. Veritabanı ile tanışmak için bu kitabı aldı iseniz, ilk aşamada kitap CD'lerinde yer alan Veritabanı Programlama 1-2 kitapçıklarını okuyarak başlamanızda yarar var. Çünkü kitap bir seferde bitiremeyeceğiniz kadar büyük olduğundan büyük resmi kaçırabilirsiniz!.

Önsöz 9 Kitap kapsamı, başlangıçtan orta seviyeye olduğu için bu kitap, "Yazılımcılar için SQL Server 2005 ve Veritabanı Programlama" adlı bir önceki kitabın SQL Server 2008 yenilikleri çerçevesinde yeniden düzenlenmiş halidir. Kitabı bitirdiğinizde, orta büyüklükte bir veritabanı yönetim sistemi için yazılım ve yönetim işlemlerinin hemen hepsinin üstesinden gelecek birikime sahip olacağınızı söyleyebilirim. Ancak ekstrem projeler için kitabın kapsamı ölçekleme açısından yetersiz gelebilir. Son olarak, konulara geçmeden önce, şayet SQL Server 2008'i bu kitapla öğrenmek amacında iseniz, şunu bir prensip haline getirmiş olmanızda büyük yarar var; Bir dili veya programlanabilir ortamı tanımak için bir satır kod çalıştırıp sonucunu görmek, bin satır kodu okuyup geçmekten iyidir. Unutmayın ki bir yazılımcı için tecrübe, kaç saat kod yazdığından öte, kod yazarken ne kadar problemle karşılaştığı ile ilgilidir. Kod çalıştırmadan, başkalarının yazdığı hazır kodları okuyarak(çalışmayan bir kod bile olabilir, sadece okuyarak bunu nerden bilebilirsiniz ki!) asla problemlerle karşılaşamazsınız. Başarı sizinle olsun Yaşar Gözüdeli ygozudeli@verivizyon.com Mayıs 2009-ANKARA

Genel İçindekiler 1. Bölüm: VERİTABANI KAVRAMINA GİRİŞ... 39 1. ÜNİTE: İlişkisel Veritabanının Temelleri... 39 2. ÜNİTE : SQL Server 2008'in Temelleri... 53 3. ÜNİTE: T-SQL'e Genel Bakış... 69 2. Bölüm: VERİTABANI TASARIMI... 89 4. ÜNİTE: Veritabanı Tasarımına Genel Bakış... 89 5. ÜNİTE: Veritabanı Nesnesinin Temelleri... 107 6. ÜNİTE: Tabloları Tasarlamak... 127 7. ÜNİTE: Veri Bütünlüğünü Sağlamak... 153 3. Bölüm: VERİLERİ SORGULAMAK... 175 8. ÜNİTE: Basit Sorgular... 175 9. ÜNİTE: Tabloları Birlikte Sorgulamak ve Özetlemek... 201 10. ÜNİTE: İleri Veri Yönetim Teknikleri... 225 4. Bölüm: VERİ ERİŞİMİNİ İYİLEŞTİRMEK... 251 11. ÜNİTE: Viewlerle Çalışmak... 251 12. ÜNİTE: Indeks Teorisi... 271 13. ÜNİTE: Indeks Yönetimi... 289 5. Bölüm: T-SQL İLE PROGRAMATİK ÖĞELER KODLAMAK... 317 14. ÜNİTE: T-SQL ile Programlar Geliştirmek... 317 15. ÜNİTE: Stored Procedure'ler... 345 16. ÜNİTE: İleri T-SQL Programlama... 369 17. ÜNİTE: Kullanıcı Tanımlı Fonksiyonlar... 387 6. Bölüm: XML İLE ÇALIŞMAK... 399 18. ÜNİTE: Tip Olarak XML... 399 19. ÜNİTE: XML-İlişkisel Dönüşümler... 427 7. Bölüm: ORTAK ZAMANLILIK VE TRANSACTION... 441 20. ÜNİTE: Transaction'larla Çalışmak ve Ortak Zamanlılık... 441 21. ÜNİTE: Kilitlenmeleri Yönetmek... 461 22. ÜNİTE: Triggerlar... 469 8. Bölüm: SQL SERVER İÇİNDE CLR... 493 23. ÜNİTE: CLR Genel... 493 24. ÜNİTE: Basit Rutinler... 511 25. ÜNİTE: İleri Rutinler... 533

12 Yazılımcılar İçin SQL Server 2008 ve Veritabanı Programlama 9. Bölüm: VERİTABANI YETENEKLERİNİ GELİŞTİRMEK... 547 26. ÜNİTE: Bağlı Sunucularla Çalışmak... 547 27. ÜNİTE: İlişkisel Olmayan SQL Server Yetenekleri... 555 28. ÜNİTE: Service Brokers... 571 10. Bölüm: İSTEMCİ TARAFTA SQL SERVER ERİŞİMİ PROGRAMLAMA... 591 29. ÜNİTE: ADO.NET Temelleri... 591 30. ÜNİTE: ADO.NET'de Kopuk Veri Yönetimi... 617 31. ÜNİTE: SQL Server Management Objects'i Kullanmak... 639 EK A: VERİTABANI PROGRAMCILARINA İPUÇLARI... 649 EK B: C# VE OOP KILAVUZU... 669 EK C: BÖLÜM SONU SORU CEVAPLARI... 695 EK D: DÜKKAN VERİTABANI ŞEMASI... 705 EK E: CD KULLANIM KILAVUZU... 707

İçindekiler Teşekkür... 5 INETA Hakkında... 6 INETA'YA Katılmak... 6 INETA'nın Önsözü... 7 Önsöz... 8 Genel İçindekiler... 11 Giriş... 33 Veritabanı Programlama Hakkında... 33 Kitabın İçerdiği Örnekleri Test Edebilmek İçin... 33 Birikim Gereksinimleri... 34 Kimlere Hitabediyor... 34 Farklı Başlangıç Önerileri... 34 Kitap Neler İçeriyor... 36 Veritabanı Kavramına Giriş... 36 Veritabanı Tasarımı... 36 Veri Sorgulama... 36 Veri Erişimini İyileştirmek... 36 T-SQL ile Programatik Öğeler Kodlamak... 36 XML ile Çalışmak... 36 Ortak Zamanlılık ve Transaction... 37 SQL Server 2008 içinde CLR... 37 Veritabanı Yeteneklerini Geliştirmek... 37 İstemci Taraftan Veritabanı... 37 EK A - Veritabanı Programcılarına İpuçları... 37 EK B - C# ve OOP Kılavuzu... 37 EK C - Dükkan Veritabanı Şeması... 37 EK D - Bölüm Sonu Soru Cevapları... 38 EK E - CD Kullanım Kılavuzu... 38 Gösterimler ve İçerik Düzeni Hakkında... 38 Kaynak Dosyaları Destek ve Geri Bildirim... 38 1. Bölüm VERİTABANI KAVRAMINA GİRİŞ 1. ÜNİTE: İlişkisel Veritabanının Temelleri...39 TEMEL VERİTABANI KAVRAMLARI... 39 İlişkisel Veritabanı Kavramı... 40 İlişkisel Veritabanı Yaklaşımına Basit Bir Örnek... 41

14 Yazılımcılar İçin SQL Server 2008 ve Veritabanı Programlama İlişkisel Cebirin Temel Operatörleri... 43 Veritabanı Programlama Nerelerde Kullanılır?... 45 Temel Veritabanı Nesneleri... 45 Veritabanı Uygulamaları... 50 Üç N Katman Mimarisi...50 Veritabanı Atelyesi 1.1... 51 2. ÜNİTE: SQL Server 2008'in Temelleri...53 SQL SERVER BİLEŞEN MİMARİSİ... 53 Başlıca SQL Server 2008 Araçları... 54 SQL Server Configuration Manager... 54 Management Studio... 55 SqlCmd... 56 SQL Server Surface Area Configuration... 58 SQL Profiler... 59 Books Online... 60 SQL Server Veritabanı Mimarisi... 60 Standart Veritabanları... 60 Disk Yönetim Mimarisi... 62 SQL Server'de Disk Ölçümleri... 62 SQL Server'de Tablo ve Indeks'lerin Yönetimi... 64 Heap...65 Clustered Indeks...65 Nonclustered Indeks...65 SQL Server Kullanıcı Yönetim Mimarisi... 65 Roller... 65 Kullanıcılar... 66 İzinler... 67 Şemalar... 67 SQL Server Properties\Security Sekmesi...67 Veritabanı Atölyesi 1.2... 68 3. ÜNİTE: T-SQL'e Genel Bakış...69 Veri Tanımlama Dili... 70 Nesne Oluşturmak: CREATE... 70 Nesne ve Değişken (Tanımlayıcı) İsimlendirme Kuralları...71 Tanımlayıcı İsimlendirme Notasyonları...71 Tanımlayıcı İsimlendirmenin Töresi...71 Null Kavramı...72 Nesnelerde Değişiklik Yapmak: ALTER... 72 Nesne Silmek: DROP... 73 Veri İşleme Dili... 73 Veri Eklemek: INSERT... 73

İçindekiler 15 Veri Seçmek ve Filitrelemek: SELECT... 74 Ulama...74 Seçilen Kayıtları Sıralamak...75 WHERE Cümleciği ile Kayıtları Filitrelemek... 75 Verilerde Değişiklik Yapmak: UPDATE... 76 Veri Silmek: DELETE... 77 Fonksiyonlar... 77 Aggregate (Grupsal) Fonksiyonlar... 77 Rowset Fonksiyonlar... 79 Skaler Fonksiyonlar... 79 Deterministik Kavramı...81 Veri Kontrol Dili... 82 Yetki vermek: GRANT... 83 WITH GRANT OPTION Seçeneği ile Basamaklı Yetkilendirmek...84 Erişimi Engellemek: DENY... 84 Erişim Tanımını Kaldırmak: REVOKE... 85 Veritabanı Atölyesi 1.3... 86 Bölüm Sonu Özeti... 87 Bölüm Sonu Tekrar Soruları... 87 2. Bölüm VERİTABANI TASARIMI 4. ÜNİTE: Veritabanı Tasarımına Genel Bakış...89 Kavram Model... 90 ORM ile Veritabanı Modelleme... 91 ER ile Modelleme... 92 ER ile Modelleme Aşamaları...93 UML ile Modelleme:... 94 Mantıksal Model... 95 Veri Normalizasyonu... 96 Normalizasyon Kuralları... 96 Kayıtların İlişkilendirilmesi... 99 Bire Bir İlişki (1-1)... 99 Bire Çok İlişki (1-N)... 100 İlişkisel Ortamda Hiyerarşik Veriyi Modellemek...100 Çoka Çok İlişki (N-N)... 101 ER Diyagram ile Mantıksal Model Oluşturmak... 102 Fiziksel Model... 105 Veritabanı Atölyesi... 105

16 Yazılımcılar İçin SQL Server 2008 ve Veritabanı Programlama 5. ÜNİTE: Veritabanı Nesnesinin Temelleri...107 Dosya ve Dosya Gruplarını Anlamak... 107 Veritabanı Oluşturmak... 108 Management Studio ile Yeni bir Veritabanı Oluşturmak... 108 Transact SQL ile Veritabanı Oluşturmak... 109 Çoklu Dosya ve Dosya Gruplarını Kullanmak... 111 Dosya Grubu (File Group) Kavramı... 112 Default Dosya Grubu (Default File Group)... 113 Var Olan Bir Veritabanında Dosya ve Dosya Grubu Eklemek... 113 Veritabanına Erişecek Uygulama Kullanıcısını Ayarlamak... 115 Veritabanı İçerisinde Şema Kavramı... 115 Şemaları Yönetmek... 116 Veritabanını Yönetmek... 117 Veritabanı Seçeneklerini Ayarlamak... 117 Veritabanı Seviyeli Collation Ayarı Yapmak...120 Veritabanı Dosyalarının Boyutunu Değiştirmek... 121 Veritabanı Dosyalarının Boyut Artımını Ayarlamak...121 Otomatik Artırmaya Ayarlama... 121 Müdahale Ederek Artırmak... 121 Transaction Log Dosyasını Gözlemlemek... 122 Veritabanlarını Küçültmek (Shrinking)... 122 Veritabanlarını Silmek... 124 Veritabanı Atölyesi 2.2... 125 6. ÜNİTE: Tabloları Tasarlamak...127 Nesne İsimlendirirken... 127 Sütunları Tasarlamak ve Veri Türleri... 128 Metin Veri Tipleri... 129 ASCII Veri Tipleri...129 Unicode...130 Metinsel Veri Tiplerinden Seçim Yapmak... 130 Collation Ayarları... 131 Tarih-Zaman Veri Tipleri... 132 Numerik Sayılar... 133 Yaklaşık Sayı Veri Tipleri... 133 Tamsayı Veri Tipleri... 134 IDENTITY() Fonksiyonu ile Otomatik Artan Sütunlar Tanımlamak... 134 Parasal Veri Tipleri... 136 Binary Veri Tipleri... 136 MAX İfadesi... 136 Eski LOB Veri Tiplerini Dönüştürmek...137 XML Veri Tipi ve XML Verilerin Tasarlanması... 138 Özel Veri Tipleri... 139

İçindekiler 17 Hesaplanmış Sütun... 141 Hesaplanmış Sütunu Sabitlemek (Persist Etmek)...141 Seyrek Sütun ve Seyrek Tablo Kavramı... 142 Kullanıcı Tanımlı Veri Tipleri... 142 Kullanıcı Tanımlı Veri Tipleri (UDDT) ile Çalışmak... 143 CLR Kullanıcı Tanımlı Tipler... 144 Tabloları Oluşturmak... 144 Tablo Tasarımında Satır Boyutuna Karar Vermek...145 Tablolar Üstünde Değişiklik Yapmak... 147 Sütun Eklemek... 147 Sütun Değiştirmek... 147 Sütun Silmek... 147 Tabloların veya Sütunların Adını Değiştirmek... 148 Tablo Silmek... 148 Geçici Tablolarla Çalışmak... 148 Nesnelerin T-SQL İfadelerini Almak... 150 Veritabanı Atölyesi 2.3... 151 7. ÜNİTE: Veri Bütünlüğünü Sağlamak...153 Veri Bütünlüğünü Kavramları... 153 Tanımlamalı Veri Bütünlüğü... 154 Prosedürel Veri Bütünlüğü... 157 Veri Bütünlüğü Tekniği Seçmek... 157 Veritabanı Atölyesi... 158 Veri Bütünlüğünü Gerçeklemek... 159 Sütun Seviyeli Veri Bütünlüğünü Sağlamak... 159 Primary Key Constraint Oluşturmak...159 Unique Key Constraint Oluşturmak...161 Default Constraint Oluşturmak...162 Default Nesnesi Oluşturmak...163 Check Constraint Oluşturmak...163 Rule Oluşturmak...165 Tablo Seviyeli Veri Bütünlüğünü Sağlamak... 166 Sütunlar Arası Check Constraint Oluşturmak...166 Foreign Key Constraint Oluşturmak...167 Ardışık Bütünlük (Cascading Integrity)... 169 Constraint'leri Yönetmek... 171 Constraint'lere Göz Atmak... 171 Constraint'leri Silmek... 172 Constraint'leri Denetime Kapamak ve Açmak... 172 Veritabanı Atölyesi... 172 Bölüm Sonu Özeti... 173 Bölüm Sonu Tekrarı... 173

18 Yazılımcılar İçin SQL Server 2008 ve Veritabanı Programlama 3. Bölüm VERİLERİ SORGULAMAK 8. ÜNİTE: Basit Sorgular...175 Kayıtları Seçmek: SELECT... 175 En Basit SELECT... 176 Sadece Belli Sütunları Seçmek... 177 Tekrarlamaları Tekile İndirgemek: DISTINCT... 177 Türetilmiş (Calculated) Sütunlar... 177 Aritmetik İşaretler... 177 Sütuna Takma Ad (Alias)... 178 Matematiksel Fonksiyonlar... 179 WHERE ile Satırları Filitrelemek... 180 Karşılaştırma İşaretleri... 180 Mantıksal Operatörler...181 NULL Karşılaştırma... 183 Aralık Sorgulama: BETWEN... AND...... 184 Kayıtları Sıralamak: ORDER BY... 184 Dönen Kayıt Sayısını Kısıtlamak: TOP... 186 SQL'DE Karakter ve Tarih İşlemleri... 187 Karakter Karşılaştırmaları: LIKE Deyimi... 187 Joker Karakterler... 188 Metinleri Ulamak (Concatenation)... 190 Başlıca Karakter Fonksiyonları... 191 Tarihleri Sorgulamak... 192 Tarih Fonksiyonları... 192 Alt Sorgularla Çalışmak... 194 IN ve NOT IN... 195 Tekil Sonuçlar Döndüren Alt Sorgular... 195 Çoklu Sonuç Döndüren Altsorgular... 196 Türetilmiş Tablolar... 197 İlintili (Corelated) Altsorgular... 198 EXISTS, NOT EXISTS... 199 Veritabanı Atölyesi... 200 9. ÜNİTE: Tabloları Birlikte Sorgulamak ve Özetlemek...201 Tabloları Birleştirerek Sorgulamak... 201 Tabloya Takma Ad (Alias)... 203 Bir Tabloyu Kendisiyle Birlikte Sorgulamak... 203 INNER JOIN... 204

İçindekiler 19 OUTER JOIN İfadeleri... 206 LEFT OUTER JOIN... 206 RIGHT OUTER JOIN... 207 FULL OUTER JOIN... 208 CROSS JOIN... 208 SQL Server Açısından JOIN İşlemleri... 209 JOIN İçin İpucu Kullanmak... 210 Fark, Kesişim ve Birleşim Bulmak... 210 Veritabanı Atölyesi... 212 Verileri Gruplamak ve Özetlemek... 214 Gruplamalı Fonksiyonlar (Aggregate Functions)... 214 GROUP BY Deyimi... 216 Gruplamalar Üstünde Şart Koşmak: HAVING... 218 Gruplanmış Verileri Özetlemek... 220 CUBE Deyimi... 220 ROLLUP Deyimi... 221 GROUPING ile Özetleri Düzenlemek... 222 COMPUTE BY ve COMPUTE deyimi... 222 Veritabanı Atölyesi 3.2... 223 10. ÜNİTE: İleri Veri Yönetim Teknikleri...225 CTE ve Rekürsif Sorgular... 225 CTE... 226 Hiyerarşik Sorgu için CTE'nin Rekürsif Kullanımı... 228 PIVOT ve UNPIVOT Operatörleri ile Veri Analizi... 231 PIVOT... 231 UNPIVOT... 235 Rütbeleme Fonksiyonları ile Kayıtları Sıralamak... 236 ROW_NUMBER()... 237 Parçalı Satır Numaraları Vermek...238 RANK() ve DENSE_RANK() Fonksiyonları... 239 Sonuçları n Gruba Ayırmak: NTILE (ifade)... 240 Veri Değişimi Yönetimi... 241 Yeni Veri Eklemek Hakkında Püf Noktaları... 241 Sorgu Sonucunu Yeni Tabloda Saklamak...242 Bir Sorgunun Sonucunu Varolan Tabloya Eklemek...242 Verileri Güncellemek... 243 Tabloları Birleştirerek Veri Güncellemek...243 Alt Sorgular Kullanarak Veri Güncellemek...244 Verileri Silmek... 244 Tabloları Birleştirerek Veri Silmek...244 Alt Sorgular Kullanarak Veri Silmek...245

20 Yazılımcılar İçin SQL Server 2008 ve Veritabanı Programlama TOP İfadesi... 246 Etkin Olarak Veri Silmek: TRUNCATE TABLE...246 Veritabanı Atölyesi 3.3... 247 Bölüm Sonu Özeti... 249 Bölüm Sonu Tekrarı-6... 249 4. Bölüm VERİ ERİŞİMİNİ İYİLEŞTİRMEK 11. ÜNİTE: Viewlerle Çalışmak...251 VIEW'LERLE ÇALIŞMAK... 251 View'lere Neden İhtiyaç Duyarız... 252 View İçin Alternatifler... 252 View Oluşturmak... 253 Kısıtlamalar... 254 İzinler ve Sahiplik Zinciri... 254 Birden Fazla Tablodan Veri Çeken View'ler... 255 View'leri Yönetmek... 256 View Üstünde Değişiklik Yapmak... 256 Tanımlanan View'leri Görmek ve Sistem View'leri... 257 View Tanımlarını Gizlemek... 257 View Temel Tablolarının Şemasını Kilitlemek: SCHEMABINDING... 258 View'leri Silmek... 259 View'ler ve INSERT, UPDATE, DELETE İfadeleri... 259 Parçalı View Yapıları... 262 Parçalı Tablolar Oluşturmak... 265 Nesnelere Takma Ad: Synonymuslarla Çalışmak... 269 Veritabanı Atölyesi... 270 12. ÜNİTE: Indeks Teorisi...271 INDEKSLERLE ÇALIŞMAK... 271 VTYS'ler Indeks'leri Nerelerde Kullanır?... 273 INDEKS MİMARİSİ... 275 Dengeli Ağaç (β-tree) Yapısı... 276 Heap Yapı... 278 Clustered Indeks... 278 Nonclustered Indeks... 279

İçindekiler 21 SQL Server Indeks Türleri... 281 Unique Index... 281 Karma (Composite) Indeks... 281 Kapsam (Covering) Indeks... 281 Parçalı Indeksler... 282 Eklenti Sütunlu İndeksler... 282 Filtreli İndeksler... 282 XML Indeksler... 282 Full-Text Indeksler... 282 Veri Değişim İşlemlerinin Indekslere Etkisi... 283 FILLFACTOR ve PAD_INDEX Parametrelerine Karar Vermek... 284 Indeks Tanımlama Yaklaşımları... 284 Clustred Tanımlarken... 284 Non-Clustred Indeks Tanımlarken... 285 Veritabanı Atölyesi 8.1... 286 13. ÜNİTE: Indeks Yönetimi...289 INDEKS OLUŞTURMAK... 289 Unique Index... 291 Kapsam (Covering) Indeks Oluşturmak... 292 INCLUDE Deyimi ile Eklenti Sütunlu Indeks Tanımlamak... 293 WHERE Deyimi ile Filtreli İndeks Tanımalak... 293 Indeks Seçeneklerini Ayarlamak... 294 Parçalı Indeksler Oluşturmak... 296 FILLFACTOR ve PAD_INDEX Parametrelerini Ayarlamak... 296 View Üstünde Clustered Indeks Tanımlamak... 297 Indeksler Hakkında Bilgi Almak... 298 Indeksler Üstünde Değişiklik Yapmak... 299 Indeksleri Yeniden Derlemek: REBUILD... 300 Indeksleri Yeniden Düzenlemek: REORGANIZE... 300 Indeksleri Kapatmak... 301 Indeks Seçeneklerini Değiştirmek... 301 Indeksleri Silmek... 302 Indekslere Bakım Yapmak... 303 Indekslerin Dağınıklıklarını Gözlemlemek... 304 Indeksleri Düzenlemek... 305 İstatistiklerin Veri Erişimine Etkisi... 306 İstatistik Oluşturmak... 307

22 Yazılımcılar İçin SQL Server 2008 ve Veritabanı Programlama İstatistikleri Güncellemek... 308 Veritabanı Performans Araçlarını Kullanmak... 308 SQL Profiler ile Veritabanını Takip Etmek... 308 Database Tuning Advisor ile Veritabanı İyileştirmesi... 310 Veritabanı Atölyesi 8.3... 314 Bölüm Sonu Özeti... 315 Bölüm Sonu Tekrarı-8... 315 5. Bölüm T-SQL İLE PROGRAMATİK ÖĞELER KODLAMAK 14. ÜNİTE: T-SQL ile Programlar Geliştirmek...317 Programlama Dili Olarak T-SQL... 317 Değişken Tanımlama ve Kullanma... 318 Birleşik Operatörler...320 Bit Seviye Operatörler...321 Kod İçerisine Açıklamalar Eklemek...322 Global Değişkenler ve Sistem Fonksiyonları... 322 Yığın Kavramı ve GO bölümleyicisi... 323 Print Komutu... 324 Tablo Tipi Değişkenler Kullanmak...325 DML ifadeden Çıktı Veri Almak...325 Akış Kontrolleri... 327 IF... ELSE Karar Yapısı... 328 CASE Deyimi...330 CASE ile PIVOT Gerçeklemek... 331 While Döngüsü...332 BREAK Komutu... 332 CONTINUE Komutu... 333 Cursorlerle Veri Yönetimi... 333 Transact-SQL Sunucu Cursor'ler... 334 Cursor'lerin Seçeneklerini Ayarlamak... 340 Cursor'lerle Satırları Dolaşmak... 340 Cursor Üstünden Kayıtları Düzenlemek...341 Ortak Zamanlı (Concurrent) çalışma ve Cursor'ler... 342 Veritabanı Atölyesi 5.1... 342 15. ÜNİTE: Stored Procedure'ler...345 Stored Procedure'lerle Çalışmak... 345 Stored Procedure'ler Oluşturmak... 349 Stored Procedure'ü Çalıştırmak... 350 NOCOUNT Oturum Parametresi'nin Kullanımı... 352

İçindekiler 23 Stored Procedure'leri Yönetmek... 353 Stored Procedure'lerde Değişiklik Yapmak... 353 Stored Procedurelerde Parametrelerle Çalışmak... 356 Girdi Parametreler (Input Parameter)... 356 Girdi Parametre ile Stored Procedure Çağırmak... 356 Tablo Tipi Parametre Alan Stored Procedure'ler Kodlamak... 358 Parametre Geçerliliğini Denetlemek... 359 Çıktı Parametrelerle Çalışmak... 361 Çıkış Parametrelerini Almak... 361 RETURN deyimi... 362 Modül Çalıştırma Bağlamları: EXECUTE AS... 364 EXECUTE AS CALLER... 365 EXECUTE AS 'kullanici'... 365 EXECUTE AS SELF... 366 EXECUTE AS OWNER... 366 Veritabanı Atölyesi... 367 16. ÜNİTE: İleri T-SQL Programlama...369 SQL Server 2008 T-SQL Ortamını Etkin Kullanmak... 369 Dinamik SQL Çalıştırmak... 369 EXEC Fonksiyonu ile Dinamik SQL Çalıştırmak... 370 sp_executesql ile Dinamik Sorgu Çalıştırmak... 372 T-SQL'de Hata Yakalama Mimarisi... 373 Sistem Mesajları: sys.messages... 373 Sisteme Yeni Mesaj Eklemek... 374 Sistemden Kullanıcı Tanımlı Mesaj Silmek... 376 Hata Mesajlarını Kullanmak: RAISERROR... 376 Parametreli Hata Mesajları Tanımlamak... 378 Oluşan Son Hatanın Kodunu Yakalamak: @@ERROR... 379 Hata Kontrolü ve TRY-CATCH Yapısı... 381 Uygulama için Veritabanı Hata Yakalama Mimari Tasarımı... 382 dbo.tbhatagecmis Tablosu...383 sp$hatayakala Stored Procedure'ü...383 sp$hatayazdir Stored Prosedürü...384 Hata Yakalama Mimarisi Kullanım Örneği...385 Veritabanı Atölyesi... 386 17. ÜNİTE: Kullanıcı Tanımlı Fonksiyonlar...387 Kullanıcı Tanımlı Fonksiyonlarla Çalışmak... 387 Kullanıcı Tanımlı Fonksiyonlarla Neler Yapabiliriz... 388 Skaler Kullanıcı Tanımlı Fonksiyonlar... 388 Türetilmiş Sütun Olarak Skaler Fonksiyon... 390

24 Yazılımcılar İçin SQL Server 2008 ve Veritabanı Programlama Satırdan Tablo Döndüren Fonksiyonlar... 391 Çoklu İfade ile Tablo Döndüren Fonksiyonlar... 392 Rekürsif Sorgu için Örnek Fonksiyon... 393 Tablolarla Tablo Tipi Fonksiyonları Bileştirmek: APPLY... 395 CROSS APPLY... 396 OUTER APPLY... 397 Veritabanı Atölyesi... 397 Bölüm Sonu Özeti... 398 Bölüm Sonu Tekrar Soruları... 398 6. Bölüm XML İLE ÇALIŞMAK 18. ÜNİTE: Tip Olarak XML...399 XML Desteği... 399 Hibrit Veritabanı Gereksinimi...400 XML Veri Tipini Kullanmak... 401 Değişken ve Parametre Olarak XML Tipi... 402 Tablolarda XML Veri Tipi... 402 Tip Tanımsız XML Veri İle Çalışmak... 403 Tip Tanımlı XML Veri İle Çalışmak... 403 XSD ve Schema Collections Nesneleri... 403 Şemalar Hakkında Bilgi Almak...405 Tip Tanımlı XML Sütunlar Oluşturmak...406 İlişkisel Seviye XML Tanımlamaları Kullanmak... 408 Kısıtlanmış (Constrainted) XML Veri Kullanmak... 408 XML Veri Üstünde Hesaplanmış Sütun Tanımlamak...408 XML Veriyi Yönetmek ve Sorgulamak... 408 Bir Bakışta XML Sorgu Dili: XQuery... 409 XML Veri Tipi Metodları... 413 xml.query (string XQuery)... 413 xml.exist (string XQuery)... 415 xml.value (string XQuery, string SQLVeriTipi)... 415 xml.nodes (string XQuery)... 416 XML Veriyi Düzenlemek: xml.modify()... 418 insert İfadesi ile Yeni Bilgi Eklemek... 419 delete İfadesi ile Bir Bilgi Silmek... 420 replace value of İfadesi ile Düğüm Üstünde Düzenlemeler Yapmak... 420 Veritabanı Atölyesi... 421