Ferwiderje de brûkers fan NULL's om problemen databank te foarkommen
Nije brûkers nei de wrâld fan databases wurde faak konfusearre troch in spesjale wearde dy't it fjild foarmet - de wearde NULL. Dizze wearde kin fûn wurde op in fjild dat alle soarten gegevens hat en hat in hiel bysûndere sin yn 'e kontekst fan in relaasje-database. It is wierskynlik it bêst om ús diskusje oer NULL te begjinnen mei in pear wurden oer wat NULL net is :
- NULL is net it getal nul.
- NULL is net de lege teken ("") wearde.
NULL is NULL de wearde dy't brûkt wurdt foar in unbekende stik fan gegevens. Faak wurde databankpromjitters de phrase "in NULL-wearde" brûke, mar dit is ferkeard. Tink derom: in NULL is in ûnbekende wearde wêr 't it fjild leech.
NULL yn 'e Real World
Litte wy nei in ienfâldige foarbyld sjen: in tafel mei de ynventaris foar in fruchtstien. Tink derom dat ús ynventaris 10 samlingen en trije orangen befettet. Wy sette ek plums, mar ús ynventarisaasje is ûnfoldwaande en wy witte net hoefolle (as der ien) plums binne op it stock. Mei de wearde NULL, hawwe wy de ynventaris tabel yn 'e tabel hjirûnder sjen litten.
Wetter - Agrarwetter
InventoryID | Ûnderdiel | Kwantiteit |
1 | Apples | 10 |
2 | Orangen | 3 |
3 | Plums | NULL |
It soe dúdlik wêze dat it net goed is om in kwantiteit fan 0 te meitsjen foar de plumsrapport, om't dat betsjutte dat wy gjin plums hawwe yn ynventarisaasje. Yn 'e oarder kinne wy guon plums hawwe, mar wy binne gewoan net wis.
Nei NULL of NOT NULL?
In tafel kin ûntwurpen wurde om NULL-wearden of net te meitsjen.
Hjir is in SQL-foarbyld dy't in Inventory-tabel makket dy't inkele NULL's jout:
SQL> CREATE TABLE INVENTORY (InventoryID INT NET NULL, Item VARCHAR (20) NET NULL, MODE INT);De tabel fan de ynventarisaasje hjirtroch jout NULL-wearden foar de InventoryID en de item kolommen net, mar makket se foar de Quantiteit kolom.
Wylst in NULL-wearde perfoarst falt, kinne NULL-wearden problemen liede, om't alle fergelykbere wearden wêryn ien NULL is, altyd in NULL-resultaat.
Om te kontrolearjen as jo tafel NULL-wearden befettet, brûk de IS NULL of IS NOT NULL operator. Hjir is in foarbyld fan IS NULL:
SQL> SELEKTE INVENTORYID, ITEM, QUANTITIK FROM Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û Û QUANTITMei ús foarbyld hjirfoar, soe dit weromkomme:
InventoryID | Ûnderdiel | Kwantiteit |
---|---|---|
3 | Plums |
Operaasje op NULLs
Wurkje mei NULL-wearden produkt faak produkt NULL, ôfhinklik fan de SQL-operaasje . Bygelyks, oannimme dat A is NULL:
Aritmetika
- A + B = NULL
- A - B = NULL
- A * B = NULL
- A / B = NULL
Fergelyksbetellers
- A = B = NULL
- A! = B = NULL
- A> B = NULL
- A!
Dit binne mar in pear foarbylden fan operators dy't altyd weromkomme NULL as ien operand is NULL. In soad komplekere queries besteane, en alle binne komplete troch NULL-wearden. It nûmerpunt is dat, as jo NULL-wearden yn jo databank befetsje, de ymplikaasjes begripe en planje foar harren.
Dat is NULL yn in nutshell!