MySQL IS NULL & IS NOT NULL ÖRNEKLERLE Öğretici
SQL'de Null hem bir değer hem de bir anahtar kelimedir. Önce NULL değerine bakalım –
Değer Olarak Boş
Basit bir ifadeyle NULL, var olmayan veriler için bir yer tutucudur. Tablolarda ekleme işlemleri yapılırken bazı alan değerlerinin kullanılamayacağı zamanlar olacaktır.
Gerçek ilişkisel veritabanı yönetim sistemlerinin gereksinimlerini karşılamak için, MySQL gönderilmemiş değerler için yer tutucu olarak NULL'u kullanır. Aşağıdaki ekran görüntüsü NULL değerlerinin veritabanında nasıl göründüğünü göstermektedir.
Şimdi tartışmaya daha fazla girmeden önce NULL'un bazı temel noktaları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.
- Tüm Posterler toplama işlevleri yalnızca NULL değerleri olmayan satırları etkiler.
Şimdi count fonksiyonunun boş değerleri nasıl ele aldığını gösterelim. Üyeler tablosunun mevcut içeriğini görelim.
SELECT * FROM `members`;
Yukarıdaki betiği çalıştırmak bize aşağıdaki sonuçları verir
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 |
Contact_number'ı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: NULL olan değerler dahil edilmemiştir
Ne değil?
NOT mantıksal operatörü Boole koşullarını test etmek için kullanılır ve koşul yanlışsa doğru değerini döndürür. NOT operatörü, test edilen koşul doğruysa false değerini döndürür
Şart | DEĞİL Operator Sonuç |
---|---|
Gerçek | Yanlış |
Yanlış | Gerçek |
Neden NOT null kullanılıyor?
Bir sorgu sonuç kümesi üzerinde hesaplamalar yapmamız ve değerleri döndürmemiz gerekeceği durumlar olacaktır. NULL değerine sahip sütunlarda herhangi bir aritmetik işlem gerçekleştirmek, null sonuçlar döndürür. Bu tür durumların yaşanmasını önlemek amacıyla verilerimizin üzerinde çalıştığı sonuçları sınırlamak için NOT NULL ifadesini kullanabiliriz.
BOŞ DEĞİL Değerler
Bir tabloya yeni satırlar eklerken her zaman değerlerin sağlanması gereken belirli alanları içeren bir tablo oluşturmak istediğimizi varsayalım. Tabloyu oluştururken belirli bir alanda NOT NULL yan tümcesini kullanabiliriz.
Aşağıda gösterilen örnek, çalışanın verilerini içeren yeni bir tablo oluşturur. Çalışan numarası her zaman sağlanmalıdır
CREATE TABLE `employees`( employee_number int NOT NULL, full_names varchar(255) , gender varchar(6) );
Şimdi çalışan adı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 workbench şu hatayı veriyor-
NULL Anahtar Kelimeler
NULL, NULL içeren değerler üzerinde Boolean işlemleri gerçekleştirirken anahtar kelime olarak da kullanılabilir. “IS/NOT” anahtar sözcüğü bu tür amaçlar için NULL sözcüğüyle birlikte kullanılır. Anahtar kelime olarak null kullanıldığında temel sözdizimi aşağıdaki gibidir
`comlumn_name' IS NULL `comlumn_name' 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.
- "GEÇERSİZ DEĞİL"Boole karşılaştırmasını gerçekleştiren anahtar kelimedir. Sağlanan değer NULL değilse true değerini, sağlanan değer null ise false değerini döndürür.
Şimdi, null değerleri olan tüm sütun değerlerini ortadan kaldırmak için NOT NULL anahtar sözcüğünü kullanan pratik bir örneğe bakalım.
Yukarıdaki örnekle devam edersek, iletişim numarası boş olmayan üyelerin ayrıntılarına ihtiyacımız olduğunu varsayalım. Şu şekilde bir sorgu yürütebiliriz:
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Yukarıdaki sorgunun yürütülmesi yalnızca iletişim numarasının boş olmadığı kayıtları verir.
Diyelim ki iletişim numarasının boş olduğu üye kayıtları istiyoruz. Aşağıdaki sorguyu kullanabiliriz
SELECT * FROM `members` WHERE contact_number IS NULL;
Yukarıdaki sorguyu çalıştırmak, iletişim numarası NULL olan üye ayrıntılarını verir
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 |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
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 |
Boş değerleri karşılaştırma
Üç değerli mantık – NULL içeren koşullar üzerinde Boolean işlemleri gerçekleştirmek ya geri dönebilir “Bilinmiyor”, “Doğru” veya “Yanlış”.
Örneğin, “IS NULL” anahtar sözcüğünü kullanma karşılaştırma işlemleri yaparken NULL içeren ya geri dönebilir gerçek or yanlış. Diğer karşılaştırma işleçlerinin kullanılması getirileri “Bilinmiyor”(BOŞ).
Beş numarayı 5 ile karşılaştırdığınızı varsayalım.
SELECT 5 =5;
Sorgu sonucu 1'dir, bu da DOĞRU anlamına gelir
5 =5 |
---|
1 |
Aynı işlemi NULL ile yapalım
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Başka bir örneğe bakalım
SELECT 5 > 5;
5 > 5 |
---|
0 |
Sorgu sonucu 0'dır, bu da YANLIŞ anlamına gelir
Aynı örneğe NULL kullanarak bakalım
SELECT NULL > NULL;
NULL > NULL |
---|
NULL |
IS NULL anahtar sözcüğünü kullanalım
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Sorgu sonucu 0, yani YANLIŞ
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Sorgu sonucu 1'dir ve bu DOĞRU'dur
ÖZET
- NULL, isteğe bağlı tablo alanları için bir değer yeri tutucusudur.
- MySQL NULL değerini diğer veri türlerinden farklı şekilde ele alır. Bir koşulda kullanıldığında NULL değerleri, yanlış Boole değeri olarak değerlendirilir.
- NOT mantıksal işlemi, Boolean değerlerini test etmek için kullanılır ve Boolean değeri yanlışsa doğru, Boolean değeri doğruysa yanlış olarak değerlendirilir.
- NOT NULL yan tümcesi, bir sonuç kümesinden NULL değerleri ortadan kaldırmak için kullanılır
- NULL değerler üzerinde aritmetik işlemler gerçekleştirmek her zaman NULL sonuçlar verir.
- [, =, vb.] gibi karşılaştırma işleçleri NULL değerleri karşılaştırmak için kullanılamaz.