0Pricing
SQL Academy · Ders

NULL Gerçekte Ne Anlama Gelir

Bilinmeyen; sıfır veya boş olmayan değer.

NULL Gerçekte Ne Anlama Gelir, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.

NULL ile Tanışın

NULL, SQL'de “Bilmiyorum” demenin yoludur. Sıfır, boş dize veya false değildir — bir değerin yokluğunu temsil eder.

Bir sütunda bilinen bir değer olmadığında veritabanı buraya NULL kaydeder. NULL'ın nasıl davrandığını öğrenmek, doğru sorgular yazmanın en önemli adımlarından biridir.

-- A customers table where some phone numbers are unknown
SELECT id, name, phone
FROM customers;

-- id | name    | phone
-- ---+---------+------------
--  1 | Alice   | 555-0101
--  2 | Bob     | NULL        <- phone unknown
--  3 | Carol   | NULL

NULL Sıfır Değildir

Yaygın bir hata, NULL değerini 0 sayısıyla aynı kabul etmektir. Bu ikisi tamamen farklıdır.

  • 0 bilinen bir değerdir: sıfır.
  • NULL, değerin eksik veya bilinmeyen olduğu anlamına gelir.

Bir hesabın bakiyesi 0 ise müşterinin parası yoktur. Bakiye NULL ise bakiyeyi henüz bilmiyoruz demektir.

SELECT id, balance
FROM accounts;

-- id | balance
-- ---+--------
--  1 | 0        <- known: empty wallet
--  2 | NULL     <- unknown: not recorded yet

NULL Boş Dize Değildir

Metin sütunlarında da NULL ile boş dize '' birbirinden farklıdır.

  • '', uzunluğu sıfır olan bir dizedir — bilinen ve mevcut bir değerdir.
  • NULL, hiç dize sağlanmadığı anlamına gelir.

Bilerek boş bir not kaydedebilir veya notu tamamen eksik bırakabilirsiniz. SQL bu ikisini birbirinden ayırır.

SELECT id, note, length(note) AS note_len
FROM tickets;

-- id | note | note_len
-- ---+------+----------
--  1 | ''   |        0   <- empty but present
--  2 | NULL |     NULL   <- absent; length is also unknown

Üç Değerli Mantık

Normal mantığın iki sonucu vardır: true ve false. SQL bunlara üçüncü bir sonuç ekler: bilinmeyen.

NULL içeren her karşılaştırma unknown sonucunu verir; çünkü sahip olmadığınız bir değerle karşılaştırma yapamazsınız. Buna üç değerli mantık denir.

-- Each comparison with NULL returns UNKNOWN, not true/false
SELECT
  NULL = 5      AS eq,      -- unknown
  NULL <> 5     AS neq,     -- unknown
  NULL = NULL   AS self_eq, -- unknown (!)
  NULL > 0      AS gt;      -- unknown

NULL = NULL TRUE Değildir

En şaşırtıcı kural şudur: NULL = NULL true değildir. Sonuç unknown olur.

Neden mi? İki değer de bilinmiyorsa bunların eşit olduğunu söyleyemezsiniz — herhangi bir şey olabilirler. Bir şeyin NULL olup olmadığını denetlemek için = yerine IS NULL kullanmalısınız.

-- Wrong: never returns rows, because NULL = NULL is unknown
SELECT * FROM customers WHERE phone = NULL;

-- Right: use IS NULL
SELECT * FROM customers WHERE phone IS NULL;

WHERE Yalnızca TRUE Satırlarını Tutar

Bir WHERE yan tümcesi, bir satırı yalnızca koşulu doğru olduğunda tutar. Koşulun false veya unknown olduğu satırlar atılır.

Bu nedenle NULL içeren bir sütunu = ile süzmek, görmeyi bekleyebileceğiniz satırları sessizce kaldırır.

-- Bob and Carol have NULL phones, so phone = '555-0101'
-- is UNKNOWN for them and they are excluded.
SELECT name
FROM customers
WHERE phone = '555-0101';

-- Returns only Alice

NULL Aritmetik İşlemlerde Yayılır

NULL ifadelerde bulaşıcıdır. NULL içeren neredeyse tüm aritmetik veya dize işlemleri NULL üretir.

Girdilerden birini bilmiyorsanız sonucu da bilemezsiniz.

