MySQL IS NULL i IS NOT NULL s primjerima

⚡ Pametni sažetak

MySQL IS NULL i IS NOT NULL su ključne riječi za usporedbu koje provjeravaju sadrži li stupac nedostajuću vrijednost. NULL označava odsutne podatke, ponaša se drugačije od nule ili praznog niza i zahtijeva namjenske operatore za pouzdano filtriranje.

  • 🧩 Osnovna definicija: NULL je rezervirano mjesto za podatke koji ne postoje. Nije tip podataka i nije broj nula.
  • ➗ Aritmetičko ponašanje: Bilo koji aritmetički izraz koji sadrži NULL vraća NULL, pa 69 + NULL vraća NULL umjesto 69.
  • 📊 Agregatni utjecaj: COUNT(stupac) i ostale agregacijske funkcije preskaču NULL retke, dok COUNT(*) i dalje broji svaki redak u tablici.
  • ???? NOT NULL Ograničenje: Deklarisanje stupca kao NOT NULL odbacuje svaki unos koji izostavlja vrijednost, što štiti obavezna polja poput identifikatora.
  • 🔍 Ispravno filtriranje: IS NULL i IS NOT NULL su jedini pouzdani testovi, jer operator jednakosti nikada ne odgovara NULL vrijednosti.
  • ⚖️ Trovrijednosna logika: Usporedbe s NULL vraćaju UNKNOWN, pa SELECT NULL = NULL daje NULL umjesto TRUE.

MySQL JE NULL i NIJE NULL

U SQL-u, NULL je i vrijednost i ključna riječ. Prvo pogledajmo NULL vrijednost.

MySQL JE NULL & NIJE NULL

Što je NULL u MySQL?

Jednostavnim riječima, NULL je rezervirano mjesto za podatke koji ne postojePrilikom izvođenja operacija umetanja u tablice, ponekad će neke vrijednosti polja biti nedostupene.

Kako bismo zadovoljili zahtjeve pravih sustava za upravljanje relacijskim bazama podataka, MySQL koristi NULL kao rezervirano mjesto za vrijednosti koje nisu poslane. Snimka zaslona u nastavku prikazuje kako NULL vrijednosti izgledaju u tablici baze podataka.

Null kao vrijednost

Primijetite da su prazne ćelije označene s NULL, a ne s praznim tekstom i ne s nulom. Prije nego što krenemo dalje, pogledajte neke osnove funkcije NULL.

  • NULL nije tip podataka – to znači da se ne prepoznaje kao "int", "date" ili bilo koja druga definirana vrsta podataka.
  • Aritmetičke operacije uključuje NULL uvijek vrati NULL, na primjer, 69 + NULL = NULL.
  • most agregatne funkcije ignoriraj retke koji sadrže NULL vrijednostiJedina iznimka je COUNT(*), koja broji svaki redak bez obzira na NULL.

Kako agregatne funkcije tretiraju NULL

Ovo pravilo mijenja odgovore koje vraćaju upiti za izvještavanje, pa dokažimo to. Počnimo s trenutnim sadržajem tablice članova.

SELECT * FROM `members`;

Izvršavanje gornje skripte daje nam sljedeće rezultate.

membership_ number full_ names gender date_of_ birth physical_ address postal_ address contact_ number email
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 12345rm@tstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL
5 Leonard Hofstadter MaleNULL 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

Istaknuti stupac contact_number sadrži ukupno devet redaka, ali dva od njih su NULL. Prebrojimo sve članove koji su ažurirali svoj kontaktni broj.

SELECT COUNT(contact_number) FROM `members`;

Izvršavanje gornjeg upita daje nam sljedeće rezultate.

COUNT(contact_number)
7

Bilješka: Odgovor je 7, a ne 9, jer dvije NULL vrijednosti nisu bile uključene. Pokretanje funkcije COUNT(*) na istoj tablici vratilo bi 9, budući da COUNT(*) broji retke, a ne vrijednosti.

NIJE NULL vrijednosti

Sigurniji pristup je uopće spriječiti ulazak NULL-a u obavezne stupce. To je zadatak ograničenja NOT NULL.

Što je NE Operator?

Logički operator NOT koristi se za testiranje Booleovih uvjeta i vraća vrijednost true ako je uvjet lažan. Operator NOT vraća vrijednost false ako je uvjet koji se testira istinit.

Stanje NE Operator Rezultat
Pravi Lažan
Lažan Pravi

Zašto koristiti NOT NULL?

Postojat će slučajevi kada ćemo morati izvršiti izračune na skupu rezultata upita i vratiti vrijednosti. Izvođenje bilo koje aritmetičke operacije na stupcu koji sadrži NULL vrijednost vraća NULL rezultat. Kako bismo izbjegli takve situacije, možemo upotrijebiti klauzulu NOT NULL kako bismo ograničili rezultate na kojima naši podaci operiraju.

Izrada tablice sa stupcem tipa NOT NULL

Pretpostavimo da želimo stvoriti tablicu s određenim poljima koja uvijek trebaju biti ispunjena vrijednostima prilikom umetanja novih redaka. Možemo koristiti klauzulu NOT NULL na zadanom polju prilikom stvaranja tablice.

Primjer prikazan u nastavku stvara novu tablicu koja sadrži podatke o zaposlenicima. Broj zaposlenika treba uvijek navesti.

CREATE TABLE `employees`(
  employee_number int NOT NULL,
  full_names varchar(255) ,
  gender varchar(6)
);

