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

1Z0-071 laboratuvarı: Oracle yazımıyla uygulama

Oracle sınavında en çok puan kaybettiren konuları Oracle sözdizimiyle çalıştırarak pekiştir: NVL ailesi, dönüşümler, ROWNUM, FETCH, küme işlemleri ve ANY/ALL.

Uygulamada aç, 10 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ç.

1Z0-071 sınavı soruları çoğunlukla “bu ifade ne döndürür?” ya da “hangisi hata verir?” biçimindedir. Bu yüzden konuyu okumak yetmez; ifadeleri çalıştırıp sonucu görmek gerekir. Bu laboratuvardaki tüm kutular ve alıştırmalar Oracle 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. NULL fonksiyonları ve tip uyumu

NVL'nin iki bağımsız değişkeni aynı tipte olmalıdır. Sayı sütununa metin yedeği vermek için önce TO_CHAR ile çevir.

SELECT first_name,
       NVL(TO_CHAR(dept_id), 'Atanmadı') AS departman,
       NVL2(manager_id, 'Yöneticisi var', 'En üst') AS konum,
       NULLIF(title, 'Genel Müdür') AS unvan
FROM employees
WHERE ROWNUM <= 5;
FonksiyonNe yapar?Tuzak
NVL(a, b)a NULL ise ba ve b aynı tipte olmalı
NVL2(a, b, c)a dolu ise b, NULL ise cSıra: dolu önce gelir
NULLIF(a, b)a = b ise NULL, değilse aİlk değişken NULL sabiti olamaz
COALESCE(a, b, …)İlk NULL olmayanTüm değerler uyumlu tipte olmalı
DECODE(x, a, r1, …, varsayılan)Eşitliğe göre seçimDECODE, NULL = NULL eşleşmesini doğru sayar

2. ROWNUM ve FETCH

ROWNUM, satıra ORDER BY'dan önce verilir. “En yüksek 3 maaş” için önce alt sorguda sırala, dışta ROWNUM uygula. 12c ve sonrasında FETCH FIRST daha açıktır.

-- Yanlış: rastgele 3 satırı alır, sonra sıralar
SELECT first_name, salary FROM employees WHERE ROWNUM <= 3 ORDER BY salary DESC;
-- Doğru (klasik)
SELECT * FROM (SELECT first_name, salary FROM employees ORDER BY salary DESC)
WHERE ROWNUM <= 3;
-- Doğru (12c+): 4.–6. sıradakiler
SELECT name, price FROM products
ORDER BY price DESC, product_id
OFFSET 3 ROWS FETCH NEXT 3 ROWS ONLY;
Sınav tuzağıWHERE ROWNUM = 2 hiçbir satır döndürmez: ilk satır 1 numarayı alamadığı için elenir, sonraki satır yine 1 olur ve o da elenir.

3. Dönüşüm ve tarih fonksiyonları

SELECT TO_CHAR(DATE '2024-03-05', 'YYYY-MM') AS ay,
       ADD_MONTHS(DATE '2024-01-31', 1) AS bir_ay_sonra,
       LAST_DAY(DATE '2024-02-10') AS ay_sonu,
       MONTHS_BETWEEN(DATE '2024-03-31', DATE '2024-01-31') AS ay_farki,
       TRUNC(DATE '2024-05-17', 'MM') AS ay_basi
FROM dual;

4. Küme işlemleri, ANY ve ALL

SELECT customer_id FROM customers
MINUS
SELECT customer_id FROM orders;

> ALL (alt sorgu) en büyükten büyük, > ANY en küçükten büyük demektir. Alt sorgu boşsa ALL her satır için doğru, ANY her satır için yanlıştır.

SELECT first_name, salary FROM employees
WHERE salary > ALL (SELECT salary FROM employees WHERE dept_id = 2)
  AND (dept_id <> 2 OR dept_id IS NULL);

5. LISTAGG ve hiyerarşi

SELECT dept_id, LISTAGG(first_name, ', ') WITHIN GROUP (ORDER BY first_name) AS calisanlar
FROM employees
WHERE dept_id IS NOT NULL
GROUP BY dept_id
ORDER BY dept_id;
Sonraki adımBu laboratuvarı bitirince Sınavlar sayfasındaki 1Z0-071 Kodlama Laboratuvarı ile süre altında Oracle yazımıyla görev çöz, ardından çoktan seçmeli denemeyi dene.
Alıştırmalara geç (10)