İÇİNDEKİLER
İÇİNDEKİLER
BÖLÜM 1 17
1. GENEL BİLGİLER VE GİRİŞ 17
1.1. Veri Yönetim Yaklaşımları, Avantaj ve Dezavantajları 17
1.2. Veritabanı ve Veritabanı Yönetim Sistemi 18
1.3. Veritabanı Türleri 18
1.4. Veritabanı Tasarımı 19
1.5. Varlık İlişki Modelleri 20
1.6. MS–SQL Server Veritabanı ve Kurulumu 21
1.7. SQL Server Management Studio ve Kurulumu 27
1.8. Basit Bir Veritabanı Oluşturma 31
BÖLÜM 2 35
2. İLİŞKİSEL VERİTABANI 35
2.1. Tablo, Satır ve Sütun 35
2.2. Veri Türleri 36
2.3. Normalizasyon 39
2.4. Kısıtlamalar 40
2.4.1. Birincil ve İkincil Anahtar 40
2.4.2. Varsayılan Değer ve Not Null 42
2.4.3. Tekil Değer Özelliği 43
2.4.4. Otomatik Artan Sayı 44
2.4.5. Diğer Alan Özellikleri 45
2.5. Veritabanında Yazım Kuralları 46
BÖLÜM 3 49
3. ÖRNEK VERİTABANI VE SORGULAMA DİLİ
OLARAK SQL 49
3.1. Tablolar Arası İlişkiler 51
3.2. Sorgulama Dili (SQL–Structed Query Language) 54
3.2.1. Veri Tanımlama Dili (DDL–Data Definition
Language) 56
3.2.1.1. Create Komutu 56
3.2.1.2. Alter Komutu 59
3.2.1.3. Komutu 60
3.2.1.4. Truncate Komutu 60
3.2.1.5. Yorum (Comment) Komutları 61
3.2.1.6. Yeniden Adlandırma (sp_rename)
Komutları 62
3.2.2. Veri Düzenleme Dili (DML–Data Manuplation
Language) 62
3.2.2.1. Komutu 62
3.2.2.2. Komutu 63
3.2.2.3.Komutu 64
3.2.3. Veri Sorgulama Dili (DQL–Data Query Language) 64
3.2.3.1. Komutu 64
3.2.4. Veri Kontrol Dili (DCL–Data Control Language) 66
3.2.4.1. Grant Komutu 66
3.2.4.2. Deny Komutu 66
3.2.4.3. Revoke Komutu 66
3.2.5. Veri Yönetim Komutları (DAC–Data Administration
Commands) 67
3.2.5.1. Server Audit Komutu 67
3.2.6. İşlem Kontrol Komutları (TCC–Transactional Control
Commands) 67
3.2.6.1. Commit ve Rollback Komutu 69
3.2.6.2. Savepoint Komutu 70
3.2.6.3. Set Transaction Komutu 70
3.3. Veritabanı Yedekleme ve Yedekten Geri Dönme 72
3.4. Veritabanı veya Nesnelerin Oluşturulma Kodları 77
BÖLÜM 4 83
4. VERİ LİSTELEME SQL KOMUTLARI 83
4.1. Verilerin Listelenmesi (Select) 83
4.2. Listeleri Filtreleme 84
4.2.1. Metin Veri Türüne Göre Filtreleme 84
4.2.2. Sayı Veri Türüne Göre Filtreleme 85
4.2.3. Tarih Veri Türüne Göre Filtreleme 86
4.3. Listeleme Sorgularında Operatörler 87
4.3.1. Karşılaştırma Operatörleri 87
4.3.2. Mantıksal Operatörler 88
4.3.3. İçinde ve İçinde Değil (IN, NOT IN) 89
4.3.4. Arasında ve Arasında Değil (BETWEEN, NOT
BETWEEN) 89
4.3.5. Metin İçinde ve Metin İçinde Değil (LIKE,
NOT LIKE) 89
4.4. Listelerin Sıralanması (Order by) 91
4.5. Verileri Tekrarsız Listeleme (Distinct) 92
4.6. Sorgu Performansını Ölçme 93
4.7. Tür Dönüşümleri (Cast, Convert, Parse) 94
4.8. Tür Dönüşümlerinde Hata ve Performans Karşılaştırması 99
4.9. Veri Formatlama (Format) 101
BÖLÜM 5 105
5. LİSTELERİN ÖZETLENMESİ SQL KOMUTLARI 105
5.1. Verilerde Matematiksel İşlemler 105
5.2. Verilerde Kümeleme 106
5.2.1. Toplama Metodu (SUM) 106
5.2.2. Ortalama Alma Metodu (AVG) 106
5.2.3. En Küçük Değer Metodu (MIN) 106
5.2.4. En Büyük Değer Metodu (MAX) 107
5.2.5. Değer Sayma Metodu (COUNT) 107
5.2.6. Varyans Metodu (VAR) 107
5.2.7. Standart Sapma Metodu (STDEV) 108
5.2.8. Diğer Kümeleme Metotları 108
5.3. Gruplama İşlemi (GROUP BY) 108
5.4. Gruplama Sonrası Filtreleme (HAVING) 110
5.5. Metinler ile İlgili Metotlar 111
5.5.1. Metinsel Birleştirme (+, CONCAT) 111
5.5.2. Boşluk Silme Metodu (TRIM) 111
5.5.3. Başta ve Sonda Boşluk Silme Metodu (LTRIM,
RTRIM) 112
5.5.4. Büyük Harf ve Küçük Harf Metodu (UPPER ve
LOWER) 112
5.5.5. Parçanın İndisini Alma (CHARINDEX) 113
5.5.6. Parça Metin Alma (SUBSTRING) 113
5.5.7. Soldan ve Sağdan Metin Alma (LEFT ve RIGHT) 114
5.5.8. Uzunluk Alma (LEN) 114
5.5.9. Metni Tersten Yazma (REVERSE) 114
5.5.10. Metin Değiştirme () 115
5.6. Metinleri Parçalama (STRING_SPLIT) 115
5.7. Diğer Metinsel Metotlar 115
5.8. Matematiksel Metotlar 116
5.8.1. Mutlak Değer Alma (ABS) 116
5.8.2. Karekök Alma (SQRT) 117
5.8.3. Kare Alma (SQUARE) 117
5.8.4. Rastgele Sayı Üretme (RAND) 117
5.8.5. Üs Alma (POWER) 118
5.8.6. Üst Sayıya Yuvarlama (CEILING) 118
5.8.7. Alt Sayıya Yuvarlama (FLOOR) 119
5.8.8. Yuvarlama (ROUND) 119
5.8.9. Trigonometrik Metotlar (SIN, COS, TAN, COT) 119
5.8.10. e Sayısının Üssü (EXP) 119
5.8.11. Logaritma (LOG) 120
5.8.12. Diğer Matematiksel Metotlar 120
5.9. Tarih–Saat Metotları 120
5.9.1. Tarih Parçası Alma (DAY, MONTH, YEAR,
DATEPART, DATENAME) 120
5.9.2. Çalıştırma Zamanı Döndürme (getdate, sysdatetime,
sysdatetimeoffset) 123
5.9.3. Zaman Oluşturma Metotları 123
5.9.4. Tarihler Arası Fark Alma (DATEDIFF,
DATEDIFF_BIG) 124
5.9.5. Tarihlere Süre Ekleme (DATEADD) 125
5.10. Tarih Dönüştürme (SWITCHOFFSET, EOMONTH,
TODATETIMEOFFSET) 125
5.10.1. Oturumun Sorgularının Formatını Öğrenme ve
Değiştirme (DATEFIRST, DATEFORMAT,
LANGUAGE) 126
5.10.2. Zaman Verisi Kontrolü (ISDATE) 127
5.11. Diğer Metotlar 127
BÖLÜM 6 129
6. İLİŞKİLİ TABLO SORGULARI 129
6.1. Tabloları Birleştirme/İlişkilendirme 129
6.1.1. Farklı İlişkilendirme Yöntemleri (Inner Join,
Left Join, Right Join, Full Outer Join) 136
6.2. İç İçe SQL 142
6.3. Sorgu Kümeleme Operatörleri 143
6.3.1. Sorguları Birleştirme (UNION) 143
6.3.2. Listeden Herhangi Biri (ANY, SOME, IN) 144
6.3.3. Listeden Tümü Ya Da Hiçbiri (ALL) 144
6.3.4. Listede Kayıt Var Ya Da Yoksa (EXISTS, NOT
EXISTS) 145
6.3.5. İki Listeden Birinde Olup Diğerinde Olmayan
(EXCEPT) 145
6.3.6. İki Listede Aynı Anda Olan (INTERSECT) 146
BÖLÜM 7 147
7. İLERİ DÜZEY T–SQL KODLARI 147
7.1. Go Deyimi 147
7.2. Değişkenler 148
7.2.1. Değişken İsimlendirme Kuralları 150
7.2.2. Sistem Değişkenleri 151
7.3. Kontrol Deyimleri 152
7.3.1. Begin–End 152
7.3.2. IF–Else, IIF ve Case–When–Then 152
7.3.3. While–Break–Continue 157
7.3.4. Try–Catch 159
7.3.5. Use ve Dbo 161
7.3.6. Pivot ve Unpivot Tablolar Oluşturma 161
7.3.7. Geçici Tablolar (Temp Table) Oluşturma 166
7.3.8. Tablo İçeriği Kopyalama (INTO) 168
7.3.9. Toplu Kayıt Girme (Bulk Insert) 169
7.3.10. Dinamik SQL Sorgusu Çalıştırma 173
BÖLÜM 8 175
8. İLERİ VERİTABANI İŞLEMLERİ 175
8.1. Görünüm Oluşturma ve Silme (VIEW) 175
8.2. Indeks Oluşturma ve Silme (INDEX) 180
8.3. Stored Procedure Oluşturma 185
8.4. Fonksiyon Oluşturma 193
8.5. Trigger Oluşturma 198
8.5.1. Sunucu Seviyesinde Trigger 199
8.5.2. Veritabanı Seviyesinde Trigger 200
8.5.3. Tablo/View Seviyesinde Trigger 201
8.6. İmleç (Cursor) Kullanma 204
8.6.1. İmleç Hareket Yönleri 207
8.6.2. İmleç (cursor) Türleri 208
8.7. Şifreli Sorgu Oluşturma (With Encryption) 210
BÖLÜM 9 213
9. GÜVENLİK 213
9.1. SQL Enjeksiyon (SQL Injection) 213
9.2. Verileri Şifreleme (Always Encrypted) 215
9.2.1. Saydam Veri Şifreleme (Transparent Data
Encryption–TDE) 215
9.2.2. Sütun Düzeyinde Şifreleme (Column Level
Encryption) 217
9.2.3. Her Zaman Şifreli Veri Yapısı (Always Encrypted) 220
9.3. Kimlik Doğrulama 224
9.4. Kullanıcı Tanımlama, Güncelleme ve Silme 225
9.4.1. Kullanıcı Yetkilendirme 227
9.4.2. Veritabanı Düzeyinde İşlem Yetkilendirmeleri 229
9.4.3. Nesne Özelinde Yetki Verme 232
9.4.4. Satır Düzeyinde Yetkilendirme 233
9.4.5. SQL Sunucu Erişimini Engelleme 234
9.5. Kullanıcı Tanımlı Yetkiler 235
BÖLÜM 10 237
10. PERFORMANS 237
10.1. Hibrit İşlem/Analitik Süreci (Hybrid Transactional ve
Analytical Processing– HTAP) 237
10.2. Kümelenmiş Kolon Depolu İndeksler (Clustered Column
store Indexes) 238
10.3. Disk Tabloları ve Bellek İçi Tablolar 238
10.4. Doğal Derlenmiş Saklı Yordamlar (Natively Complied
Stored Procedures) 239
10.5. Geçici Veritabanı (TempDB) 241
10.6. Akıllı Sorgu İşleme (Intelligent Query Processing–IQP) 241
10.7. Hibrit Arabellek Havuzu (Hybrid Buffer Pool) 243
10.8. Sorgu Depoları (Query Store) 244
10.9. Automatic Tuning 247
10.9.1. Automatic Plan Correction 248
10.9.2. Automatic Index Management 248 |