SELECT
  10 + NULL    AS sum,    -- NULL
  100 * NULL   AS prod,   -- NULL
  NULL / 2     AS div,    -- NULL
  'Hi ' || NULL AS greet; -- NULL (string concat)

NULL Değerleri Nereden Gelir

NULL değerleri birkaç yaygın durumda ortaya çıkar:

  • NULL kabul eden bir sütunu belirtmeyen bir INSERT.
  • Taraflardan birinde eşleşen satır bulunmayan bir dış birleştirme.
  • Sıfır satır üzerinde yapılan bir toplama işlemi (ör. boş bir kümede SUM sonucu NULL döner).

Kaynağı bilmek, bunları nasıl ele alacağınıza karar vermenize yardımcı olur.

-- Omitting phone inserts NULL automatically
INSERT INTO customers (id, name) VALUES (4, 'Dan');

SELECT id, name, phone FROM customers WHERE id = 4;
-- 4 | Dan | NULL

NULL Değerlerini Önleme: NOT NULL

Bir sütunun her zaman değer içermesi gerekiyorsa bunu NOT NULL olarak tanımlayın. Böylece veritabanı, değeri olmadan bırakılmaya çalışılan her satırı reddeder.

Bu, verilerinizi temiz tutmanın ve ileride NULL kaynaklı sürprizlerden kaçınmanın güçlü bir yoludur.

CREATE TABLE users (
  id    integer PRIMARY KEY,
  email text NOT NULL,   -- must always be provided
  bio   text             -- nullable: optional
);

-- This fails: email cannot be NULL
INSERT INTO users (id, bio) VALUES (1, 'hi');

DISTINCT / GROUP BY ve NULL

SQL'in NULL değerlerini eşit kabul ettiği bir yer vardır: gruplama ve yinelemeleri kaldırma.

DISTINCT ve GROUP BY içinde tüm NULL değerleri, başka yerlerde NULL = NULL sonucu bilinmeyen olsa bile tek bir grupta birleştirilir. Bu özel durum, gruplamayı kullanışlı tutar.

SELECT phone, count(*)
FROM customers
GROUP BY phone;

-- phone    | count
-- ---------+------
-- 555-0101 |     1
-- NULL     |     2   <- all NULLs grouped together

Zihinsel Model Özeti

Bir NULL gördüğünüzde şu kuralları aklınızda tutun:

  • NULL, sıfır veya boş değil, bilinmeyen anlamına gelir.
  • NULL ile yapılan karşılaştırmalar bilinmeyen sonucunu verir — IS NULL / IS NOT NULL kullanın.
  • WHERE yalnızca doğru satırları tutar.
  • NULL ile yapılan aritmetik işlemler NULL üretir.
  • Gruplama, NULL değerlerini tek bir grup olarak ele alır.
-- The two correct NULL tests
SELECT name FROM customers WHERE phone IS NULL;
SELECT name FROM customers WHERE phone IS NOT NULL;

Kısa Kontrol

NULL = NULL ifadesi standart SQL'de hangi sonucu verir?

Özet

NULL'ın gerçekte ne olduğunu artık biliyorsunuz: 0 ve '' değerlerinden farklı olan, eksik veya bilinmeyen bir değeri belirten işarettir.

SQL'in üç değerli mantığını, = NULL ifadesinin neden hiçbir zaman çalışmadığını, NULL'ın aritmetik işlemlerde nasıl yayıldığını ve WHERE yan tümcesinin bilinmeyen satırları nasıl attığını gördünüz. Sonraki bölümde NULL değerlerini IS NULL ve IS NOT NULL ile denetlemenin doğru yolunu öğreneceksiniz.

-- Remember the golden rule
SELECT * FROM customers WHERE phone IS NULL;     -- correct
-- SELECT * FROM customers WHERE phone = NULL;   -- always empty!

Sıkça Sorulan Sorular

“NULL Gerçekte Ne Anlama Gelir” dersi ücretsiz mi?

Evet — “NULL Gerçekte Ne Anlama Gelir” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.

“NULL Gerçekte Ne Anlama Gelir” dersinde ne öğreneceğim?

Bilinmeyen; sıfır veya boş olmayan değer. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

SQL Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“NULL Gerçekte Ne Anlama Gelir” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. NULL Gerçekte Ne Anlama Gelir
  2. IS NULL ve IS NOT NULL
  3. COALESCE ve NULLIF
  4. Toplamlarda ve Birleştirmelerde NULL
← SQL Academy Sayfasına Dön