0Pricing
SQL Academy · Pelajaran

Makna Sebenarnya NULL

Tidak diketahui, bukan nol, dan bukan kosong.

Makna Sebenarnya NULL adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.

Berkenalan dengan NULL

NULL adalah cara SQL menyatakan "Saya tidak tahu". Nilai ini bukan nol, bukan string kosong, dan bukan false — nilai ini menyatakan ketiadaan nilai.

Setiap kali kolom tidak memiliki nilai yang diketahui, basis data menyimpan NULL di sana. Mempelajari perilaku NULL adalah salah satu langkah terpenting untuk menulis kueri yang benar.

-- A customers table where some phone numbers are unknown
SELECT id, name, phone
FROM customers;

-- id | name    | phone
-- ---+---------+------------
--  1 | Alice   | 555-0101
--  2 | Bob     | NULL        <- phone unknown
--  3 | Carol   | NULL

NULL bukan nol

Kesalahan yang umum adalah memperlakukan NULL seperti angka 0. Keduanya sama sekali berbeda.

  • 0 adalah nilai yang diketahui: nol.
  • NULL berarti nilainya hilang atau tidak diketahui.

Jika saldo rekening adalah 0, pelanggan tidak memiliki uang. Jika nilainya NULL, kita hanya belum mengetahui saldonya.

SELECT id, balance
FROM accounts;

-- id | balance
-- ---+--------
--  1 | 0        <- known: empty wallet
--  2 | NULL     <- unknown: not recorded yet

NULL bukan string kosong

Untuk kolom teks, NULL dan string kosong '' juga berbeda.

  • '' adalah string dengan panjang nol — nilai yang diketahui dan ada.
  • NULL berarti tidak ada string yang diberikan sama sekali.

Anda dapat menyimpan catatan kosong dengan sengaja, atau membiarkan catatan sama sekali tidak ada. SQL membedakan keduanya.

SELECT id, note, length(note) AS note_len
FROM tickets;

-- id | note | note_len
-- ---+------+----------
--  1 | ''   |        0   <- empty but present
--  2 | NULL |     NULL   <- absent; length is also unknown

Logika tiga nilai

Logika biasa memiliki dua hasil: true dan false. SQL menambahkan hasil ketiga: tidak diketahui.

Perbandingan apa pun yang melibatkan NULL menghasilkan unknown, karena Anda tidak dapat membandingkan dengan nilai yang tidak Anda miliki. Ini disebut logika tiga nilai.

-- Each comparison with NULL returns UNKNOWN, not true/false
SELECT
  NULL = 5      AS eq,      -- unknown
  NULL <> 5     AS neq,     -- unknown
  NULL = NULL   AS self_eq, -- unknown (!)
  NULL > 0      AS gt;      -- unknown

NULL = NULL bukan TRUE

Aturan yang paling mengejutkan: NULL = NULL bukan true. Hasil evaluasinya adalah unknown.

Mengapa? Jika dua nilai sama-sama tidak diketahui, Anda tidak dapat mengatakan bahwa keduanya sama — keduanya bisa bernilai apa saja. Untuk memeriksa apakah sesuatu adalah NULL, Anda harus menggunakan IS NULL, bukan =.

-- Wrong: never returns rows, because NULL = NULL is unknown
SELECT * FROM customers WHERE phone = NULL;

-- Right: use IS NULL
SELECT * FROM customers WHERE phone IS NULL;

WHERE hanya mempertahankan baris TRUE

Klausa WHERE hanya mempertahankan baris ketika kondisinya benar. Baris yang kondisinya false atau unknown akan dibuang.

Inilah alasan penyaringan kolom NULL dengan = diam-diam menghapus baris yang mungkin Anda harapkan muncul.

-- Bob and Carol have NULL phones, so phone = '555-0101'
-- is UNKNOWN for them and they are excluded.
SELECT name
FROM customers
WHERE phone = '555-0101';

-- Returns only Alice

NULL merambat melalui aritmetika

NULL bersifat menular dalam ekspresi. Hampir semua operasi aritmetika atau string yang melibatkan NULL menghasilkan NULL.

Jika salah satu masukan tidak Anda ketahui, hasilnya juga tidak dapat Anda ketahui.

SELECT
  10 + NULL    AS sum,    -- NULL
  100 * NULL   AS prod,   -- NULL
  NULL / 2     AS div,    -- NULL
  'Hi ' || NULL AS greet; -- NULL (string concat)

Dari mana NULL berasal

Nilai NULL muncul dalam beberapa situasi umum:

  • INSERT yang tidak menyertakan kolom yang boleh bernilai NULL.
  • Penggabungan luar tanpa baris yang cocok di salah satu sisi.
  • Agregasi atas nol baris, misalnya SUM atas himpunan kosong mengembalikan NULL.

Mengetahui sumbernya membantu Anda menentukan cara menanganinya.

-- Omitting phone inserts NULL automatically
INSERT INTO customers (id, name) VALUES (4, 'Dan');

SELECT id, name, phone FROM customers WHERE id = 4;
-- 4 | Dan | NULL

Mencegah NULL: NOT NULL

Jika sebuah kolom selalu harus memiliki nilai, nyatakan kolom tersebut sebagai NOT NULL. Basis data kemudian menolak setiap baris yang mencoba membiarkannya kosong.

Ini adalah cara yang ampuh untuk menjaga kebersihan data dan menghindari masalah NULL yang tidak terduga di kemudian hari.

CREATE TABLE users (
  id    integer PRIMARY KEY,
  email text NOT NULL,   -- must always be provided
  bio   text             -- nullable: optional
);

-- This fails: email cannot be NULL
INSERT INTO users (id, bio) VALUES (1, 'hi');

NULL dengan DISTINCT dan pengelompokan

Ada satu tempat ketika SQL memperlakukan nilai NULL sebagai sama: pengelompokan dan penghapusan duplikat.

Dalam DISTINCT dan GROUP BY, semua nilai NULL digabungkan ke dalam satu kelompok, meskipun NULL = NULL menghasilkan unknown di tempat lain. Kasus khusus ini membuat pengelompokan tetap berguna.

SELECT phone, count(*)
FROM customers
GROUP BY phone;

-- phone    | count
-- ---------+------
-- 555-0101 |     1
-- NULL     |     2   <- all NULLs grouped together

Ringkasan model mental

Ingat aturan berikut setiap kali Anda melihat NULL:

  • NULL berarti tidak diketahui, bukan nol atau kosong.
  • Perbandingan dengan NULL menghasilkan tidak diketahui — gunakan IS NULL / IS NOT NULL.
  • WHERE hanya mempertahankan baris yang benar.
  • Aritmetika dengan NULL menghasilkan NULL.
  • Pengelompokan memperlakukan nilai NULL sebagai satu kelompok.
-- The two correct NULL tests
SELECT name FROM customers WHERE phone IS NULL;
SELECT name FROM customers WHERE phone IS NOT NULL;

Pemeriksaan singkat

Dalam SQL standar, apa hasil evaluasi ekspresi NULL = NULL?

Ringkasan

Kini Anda memahami apa sebenarnya NULL: penanda untuk nilai yang hilang atau tidak diketahui, yang berbeda dari 0 dan ''.

Anda telah melihat logika tiga nilai SQL, alasan = NULL tidak pernah berhasil, cara NULL merambat melalui aritmetika, serta cara WHERE membuang baris yang tidak diketahui. Selanjutnya, Anda akan mempelajari cara yang benar untuk menguji nilai NULL dengan IS NULL dan IS NOT NULL.

-- Remember the golden rule
SELECT * FROM customers WHERE phone IS NULL;     -- correct
-- SELECT * FROM customers WHERE phone = NULL;   -- always empty!

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Makna Sebenarnya NULL” gratis?

Ya — teks lengkap “Makna Sebenarnya NULL” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Makna Sebenarnya NULL”?

Tidak diketahui, bukan nol, dan bukan kosong. Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai SQL Academy?

Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Makna Sebenarnya NULL” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?

Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Makna Sebenarnya NULL
  2. IS NULL dan IS NOT NULL
  3. COALESCE dan NULLIF
  4. NULL dalam Agregat dan JOIN
← Kembali ke SQL Academy