MySQL IS NULL & IS NOT NULL dengan Contoh
โก Ringkasan Cerdas
MySQL IS NULL dan IS NOT NULL adalah kata kunci perbandingan yang menguji apakah suatu kolom berisi nilai yang hilang. NULL menandai data yang tidak ada, berperilaku berbeda dari nol atau string kosong, dan memerlukan operator khusus untuk pemfilteran yang andal.

Dalam SQL, NULL adalah nilai dan juga kata kunci. Mari kita lihat nilai NULL terlebih dahulu.
Apa itu NULL dalam MySQL?
Secara sederhana, NULL adalah nilai pengganti untuk data yang tidak ada.Saat melakukan operasi penyisipan data pada tabel, terkadang beberapa nilai field tidak tersedia.
Untuk memenuhi persyaratan sistem manajemen basis data relasional yang sebenarnya, MySQL menggunakan NULL sebagai tempat penampung untuk nilai yang belum dikirimkan. Tangkapan layar di bawah ini menunjukkan bagaimana nilai NULL terlihat dalam tabel basis data.
Perhatikan bahwa sel kosong ditandai dengan NULL, bukan teks kosong dan bukan angka nol. Sebelum melanjutkan, mari kita lihat beberapa dasar tentang NULL.
- NULL bukan tipe data โ ini berarti tidak dikenali sebagai โintโ, โtanggalโ atau tipe data lain yang ditentukan.
- Operasi aritmatika melibatkan NULL selalu kembalikan BATALMisalnya, 69 + NULL = NULL.
- jembatan fungsi agregat Abaikan baris yang berisi nilai NULL.Satu-satunya pengecualian adalah COUNT(*), yang menghitung setiap baris tanpa memperhatikan nilai NULL.
Bagaimana Fungsi Agregat Memperlakukan NULL
Aturan ini mengubah jawaban yang dikembalikan oleh kueri pelaporan, jadi mari kita buktikan. Mulailah dengan isi tabel anggota saat ini.
SELECT * FROM `members`;
Menjalankan skrip di atas akan memberi kita hasil sebagai berikut.
| 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 |
Kolom contact_number yang disorot berisi sembilan baris, tetapi dua di antaranya bernilai NULL. Mari kita hitung semua anggota yang telah memperbarui nomor kontak mereka.
SELECT COUNT(contact_number) FROM `members`;
Menjalankan kueri di atas akan memberi kita hasil sebagai berikut.
| COUNT(contact_number) |
|---|
| 7 |
Catatan: Jawabannya adalah 7 dan bukan 9, karena dua nilai NULL tidak disertakan. Menjalankan COUNT(*) pada tabel yang sama akan menghasilkan 9, karena COUNT(*) menghitung baris, bukan nilai.
BUKAN Nilai NULL
Pendekatan yang lebih aman adalah dengan mencegah nilai NULL masuk ke kolom wajib sama sekali. Itulah tugas dari batasan NOT NULL.
Apa yang BUKAN Operauntuk?
Operator logika NOT digunakan untuk menguji kondisi Boolean, dan akan mengembalikan nilai true jika kondisi tersebut salah. Operator NOT akan mengembalikan nilai false jika kondisi yang diuji benar.
| Kondisi | JANGAN Operauntuk Hasil |
|---|---|
| Benar | Salah |
| Salah | Benar |
Mengapa menggunakan NOT NULL?
Akan ada kasus di mana kita harus melakukan komputasi pada kumpulan hasil kueri dan mengembalikan nilainya. Melakukan operasi aritmatika apa pun pada kolom yang berisi nilai NULL akan menghasilkan hasil NULL. Untuk menghindari situasi seperti itu, kita dapat menggunakan klausa NOT NULL untuk membatasi hasil yang akan diproses oleh data kita.
Membuat Tabel dengan Kolom NOT NULL
Misalkan kita ingin membuat tabel dengan beberapa kolom yang harus selalu diisi nilainya saat memasukkan baris baru. Kita dapat menggunakan klausa NOT NULL pada kolom tertentu saat membuat tabel.
Contoh yang ditunjukkan di bawah ini membuat tabel baru yang berisi data karyawan. Nomor karyawan harus selalu diisi.
CREATE TABLE `employees`( employee_number int NOT NULL, full_names varchar(255) , gender varchar(6) );
Sekarang mari kita coba memasukkan data baru tanpa menentukan nomor karyawan dan lihat apa yang terjadi.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Menjalankan skrip di atas dalam MySQL Workbench Muncul kesalahan berikut karena kolom wajib dihilangkan.
Kata Kunci IS NULL dan IS NOT NULL
Batasan tersebut memblokir nilai NULL baru. Untuk bekerja dengan nilai NULL yang sudah ada, NULL digunakan sebagai kata kunci. Sintaksnya adalah sebagai berikut.
column_name IS NULL column_name IS NOT NULL
SINI
- โADALAH BATALโ adalah kata kunci yang melakukan perbandingan Boolean. Ia mengembalikan nilai benar jika nilai yang diberikan adalah NULL dan salah jika nilai yang diberikan bukan NULL.
- โBUKAN NULLโ adalah kata kunci yang melakukan perbandingan sebaliknya. Kata kunci ini mengembalikan nilai true jika nilai yang diberikan bukan NULL dan false jika nilai yang diberikan adalah NULL.
Mari kita lihat contoh praktis yang menggunakan kata kunci IS NOT NULL untuk menghilangkan semua baris yang berisi nilai NULL dalam sebuah kolom.
Melanjutkan pembahasan pada tabel anggota di atas, misalkan kita membutuhkan detail anggota yang nomor kontaknya tidak NULL. Kita dapat menjalankan kueri seperti ini.
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Eksekusi kueri di atas hanya mengembalikan tujuh catatan yang memuat nomor kontak, yang sesuai dengan hasil COUNT dari bagian sebelumnya.
Sekarang misalkan kita menginginkan kebalikannya: data anggota yang nomor kontaknya hilang. Kita dapat menggunakan kueri berikut.
SELECT * FROM `members` WHERE contact_number IS NULL;
Menjalankan kueri di atas akan menghasilkan dua catatan anggota yang nomor kontaknya adalah NULL.
| 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 |
Peringatan: Kondisi seperti WHERE contact_number = NULL akan mengembalikan himpunan hasil kosong, meskipun nilai NULL ada. Operator kesamaan tidak akan pernah cocok dengan NULL, jadi IS NULL adalah satu-satunya pengujian yang benar.
Membandingkan Nilai NULL dengan Logika Tiga Nilai
Logika tiga nilai โ melakukan operasi Boolean pada kondisi yang melibatkan NULL dapat mengembalikan โTidak diketahuiโ, โBenarโ atau โSalahโ.
Menggunakan kata kunci โIS NULLโ saat melakukan operasi perbandingan melibatkan NULL Pengembalian benar or palsuMenggunakan operator perbandingan lainnya akan menghasilkan โTidak diketahuiโ (NULL)Tabel di bawah ini membandingkan setiap ekspresi secara berdampingan.
| Ekspresi | Hasil | Arti |
|---|---|---|
| PILIH 5 = 5; | 1 | BENAR |
| PILIH NULL = NULL; | NULL | UNKNOWN |
| PILIH 5 > 5; | 0 | SALAH |
| PILIH NULL > NULL; | NULL | UNKNOWN |
| SELECT 5 IS NULL; | 0 | SALAH |
| SELECT NULL IS NULL; | 1 | BENAR |
Bandingkan angka lima dengan dirinya sendiri, lalu ulangi operasi tersebut dengan NULL.
SELECT 5 =5; SELECT NULL = NULL;
| 5 =5 | NULL = NULL |
|---|---|
| 1 | NULL |
Hasil pertama adalah 1 (TRUE). Hasil kedua adalah NULL, karena MySQL Tidak dapat menyatakan bahwa satu nilai yang tidak diketahui sama dengan nilai lain yang tidak diketahui. Sekarang gunakan kata kunci IS NULL pada nilai yang sama.
SELECT 5 IS NULL; SELECT NULL IS NULL;
| 5 IS NULL | NULL IS NULL |
|---|---|
| 0 | 1 |
Kali ini jawabannya pasti: 0 (SALAH) dan 1 (BENAR). Hanya kata kunci IS NULL dan IS NOT NULL yang memberikan jawaban pasti ketika terdapat nilai NULL.


