Rumah pangkalan data tutorial mysql NULL Pengendalian dalam SQL

NULL Pengendalian dalam SQL

Jul 16, 2024 pm 10:21 PM

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!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Kurangkan penggunaan memori MySQL di Docker Kurangkan penggunaan memori MySQL di Docker Mar 04, 2025 pm 03:52 PM

Kurangkan penggunaan memori MySQL di Docker

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table? Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table? Mar 19, 2025 pm 03:51 PM

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table?

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama Mar 04, 2025 pm 04:01 PM

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin) Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin) Mar 04, 2025 pm 03:54 PM

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

Apa itu SQLite? Gambaran Keseluruhan Komprehensif Apa itu SQLite? Gambaran Keseluruhan Komprehensif Mar 04, 2025 pm 03:55 PM

Apa itu SQLite? Gambaran Keseluruhan Komprehensif

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah Mar 04, 2025 pm 03:49 PM

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah

Apakah beberapa alat GUI MySQL yang popular (mis., MySQL Workbench, phpmyadmin)? Apakah beberapa alat GUI MySQL yang popular (mis., MySQL Workbench, phpmyadmin)? Mar 21, 2025 pm 06:28 PM

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

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL? Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL? Mar 18, 2025 pm 12:01 PM

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL?

See all articles