SQL'de Null hem bir değer hem de bir anahtar sözcüktür. Önce NULL değerine bakalım -
Değer Olarak Null
Basit bir ifadeyle, NULL, var olmayan veriler için bir yer tutucusudur. Tablolar üzerinde ekleme işlemleri gerçekleştirirken, 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 kullanır. Aşağıdaki ekran görüntüsü, NULL değerlerin veritabanında nasıl göründüğünü gösterir.
Şimdi tartışmaya girmeden önce NULL için bazı temel bilgilere bakalım.
- NULL bir veri türü değildir - bu, bir "int", "tarih" veya herhangi bir tanımlanmış veri türü olarak tanınmadığı anlamına gelir.
- NULL içeren aritmetik işlemler her zaman NULL döndürür , örneğin 69 + NULL = NULL.
- Tüm toplama işlevleri yalnızca NULL değerleri olmayan satırları etkiler .
Şimdi count fonksiyonunun null değerleri nasıl ele aldığını gösterelim. Üye tablosunun güncel 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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
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 |
Kontak_numarasını güncellemiş olan tüm üyeleri sayalım
SELECT COUNT(contact_number) FROM `members`;
Yukarıdaki sorguyu yürütmek bize aşağıdaki sonuçları verir.
COUNT(contact_number) |
---|
7 |
Not: NULL olan değerler dahil edilmemiştir
Ne değil?
Mantıksal DEĞİL operatörü, Boole koşullarını test etmek için kullanılır ve koşul yanlışsa doğru döndürür. NOT operatörü, test edilen koşul doğruysa yanlış döndürür
Durum |
DEĞİL Operatör Sonucu |
Doğru |
Yanlış |
Yanlış |
Doğru |
Neden boş DEĞİL kullanıyorsunuz?
Bir sorgu sonuç kümesi üzerinde hesaplamalar yapmamız ve değerleri döndürmemiz gereken durumlar olacaktır. NULL değerine sahip sütunlarda herhangi bir aritmetik işlem gerçekleştirmek boş sonuçlar döndürür. Bu tür durumların meydana gelmesini önlemek için, verilerimizin üzerinde çalıştığı sonuçları sınırlamak için NOT NULL maddesini kullanabiliriz.
BOŞ DEĞİL Değerler
Bir tabloya yeni satırlar eklerken her zaman değerlerle sağlanması gereken belirli alanlara sahip bir tablo oluşturmak istediğimizi varsayalım. Tabloyu oluştururken belirli bir alanda NOT NULL cümlesini 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 eklemeye çalışalım ve ne olacağını görelim.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Yukarıdaki betiği MySQL tezgahında çalıştırmak aşağıdaki hatayı verir -
NULL Anahtar Kelimeler
NULL, NULL içeren değerler üzerinde Boole işlemleri gerçekleştirirken bir anahtar sözcük olarak da kullanılabilir. "IS / NOT" anahtar sözcüğü, bu tür amaçlar için NULL sözcüğü ile 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
- "IS NULL" , Boole karşılaştırmasını gerçekleştiren anahtar sözcüktür. Sağlanan değer NULL ise true, sağlanan değer NULL değilse false döndürür.
- "NOT NULL" , Boole karşılaştırmasını yapan anahtar kelimedir. Sağlanan değer NULL değilse true, sağlanan değer null ise false döndürür.
Şimdi, null değerlere sahip tüm sütun değerlerini elemek için NOT NULL anahtar sözcüğünü kullanan pratik bir örneğe bakalım.
Yukarıdaki örnekten devam edersek, iletişim numarası boş olmayan üyelerin detaylarına ihtiyacımız olduğunu varsayalım. Gibi bir sorgu yürütebiliriz
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Yukarıdaki sorguyu yürütmek, yalnızca iletişim numarasının boş olmadığı kayıtları verir.
İletişim numarasının boş olduğu üye kayıtları istediğimizi varsayalım. Aşağıdaki sorguyu kullanabiliriz
SELECT * FROM `members` WHERE contact_number IS NULL;
Yukarıdaki sorguyu yürütmek, iletişim numarası BOŞ olan üye bilgilerini 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 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
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ğer karşılaştırma s
Üç değerli mantık - NULL içeren koşullarda Boole işlemleri gerçekleştirmek ya "Bilinmeyen", "Doğru" veya "Yanlış" döndürebilir .
Örneğin, NULL içeren karşılaştırma işlemleri yaparken "IS NULL" anahtar sözcüğünü kullanmak ya doğru ya da yanlış döndürebilir . Diğer karşılaştırma işleçlerinin kullanılması "Bilinmeyen" (NULL) döndürür.
Beş numarayı 5 ile karşılaştırdığınızı varsayalım
SELECT 5 =5;
Sorgu sonucu 1, yani DOĞRU
5 =5 |
---|
1 |
NULL ile aynı işlemi yapalım
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Başka bir örneğe bakalım
SELECT 5 > 5;
5> 5 |
---|
0 |
Sorgu sonucu 0 olup, YANLIŞ anlamına gelir
NULL kullanarak aynı örneğe 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 ve YANLIŞ
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Sorgu sonucu 1, yani DOĞRU
Özet
- NULL, isteğe bağlı tablo alanları için bir değer yer 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, Boole değerlerini test etmek için kullanılır ve Boolean değeri yanlışsa doğru, Boole değeri doğruysa yanlış olarak değerlendirilir.
- NOT NULL yan tümcesi, bir sonuç kümesinden NULL değerleri elemek için kullanılır.
- NULL değerler üzerinde aritmetik işlemler gerçekleştirmek her zaman NULL sonuçlar verir.
- NULL değerleri karşılaştırmak için [, =, vb.] Gibi karşılaştırma operatörleri kullanılamaz.