Bu kitapta; Dünya'nın en iyileri arasına giren SQL Server veritabanı yönetim sistemi, temelden ileri seviyeye doğru uygulamalarla anlatmaktadır. Temel seviye konular hızlı geçilerek, ileri seviye konulara daha çok yer verilmiştir. Bir standart olan SQL sorgu dilini tüm detaylarıyla öğrenirken, ileri seviye uygulamalar geliştirebileceğiniz SQL Server'ın sorgu dili olan T-SQL'i de temelden uzmanlık seviyesine kadar tüm detaylarıyla öğreneceksiniz.
Veritabanı yönetim sistemleri; programlama dillerinden bağımsız olması ve veritabanı desteği ile ilgili işlem yapılacak tüm yazılım alanlarında kullanılabilir. Geliştirilecek yazılım; Windows platformunda çalışmayacak olsa bile, servis mimarili uygulamalarda Windows sunucu üzerinde çalışan SQL Server üzerinden XML, WCF, Web Servis ya da diğer servis ve veri transferi gerçekleştirmeyi sağlayan teknolojilerle birlikte, Linux ya da bir başka işletim sistemi üzerinde çalışacak herhangi bir yazılıma veri yönetimi yetenekleri kazandırılabilir.
Ayrıca, SQL Server'ın yönetimsel derinliklerine ve SQL Server DBA için gerekli programsal konulara da yer verilmiştir. Yazılım geliştiricilere yönelik temelden, ileri seviyeye doğru, bol örnek ve uygulama ile tüm SQL Server programlama alanlarını kapsayan bu eser ile siz de veritabanı yönetim sistemlerinde uzmanlaşacaksınız!.
Kitap ile birlikte verilen CD içerisinde de Görsel Eğitim Videoları ve konulara ait Kaynak Kodlar'ı bulacaksınız.
Kitap Kimlere Hitap Ediyor
Veritabanı yönetim sistemleri dillerden bağımsız olması nedeniyle veritabanı ile ilgili işlem yapılacak Windows platformunda çalışan tüm yazılım alanlarında kullanılabilir. Geliştirilecek yazılım Windows platformunda çalışmayacak olsa bile servis mimarili uygulamalarda Windows sunucu üzerinde çalışan SQL Server üzerinden XML, WCF, Web Servis ya da diğer servis ve veri transferi gerçekleştirmeyi sağlayan teknolojilerle Linux ya da bir başka işletim sistemi üzerinde çalışacak herhangi bir yazılıma veri yönetimi yetenekleri kazandırılabilir.
Bu kitap, SQL Server'ın yönetimsel derinliklerine kısmi olarak değinmekle birlikte, SQL Server DBA için gerekli programsal konulara da değinmektedir. Ayrıca yazılım geliştiricilere yönelik temelden, ileri seviyeye doğru, bol örnek ve uygulama ile tüm SQL Server programlama alanlarını kapsamaktadır.
Bu kitaptan daha fazla faydalanmak için veritabanı mimarisi, SQL sorgu dili, herhangi bir programlama dili ya da bir veritabanı yönetim sistemi üzerinde temel seviye bilgi sahibi olunması kitabı daha iyi kavramınız açısından faydalı olacaktır. Ancak teorik programlama bilgisi olan okurlar, SQL bilgisine sahip olmasalar dahi, kitaptaki temel SQL konularıyla veritabanı programlama mantığını kavrayabilirler.
Kitapta yer alan başlıca konu başlıkları şunlardır:
Microsoft SQL Server'a Genel Bakış
T-SQL'e Genel Bakış
Verileri Sorgulamak
Veri Bütünlüğü
İleri Seviye Sorgulama
Geçici Veriler ile çalışmak
Indeks'ler ile çalışmak
Prosedürel Yapılar
View'ler ile çalışmak
Stored Procedure'ler
Kullanıcı Tanımlı Fonksiyonlar
Hata Yönetimi
SQL Cursor'ları
Dinamik T-SQL
SQL Server ile XML
Transaction ve Kilitler
Trigger'lar
Sorgu ve Erişim Güvenliği
Performans ve Sorgu Optimizasyonu
Yedeklemek ve Yedekten Dönmek
SQL Server Management Objects'i Kullanmak
Bölümlerin kısaca özetleri ise şöyledir:
1. Bölüm: Microsoft SQL Server'a Genel Bakış
Veritabanı programlamaya başlamadan önce öğrenilmesi gereken konu, neyin programlanacağıdır. Veritabanı kavramı, ilişkisel veritabanı yönetim sistemleri nedir ve SQL Server bunların neresindedir sorularının cevabını bu bölümde bulabileceksiniz. Veritabanı ile SQL Server'ın ne olduğunu öğrendikten sonra, veritabanı programlama, SQL ve T-SQL ifadelerinin anlamını öğrenerek kitapta gerçek anlamda ne öğretilmek istendiğinin farkına varacaksınız.
SQL Server araçları, kurulum ve konfigürasyon seçenekleri, lisanslama modellerini de öğreneceğiniz bu bölümde, veritabanı ve SQL Server'ın mimari temellerinden sonra, mantıksal SQL Server veritabanı nesnelerini de sırasıyla inceleyeceksiz.
2. Bölüm: T-SQL'e Genel Bakış
Bu bölüm ile birlikte, artık veritabanı programlama dünyasına ilk adımları atacaksınız. SQL ve T-SQL dillerinin en temel söz dizimleri olan, veri işlemleri için Select, Insert, Update, Delete, nesne işlemleri için de Create, Alter, Drop ifadelerini örneklerle ve teorik tüm detaylarıyla inceleyeceğiz. Bir veritabanı oluşturmak için hangi özellikler gereklidir. Bu özelliklerin anlamları ve ne için kullanıldıkları, bir veritabanının SQL ile nasıl oluşturulduğu, değiştirildiği ve sunucudan nasıl silindiği gibi konuları inceleyeceksiniz. Ayrıca veri üzerinde seçme, ekleme, güncelleme ve silme işlemlerini gerçekleştirmek için kullanılan Select, Insert, Update ve Delete ifadelerini de temel olarak inceleyeceksiniz. Kitabın ilerleyen bölümlerinde bu veri işleme ifadelerini daha gelişmiş ve karmaşık sorgular ile kullanacaksınız.
SQL ve T-SQL programlamaya yeni başlayan ya da bu kitap ile başlayacak olan öğrenciler için bu bölümü kavramak önemlidir. Veritabanı programlama için gerekli en temel sorgu dili kullanımları bu bölümde yer almaktadır.
3. Bölüm: Verileri Sorgulamak
Veritabanı programlamada en çok kullanılacak sorgu yapıları, şüphesiz Select ifadesiyle oluşturulan veri seçme sorgularıdır. Birçok farklı durumda, karmaşık veri seçme sorguları oluşturulabilir. Veriyi filtrelemek belirli koşullardaki kayıtları elde etmek, Null veriyi görmezden gelmek, veri üzerine aralık sorgulaması yapmak, operatörler ve sorgular sonucunda birden fazla tablodan dönecek kayıtları birleştirmek için kullanılan JOIN sorgu yapılarını ele alacaksınız.
SQL ve T-SQL konularında öğrendiğiniz bilgilerin üzerine, veri sorgulama yöntemlerini ekleyerek başlangıç seviyede bir SQL geliştirici bilgisine sahip olacaksınız.
4. Bölüm: Veri Bütünlüğü
Veri ekleme işlemlerinin kontrolsüz yapılması ve veritabanına eklenecek verinin denetlenmemesi, veritabanının bütünlüğünü, yani veri doğrusallığını olumsuz yönde etkiler. Verinin belirli format ve şartlara göre veritabanına eklenmesiyle birçok sorun, daha başlamadan çözülmüş olur. Bu bölümde, veri bütünlüğü kavramını ve bunun için gerekli veritabanı nesneleri olan Constraint'leri, Rule ve Default nesnelerini inceleyeceksiniz.
5. Bölüm: İleri Seviye Sorgulama
Bu bölüme kadar öğrenilen temel ve orta seviye SQL konularını bir seviye daha ilerleterek, profesyonel veritabanlarında kullanılan bir çok sorgu tekniğini inceleyeceksiniz. Bu bölümde tüm detaylarıyla inceleyeceğimiz konulardan bazıları;
- Alt Sorgular
- İlişkili Alt Sorgular
- Türetilmiş Tablolar
- Exısts Ve Not Exısts
- Common Table Expressions(Cte),
- Rütbeleme Fonksiyonları
- Pıvot Ve Unpıvot Operatörleri
- Tuncate Table
- İleri Veri Yönetim Teknikleri
- Dosyaların(Video, Resim Vb) Veritabanına Eklenmesi Ve Güncellenmesi
- Fılestream İle Veri Seçme, Ekleme, Güncelleme, Silme İşlemleri
- Verileri Gruplamak Ve özetlemek
- Gruplama fonksiyonları
Bu ana konular ile bunlara bağlı bir çok ara konuyu detaylı örnekleriyle inceliyor olacaksınız.
6. Bölüm: Geçici Veriler İle çalışmak
SQL Server'da geçici veri kavramı birden farklı şekilde anlaşılabilir. Bu bölümde kastettiğimiz geçici veri, tarih ve para birimi işlemleri gibi, anlık olarak işlenen verilerdir. Bir tarih verisi üzerinden ülke, dil ve diğer SQL Server ayarlarına bağlı olmak üzere, birçok farklı formatta veri çıktısı alınabilir. Aynı şekilde, birden fazla para birimini destekleyen veritabanı tasarımlarında, para birimi ve bu birimlerin dönüştürülmesi, sorgulanarak farklı birimler ile birleştirilmesi gibi işlemler geçici veri olarak nitelendirilebilir.
Geçici veriler için SQL Server'da bol miktarda hassas veri tipi ve fonksiyon yer alır. Bu bölümde, tüm veri tiplerinin detaylarını örneklerle birlikte inceleyeceğiz. Fonksiyonların kullanımını inceleyeceğimiz gibi, veri tipleri arasındaki farklılıkları da gözlemleyeceksiniz.
7. Bölüm: View'lerle çalışmak
View'ler, basit ya da karmaşık sorgular için sanal tablo görevini yerine getirirler. Bu bölümde, view'ler hakkında bilgi almak, view oluşturmak, değiştirmek, silmek, schema binding, view şifreleme, view üzerinden ilişkili tablolara veri ekleme, güncelleme ve silme işlemi yapma gibi view yönetim işlemlerini ele alacaksınız.
8. Bölüm: İndekslerle çalışmak
İndeksleri kavramak için, öncelikle SQL Server'ın veri depolama mimarisi hakkında bilgi sahibi olunmalıdır. Bu bölümde, SQL Server depolama mimarisini inceledikten sonra, sorgu optimizasyonunu sağlamak için kullanılan indekslerin türleri ve indekslerin oluşturularak yönetilmesi, indeksler hakkında sistemden bilgi almak gibi konuları inceleyeceksiniz.
9. Bölüm: Script ve Batch Kullanımı
Daha önceki bölümlerde birçok T-SQL nesne ve ifadesi öğrenmenize rağmen, gerçek anlamda T-SQL programlamanın özelliklerinden önemli bir kısmını bu bölümde inceleyeceksiniz. Script ve Batch kavramını inceleyeceğiniz bu bölümde, değişken tanımlama, değişkenlere değer atama, Use ve Go komutları, SQLCMD aracının kullanımı, tüm programlama dillerinde vazgeçilmez olan akış kontrol ifadeleri (If Else, Case, While vs.) gibi önemli T-SQL konularını örneklerle inceleyeceksiniz.
10. Bölüm: SQL Cursor'ları
Bu bölümde, kayıtlar üzerinde gezinmek için kullanılan cursor'ları inceleyeceksiniz. Bir cursor'ın ömrü, nerelerde kullanıldığı, cursor tipleri, özellikleri, cursor'ların nasıl oluşturulduğu ve cursor'lar ile satırlar üzerinde ileri-geri dolaşmak için gerekli ifadeleri inceleyeceksiniz. Cursor'lar, alternatifi olmakla birlikte, bazen kullanmak kaçınılmaz olabilir. Yapısal olarak karmaşık gibi görünen, kullanımı zor ve tecrübe isteyen bir konudur. Bu nedenle kitapta cursor'ları ayrı bir bölüm olarak ele alınmıştır.
11. Bölüm : Stored Procedure'ler
SQL Server'da performans ve güvenlik olarak çok tercih edilecek özel bir nesnedir stored procedure'ler. Dışarıdan parametre alarak, programsal, çok karmaşık olmayan işleri gerçekleştirmek için kullanılırlar. Stored procedure'ler, sorgu planı ve ayrıştırma işlemi daha önceden hazırlanan nesneler olduğu için, performans açısından sorgu hızını artırıcı özelliğe sahiptir.
Bu bölümde, stored procedure oluşturma, sistemdeki prosedürler hakkında bilgi almak, bu nesneler için gerekli izin ve roller, kısıtlamalar, prosedürlerin değiştirilmesi, çağrılması, şifrelenmesi ve silinmesi gibi daha birçok stored procedure konusunu inceleyeceksiniz.
12. Bölüm: Hata Yönetimi
Tüm programlama dillerinde olması kaçınılmaz sorun, yazılım ya da işlem sırasında meydana gelen hatalardır. Bilgisayar teknolojilerinde hata olması kaçınılmazdır. Ancak hatanın, çalışan programı çalışamaz hale getirmemesi için izole edilmesi gerekir. İzole edilen hatanın yerine farklı bir işlem yapılabileceği gibi, aynı işlem tekrar gerçekleştirilmek istenebilir ya da hata olana kadar gerçekleşen işlemler geri alınabilir.
Bu bölümde, hata mesajları hakkında bilgi almak, yeni mesaj eklemek, hata fırlatmak, Throw, Raiserror gibi konuları ele alacaksınız. Aynı zamanda, T-SQL programları içerisinde, hata yönetimini kolaylaştırmak ve daha yönetilebilir hale getirmek için T-SQL diline eklenen Try-Catch ile hata kontrolünü de inceleyeceksiniz.
13. Bölüm: Dinamik SQL
Veritabanı programlarında bazen sorguya gelecek verinin değeri çalışma anında belirlenebilir. Bu tür durumlarda dinamik sorgular geliştirilmesi gerekir. Bu bölümde, dinamik sorgu tekniklerini, Exec ve sp_ExecuteSQL ile dinamik sorgu oluşturma yöntemlerini inceleyerek, çeşitli örnekler geliştireceksiniz.
14. Bölüm: Kullanıcı Tanımlı Fonksiyonlar
Veritabanı programlamada, stored procedure'ler kadar önemli olan diğer bir nesne de, kullanıcı tanımlı fonksiyonlardır. Kısaca KTF olarak isimlendireceğimiz bu nesne, dışarıdan parametre alabildiği gibi, dışarıya parametre de gönderebilmektedir. İçerisinde karmaşık T-SQL işlemleri gerçekleştirebilir. Gerçek anlamda bir program parçası-fonksiyonu olarak çalışır.
Bu bölümde, KTF oluşturma, farklı KTF türleri ve kullanımları, KTF şifreleme, silme gibi işlemlerle birlikte Cross Apply ve Outer Apply operatörlerinin de KTF ile birlikte kullanımını inceleyeceksiniz.
15. Bölüm: SQL Server ile XML
SQL Server tarafından native olarak desteklenen XML veri tiplerini kullanarak, XML formatındaki verinin SQL Server içerisine aktarılması, veritabanındaki verinin XML formatıyla sunucu dışına aktarılması gibi işlemler gerçekleştirilebilir.
Bu bölümde, XML veri yönetimini gerçekleştirme, XML şema koleksiyonları oluşturma ve yönetme işleminin yanı sıra, XML nesne ve veriler hakkında bilgi alma konularını da inceleyeceksiniz.
XML veri üzerinde sorgulama işlemleri gerçekleştirmek için aşağıdaki XML metodlarını inceleyeceksiniz.
- xml.query
- xml.exist
- xml.value
- xml.nodes
- xml.modify
- delete
- replace value of
XML biçimindeki ilişkisel veriye erişmek için, For XML ve Open XML ifadelerini, SQL Server'ı uzak sunucu olarak kullanarak, XML formatıyla veri erişimini sağlamak için ise, HTTP Endpoint'leri inceleyeceksiniz.
16. Bölüm: Transaction Kilitler
Transaction ve kilit kavramı, bir veritabanı sunucusu için, ileri seviye yönetim gerektiren konulardır. Bu bölümde, transaction oluşturma, kayıt noktası oluşturma, iç içe transaction'lar, Xact_State fonksiyonu ve transaction'lar içerisinde hata yakalama mekanizması oluşturma gibi konuları inceledikten sonra, tamamlayıcı bölüm olarak da kilitlere giriş yapacağız.
Kilit türleri, kilitlerin T-SQL ile yönetilmesi, izolasyon seviyesinin ayarlanması ve yönetimi gibi kavramları bu bölümde inceleyeceksiniz.
17. Bölüm: Trigger'lar
Veritabanı ya da sunucuda, bir olay sonucunda otomatik olarak tetiklenen nesnelerdir. Bu bölümde, DML işlemlerinde gerçekleşen Insert, Update, Delete işlemlerine özel trigger'lar oluşturmayı ve yönetmenin yanı sıra, Instead Of Trigger'lar oluşturmayı ve yönetmeyi de inceleyeceksiniz. Veritabanı katmanında DML trigger'ları inceledikten sonra ise, sunucu katmanında DDL trigger oluşturmayı ve yönetmeyi inceleyeceksiniz.
18. Bölüm: Sorgu ve Erişim Güvenliği
Veritabanının güvenliği, içerdiği verinin değeriyle doğru orantılıdır. önemli ve değerli olan her şey korunmalıdır. Günümüzde en değerli ve özel kaynak verinin kendisidir.
SQL Server'da güvenliği sağlamak için temel olarak dört ayrı katman vardır. Bunlar;
- Sunucu işletim sisteminin ve sunucunun bulunduğu bilgisayar ağının güvenliği
- Veritabanı sunucusunun güvenliği
- Veritabanı yazılımının güvenliği
- Veritabanına bağlantı yetkisi olan istemci uygulamaların güvenliği
Bu bölümde, dört aşamalı güvenlik katmanını inceliyor olacaksınız. Yazılımsal olarak, SQL Injection gibi SQL kodları arasına kod enjekte etme saldırılarına özel bir yer ayırarak derinlemesine inceleyeceğiz. Daha sonra ise SQL Server'ın güvenlik için oluşturulan nesne ve ayarlarını inceleyeceksiniz. Erişim Güvenliği bölümünde oturumlar, nesne izinleri, kullanıcılar, izinler ve rolleri inceleyip yöneteceksiniz.
19. Bölüm : Performans ve Sorgu Optimizasyonu
Bu bölüm de, bilgi ve anlatımda sınır olmayacak kadar geniş bir kavramı temsil eder. Performans, tek bir alanı kapsamaz. Veritabanının ilişkili olduğu her şeyin toplamına denk bir kapsama sahiptir. Veritabanının bulunduğu sunucunun tüm donanımlarından, internet alt yapısına, istemcilerin performansından, veritabanı tasarımı ve SQL sorgularına kadar, hatta daha da fazla, bağlantılı performans parçasına sahiptir.
Bu bölümde, performans kavramını yazılım geliştirici açısından inceleyeceksiniz. Ancak bazı konular ise, hem yazılımcı hem de veritabanı yöneticisi açısından gerekli olan kavramları içermektedir.
20. Bölüm: Yedeklemek ve Yedekten Dönmek
Yedekleme işlemleri genel olarak veritabanı yöneticisinin görevidir. Bir sistemin veri yedeklerinin planlanması ve yedeklemenin gerçekleştirilmesi, genel olarak veritabanı yöneticisi tarafından yapılır. Tabi ki, her yazılımcı aynı zamanda bir veritabanı yöneticisi adayıdır. Veritabanı yöneticileri de veritabanı geliştirme tarafında uzun zaman tecrübe edinmiş kişilerden oluşmaktadır. Bu nedenle, bir veritabanı programcısının da iş hayatında sıklıkla kullanması gereken veritabanı yedekleme bölümüne bu kitapta yer verildi.
21. Bölüm: SQL Server Management Objects'i Kullanmak
Veritabanı programcısı ve yöneticisinin ortak kullandığı teknolojilerden biri de SMO'dur. Kısaca söylemek gerekirse, SMO ile kendi Management Studio editörünüzü geliştirebilirsiniz. Bir veritabanı ve sunucunun geliştirme ve yönetim için gerekli nesne modellerine sahiptir. SMO bir nesne modelidir ve .NET programlama dilleriyle geliştirilebilir. Bu durumda, hem yazılımcı hem de veritabanı yöneticisi açısından karşılaşılabilecek bir teknolojidir diyebiliriz. Bu bölümde, SMO uygulamalarına, neredeyse hiç bir kitapta bulamayacağınız kadar fazla yer verildi. Birçok veritabanı nesnesi ve işleminin SMO ile nasıl geliştirilebileceğini örnek uygulamalar ile incelendi.
(Tanıtım Bülteninden)
Kullanıcı Yorumları