MySQL IS NULL & IS NOT NULL Oktatóanyag PÉLDÁVAL
Az SQL-ben a nulla érték és kulcsszó is. Nézzük először a NULL értéket -
Null mint érték
Egyszerűen fogalmazva, a NULL egyszerűen a nem létező adatok helyőrzője. Amikor beszúrási műveleteket hajt végre táblákon, akkor bizonyos mezőértékek nem lesznek elérhetők.
Annak érdekében, hogy megfeleljen a valódi relációs adatbázis-kezelő rendszerek követelményeinek, MySQL a NULL értéket használja a be nem töltött értékek helyőrzőjeként. Az alábbi képernyőkép azt mutatja, hogyan néznek ki a NULL értékek az adatbázisban.
Nézzünk most meg néhány alapvet a NULL-hoz, mielőtt továbbmennénk a vitába.
- A NULL nem adattípus – ez azt jelenti, hogy nem ismeri fel „int”, „dátum” vagy más meghatározott adattípusként.
- Számtani műveletek bevonásával NULL mindig vissza NULL például 69 + NULL = NULL.
- Minden termék összesített függvények csak azokat a sorokat érinti, amelyeknek nincs NULL értéke.
Most mutassuk meg, hogyan kezeli a count függvény a null értékeket. Lássuk a tagtáblázat aktuális tartalmát-
SELECT * FROM `members`;
A fenti szkript végrehajtása a következő eredményeket adja
membership_ number | full_ names | gender | date_of_ birth | physical_ address | postal_ address | contact_ number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | lwolowitz[at]email.me |
Számoljuk meg az összes tagot, aki frissítette kapcsolati_számát
SELECT COUNT(contact_number) FROM `members`;
A fenti lekérdezés végrehajtásával a következő eredményeket kapjuk.
COUNT(contact_number) |
---|
7 |
Megjegyzés: A NULL értékű értékek nem kerültek bele
Mi NEM?
A NOT logikai operátor a logikai feltételek tesztelésére szolgál, és hamis feltétel esetén igazat ad vissza. A NOT operátor hamis értéket ad vissza, ha a tesztelt feltétel igaz
Állapot | NEM Operator Eredmény |
---|---|
Igaz | Hamis |
Hamis | Igaz |
Miért használja a NOT null-t?
Lesznek olyan esetek, amikor számításokat kell végeznünk egy lekérdezés eredményhalmazán, és vissza kell adnunk az értékeket. Bármilyen aritmetikai művelet végrehajtása a NULL értékkel rendelkező oszlopokon null eredményeket ad vissza. Az ilyen helyzetek elkerülése érdekében használhatjuk a NOT NULL záradékot, hogy korlátozzuk azokat az eredményeket, amelyeken adataink működnek.
NOT NULL értékek
Tegyük fel, hogy szeretnénk létrehozni egy táblázatot bizonyos mezőkkel, amelyeket mindig értékekkel kell ellátni, amikor új sorokat szúrunk be egy táblázatba. A tábla létrehozásakor egy adott mezőn használhatjuk a NOT NULL záradékot.
Az alábbi példa egy új táblát hoz létre, amely tartalmazza az alkalmazottak adatait. Az alkalmazotti számot mindig meg kell adni
CREATE TABLE `employees`( employee_number int NOT NULL, full_names varchar(255) , gender varchar(6) );
Most próbáljunk meg beszúrni egy új rekordot az alkalmazott nevének megadása nélkül, és nézzük meg, mi történik.
INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');
A fenti szkript végrehajtása MySQL A munkaasztal a következő hibát adja:
NULL Kulcsszavak
A NULL kulcsszóként is használható, amikor logikai műveleteket hajt végre a NULL-t tartalmazó értékeken. Az „IS/NOT” kulcsszót a NULL szóval együtt használjuk ilyen célokra. A null kulcsszóként használt alapvető szintaxis a következő
`comlumn_name' IS NULL `comlumn_name' NOT NULL
ITT
- "NULLA a kulcsszó, amely végrehajtja a logikai összehasonlítást. Igazat ad vissza, ha a megadott érték NULL, és hamis, ha a megadott érték nem NULL.
- "NEM NULLA"a kulcsszó, amely végrehajtja a logikai összehasonlítást. Igazat ad vissza, ha a megadott érték nem NULL, és false-t, ha a megadott érték nulla.
Nézzünk most egy gyakorlati példát, amely a NOT NULL kulcsszót használja az összes null értékkel rendelkező oszlopérték eltávolítására.
Folytatva a fenti példát , tegyük fel , hogy szükségünk van azokról a tagokról , akiknek a telefonszáma nem null . Olyan lekérdezést hajthatunk végre, mint
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
A fenti lekérdezés végrehajtása csak azokat a rekordokat adja meg, ahol a kapcsolati szám nem null.
Tegyük fel, hogy olyan tagrekordokat akarunk, ahol a kapcsolati szám null. A következő lekérdezést használhatjuk
SELECT * FROM `members` WHERE contact_number IS NULL;
A fenti lekérdezés végrehajtása olyan tag adatait adja meg, akiknek elérhetősége NULL
membership_ number | full_names | gender | date_of_birth | physical_address | postal_address | contact_ number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | janetjones@yagoo.cm |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | rm@tstreet.com |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | lwolowitz[at]email.me |
Null értékek összehasonlítása
Háromértékű logika – Boole-műveletek végrehajtása olyan feltételek mellett, amelyekben NULL is szerepel, vagy visszatérhet „Ismeretlen”, „Igaz” vagy „Hamis”.
Például, az „IS NULL” kulcsszó használatával összehasonlítási műveletek elvégzésekor NULL bevonásával akár visszatérhet igaz or hamis. Más összehasonlító operátorok használata visszaadja „Ismeretlen” (NULL).
Tegyük fel, hogy összehasonlítja az ötöst az 5-tel
SELECT 5 =5;
A lekérdezés eredménye 1, ami azt jelenti, hogy IGAZ
5 =5 |
---|
1 |
Végezzük el ugyanezt a műveletet NULL-lal
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Nézzünk egy másik példát
SELECT 5 > 5;
5 > 5 |
---|
0 |
A lekérdezés eredménye 0, ami azt jelenti, hogy HAMIS
Nézzük meg ugyanezt a példát a NULL használatával
SELECT NULL > NULL;
NULL > NULL |
---|
NULL |
Használjuk az IS NULL kulcsszót
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
A lekérdezés eredménye 0, ami HAMIS
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
A lekérdezés eredménye 1, ami IGAZ
Összegzésként
- A NULL az opcionális táblamezők értékhelytartója.
- MySQL a NULL értéket más adattípusoktól eltérően kezeli. A NULL értékek, ha egy feltételben használják, hamis logikai értékké válnak.
- A NOT logikai művelet a logikai értékek tesztelésére szolgál, és igazra értékeli, ha a logikai érték hamis, és hamisra, ha a logikai érték igaz.
- A NOT NULL záradék a NULL értékek eltávolítására szolgál az eredményhalmazból
- A NULL értékeken végzett aritmetikai műveletek mindig NULL eredményeket adnak vissza.
- Az összehasonlító operátorok, mint például a [, = stb.], nem használhatók a NULL értékek összehasonlítására.