Dalam SQL Null adalah nilai dan juga kata kunci. Mari kita perhatikan nilai NULL terlebih dahulu -
Null sebagai Nilai
Secara ringkas, NULL hanyalah pemegang tempat untuk data yang tidak ada. Semasa menjalankan operasi sisipan pada jadual, mereka akan menjadi saat di mana beberapa nilai medan tidak akan tersedia.
Untuk memenuhi keperluan sistem pengurusan pangkalan data relasional yang benar, MySQL menggunakan NULL sebagai pemegang tempat untuk nilai-nilai yang belum diserahkan. Tangkapan skrin di bawah menunjukkan bagaimana nilai NULL kelihatan dalam pangkalan data.
Sekarang mari kita lihat beberapa asas untuk NULL sebelum kita pergi ke perbincangan lebih jauh.
- NULL bukan jenis data - ini bermaksud ia tidak dikenali sebagai "int", "tarikh" atau jenis data lain yang ditentukan.
- Operasi aritmetik yang melibatkan NULL selalu mengembalikan NULL misalnya, 69 + NULL = NULL.
- Semua fungsi agregat hanya mempengaruhi baris yang tidak mempunyai nilai NULL .
Sekarang mari kita tunjukkan bagaimana fungsi kiraan memperlakukan nilai nol. Mari lihat kandungan terkini jadual ahli-
SELECT * FROM `members`;
Melaksanakan skrip di atas memberi kita hasil berikut
membership_ number | full_ names | gender | date_of_ birth | physical_ address | postal_ address | contact_ number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | lwolowitz[at]email.me |
Mari hitung semua ahli yang telah mengemas kini nombor_hubungan mereka
SELECT COUNT(contact_number) FROM `members`;
Melaksanakan pertanyaan di atas memberi kita hasil berikut.
COUNT(contact_number) |
---|
7 |
Catatan: Nilai yang NULL belum dimasukkan
Apa yang TIDAK?
Pengendali TIDAK logik digunakan untuk menguji keadaan Boolean dan kembali benar jika keadaannya salah. Pengendali NOT kembali palsu sekiranya keadaan yang diuji adalah benar
Keadaan |
BUKAN Hasil Pengendali |
Betul |
Salah |
Salah |
Betul |
Mengapa menggunakan TIDAK batal?
Akan ada kes apabila kita harus melakukan pengiraan pada set hasil pertanyaan dan mengembalikan nilai. Melakukan sebarang operasi aritmetik pada lajur yang mempunyai nilai NULL mengembalikan hasil nol. Untuk mengelakkan situasi seperti itu berlaku, kita dapat menggunakan klausa NOT NULL untuk membatasi hasil di mana data kita beroperasi.
BUKAN NULL Nilai
Anggaplah bahawa kita mahu membuat jadual dengan medan tertentu yang harus selalu dibekalkan dengan nilai ketika memasukkan baris baru dalam jadual. Kita boleh menggunakan klausa NOT NULL pada medan tertentu semasa membuat jadual.
Contoh yang ditunjukkan di bawah membuat jadual baru yang mengandungi data pekerja. Nombor pekerja mesti selalu dibekalkan
CREATE TABLE `employees`(employee_number int NOT NULL,full_names varchar(255) ,gender varchar(6));
Sekarang mari kita cuba memasukkan rekod baru tanpa menyatakan nama pekerja dan melihat apa yang berlaku.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
Melaksanakan skrip di atas di MySQL workbench memberikan ralat berikut -
Kata kunci NULL
NULL juga dapat digunakan sebagai kata kunci ketika melakukan operasi Boolean pada nilai yang termasuk NULL. Kata kunci "IS / NOT" digunakan bersamaan dengan perkataan NULL untuk tujuan tersebut. Sintaks asas apabila null digunakan sebagai kata kunci adalah seperti berikut
`comlumn_name' IS NULL`comlumn_name' NOT NULL
SINI
- "IS NULL" adalah kata kunci yang melakukan perbandingan Boolean. Ia kembali benar jika nilai yang dibekalkan adalah NULL dan salah jika nilai yang dibekalkan tidak NULL.
- "NOT NULL" adalah kata kunci yang melakukan perbandingan Boolean. Ia kembali benar jika nilai yang dibekalkan tidak NULL dan salah jika nilai yang dibekalkan adalah nol.
Sekarang mari kita lihat contoh praktikal yang menggunakan kata kunci NOT NULL untuk menghilangkan semua nilai lajur yang mempunyai nilai null.
Teruskan dengan contoh di atas, anggaplah kita memerlukan butiran ahli yang nombor hubungannya tidak kosong. Kami boleh melaksanakan pertanyaan seperti
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Melaksanakan pertanyaan di atas hanya memberikan rekod di mana nombor kenalan tidak kosong.
Katakanlah kita mahukan rekod ahli di mana nombor kenalan adalah nol. Kita boleh menggunakan pertanyaan berikut
SELECT * FROM `members` WHERE contact_number IS NULL;
Melaksanakan pertanyaan di atas memberikan maklumat ahli yang nombor hubungannya adalah NULL
membership_ number | full_names | gender | date_of_birth | physical_address | postal_address | contact_ number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | lwolowitz[at]email.me |
Membandingkan nilai sifar s
Logik tiga nilai - melakukan operasi Boolean dengan syarat yang melibatkan NULL boleh mengembalikan "Tidak Dikenal", "Benar" atau "Salah".
Contohnya, menggunakan kata kunci "IS NULL" semasa melakukan operasi perbandingan yang melibatkan NULL boleh kembali benar atau salah . Menggunakan operator perbandingan lain mengembalikan "Tidak Dikenal" (NULL).
Katakan anda membandingkan nombor lima dengan 5
SELECT 5 =5;
Hasil pertanyaan adalah 1 yang bermaksud BENAR
5 =5 |
---|
1 |
Mari lakukan operasi yang sama dengan NULL
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Mari lihat contoh lain
SELECT 5 > 5;
5> 5 |
---|
0 |
Hasil pertanyaan adalah 0 yang bermaksud SALAH
Mari kita lihat contoh yang sama menggunakan NULL
SELECT NULL > NULL;
NULL> NULL |
---|
NULL |
Mari gunakan kata kunci IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Hasil pertanyaan adalah 0 yang SALAH
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Hasil pertanyaan adalah 1 yang BENAR
Ringkasan
- NULL adalah pemegang tempat nilai untuk medan jadual pilihan.
- MySQL memperlakukan nilai NULL secara berbeza daripada jenis data lain. Nilai NULL apabila digunakan dalam keadaan menilai nilai Boolean yang salah.
- Operasi logik NOT digunakan untuk menguji nilai Boolean dan menilai benar jika nilai Boolean salah dan salah jika nilai Boolean itu benar.
- Klausa NOT NULL digunakan untuk menghilangkan nilai NULL dari set hasil
- Melakukan operasi aritmetik pada nilai NULL selalu mengembalikan hasil NULL.
- Operator perbandingan seperti [, =, dll] tidak dapat digunakan untuk membandingkan nilai NULL.