NULL (SQL)
Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2021. szeptember 2-án felülvizsgált
verziótól ; az ellenőrzések 4 szerkesztést igényelnek .
A NULL egy DBMS -ben egy speciális érték ( pszeudoérték ), amely egy adatbázistábla (DB) mezőjébe írható . A NULL az „üres mező” fogalmának felel meg, azaz „olyan mező, amely nem tartalmaz értéket”. Azért vezették be, hogy megkülönböztessük az üres (vizuálisan nem megjelenített) értékeket az adatbázismezőkben (például egy nulla hosszúságú karakterlánc ) és a hiányzó értékeket (ha egyáltalán nincs érték írva a mezőbe, még üres is) .
A NULL azt jelenti, hogy nem, ismeretlen információ. A NULL érték nem érték a szó teljes értelmében: definíció szerint az érték hiányát jelenti, és lehet NULL vagy bármilyen más típusú (CREATE TABLE new_tab AS (SELECT NULL) a null speciális típusa , CREATE TABLE new_table AS (SELECT 10+NULL) - egész típusú). Ezért a NULL nem a logikai FALSE, nem az üres karakterlánc és nem nulla. A NULL bármely értékkel való összehasonlítása NULL-t eredményez, nem HAMIS vagy 0-t. Ráadásul a NULL nem egyenlő a NULL-lal!
A NULL szükségessége relációs adatbázisokban
- 1. vélemény: A NULL szükséges és kötelező minden olyan adatbázisnál, amely relációsnak vallja magát. Különösen enélkül lehetetlen két táblából sorok külső összekapcsolását (OUTER JOIN) megfelelően felépíteni. E. Codd ehhez az állásponthoz ragaszkodott, és kifejezetten a relációs DBMS-ekre vonatkozó 12 szabály közül a harmadikként szerepelt. Ezt az elvet az SQL nyelv legújabb szabványai is rögzítik .
- 2. vélemény: A NULL érték nem kötelező, használata adatbázis-tervezési hiba eredménye. Egy olyan adatbázisban, amely teljes mértékben megfelel a normalizálási kritériumoknak , nem lehetnek mezők érték nélkül, ami azt jelenti, hogy nincs szükség speciális pszeudoértékre az ilyen mezőkhöz. A gyakorlatban azonban hatékonysági okokból gyakran célszerű néhány normalizálási szabályt figyelmen kívül hagyni, de ennek egyik költsége az üres mezők megjelenése, ami NULL [1] .
NULL használata adatbázisban
Azokban az adatbázisokban, amelyek támogatják a NULL fogalmát, a leírásban szereplő táblamező esetében meghatározzák, hogy lehet-e üres. Ha igen, akkor ebbe a mezőbe nem írható érték, és ennek a mezőnek NULL lesz az értéke. Egy ilyen mezőbe kifejezetten NULL értéket is írhat.
A DBMS általában nem engedélyezi a NULL értékeket a tábla elsődleges kulcsának részét képező mezőkben. Az idegen kulcs mezőiben ezzel szemben a NULL megengedett. A NULL jelenléte egy idegen kulcs mezőben értelmezhető a kapcsolódó rekord hiányának jeleként, és egy ilyen idegen kulcs nem igényli a hivatkozási integritás szabályainak megvalósítását , amelyek bármely más idegen kulcs értékéhez szükségesek.
Műveletek NULL-lal
Mivel a NULL általános értelemben nem érték, használata aritmetikai , karakterlánc , logikai és egyéb műveletekben szigorúan véve helytelen. A legtöbb DBMS azonban támogatja az ilyen műveleteket, de speciális szabályokat vezet be rájuk:
- A NULL változókhoz rendelhető és mezőkbe írható, függetlenül e változók (mezők) deklarált adattípusától ;
- A NULL törvényes paraméterértékként adható át eljárásoknak és függvényeknek . Egy ilyen eljárás vagy funkció végrehajtásának eredményét a benne lévő paramétereken végrehajtott műveletek határozzák meg.
- Minden NULL-lal végzett összehasonlító művelet (még a "NULL = NULL" művelet is ) az "ismeretlen" ( UNKNOWN ) értéket eredményezi. A végeredmény ebben az esetben a teljes logikai kifejezéstől függ, összhangban a logikai műveletek igazságtáblázatával . Ha a NULL-lal való összehasonlítás a teljes logikai művelet (és nem annak része), akkor az eredménye hasonló a FALSE-hoz (egy olyan kifejezés, mint az IF <valami> = NULL THEN <action1> ELSE <action2> END IF , mindig a végrehajtáshoz vezet cselekvés2 ).
- Az összesítő és elemző függvények (az SQL-ben készleteken és listákon végzett műveletekként használatosak ) hajlamosak figyelmen kívül hagyni a NULL értékeket a halmaz többi elemének érvényes értékeinek javára. Például az AVG függvény esetében, amelyet arra terveztek, hogy megtalálja a csoport minden sorára kiértékelt kifejezés számtani középértékét, az eredmény ugyanaz, mintha a kifejezéshez NULL értéket tartalmazó sorok egyáltalán nem szerepelnének a csoportban.
- Létezik egy speciális rendszerfüggvény vagy -művelet (általában az expr IS [NOT] NULL), amely az IGAZ logikai értéket adja vissza, ha az expr értéke (nem) NULL, egyébként pedig FALSE.
Ezen kívül létezhetnek speciális rendszerfüggvények a NULL kényelmes konvertálására bizonyos értékekké, például az Oracle -nek van egy NVL rendszerfüggvénye, amely visszaadja a paramétere értékét, ha az nem NULL, vagy az alapértelmezett értéket, ha az operandus NULL. Az SQL-92 szabvány két függvényt határoz meg: NULLIF és COALESCE, így ezek használata előnyösebb (ha egy adott DBMS megvalósítja őket).
Lásd még
Jegyzetek
- ↑ Dátum K., Darwen H. A jövő adatbázisrendszereinek alapjai. Harmadik Kiáltvány. 2. kiadás (S. D. Kuznyecov szerkesztésében). M.: Janus-K, 2004.
SQL |
---|
Verziók |
- SQL-86
- SQL-89
- SQL-92
- SQL:1999
- SQL:2003
- SQL:2006
- SQL:2008
- SQL:2011
- SQL:2016
|
---|
Kulcsszavak |
|
---|
Kapcsolódó cikkek |
|
---|
Az ISO/IEC SQL részei |
- Keretrendszer
- Alapítvány
- Hívásszintű interfész
- Állandóan tárolt modulok
- Külső adatok kezelése
- Objektumnyelvi kötések
- Információs és definíciós sémák
- SQL rutinok és típusok a Java programozási nyelvhez
- XML-rel kapcsolatos specifikációk
|
---|