Lajiverta Academy Satın Al — 499₺

Academy 🗄️ SQL & Veritabanı Veri ve Tablolar

NULL: bilinmeyenin adı

🗄️ Veri ve Tablolar bölümü · Code Quest SQL & Veritabanı parkuru

Veritabanlarında bir değer bazen yoktur. Yeni çıkacak bir oyunun henüz puanı yoktur; bir oyuncu şehrini yazmamıştır. SQL bu durumu NULL ile ifade eder.

NULL, sıfır değildir. Boş metin ('') de değildir. NULL = "bilinmiyor". Sıfır bir bilgidir ("stok 0, tükendi"), NULL bilgisizliktir ("stok kaç, bilmiyoruz").

SQL
SELECT ad, puan
FROM oyunlar;
▸ SONUÇ
ad             | puan
───────────────┼─────
Neon Drift     |  4.6
Piksel Kale    |  4.2
Gölge Avcısı   |  4.8
Kelime Kulesi  |  3.9
Yıldız Sürüsü  |  4.4
Zaman Kapısı   |  4.7
Robot Bahçesi  |    4
Kara Yörünge   | NULL
Buz Vadisi     |  3.5
Kule Savunması |  4.1
Derin Mavi     |  4.9
Sessiz Ada     |  4.3

Kara Yörünge 2026 yapımı — henüz çıkmadı, kimse puanlamadı. O yüzden puanı NULL. Bir de Robot Bahçesi'ne bak: puanı 4.0 girilmişti ama sonuçta 4 görünüyor. Sayılarda anlamsız sıfırlar gösterilmez; 4.0 ile 4 aynı sayıdır.

NULL'ın en tuhaf tarafı şudur: NULL ile yapılan her hesap NULL verir. Bilinmeyene 10 eklersen yine bilinmeyen elde edersin — mantıklı, değil mi?

SQL
SELECT 100 + NULL;
▸ SONUÇ
100 + NULL
──────────
      NULL
💡 Bu davranış ileride canını yakabilir: NULL içeren bir sütunla hesap yaparsan sonuçlar sessizce NULL olur. 5. bölümde NULL'ı ehlileştiren COALESCE fonksiyonunu öğreneceksin.

Şimdilik iki şeyi aklında tut:

  • NULL bir değer değil, bir durumdur: "burada veri yok".
  • Bu yüzden = NULL diye bir karşılaştırma çalışmaz; doğrusu IS NULL'dır (3. bölüm).

İyi tasarlanmış bir veritabanında NULL'lara izin verilen sütunlar bilinçli seçilir. Bir oyunun adı asla NULL olamaz (kim satın alacağını bilmez), ama puanı olabilir.

SQL
SELECT ad, sehir
FROM oyuncular;
▸ SONUÇ
ad     | sehir
───────┼─────────
Ada    | İstanbul
Deniz  | Ankara
Kerem  | İzmir
Zeynep | İstanbul
Mert   | Bursa
Elif   | Ankara
Baran  | NULL
Sena   | İzmir
Tuna   | Adana
Nil    | İstanbul

Baran şehrini yazmamış. Onu "şehri bilinmeyen" olarak saymalıyız — "şehri boş string olan" değil. Bu ayrım, ileride rapor hesaplarken doğru sonuç almanı sağlayacak.

Kendini test et

Bu kodun çıktısı ne olur?

SELECT 9.0 / 2;
Cevabı gör

Çıktı:

4.5

Taraflardan biri ondalıklı olunca sonuç da ondalıklı olur.

NULL ne anlama gelir?

  • Sıfır sayısı
  • Boş metin ("")
  • Değer yok / bilinmiyor
Cevabı gör

Cevap: Değer yok / bilinmiyor

NULL bir değer değil, "burada veri yok" durumudur. 0 ve "" ise gerçek değerlerdir.