5.1 Lack pinunjul

Basa SQL, kaya basa Jawa, nduweni tembung kunci khusus kanggo nuduhake ora ana nilai - iku null. Utawa kaya sing asring ditulis - NULL.

Panggunaan NULLing SQL meh padha karo panggunaan null ing Jawa. Ing Jawa, bisa uga ana obyek sing kolom ngemot nilai null. Ing SQL, bisa uga ana tabel sing baris ngemot nilai NULL.

Ayo kula nambahake sawetara produk tanpa merek menyang tabel produk kanthi sengaja. Yen merek produk ora dingerteni, regane bakal dadi NULL.

Kanggo nampilake produk kasebut, ayo urutake tabel produk kanthi id kanthi urutan mbalikke lan njupuk 10 cathetan. Panjaluk kasebut bakal katon kaya iki:

SELECT * FROM product
ORDER BY id DESC
LIMIT 10

Kita entuk asil pitakon ing ngisor iki:

id jeneng merek regane ngetang
15 keling NULL 0.01 1000
14 meneng NULL 0.10 1000
13 Ngadeg IKEA 100.00 10
12 pot kembang Kembang pinter 99.00 9
sewelas Kursi Bosch 44.00 8
10 piring Bosch 199.00 10
9 Tukang rias IKEA 99.00 10
8 lampu LG 15.00 100
7 TV LG 350,00 4
6 rak Bosch 25.00 114

Ya, aku nambahake rivet lan sekrup ing meja. Dheweke duwe rega lan jumlah, nanging ora ana merek.

5.2 Perbandingan karo NULL

Apa sampeyan kelingan yen kadhangkala sampeyan nesu ing basa Jawa nalika nggunakake null? Sampeyan ora bisa mbandhingake variabel sing bisa ngrujuk marang nilai null liwat padha (). Tuladha:

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

Sampeyan ora bakal pracaya, nanging ing basa SQL sampeyan uga nunggu nuansa nalika nggarap nilai NULL. Lan muni kaya iki:ora ana sing NULL.

Yen sampeyan nyoba nyaring kabeh produk sing merek null:

SELECT * FROM product
WHERE brand = NULL

Sampeyan bakal entuk meja kosong:

id jeneng merek regane ngetang

Nanging yen sampeyan nulis ing pitakon manawa merek ora padha karo NULL, sampeyan bakal entuk asil sing padha:

SELECT * FROM product
WHERE brand != NULL

Sampeyan bakal entuk meja kosong maneh:

id jeneng merek regane ngetang

Sembarang perbandingan / tumindak karo NULL bakal ngasilake NULL:

Ekspresi asil
merek = NULL NULL
merek!= NULL NULL
NULL = NULL NULL
NULL!= NULL NULL

iya,malah yen sampeyan mbandhingaké NULL karo NULL, banjur jawaban bakal NULL.

5.3 IS NULL lan IS NOT NULL

Dadi, kepiye kita mriksa manawa sawetara kolom (utawa sawetara kolom) duweni nilai NULL? Lan kanggo iki, SQL duwe ekspresi khusus - IS NULL. Iku katon kaya iki.

variable IS NULL

Yen sampeyan pengin mriksa yen kolom tabel sampeyan ora padha karo NULL, sampeyan kudu nulis IS NOT NULL:

variable IS NOT NULL

Ayo nulis pitakon sing bakal milih kabeh produk saka tabel produk sing merek padha karo NULL. Panjaluk kasebut bakal katon kaya iki:

SELECT * FROM product
WHERE brand IS NULL

Lan kita entuk asil pitakon ing ngisor iki:

id jeneng merek regane ngetang
14 meneng NULL 0.10 1000
15 keling NULL 0.01 1000

Saiki ayo nampilake kabeh produk sing regane kurang saka $20:

SELECT * FROM product
WHERE price  < 20

Lan kita entuk asil pitakon ing ngisor iki:

id jeneng merek regane ngetang
2 Kursi IKEA 5.00 45
8 lampu LG 15.00 100
14 meneng NULL 0.10 1000
15 keling NULL 0.01 1000

Saiki kita nemtokake manawa rega kudu kurang saka $20 lan merek ora NULL.

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

Kita entuk asil pitakon ing ngisor iki:

id jeneng merek regane ngetang
2 Kursi IKEA 5.00 45
8 lampu LG 15.00 100

Apik, rong baris pungkasan wis ilang. Mangkene cara kerjane. A sethitik mboten umum, nanging isih ana logika tartamtu ing iki.