0Pricing
SQL Academy · Ders

IS NULL ve IS NOT NULL

Eksik değerleri doğru şekilde test edin.

IS NULL ve IS NOT NULL, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 2. 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.

Eksik Değerleri Denetleme

NULL ile yapılan karşılaştırmalar her zaman bilinmeyen sonucu verdiğinden SQL, eksik değerleri denetlemek için size iki özel işleç sunar: IS NULL ve IS NOT NULL.

NULL değerlerini bulmanın veya dışlamanın tek güvenilir yolu bunlardır. Bu derste bunları doğru şekilde kullanmayı öğreneceksiniz.

-- Rows where phone is missing
SELECT name FROM customers WHERE phone IS NULL;

-- Rows where phone is present
SELECT name FROM customers WHERE phone IS NOT NULL;

Neden = NULL Çalışmaz

WHERE phone = NULL yazmak cazip gelebilir; ancak bu ifade hiçbir şeyle eşleşmez. Koşul her satır için unknown sonucunu verir ve WHERE yalnızca doğru satırları tutar.

Sonuç boş bir kümedir — hiçbir hata oluşturulmadığı için sessiz bir hatadır.

-- Always returns 0 rows, even if NULLs exist
SELECT * FROM customers WHERE phone = NULL;

-- The fix
SELECT * FROM customers WHERE phone IS NULL;

IS NULL Kullanımı

IS NULL, değer eksik olduğunda tam olarak true, diğer durumlarda false döndürür. Hiçbir zaman unknown döndürmez.

Bu nedenle temiz bir doğru/yanlış sonucu gereken her yerde güvenle kullanabilirsiniz.

SELECT id, name, (phone IS NULL) AS missing_phone
FROM customers;

-- id | name  | missing_phone
-- ---+-------+--------------
--  1 | Alice | f
--  2 | Bob   | t
--  3 | Carol | t

IS NOT NULL Kullanımı

IS NOT NULL bunun tam tersidir: değer mevcut olduğunda true, eksik olduğunda false döndürür.

Bunu, gerçekten veri içeren satırları, örneğin arayabileceğiniz müşterileri süzmek için kullanın.

SELECT name, phone
FROM customers
WHERE phone IS NOT NULL;

-- name  | phone
-- ------+----------
-- Alice | 555-0101

AND / OR ile Birleştirme

NULL denetimlerini AND ve OR kullanarak diğer koşullarla birleştirebilirsiniz.

Örneğin, telefon numarası hâlâ kayıtlı olmayan etkin müşterileri bulabilirsiniz — bu, yaygın bir veri kalitesi sorgusudur.

SELECT id, name
FROM customers
WHERE is_active = true
  AND phone IS NULL;

-- Active customers missing a phone number

NOT IN İçinde NULL: Bir Tuzak

Liste bir NULL içerdiğinde NOT IN sorunlu davranır. Kümedeki herhangi bir değer NULL ise NOT IN her satır için unknown döndürebilir ve beklediğiniz sonuçları atabilir.

NOT EXISTS kullanmayı veya alt sorgudaki NULL değerlerini önce süzmeyi tercih edin.

-- Risky: if blocked_ids contains a NULL, this returns nothing
SELECT * FROM users
WHERE id NOT IN (SELECT user_id FROM blocked);

-- Safer
SELECT * FROM users
WHERE id NOT IN (SELECT user_id FROM blocked WHERE user_id IS NOT NULL);

IS DISTINCT FROM

PostgreSQL, NULL güvenli karşılaştırma işleçleri olan IS DISTINCT FROM ve IS NOT DISTINCT FROM yapılarını sunar.

= işlecinin aksine bunlar iki NULL değerini eşit, NULL ile bir değeri ise farklı kabul eder; her zaman true veya false döndürür, hiçbir zaman unknown döndürmez.

SELECT
  NULL IS NOT DISTINCT FROM NULL AS a, -- true: both NULL = same
  NULL IS DISTINCT FROM 5        AS b, -- true: NULL differs from 5
  5 IS DISTINCT FROM 5          AS c; -- false: same value

İki NULL Olabilen Sütunu Karşılaştırma

NULL olabilen iki sütunu karşılaştırırken düz = işleci, her ikisinin de NULL olduğu durumu kaçırır. IS NOT DISTINCT FROM bu durumu düzgün şekilde ele alır.

Değer bilinmiyor olsa bile değişmemiş satırları bulmak için bu yaklaşım çok kullanışlıdır.

-- Rows where old and new phone are 'the same',
-- counting NULL = NULL as same
SELECT id
FROM customer_changes
WHERE old_phone IS NOT DISTINCT FROM new_phone;

NULL Değerlerini Sayma

IS NULL işleci, veri kalitesini denetlemek için pratik olarak kullanılabilir — bir değeri eksik olan kaç satır bulunduğunu sayabilirsiniz.

NULL ve NULL olmayan değerleri yan yana saymak için bunu FILTER (PostgreSQL) ile veya COUNT içinde bir CASE kullanarak birleştirin.

SELECT
  count(*) AS total,
  count(*) FILTER (WHERE phone IS NULL)     AS missing,
  count(*) FILTER (WHERE phone IS NOT NULL) AS present
FROM customers;

CHECK Kısıtlamalarında NULL Denetimleri

“Bir satır gönderildiyse gönderim tarihi olmalıdır” gibi kuralları uygulamak için NULL denetimlerini CHECK kısıtlamalarının içinde kullanabilirsiniz.

Not: Bir CHECK kısıtlaması, koşulu true veya unknown olduğunda başarılı olur; bu nedenle NULL durumlarını dikkatle değerlendirin.

CREATE TABLE orders (
  id        integer PRIMARY KEY,
  status    text NOT NULL,
  ship_date date,
  CHECK (status <> 'shipped' OR ship_date IS NOT NULL)
);

En İyi Uygulamalar

NULL değerleriyle çalışırken güvenli kalmak için şu alışkanlıkları edinin:

  • Her zaman IS NULL / IS NOT NULL ile denetleyin; hiçbir zaman = NULL kullanmayın.
  • NULL kabul eden alt sorgularla NOT IN kullanırken dikkatli olun.
  • NULL güvenli eşitlik için IS DISTINCT FROM kullanın.
  • Eksik verileri count(*) FILTER (...) ile denetleyin.
-- The reliable toolkit
WHERE col IS NULL
WHERE col IS NOT NULL
WHERE a IS DISTINCT FROM b
WHERE a IS NOT DISTINCT FROM b

Hızlı Kontrol

phone sütununda değer bulunmayan tüm müşterileri istiyorsunuz. Hangi WHERE yan tümcesi doğrudur?

Özet

Eksik değerleri IS NULL ve IS NOT NULL ile kontrol etmenin doğru yolunu ve = NULL ifadesinin neden hiçbir zaman çalışmadığını öğrendiniz.

Ayrıca NOT IN tuzağıyla, NULL açısından güvenli IS DISTINCT FROM işleciyle ve FILTER ile NULL değerlerini denetlemeyi öğrendiniz. Sırada, COALESCE ve NULLIF kullanarak NULL değerlerini makul varsayılanlarla değiştirmeyi öğreneceksiniz.

SELECT name FROM customers WHERE phone IS NULL;
SELECT name FROM customers WHERE phone IS NOT NULL;

Sıkça Sorulan Sorular

“IS NULL ve IS NOT NULL” dersi ücretsiz mi?

Evet — “IS NULL ve IS NOT NULL” 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.

“IS NULL ve IS NOT NULL” dersinde ne öğreneceğim?

Eksik değerleri doğru şekilde test edin. 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 2. dersidir.

“IS NULL ve IS NOT NULL” 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