MySQL IS NULL ve IS NOT NULL Örnekleriyle
⚡ Akıllı Özet
MySQL IS NULL ve IS NOT NULL, bir sütunun eksik değer içerip içermediğini test eden karşılaştırma anahtar kelimeleridir. NULL, eksik veriyi işaretler, sıfırdan veya boş bir dizeden farklı davranır ve güvenilir filtreleme için özel operatörler gerektirir.

SQL'de NULL hem bir değer hem de bir anahtar kelimedir. Öncelikle NULL değerine bakalım.
NULL'un anlamı nedir? MySQL?
Basit bir ifadeyle, NULL, mevcut olmayan veriler için kullanılan bir yer tutucudur.Tablolara veri ekleme işlemleri yapılırken, bazı alan değerlerinin kullanılamadığı durumlar olabilir.
Gerçek ilişkisel veritabanı yönetim sistemlerinin gereksinimlerini karşılamak için, MySQL Gönderilmemiş değerler için yer tutucu olarak NULL kullanılır. Aşağıdaki ekran görüntüsü, bir veritabanı tablosunda NULL değerlerinin nasıl göründüğünü göstermektedir.
Boş hücrelerin boş metin veya sıfır değil, NULL olarak işaretlendiğine dikkat edin. Devam etmeden önce, NULL'un bazı temel kavramlarına bakalım.
- NULL bir veri türü değil – bu, “int”, “date” veya tanımlanmış başka bir veri türü olarak tanınmadığı anlamına gelir.
- Aritmetik işlemler içeren NULL her zaman NULL'a dönÖrneğin, 69 + NULL = NULL.
- köprü toplama işlevleri NULL değer içeren satırları yok sayTek istisna, NULL değerine bakılmaksızın her satırı sayan COUNT(*) işlevidir.
Toplama Fonksiyonları NULL Değerini Nasıl Ele Alır?
Bu kural, raporlama sorgularının döndürdüğü yanıtları değiştirir, bu yüzden bunu kanıtlayalım. Üyeler tablosunun mevcut içeriğiyle başlayalım.
SELECT * FROM `members`;
Yukarıdaki betiği çalıştırdığımızda aşağıdaki sonuçlar elde edilir.
| membership_ number | full_ names | gender | date_of_ birth | physical_ address | postal_ address | contact_ number | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
| 5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
| 6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
| 7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
| 8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
| 9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | lwolowitz[at]email.me |
Vurgulanan iletişim numarası sütununda toplam dokuz satır var, ancak bunlardan ikisi NULL. İletişim numarasını güncelleyen tüm üyeleri sayalım.
SELECT COUNT(contact_number) FROM `members`;
Yukarıdaki sorguyu çalıştırdığımızda aşağıdaki sonuçlar elde edilir.
| COUNT(contact_number) |
|---|
| 7 |
Not: Cevap 7, 9 değil, çünkü iki NULL değeri dahil edilmedi. Aynı tabloda COUNT(*) çalıştırmak 9 döndürür, çünkü COUNT(*) değerler yerine satırları sayar.
BOŞ DEĞİL Değerler
Daha güvenli bir yaklaşım, zorunlu sütunlara NULL değerinin girmesini tamamen engellemektir. NOT NULL kısıtlamasının görevi de budur.
"DEĞİL" nedir? Operator mu?
NOT mantıksal operatörü, Boolean koşullarını test etmek için kullanılır ve koşul yanlışsa true, doğruysa false döndürür.
| Şart | DEĞİL Operator Sonuç |
|---|---|
| Gerçek | Yanlış |
| Yanlış | Gerçek |
NOT NULL neden kullanılır?
Sorgu sonuç kümesi üzerinde hesaplamalar yapmamız ve değerleri döndürmemiz gereken durumlar olacaktır. NULL değeri içeren bir sütun üzerinde herhangi bir aritmetik işlem yapmak NULL sonuç döndürür. Bu tür durumları önlemek için, verilerimizin üzerinde işlem yapacağı sonuçları sınırlamak amacıyla NOT NULL ifadesini kullanabiliriz.
NOT NULL Sütunu İçeren Bir Tablo Oluşturma
Diyelim ki, yeni satırlar eklenirken her zaman değer girilmesi gereken belirli alanlara sahip bir tablo oluşturmak istiyoruz. Tabloyu oluştururken belirli bir alan üzerinde NOT NULL ifadesini kullanabiliriz.
Aşağıda gösterilen örnek, çalışan verilerini içeren yeni bir tablo oluşturur. Çalışan numarası her zaman belirtilmelidir.
CREATE TABLE `employees`( employee_number int NOT NULL, full_names varchar(255) , gender varchar(6) );
Şimdi de çalışan numarasını belirtmeden yeni bir kayıt eklemeyi deneyelim ve ne olacağını görelim.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Yukarıdaki betiğin çalıştırılması MySQL Tezgâh Zorunlu sütun atlandığı için aşağıdaki hata oluşuyor.
IS NULL ve IS NOT NULL Anahtar Kelimeleri
Bu kısıtlama, yeni NULL değerlerinin eklenmesini engeller. Zaten var olan NULL değerleriyle çalışmak için NULL anahtar kelimesi kullanılır. Sözdizimi aşağıdaki gibidir.
column_name IS NULL column_name IS NOT NULL
İŞTE
- “BOŞ” Boole karşılaştırmasını gerçekleştiren anahtar kelimedir. Sağlanan değer NULL ise true değerini, sağlanan değer NULL değilse false değerini döndürür.
- “BOŞ DEĞİLDİR” `false` anahtar kelimesi, ters karşılaştırmayı gerçekleştirir. Verilen değer NULL değilse `true`, NULL ise `false` döndürür.
Şimdi, bir sütunda NULL değer içeren tüm satırları silmek için IS NOT NULL anahtar kelimesinin kullanıldığı pratik bir örneğe bakalım.
Yukarıdaki üye tablosuna devam edersek, iletişim numarası NULL olmayan üyelerin bilgilerine ihtiyacımız olduğunu varsayalım. Şöyle bir sorgu çalıştırabiliriz.
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Yukarıdaki sorguyu çalıştırmak, yalnızca iletişim numarasının bulunduğu yedi kaydı döndürür; bu da önceki bölümdeki COUNT sonucuyla eşleşir.
Şimdi de tam tersini istediğimizi varsayalım: iletişim numarası bulunmayan üye kayıtları. Bunun için aşağıdaki sorguyu kullanabiliriz.
SELECT * FROM `members` WHERE contact_number IS NULL;
Yukarıdaki sorguyu çalıştırmak, iletişim numarası NULL olan iki üye kaydını verir.
| membership_ number | full_names | gender | date_of_birth | physical_address | postal_address | contact_ number | |
|---|---|---|---|---|---|---|---|
| 2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
Uyarı: `WHERE contact_number = NULL` gibi bir koşul, NULL değerler mevcut olsa bile boş bir sonuç kümesi döndürür. Eşitlik operatörü hiçbir zaman NULL ile eşleşemez, bu nedenle `IS NULL` tek doğru testtir.
Boş Değerleri Üç Değerli Mantıkla Karşılaştırma
Üç değerli mantık – NULL içeren koşullar üzerinde Boolean işlemleri gerçekleştirmek şu sonucu verebilir: “Bilinmiyor”, “Doğru” veya “Yanlış”.
“IS NULL” anahtar kelimesini kullanarak karşılaştırma işlemleri yaparken NULL içeren İade gerçek or yanlışDiğer karşılaştırma operatörlerini kullanmak şu sonucu verir: “Bilinmeyen” (NULL)Aşağıdaki tabloda her bir ifade yan yana karşılaştırılmıştır.
| ifade | Sonuç | anlam |
|---|---|---|
| 5 = 5 SEÇ; | 1 | DOĞRU |
| NULL = NULL; | NULL | BİLİNMEYEN |
| 5 > 5 SEÇ; | 0 | YANLIŞ |
| SELECT NULL > NULL; | NULL | BİLİNMEYEN |
| 5'İN BOŞ OLDUĞUNU SEÇ; | 0 | YANLIŞ |
| SELECT NULL IS NULL; | 1 | DOĞRU |
Beş sayısını kendisiyle karşılaştırın, ardından işlemi NULL ile tekrarlayın.
SELECT 5 =5; SELECT NULL = NULL;
| 5 =5 | NULL = NULL |
|---|---|
| 1 | NULL |
İlk sonuç 1'dir (DOĞRU). İkinci sonuç NULL'dur, çünkü MySQL Bir bilinmeyen değerin başka bir bilinmeyen değere eşit olduğunu söyleyemeyiz. Şimdi aynı değerler üzerinde IS NULL anahtar kelimesini kullanalım.
SELECT 5 IS NULL; SELECT NULL IS NULL;
| 5 IS NULL | NULL IS NULL |
|---|---|
| 0 | 1 |
Bu sefer cevaplar kesin: 0 (YANLIŞ) ve 1 (DOĞRU). Yalnızca IS NULL ve IS NOT NULL anahtar kelimeleri, NULL söz konusu olduğunda kesin bir cevap döndürür.