Pokušajmo sada umetnuti novi zapis bez navođenja broja zaposlenika i vidjeti što će se dogoditi.

INSERT INTO `employees` (full_names,gender) VALUES ('Steve Jobs', 'Male');

Izvršavanje gornje skripte u MySQL Radna tezga daje sljedeću grešku jer je obavezni stupac izostavljen.

NIJE NULL vrijednosti

Ključne riječi IS NULL i IS NOT NULL

Ograničenje blokira nove NULL vrijednosti. Za rad s NULL vrijednostima koje već postoje, NULL se koristi kao ključna riječ. Sintaksa je sljedeća.

column_name IS NULL
column_name IS NOT NULL

OVDJE

  • "JE NULL" je ključna riječ koja izvodi Booleovu usporedbu. Vraća true ako je isporučena vrijednost NULL i false ako isporučena vrijednost nije NULL.
  • "NIJE NULL" je ključna riječ koja izvodi suprotnu usporedbu. Vraća true ako navedena vrijednost nije NULL i false ako je navedena vrijednost NULL.

Pogledajmo praktičan primjer koji koristi ključnu riječ IS NOT NULL za uklanjanje svih redaka koji sadrže NULL vrijednosti u stupcu.

Nastavljajući s gornjom tablicom članova, pretpostavimo da su nam potrebni podaci o članovima čiji kontakt broj nije NULL. Možemo izvršiti upit poput ovog.

SELECT * FROM `members` WHERE contact_number IS NOT NULL;

Izvršavanje gornjeg upita vraća samo sedam zapisa u kojima je prisutan kontaktni broj, što odgovara rezultatu COUNT iz prethodnog odjeljka.

Sada pretpostavimo da želimo suprotno: zapise članova gdje nedostaje kontaktni broj. Možemo upotrijebiti sljedeći upit.

SELECT * FROM `members` WHERE contact_number IS NULL;

Izvršavanjem gornjeg upita dobivaju se dva zapisa članova čiji je kontaktni broj NULL.

membership_ number full_names gender date_of_birth physical_address postal_address contact_ number email
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL jj@fstreet.com
4 Gloria Williams Female 14-02-1984 2nd Street 23 NULL NULL NULL

Upozorenje: Uvjet kao što je WHERE contact_number = NULL vraća prazan skup rezultata, čak i ako postoje NULL vrijednosti. Operator jednakosti nikada ne može odgovarati NULL-u, pa je IS NULL jedini ispravan test.

Uspoređivanje NULL vrijednosti s trovrijednosnom logikom

Logika tri vrijednosti – izvođenje Booleovih operacija nad uvjetima koji uključuju NULL može vratiti „Nepoznato“, „Točno“ ili „Netočno“.

Korištenje ključne riječi „IS NULL“ kada radite operacije usporedbe uključujući NULL vraća istinski or lažanKorištenje ostalih operatora usporedbe vraća „Nepoznato“ (NULL)Donja tablica uspoređuje svaki izraz jedan pored drugog.

Izraz Proizlaziti Značenje
ODABERI 5 = 5; 1 TRUE
ODABERI NULL = NULL; NULL NEPOZNATI
ODABERITE 5 > 5; 0 FALSE
ODABERI NULL > NULL; NULL NEPOZNATI
ODABERI 5 JE NULL; 0 FALSE
ODABERI NULL JE NULL; 1 TRUE

Usporedite broj pet sa samim sobom, a zatim ponovite operaciju s NULL-om.

SELECT 5 =5;
SELECT NULL = NULL;
5 =5 NULL = NULL
1 NULL

Prvi rezultat je 1 (TRUE). Drugi je NULL, jer MySQL Ne može se tvrditi da je jedna nepoznata vrijednost jednaka drugoj nepoznatoj vrijednosti. Sada upotrijebite ključnu riječ IS NULL na istim vrijednostima.

SELECT 5 IS NULL;
SELECT NULL IS NULL;
5 IS NULL NULL IS NULL
0 1

Ovaj put odgovori su definitivni: 0 (NETOČNO) i 1 (ISTINA). Samo ključne riječi IS NULL i IS NOT NULL vraćaju definitivan odgovor kada je uključen NULL.

Pitanja i odgovori

Nula je broj, a prazan niz je tekst, pa oba odgovaraju testovima jednakosti. NULL znači da uopće nije unesena nikakva vrijednost, zbog čega odgovara samo na IS NULL i IS NOT NULL.

IFNULL(stupac, 'N/A') vraća zamjenu kad god je stupac NULL. COALESCE(a, b, c) vraća prvi argument koji nije NULL. Oba su korisna unutar MySQL Funkcije i izvješća.

Ne. MySQL Automatski primjenjuje NOT NULL na svaki stupac primarnog ključa, jer ključ koji identificira redak ne smije nedostajati. UNIQUE indeks je drugačiji i dopušta više NULL vrijednosti.

Obično, da. AI asistenti unutar alata kao što su MySQL Radna tezga pretvorite „članove bez telefonskog broja“ u klauzulu WHERE IS NULL. Revpogledajte filter, jer test jednakosti s NULL-om tiho ne vraća ništa.

Često, da. Alati za pregled umjetne inteligencije označavaju greške kao što su = NULL usporedbe, a SELECT koji usrednjava stupac koji sadrži NULL i NOT IN liste koje sadrže NULL. Konačna procjena pripada osobi koja poznaje podatke.

Sažmite ovu objavu uz: