Tóm gildi (NULL)
Oft eru gildi í gagnagrunnum óskilgreind með NULL. Þessi gildi eru ekki tóm gildi, heldur segja þau til um að gildi vanti. Notkun á NULL getur valdið vandræðum í SQL fyrirspurnum.
Tóm gildi - NULL
SQL leyfir dálkum að vera óskilgreindir með NULL gildum, það segir til um að gildi vantar. Þau eru ekki jafngild 0 eða tómum streng.
Dæmi um hvernig við getum sett inn NULL gildi:
INSERT INTO operators (opID, opName, OpSSN)
VALUES (4, 'Jósef', '1010101010');hér verður NULL gildi fyrir opAge og opYearInit.
Breytingar á sýnilegum NULL gildum í SQLite
SQLite sýnir tóman streng fyrir NULL gildi en við getum breytt þessari hegðun með:
.nullvalue NULL Við getum valið hvaða gildi sem er, t.d. ‘NA’ eða ‘-’.
Samanburður með NULL
Samanburður á NULL við annað gildi getur valdið vandræðum þar sem niðurstaðan er óþekkt. Til dæmis:
SELECT NULL + 3;skilar NULL en ekki 0.
Rökaðgerðir með NULL
Rökaðgerðir eins og AND, OR og NOT skila NULL ef einhver þeirra er NULL. Til dæmis:
| Skilyrði 1 | Rökvirki | Skilyrði 2 | Niðurstaða |
|---|---|---|---|
| Satt | AND | Óþekkt | Óþekkt |
| Ósatt | AND | Óþekkt | Ósatt |
| Satt | OR | Óþekkt | Satt |
| Ósatt | OR | Óþekkt | Óþekkt |
| NOT | Óþekkt | Óþekkt |
NULL í SELECT skipunum
Þegar við notum SELECT ásamt WHERE skilyrði, þá er þeim línum skilað í úttak þar sem skilyrðið er satt.
SELECT *
FROM Patient_list
WHERE Patient_Age > 10;gefur til dæmis ekki línum sem hafa NULL gildi í Patient_Age.
Til að finna NULL gildi þá þarf að nota IS NULL:
SELECT *
FROM Patient_list
WHERE Patient_Age IS NULL;Sambærilega, til að útiloka línur með NULL gildi, notum við IS NOT NULL:
SELECT *
FROM Patient_list
WHERE Patient_Age IS NOT NULL;Töfluskilgreiningar og NULL
Hægt er að banna dálkum að vera NULL við töfluskilgreiningu:
CREATE TABLE tbl
(
col1 INTEGER NOT NULL,
col2 CHAR(30) NOT NULL,
col3 REAL
);Fyrstu tveir dálkarnir leyfa ekki NULL, en sá þriðji leyfir það.