Penjelasan sederhana
NULL artinya "kosong" atau "belum diisi". Ini berbeda dari angka 0 atau teks kosong. NULL berarti nilainya memang tidak diketahui.
Karena tidak diketahui, NULL tidak bisa dibandingkan dengan tanda sama dengan. Untuk mencarinya, SQL punya perintah khusus: IS NULL untuk yang kosong, dan IS NOT NULL untuk yang terisi.
Sintaks
WHERE kolom IS NULL;
WHERE kolom IS NOT NULL;
| Bagian | Keterangan |
|---|---|
IS NULL | Baris yang kolomnya kosong. |
IS NOT NULL | Baris yang kolomnya terisi. |
Tanda [kurung siku] berarti bagian opsional. Kata kunci SQL tidak membedakan huruf besar-kecil, tapi menulisnya dengan huruf besar membuat query lebih mudah dibaca.
Contoh IS NULL
Data contoh: karyawan
Tabel karyawan
| id | nama | dept_id | kota | gaji | tgl_masuk | atasan_id |
|---|---|---|---|---|---|---|
| 1 | Andi Pratama | 3 | Bandung | 12500000 | 2019-03-11 | NULL |
| 2 | Bunga Lestari | 1 | Jakarta | 9800000 | 2020-07-01 | NULL |
| 3 | Candra Wijaya | 3 | Bandung | 8200000 | 2021-02-15 | 1 |
| 4 | Dewi Anggraini | 2 | Jakarta | 7500000 | 2022-05-09 | 6 |
| 5 | Eko Saputra | 1 | Jakarta | 6900000 | 2023-01-16 | 2 |
| 6 | Fajar Nugroho | 2 | Surabaya | 11000000 | 2018-09-03 | NULL |
| 7 | Gita Permata | 3 | Jakarta | 8200000 | 2023-08-21 | 1 |
| 8 | Hendra Gunawan | NULL | Medan | 5500000 | 2024-04-02 | NULL |
SELECT nama, dept_id
FROM karyawan
WHERE dept_id IS NULL;
Hasil 1 baris
| nama | dept_id |
|---|---|
| Hendra Gunawan | NULL |
Hendra belum ditempatkan di departemen mana pun.
Cara kerjanya, langkah demi langkah
FROM karyawan: 8 baris diambil.- Kolom dept_id setiap baris dicek apakah kosong.
- Hanya Hendra yang dept_id-nya kosong, karena ia belum ditempatkan di departemen mana pun.
Dipakai untuk apa di kantor?
- Mencari data yang belum lengkap, misalnya pelanggan tanpa nomor HP.
- Mencari pesanan yang belum punya tanggal kirim.
Kesalahan yang sering terjadi
- Menulis
WHERE dept_id = NULL. Hasilnya selalu kosong karena perbandingan apa pun dengan NULL hasilnya "tidak diketahui", bukan benar. - Menganggap NULL sama dengan 0 atau teks kosong ''. Ketiganya berbeda di SQL.
COUNT