Nilai nol khusus

Tersedia

5.1 Kurangnya signifikansi

Bahasa SQL, seperti bahasa Java, memiliki kata kunci khusus untuk menunjukkan tidak adanya nilai - yaitu nol. Atau seperti yang sering ditulis - NULL.

Penggunaan NULLdi SQL sangat mirip dengan penggunaan null di Java. Di Jawa, mungkin ada objek yang bidangnya berisi nilai nol. Di SQL, mungkin ada tabel yang barisnya berisi nilai NULL.

Izinkan saya menambahkan beberapa produk tidak bermerek ke tabel produk kami dengan sengaja. Jika merek produk tidak diketahui, maka nilainya adalah NULL.

Untuk menampilkan produk seperti itu, mari urutkan tabel produk berdasarkan id dalam urutan terbalik dan ambil 10 catatan. Permintaan akan terlihat seperti ini:

SELECT * FROM product
ORDER BY id DESC
LIMIT 10

Kami mendapatkan hasil kueri berikut:

pengenal nama merek harga menghitung
15 Memusatkan BATAL 0,01 1000
14 Baut BATAL 0,10 1000
13 Berdiri IKEA 100.00 10
12 pot bunga Bunga pintar 99.00 9
sebelas Kursi berlengan Bosch 44.00 8
10 Piring Bosch 199.00 10
9 Meja rias IKEA 99.00 10
8 Lampu LG 15.00 100
7 televisi LG 350.00 4
6 Rak Bosch 25.00 114

Ya, saya menambahkan paku keling dan sekrup ke meja. Mereka memiliki harga dan kuantitas, tetapi tidak ada merek.

5.2 Perbandingan dengan NULL

Apakah Anda ingat bahwa terkadang Anda marah di Java saat menggunakan null? Bahwa Anda tidak dapat membandingkan variabel yang dapat merujuk ke nilai nol melalui equals(). Contoh:

Product product1 = new Product();
Product product2 = null;
if (product2.equals(product1) {  //an exception will be raised here}

Anda tidak akan mempercayainya, tetapi dalam bahasa SQL Anda juga menunggu nuansa saat bekerja dengan nilai NULL. Dan kedengarannya seperti ini:tidak ada yang NULL.

Jika Anda mencoba memfilter semua produk yang mereknya adalah null:

SELECT * FROM product
WHERE brand = NULL

Anda akan mendapatkan meja kosong:

pengenal nama merek harga menghitung

Tetapi jika Anda menulis dalam kueri bahwa brand is not equal to NULL, Anda akan mendapatkan hasil yang sama:

SELECT * FROM product
WHERE brand != NULL

Anda akan kembali mendapatkan meja kosong:

pengenal nama merek harga menghitung

Setiap perbandingan/tindakan dengan NULL akan mengembalikan NULL:

Ekspresi Hasil
merek = NULL BATAL
merek != NULL BATAL
NULL = NULL BATAL
NULL != NULL BATAL

Ya,bahkan jika Anda membandingkan NULL dengan NULL, maka jawabannya adalah NULL.

5.3 ADALAH NULL dan BUKAN NULL

Jadi bagaimana kita memeriksa bahwa beberapa bidang (atau beberapa kolom) memiliki nilai NULL? Dan untuk ini, SQL memiliki ekspresi khusus - IS NULL. Sepertinya ini.

variable IS NULL

Jika Anda ingin memeriksa apakah kolom tabel Anda tidak sama dengan NULL, maka Anda perlu menulis IS NOT NULL:

variable IS NOT NULL

Mari tulis kueri yang akan memilih semua produk dari tabel produk yang mereknya sama dengan NULL. Permintaan seperti itu akan terlihat seperti ini:

SELECT * FROM product
WHERE brand IS NULL

Dan kami mendapatkan hasil kueri berikut:

pengenal nama merek harga menghitung
14 Baut BATAL 0,10 1000
15 Memusatkan BATAL 0,01 1000

Sekarang mari kita tampilkan semua produk yang harganya kurang dari $20:

SELECT * FROM product
WHERE price  < 20

Dan kami mendapatkan hasil kueri berikut:

pengenal nama merek harga menghitung
2 Kursi IKEA 5.00 45
8 Lampu LG 15.00 100
14 Baut BATAL 0,10 1000
15 Memusatkan BATAL 0,01 1000

Sekarang kami menetapkan bahwa harganya harus kurang dari $20 dan merek tidak NULL.

SELECT * FROM product
WHERE price  < 20 AND brand IS NOT NULL

Kami mendapatkan hasil kueri berikut:

pengenal nama merek harga menghitung
2 Kursi IKEA 5.00 45
8 Lampu LG 15.00 100

Hebat, dua baris terakhir hilang. Begini cara kerjanya. Sedikit tidak biasa, tetapi masih ada logika tertentu dalam hal ini.

Komentar
  • Populer
  • Baru
  • Lama
Anda harus login untuk memberikan komentar
Halaman ini belum memiliki komentar