Rumah > pangkalan data > tutorial mysql > NULL Pengendalian dalam SQL

NULL Pengendalian dalam SQL

WBOY
Lepaskan: 2024-07-16 22:21:18
asal
1054 orang telah melayarinya

NULL Handling in SQL

pengenalan

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.

Memahami NULL dalam SQL

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.

Ciri-ciri Utama NULL

  1. Nilai Tak Tentu: NULL mewakili nilai yang tidak diketahui atau tak tentu.
  2. Tidak dapat dibandingkan: Perbandingan yang melibatkan NULL (cth., =, <, >) sentiasa menghasilkan NULL, bukan BENAR atau SALAH.
  3. Pengendalian Khas dalam Fungsi: Banyak fungsi SQL mempunyai gelagat khusus apabila berurusan dengan nilai NULL.

Bekerja dengan NULL dalam SQL

Menyemak NULL

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;
Salin selepas log masuk
Salin selepas log masuk

Pertanyaan ini mendapatkan semula semua pekerja yang tidak mempunyai pengurus.

NULL dan Operator Perbandingan

Perbandingan langsung dengan NULL menggunakan operator perbandingan standard (=, !=, <, dll.) tidak berfungsi seperti yang diharapkan. Contohnya:

SELECT * FROM employees WHERE manager_id = NULL;
Salin selepas log masuk

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;
Salin selepas log masuk
Salin selepas log masuk

NULL dalam Agregasi

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
Salin selepas log masuk

Berurusan dengan NULL dalam Joins

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;
Salin selepas log masuk

Pertanyaan ini mendapatkan semula semua pekerja, termasuk mereka yang tidak mempunyai jabatan, kerana JOIN KIRI.

Mengendalikan NULL dalam Pertanyaan SQL

Menggunakan COALESCE

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;
Salin selepas log masuk

Pertanyaan ini menggantikan nilai NULL manager_id dengan rentetan 'Tiada Pengurus'.

Menggunakan IFNULL atau ISNULL

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;
Salin selepas log masuk

Menggunakan NULLIF

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;
Salin selepas log masuk

Pertanyaan ini menghalang pembahagian dengan sifar dengan mengembalikan NULL jika kuantiti adalah sifar.

Amalan Terbaik untuk Pengendalian NULL

  1. Tentukan Nilai Lalai: Apabila membuat jadual, tentukan nilai lalai untuk lajur untuk meminimumkan kejadian NULL.
  2. Gunakan Fungsi yang Sesuai: Gunakan fungsi seperti COALESCE, IFNULL dan NULLIF untuk mengendalikan nilai NULL dengan berkesan.
  3. Sahkan Data: Laksanakan peraturan pengesahan data untuk menghalang nilai NULL yang tidak diingini.
  4. Pertimbangkan Reka Bentuk Pangkalan Data: Reka skema pangkalan data anda untuk mengendalikan nilai NULL dengan sewajarnya, mengambil kira kesan pada pertanyaan dan prestasi.

Kesimpulan

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!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan