NULL Pengendalian dalam 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
- Nilai Tak Tentu: NULL mewakili nilai yang tidak diketahui atau tak tentu.
- Tidak dapat dibandingkan: Perbandingan yang melibatkan NULL (cth., =, <, >) sentiasa menghasilkan NULL, bukan BENAR atau SALAH.
- 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;
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;
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;
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
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;
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;
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;
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;
Pertanyaan ini menghalang pembahagian dengan sifar dengan mengembalikan NULL jika kuantiti adalah sifar.
Amalan Terbaik untuk Pengendalian NULL
- Tentukan Nilai Lalai: Apabila membuat jadual, tentukan nilai lalai untuk lajur untuk meminimumkan kejadian NULL.
- Gunakan Fungsi yang Sesuai: Gunakan fungsi seperti COALESCE, IFNULL dan NULLIF untuk mengendalikan nilai NULL dengan berkesan.
- Sahkan Data: Laksanakan peraturan pengesahan data untuk menghalang nilai NULL yang tidak diingini.
- 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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Kurangkan penggunaan memori MySQL di Docker

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table?

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin)

Apa itu SQLite? Gambaran Keseluruhan Komprehensif

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah

Apakah beberapa alat GUI MySQL yang popular (mis., MySQL Workbench, phpmyadmin)?

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL?
