Berurusan dengan nilai NULL dalam SQL adalah aspek asas yang mesti difahami oleh setiap profesional pangkalan data. NULL mewakili nilai yang hilang atau tidak ditentukan dalam jadual pangkalan data, dan adalah penting untuk mengendalikan nilai ini dengan betul untuk memastikan integriti dan ketepatan operasi data anda. Artikel ini akan menyelidiki konsep NULL dalam SQL, implikasinya dan pelbagai strategi untuk mengendalikan nilai NULL.
NULL dalam SQL ialah penanda khas yang digunakan untuk menunjukkan bahawa nilai data tidak wujud dalam pangkalan data. Ia tidak bersamaan dengan rentetan kosong atau nilai sifar. Sebaliknya, NULL menandakan ketiadaan sebarang nilai. Kehadiran nilai NULL dalam jadual pangkalan data boleh menjejaskan hasil pertanyaan, terutamanya apabila melakukan operasi seperti perbandingan, pengagregatan dan cantuman.
Untuk menyemak sama ada nilai adalah NULL, anda menggunakan operator IS NULL atau IS NOT NULL. Contohnya:
SELECT * FROM employees WHERE manager_id IS NULL;
Pertanyaan ini mendapatkan semula semua pekerja yang tidak mempunyai pengurus.
Perbandingan langsung dengan NULL menggunakan operator perbandingan standard (=, !=, <, dll.) tidak berfungsi seperti yang diharapkan. Contohnya:
SELECT * FROM employees WHERE manager_id = NULL;
Pertanyaan ini tidak akan mengembalikan sebarang baris, walaupun beberapa nilai manager_id adalah NULL. Sebaliknya, anda harus menggunakan:
SELECT * FROM employees WHERE manager_id IS NULL;
Fungsi pengagregatan seperti SUM, AVG, COUNT, dll., mengendalikan nilai NULL secara berbeza. Contohnya, SUM dan AVG mengabaikan nilai NULL, manakala COUNT boleh mengiranya jika dinyatakan secara eksplisit.
SELECT SUM(salary) FROM employees; -- NULL values are ignored SELECT AVG(salary) FROM employees; -- NULL values are ignored SELECT COUNT(manager_id) FROM employees; -- NULL values are ignored SELECT COUNT(*) FROM employees WHERE manager_id IS NULL; -- Counts only NULL values
Apabila melakukan gabungan, nilai NULL boleh membawa kepada hasil yang tidak dijangka. Sebagai contoh, INNER JOIN mengecualikan baris dengan nilai NULL dalam keadaan gabungan, manakala LEFT JOIN menyertakannya.
SELECT e.name, d.department_name FROM employees e LEFT JOIN departments d ON e.department_id = d.id;
Pertanyaan ini mendapatkan semula semua pekerja, termasuk mereka yang tidak mempunyai jabatan, kerana JOIN KIRI.
Fungsi COALESCE mengembalikan nilai bukan NULL pertama dalam senarai ungkapan. Ia berguna untuk menggantikan NULL dengan nilai lalai.
SELECT name, COALESCE(manager_id, 'No Manager') AS manager_id FROM employees;
Pertanyaan ini menggantikan nilai NULL manager_id dengan rentetan 'Tiada Pengurus'.
Banyak dialek SQL menyediakan fungsi seperti IFNULL (MySQL) atau ISNULL (SQL Server) untuk mengendalikan nilai NULL.
-- MySQL SELECT name, IFNULL(manager_id, 'No Manager') AS manager_id FROM employees; -- SQL Server SELECT name, ISNULL(manager_id, 'No Manager') AS manager_id FROM employees;
Fungsi NULLIF mengembalikan NULL jika dua argumen adalah sama; jika tidak, ia mengembalikan hujah pertama. Ia berguna untuk mengelakkan pembahagian dengan ralat sifar.
SELECT price / NULLIF(quantity, 0) AS unit_price FROM products;
Pertanyaan ini menghalang pembahagian dengan sifar dengan mengembalikan NULL jika kuantiti adalah sifar.
Mengendalikan nilai NULL dalam SQL memerlukan pertimbangan dan pemahaman yang teliti tentang tingkah laku mereka dalam operasi yang berbeza. Dengan menggunakan fungsi SQL yang sesuai dan mematuhi amalan terbaik, anda boleh memastikan bahawa pertanyaan pangkalan data anda menghasilkan keputusan yang tepat dan boleh dipercayai. Sama ada anda menyemak NULL, melaksanakan pengagregatan atau menyertai jadual, pengendalian NULL yang betul adalah penting untuk mengekalkan integriti data dan mencapai hasil yang diingini dalam operasi SQL anda.
Atas ialah kandungan terperinci NULL Pengendalian dalam SQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!