SQL Dilinde NULL Değerlerin Etkili Kullanımı
Veritabanı yönetim sistemlerinde, bir sütundaki veri değerinin bilinmediğini, uygulanabilir olmadığını veya henüz atanmadığını belirtmek için NULL anahtar kelimesi kullanılır. Bu özel değer, diğer veri türlerinden farklı olarak, bir sayıyı (örneğin 0) veya boş bir karakter dizisini (örneğin '') temsil etmez; aksine, bir değerin yokluğunu veya belirsizliğini ifade eder. SQL sorgularında NULL değerlerle doğru bir şekilde çalışabilmek, veri bütünlüğünü sağlamak ve beklenen sonuçları elde etmek için kritik öneme sahiptir.
Sözdizimi
SQL'de NULL değerleri sorgulamak ve yönetmek için genellikle IS NULL, IS NOT NULL operatörleri ve COALESCE gibi özel fonksiyonlar kullanılır. Temel kullanım yapıları aşağıdaki gibidir:
-- Bir sütunda NULL değerleri seçmek için:
SELECT column_name(s)
FROM table_name
WHERE column_name IS NULL;
-- Bir sütunda NULL olmayan değerleri seçmek için:
SELECT column_name(s)
FROM table_name
WHERE column_name IS NOT NULL;
-- NULL değerleri alternatif bir değerle değiştirmek için:
SELECT COALESCE(column_name, default_value) AS new_column_name
FROM table_name;
Detaylı Açıklama
NULL Nedir?
SQL'deki NULL, bir değerin yokluğunu temsil eder. Bu, bir sütunun o satır için herhangi bir bilgi içermediği veya bu bilginin bilinmediği anlamına gelir. NULL, sıfırdan, boş bir karakter dizisinden veya boşluktan farklıdır. Örneğin, bir kullanıcının telefon numarasının NULL olması, o kullanıcının telefon numarasının olmadığını veya bilinmediğini ifade eder; '0' olması ise telefon numarasının 0 olduğunu gösterir.
IS NULL Operatörü
IS NULL operatörü, belirli bir sütundaki değerin NULL olup olmadığını kontrol etmek için kullanılır. Geleneksel karşılaştırma operatörleri (=, <>, !=) NULL değerlerle doğru şekilde çalışmadığı için bu operatör zorunludur. WHERE koşulunda kullanılarak, belirtilen sütunda NULL değeri bulunan tüm satırları döndürür.
IS NOT NULL Operatörü
IS NOT NULL operatörü, IS NULL operatörünün zıttıdır. Bir sütundaki değerin NULL olmadığını kontrol etmek için kullanılır. Bu operatör, belirli bir sütunda geçerli (NULL olmayan) bir değere sahip olan tüm satırları seçmek istediğinizde faydalıdır.
COALESCE Fonksiyonu
COALESCE fonksiyonu, kendisine verilen ifadeler listesinden NULL olmayan ilk ifadeyi döndürür. Bu fonksiyon, bir sütundaki NULL değerleri okunaklı bir varsayılan değerle (örneğin 'Bilinmiyor' veya 0) değiştirmek istediğinizde çok kullanışlıdır. Eğer tüm ifadeler NULL ise, COALESCE de NULL döndürür.
NULL ile Karşılaştırmalar
SQL'de NULL değerleri doğrudan diğer değerlerle (hatta başka bir NULL ile bile) = veya <> gibi operatörlerle karşılaştırmak her zaman UNKNOWN (bilinmeyen) sonucunu verir. Örneğin, NULL = NULL ifadesi TRUE döndürmez, UNKNOWN döndürür. Bu nedenle, NULL değerleri test etmek için mutlaka IS NULL veya IS NOT NULL operatörleri kullanılmalıdır.
Örnekler
Aşağıdaki örnekler, NULL değerlerin SQL sorgularında nasıl kullanıldığını göstermektedir. İlk olarak, örnek bir tablo oluşturalım ve içine veri ekleyelim:
-- 1. Örnek Tablo Oluşturma ve Veri Ekleme
CREATE TABLE Calisanlar (
    CalisanID INT PRIMARY KEY,
    Ad VARCHAR(50) NOT NULL,
    Soyad VARCHAR(50) NOT NULL,
    Email VARCHAR(100),
    Telefon VARCHAR(15),
    DepartmanID INT
);
INSERT INTO Calisanlar (CalisanID, Ad, Soyad, Email, Telefon, DepartmanID) VALUES
(1, 'Ayşe', 'Yılmaz', 'ayse.yilmaz@example.com', '5551234567', 101),
(2, 'Mehmet', 'Demir', NULL, '5557654321', 102),
(3, 'Zeynep', 'Kaya', 'zeynep.kaya@example.com', NULL, 101),
(4, 'Ali', 'Can', 'ali.can@example.com', '5559876543', 103),
(5, 'Elif', 'Aksoy', NULL, NULL, 102),
(6, 'Deniz', 'Çelik', 'deniz.celik@example.com', '5551112233', NULL);
IS NULL Kullanımı
Email adresi NULL olan çalışanları listelemek:
SELECT CalisanID, Ad, Soyad, Email
FROM Calisanlar
WHERE Email IS NULL;
Bu sorgu, Mehmet Demir ve Elif Aksoy'un kayıtlarını döndürecektir.
IS NOT NULL Kullanımı
Telefon numarası tanımlanmış (NULL olmayan) çalışanları listelemek:
SELECT CalisanID, Ad, Soyad, Telefon
FROM Calisanlar
WHERE Telefon IS NOT NULL;
Bu sorgu, Ayşe Yılmaz, Mehmet Demir, Ali Can ve Deniz Çelik'in kayıtlarını döndürecektir.
COALESCE Kullanımı
Email adresi NULL olan çalışanlar için 'Email Yok' yazısını göstermek:
SELECT
    CalisanID,
    Ad,
    Soyad,
    COALESCE(Email, 'Email Yok') AS GosterilenEmail
