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.

  • 🧩 Temel Tanım: NULL, var olmayan veriler için kullanılan bir yer tutucudur. Bir veri türü değildir ve sıfır sayısı da değildir.
  • Aritmetik Davranış: NULL içeren herhangi bir aritmetik ifade NULL döndürür, bu nedenle 69 + NULL ifadesi 69 yerine NULL olarak değerlendirilir.
  • 📊 Toplam Etki: COUNT(column) ve diğer toplama fonksiyonları NULL satırlarını atlarken, COUNT(*) tablodaki her satırı saymaya devam eder.
  • ???? NOT NULL Kısıtlaması: Bir sütuna NOT NULL özelliği eklemek, değer içermeyen tüm ekleme işlemlerini reddeder ve bu da tanımlayıcılar gibi zorunlu alanları korur.
  • 🔍 Doğru Filtreleme: IS NULL ve IS NOT NULL, eşitlik operatörü hiçbir zaman NULL değeriyle eşleşmediği için tek güvenilir testlerdir.
  • 🇧🇷 Üç Değerli Mantık: NULL ile yapılan karşılaştırmalar UNKNOWN döndürür, bu nedenle SELECT NULL = NULL ifadesi TRUE yerine NULL üretir.

MySQL BOŞ ve BOŞ DEĞİL

SQL'de NULL hem bir değer hem de bir anahtar kelimedir. Öncelikle NULL değerine bakalım.

MySQL BOŞTUR VE BOŞ DEĞİLDİR

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.

Değer Olarak Boş

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 email
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 12345rm@tstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL
5 Leonard Hofstadter MaleNULL 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.

BOŞ DEĞİL Değerler

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 email
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.

SSS

Sıfır bir sayıdır ve boş bir dize metindir, bu nedenle her ikisi de eşitlik testlerine uyar. NULL, hiçbir değerin sağlanmadığı anlamına gelir, bu nedenle yalnızca IS NULL ve IS NOT NULL sorgularına yanıt verir.

IFNULL(column, 'N/A') sütun NULL olduğunda yerine geçecek değeri döndürür. COALESCE(a, b, c) NULL olmayan ilk argümanı döndürür. Her ikisi de iç içe kullanışlıdır. MySQL fonksiyonlar ve raporlar.

Hayır. MySQL NOT NULL ifadesi, bir satırı tanımlayan anahtarın eksik olamayacağı gerekçesiyle, her birincil anahtar sütununa otomatik olarak uygulanır. UNIQUE indeksi ise farklıdır ve birden fazla NULL değerine izin verir.

Genellikle evet. Örneğin, şu gibi araçların içindeki yapay zeka asistanları: MySQL Tezgâh “Telefon numarası olmayan üyeler” ifadesini, sütun NULL ise geçerli olan bir koşula dönüştürün. RevFiltreyi inceleyin, çünkü NULL'a karşı yapılan eşitlik testi sessizce hiçbir sonuç döndürmez.

Genellikle evet. Yapay zeka inceleme araçları, = NULL karşılaştırmaları gibi hataları işaretler. SEÇİN Bu, NULL değerler içeren bir sütunun ortalamasını alır ve NULL içermeyen listelerin NOT IN olmasını sağlar. Nihai karar, verileri bilen kişiye aittir.

Bu yazıyı şu şekilde özetleyin: