Deall y Defnydd o NULLs i Osgoi Problemau Cronfa Ddata
Mae defnyddwyr sy'n newydd i fyd y cronfeydd data yn aml yn cael eu drysu gan werth arbennig yn benodol i'r maes - y gwerth NULL. Gellir dod o hyd i'r gwerth hwn mewn maes sy'n cynnwys unrhyw fath o ddata ac mae ganddi ystyr arbennig iawn yng nghyd-destun cronfa ddata berthynol. Mae'n debyg ei bod hi'n well dechrau ein trafodaeth o NULL gydag ychydig o eiriau ynglŷn â beth nad yw NULL yn:
- Nid yw NULL yn rhif sero.
- Nid yw NULL yn werth y llinyn gwag ("").
Yn hytrach, NULL yw'r gwerth a ddefnyddir i gynrychioli darn o ddata anhysbys. Yn aml, bydd rhaglenwyr cronfa ddata yn defnyddio'r ymadrodd "gwerth NULL", ond mae hyn yn anghywir. Cofiwch: mae NULL yn werth anhysbys lle mae'r maes yn ymddangos yn wag.
NULL yn y Byd Real
Gadewch i ni edrych ar enghraifft syml: tabl sy'n cynnwys y rhestr ar gyfer stondin ffrwythau. Tybiwch fod ein rhestr yn cynnwys 10 afalau a thri orennau. Rydym hefyd yn darparu eirin stoc, ond mae ein gwybodaeth am y rhestr eiddo yn anghyflawn ac ni wyddom faint o eirin (os oes rhai) sydd mewn stoc. Gan ddefnyddio'r gwerth NULL, byddai gennym y tabl rhestr a ddangosir yn y tabl isod.
Rhestr Sefyll Ffrwythau
InventoryID | Eitem | Nifer |
1 | Afalau | 10 |
2 | Orennau | 3 |
3 | Eirin | NULL |
Byddai'n amlwg yn anghywir cynnwys nifer o 0 ar gyfer y cofnod eirin, gan y byddai hynny'n awgrymu nad oedd gennym eirin yn y rhestr. I'r gwrthwyneb, efallai y bydd gennym ryw eirin, ond nid ydym yn sicr yn unig.
I NULL neu NEU NULL?
Gellir dylunio tabl i naill ai ganiatáu gwerthoedd NULL ai peidio.
Dyma enghraifft SQL sy'n creu tabl Rhestr sy'n caniatáu rhai NULLs:
SQL> CREATE TABL INVENTORY (NID InventoryID INT NULL, Eitem VARCHAR (20) NOT NULL, Quantity INT);Nid yw'r tabl Rhestr yma yn caniatáu gwerthoedd NULL ar gyfer y InventoryID a'r colofnau Eitemau , ond mae'n eu caniatáu ar gyfer y golofn Nifer .
Er bod caniatáu gwerth NULL yn berffaith iawn, gall gwerthoedd NULL achosi problemau oherwydd bod unrhyw gymhariaeth o werthoedd y mae un yn NULL bob amser yn arwain at NULL.
I wirio a yw eich tabl yn cynnwys gwerthoedd NULL, defnyddiwch y gweithredydd IS NULL neu NID YW NIWLI. Dyma enghraifft o IS NULL:
SQL> SELECT INVENTORYID, ITEM, NODWCH O DDENTWEDDAETH LLE NAD YW NOD YR NODWEDD;O ystyried ein hesiampl yma, byddai hyn yn dychwelyd:
InventoryID | Eitem | Nifer |
---|---|---|
3 | Eirin |
Gweithredu ar NULLs
Mae gweithio gyda gwerthoedd NULL yn aml yn cynhyrchu canlyniadau NULL, yn dibynnu ar y gweithrediad SQL . Er enghraifft, gan dybio bod A yn NULL:
Gweithredwyr Rhifeg
- A + B = NULL
- A - B = NULL
- A * B = NULL
- A / B = NULL
Gweithredwyr Cymhariaeth
- A = B = NULL
- A! = B = NULL
- A> B = NULL
- A!
Dyma rai enghreifftiau o weithredwyr a fydd bob amser yn dychwelyd NULL os yw un operand yn NULL. Mae llawer o ymholiadau mwy cymhleth yn bodoli, ac mae pob un yn gymhleth gan werthoedd NULL. Y pwynt cymryd cartref yw, os ydych chi'n caniatáu gwerthoedd NULL yn eich cronfa ddata, yn deall y goblygiadau a chynllunio ar eu cyfer.
Mae hynny'n NULL yn fyr!