FROM Calisanlar;
Bu sorgu, Mehmet Demir ve Elif Aksoy'un Email sütununda 'Email Yok' ifadesini gösterecektir.
Birden Fazla NULL Kontrolü
Hem Email hem de Telefon bilgisi NULL olan çalışanları bulmak:
SELECT CalisanID, Ad, Soyad, Email, Telefon
FROM Calisanlar
WHERE Email IS NULL AND Telefon IS NULL;
Bu sorgu, Elif Aksoy'un kaydını döndürecektir.
Önemli Notlar
NULLve Sıfır/Boş String Farkı:NULL, matematiksel sıfırdan (0) veya boş karakter dizisinden ('') farklıdır. Bu değerler birer veri değeriyken,NULLbir değerin yokluğunu ifade eder. Karşılaştırmalarda bu farka dikkat edilmelidir.Karşılaştırma Operatörleri:
=,<>,!=gibi standart karşılaştırma operatörleriniNULLdeğerlerle kullanmaktan kaçının. Bu operatörlerNULLile karşılaştırıldığında her zamanUNKNOWNdöndürür ve beklenen sonucu vermez. DaimaIS NULLveyaIS NOT NULLkullanın.Toplama Fonksiyonları ve
NULL:COUNT(),SUM(),AVG()gibi toplama (aggregate) fonksiyonları genellikleNULLdeğerleri hesaplamalarına dahil etmez. Örneğin,AVG(SutunAdı),SutunAdıiçindekiNULLdeğerleri göz ardı ederek ortalamayı hesaplar. AncakCOUNT(*),NULLdeğerleri de içeren tüm satırları sayar.NOT INveNULL:NOT INoperatörü ileNULLdeğerleri kullanırken dikkatli olun. EğerNOT INlistesinde birNULLdeğer varsa, sorgu beklenmedik şekilde hiçbir sonuç döndürmeyebilir çünküNULLile yapılan herhangi bir karşılaştırmaUNKNOWNsonucunu verir. Örneğin,SELECT * FROM Tablo WHERE Deger NOT IN (1, 2, NULL);sorgusuUNKNOWNnedeniyle sorunlara yol açabilir.Veritabanı Tasarımı: Tablo oluştururken bir sütunun
NULLdeğer kabul edip etmeyeceğiniNULLveyaNOT NULLkısıtlamaları ile belirleyebilirsiniz.NOT NULLkısıtlaması, o sütunun her zaman bir değer içermesini sağlar ve veri bütünlüğünü artırır.
        
                
            
            
Yorum yap
Yorumlar