Ana içeriğe geç
Kesit SQL
İleri · Sertifika Hazırlık

T-SQL laboratuvarı: SQL Server yazımıyla uygulama

Microsoft sınavlarında ve SQL Server işlerinde sık çıkan T-SQL yapıları: TOP WITH TIES, APPLY, IIF, EOMONTH, STRING_AGG, OFFSET/FETCH ve ROLLUP.

Uygulamada aç, 9 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

Microsoft'un veri sınavları (DP-300 yönetim ağırlıklıdır, ama sorgu soruları da içerir) ve SQL Server mülakatları T-SQL'e özgü yapıları sorar. Bu laboratuvardaki her şey SQL Server (T-SQL) yazımıyla çalışır.

Sınav bilgisiSoru sayısı, süre, geçme notu ve kayıt koşulları zaman zaman değişir. Kayıt olmadan önce sınav sağlayıcısının sayfasındaki güncel konu listesini ve bilgileri kontrol et. Buradaki denemeler resmi soruların kopyası değildir; aynı konu alanlarını ölçer.

1. TOP, WITH TIES ve sayfalama

SELECT TOP (3) WITH TIES name, price
FROM products
ORDER BY price DESC;
-- 3. sayfa, sayfa başına 5 ürün
SELECT name, price
FROM products
ORDER BY name
OFFSET 10 ROWS FETCH NEXT 5 ROWS ONLY;

2. CROSS APPLY ve OUTER APPLY

APPLY, sol tablonun her satırı için sağdaki sorguyu çalıştırır. “Her müşterinin son 2 siparişi” gibi grup başına ilk N sorularının en doğal T-SQL çözümüdür. OUTER APPLY, sağ taraf boş dönse de sol satırı korur (LEFT JOIN gibi).

SELECT c.customer_id, s.order_id, s.order_date
FROM customers c
CROSS APPLY (SELECT TOP (2) o.order_id, o.order_date
             FROM orders o
             WHERE o.customer_id = c.customer_id
             ORDER BY o.order_date DESC, o.order_id DESC) s
WHERE c.customer_id <= 3;

3. Koşul, tarih ve metin fonksiyonları

SELECT IIF(price > 1000, 'Pahalı', 'Uygun') AS grup, COUNT(*) AS urun
FROM products
GROUP BY IIF(price > 1000, 'Pahalı', 'Uygun');
SELECT EOMONTH('2024-02-10') AS ay_sonu,
       DATEADD(month, 1, '2024-01-31') AS bir_ay_sonra,
       DATEDIFF(day, '2024-01-01', '2024-03-01') AS gun,
       DATEFROMPARTS(2024, 5, 1) AS tarih,
       TRY_CAST('abc' AS INT) AS hatali_sayi;
YapıNot
DATEDIFF(year, '2024-12-31', '2025-01-01')1 döner: yıl sınırı sayılır, geçen süre değil
'A' + NULLNULL; CONCAT('A', NULL) ise 'A'
7 / 23 (tam sayı bölmesi); 7 / 2.0 = 3.5
ISNULL(a, b)İki değişken alır; sonuç tipi ilk değişkenin tipidir

4. Ara toplamlar ve metin birleştirme

SELECT IIF(GROUPING(category) = 1, 'TOPLAM', category) AS kategori, SUM(stock) AS stok
FROM products
GROUP BY ROLLUP(category);
SELECT category, STRING_AGG(name, ', ') WITHIN GROUP (ORDER BY name) AS urunler
FROM products
GROUP BY category;
Sonraki adımSınavlar sayfasındaki T-SQL Kodlama Laboratuvarı süre altında T-SQL görevleri verir. Yönetim konuları (yedekleme, yüksek erişilebilirlik, izleme) için DP-300 çoktan seçmeli denemesini kullan.
Alıştırmalara geç (9)