MySQL IS NULL & IS NOT NULL με παραδείγματα

⚡ Έξυπνη Σύνοψη

MySQL Οι λέξεις-κλειδιά IS NULL και IS NOT NULL είναι λέξεις-κλειδιά σύγκρισης που ελέγχουν εάν μια στήλη περιέχει μια τιμή που λείπει. Η συνάρτηση NULL σηματοδοτεί τα δεδομένα που λείπουν, συμπεριφέρεται διαφορετικά από το μηδέν ή μια κενή συμβολοσειρά και απαιτεί ειδικούς τελεστές για αξιόπιστο φιλτράρισμα.

  • 🧩 Βασικός Ορισμός: Το NULL είναι ένα σύμβολο κράτησης θέσης για δεδομένα που δεν υπάρχουν. Δεν είναι τύπος δεδομένων και δεν είναι ο αριθμός μηδέν.
  • Αριθμητική Συμπεριφορά: Οποιαδήποτε αριθμητική παράσταση που περιλαμβάνει NULL επιστρέφει NULL, επομένως η συνάρτηση 69 + NULL αποτιμάται σε NULL αντί για 69.
  • 📊 Συνολική επίδραση: Η συνάρτηση COUNT(στήλη) και άλλες συναρτήσεις συγκεντρωτικών αποτελεσμάτων παραλείπουν τις γραμμές NULL, ενώ η συνάρτηση COUNT(*) εξακολουθεί να μετράει κάθε γραμμή στον πίνακα.
  • 🚫 Περιορισμός NOT NULL: Η δήλωση μιας στήλης ως NOT NULL απορρίπτει οποιαδήποτε εισαγωγή που παραλείπει μια τιμή, γεγονός που προστατεύει τα υποχρεωτικά πεδία, όπως τα αναγνωριστικά.
  • 🔍 Σωστό φιλτράρισμα: Οι τιμές IS NULL και IS NOT NULL είναι οι μόνες αξιόπιστες δοκιμές, επειδή ο τελεστής ισότητας δεν ταιριάζει ποτέ με μια τιμή NULL.
  • Τρισδιάστατη Λογική: Οι συγκρίσεις με το NULL επιστρέφουν UNKNOWN, επομένως το SELECT NULL = NULL παράγει NULL αντί για TRUE.

MySQL ΕΙΝΑΙ ΜΗΔΕΝΙΚΟ και ΔΕΝ ΕΙΝΑΙ ΜΗΔΕΝΙΚΟ

Στην SQL, η τιμή NULL είναι ταυτόχρονα τιμή και λέξη-κλειδί. Ας εξετάσουμε πρώτα την τιμή NULL.

MySQL ΕΙΝΑΙ ΜΗΧΑΝΟ & ΔΕΝ ΕΙΝΑΙ ΜΗΧΑΝΟ

Τι είναι το NULL στο MySQL?

Με απλά λόγια, Το NULL είναι ένα σύμβολο κράτησης θέσης για δεδομένα που δεν υπάρχουνΚατά την εκτέλεση εργασιών εισαγωγής σε πίνακες, θα υπάρξουν φορές που ορισμένες τιμές πεδίων δεν θα είναι διαθέσιμες.

Προκειμένου να ικανοποιηθούν οι απαιτήσεις των αληθινών σχεσιακών συστημάτων διαχείρισης βάσεων δεδομένων, MySQL Η τιμή NULL χρησιμοποιείται ως σύμβολο κράτησης θέσης για τις τιμές που δεν έχουν υποβληθεί. Το παρακάτω στιγμιότυπο οθόνης δείχνει πώς εμφανίζονται οι τιμές NULL σε έναν πίνακα βάσης δεδομένων.

Μηδενικό ως τιμή

Παρατηρήστε ότι τα κενά κελιά επισημαίνονται με NULL, όχι με κενό κείμενο και όχι με μηδέν. Πριν προχωρήσουμε, εξετάστε ορισμένα από τα βασικά του NULL.

  • Το NULL δεν είναι τύπος δεδομένων – αυτό σημαίνει ότι δεν αναγνωρίζεται ως «int», «date» ή οποιοσδήποτε άλλος καθορισμένος τύπος δεδομένων.
  • Αριθμητικές πράξεις συμμετοχή Τιμή NULL πάντοτε επιστροφή NULL, για παράδειγμα, 69 + NULL = NULL.
  • γέφυρα αθροιστικές συναρτήσεις αγνοήστε τις γραμμές που περιέχουν τιμές NULLΗ μόνη εξαίρεση είναι η COUNT(*), η οποία μετράει κάθε γραμμή ανεξάρτητα από το NULL.

Πώς οι συναρτήσεις συνάθροισης αντιμετωπίζουν το NULL

Αυτός ο κανόνας αλλάζει τις απαντήσεις που επιστρέφουν τα ερωτήματα αναφοράς, οπότε ας το αποδείξουμε. Ξεκινήστε με τα τρέχοντα περιεχόμενα του πίνακα μελών.

SELECT * FROM `members`;

Η εκτέλεση του παραπάνω σεναρίου μας δίνει τα ακόλουθα αποτελέσματα.

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

Η επισημασμένη στήλη contact_ number περιέχει συνολικά εννέα γραμμές, αλλά δύο από αυτές είναι NULL. Ας μετρήσουμε όλα τα μέλη που έχουν ενημερώσει τον αριθμό επικοινωνίας τους.

SELECT COUNT(contact_number) FROM `members`;

Η εκτέλεση του παραπάνω ερωτήματος μας δίνει τα ακόλουθα αποτελέσματα.

COUNT(contact_number)
7

Σημείωση: Η απάντηση είναι 7 και όχι 9, επειδή οι δύο τιμές NULL δεν συμπεριλήφθηκαν. Η εκτέλεση της συνάρτησης COUNT(*) στον ίδιο πίνακα θα επέστρεφε 9, αφού η συνάρτηση COUNT(*) μετράει γραμμές αντί για τιμές.

NOT NULL Τιμές

Μια ασφαλέστερη προσέγγιση είναι να σταματήσετε εντελώς την εισαγωγή υποχρεωτικών στηλών από την τιμή NULL. Αυτή είναι η λειτουργία του περιορισμού NOT NULL.

Τι ΔΕΝ είναι Operaβραχώδης κορυφή?

Ο λογικός τελεστής NOT χρησιμοποιείται για τον έλεγχο των δυαδικών συνθηκών και επιστρέφει true εάν η συνθήκη είναι ψευδής. Ο τελεστής NOT επιστρέφει false εάν η υπό έλεγχο συνθήκη είναι αληθής.

Κατάσταση ΔΕΝ Operator Αποτέλεσμα
Οι αληθινοί Ψευδής
Ψευδής Οι αληθινοί

Γιατί να χρησιμοποιήσω NOT NULL;

Θα υπάρξουν περιπτώσεις όπου θα πρέπει να εκτελέσουμε υπολογισμούς σε ένα σύνολο αποτελεσμάτων ερωτήματος και να επιστρέψουμε τις τιμές. Η εκτέλεση οποιασδήποτε αριθμητικής πράξης σε μια στήλη που περιέχει μια τιμή NULL επιστρέφει ένα αποτέλεσμα NULL. Για να αποφύγουμε τέτοιες καταστάσεις, μπορούμε να χρησιμοποιήσουμε την ρήτρα NOT NULL για να περιορίσουμε τα αποτελέσματα στα οποία λειτουργούν τα δεδομένα μας.

Δημιουργία πίνακα με στήλη NOT NULL

Ας υποθέσουμε ότι θέλουμε να δημιουργήσουμε έναν πίνακα με συγκεκριμένα πεδία στα οποία θα πρέπει πάντα να παρέχονται τιμές κατά την εισαγωγή νέων γραμμών. Μπορούμε να χρησιμοποιήσουμε την ρήτρα NOT NULL σε ένα δεδομένο πεδίο κατά τη δημιουργία του πίνακα.

Το παράδειγμα που φαίνεται παρακάτω δημιουργεί έναν νέο πίνακα που περιέχει δεδομένα υπαλλήλου. Ο αριθμός του υπαλλήλου θα πρέπει πάντα να παρέχεται.

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

Ας προσπαθήσουμε τώρα να εισαγάγουμε μια νέα εγγραφή χωρίς να καθορίσουμε τον αριθμό υπαλλήλου και ας δούμε τι θα συμβεί.

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

Εκτέλεση του παραπάνω σεναρίου στο MySQL Πάγκος εργασίας δίνει το ακόλουθο σφάλμα, επειδή η υποχρεωτική στήλη παραλείφθηκε.

NOT NULL Τιμές

Λέξεις-κλειδιά IS NULL και IS NULL

Ο περιορισμός αποκλείει νέες τιμές NULL. Για να εργαστείτε με τιμές NULL που υπάρχουν ήδη, η λέξη-κλειδί NULL χρησιμοποιείται ως λέξη-κλειδί. Η σύνταξη έχει ως εξής.

column_name IS NULL
column_name IS NOT NULL

ΕΔΩ

  • “ΕΙΝΑΙ ΜΗΧΑΝΟ” είναι η λέξη-κλειδί που εκτελεί τη σύγκριση Boole. Επιστρέφει true εάν η παρεχόμενη τιμή είναι NULL και false εάν η παρεχόμενη τιμή δεν είναι NULL.
  • «ΔΕΝ ΕΙΝΑΙ ΜΗΔΕΝΙΚΟ» είναι η λέξη-κλειδί που εκτελεί την αντίστροφη σύγκριση. Επιστρέφει true εάν η παρεχόμενη τιμή δεν είναι NULL και false εάν η παρεχόμενη τιμή είναι NULL.

Ας δούμε ένα πρακτικό παράδειγμα που χρησιμοποιεί τη λέξη-κλειδί IS NOT NULL για να εξαλείψει όλες τις γραμμές που περιέχουν τιμές NULL σε μια στήλη.

Συνεχίζοντας με τον παραπάνω πίνακα μελών, ας υποθέσουμε ότι χρειαζόμαστε τα στοιχεία των μελών των οποίων ο αριθμός επικοινωνίας δεν είναι NULL. Μπορούμε να εκτελέσουμε ένα ερώτημα όπως αυτό.

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

Η εκτέλεση του παραπάνω ερωτήματος επιστρέφει μόνο τις επτά εγγραφές όπου υπάρχει ο αριθμός επαφής, κάτι που ταιριάζει με το αποτέλεσμα COUNT από την προηγούμενη ενότητα.

Τώρα ας υποθέσουμε ότι θέλουμε το αντίθετο: τις εγγραφές μελών όπου λείπει ο αριθμός επικοινωνίας. Μπορούμε να χρησιμοποιήσουμε το ακόλουθο ερώτημα.

SELECT * FROM `members` WHERE contact_number IS NULL;

Η εκτέλεση του παραπάνω ερωτήματος δίνει τις δύο εγγραφές μελών των οποίων ο αριθμός επικοινωνίας είναι 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

Προειδοποίηση: Μια συνθήκη όπως WHERE contact_number = NULL επιστρέφει ένα κενό σύνολο αποτελεσμάτων, παρόλο που υπάρχουν τιμές NULL. Ο τελεστής ισότητας δεν μπορεί ποτέ να αντιστοιχίσει την τιμή NULL, επομένως η τιμή IS NULL είναι η μόνη σωστή δοκιμή.

Σύγκριση τιμών NULL με λογική τριών τιμών

Λογική τριών αξιών – η εκτέλεση Boolean πράξεων σε συνθήκες που περιλαμβάνουν NULL μπορεί να επιστρέψει «Άγνωστο», «Σωστό» ή «Λάθος».

Χρησιμοποιώντας τη λέξη-κλειδί «IS NULL» κατά την εκτέλεση πράξεων σύγκρισης που αφορούν NULL Επιστροφές ναι or ψευδήςΗ χρήση των άλλων τελεστών σύγκρισης επιστρέφει «Άγνωστο» (NULL)Ο παρακάτω πίνακας συγκρίνει κάθε παράσταση δίπλα-δίπλα.

Έκφραση Αποτέλεσμα Νόημα
ΕΠΙΛΟΓΗ 5 = 5; 1 ΑΛΗΘΙΝΗ
ΕΠΙΛΕΞΤΕ NULL = NULL; Τιμή NULL ΑΓΝΩΣΤΟΣ
ΕΠΙΛΟΓΗ 5 > 5; 0 ΨΕΥΔΗΣ
ΕΠΙΛΕΞΤΕ ΜΗΔΕΝΙΚΟ > ΜΗΔΕΝΙΚΟ; Τιμή NULL ΑΓΝΩΣΤΟΣ
Η ΕΠΙΛΟΓΗ 5 ΕΙΝΑΙ ΜΗΔΕΝΙΚΗ; 0 ΨΕΥΔΗΣ
Η ΕΠΙΛΟΓΗ NULL ΕΙΝΑΙ NULL; 1 ΑΛΗΘΙΝΗ

Συγκρίνετε τον αριθμό πέντε με τον εαυτό του και, στη συνέχεια, επαναλάβετε τη λειτουργία με NULL.

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

Το πρώτο αποτέλεσμα είναι 1 (TRUE). Το δεύτερο είναι NULL, επειδή MySQL δεν μπορεί να δηλώσει ότι μια άγνωστη τιμή ισούται με μια άλλη άγνωστη τιμή. Τώρα χρησιμοποιήστε τη λέξη-κλειδί IS NULL στις ίδιες τιμές.

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

Αυτή τη φορά οι απαντήσεις είναι οριστικές: 0 (ΛΑΘΟΣ) και 1 (ΑΛΗΘΗΣ). Μόνο οι λέξεις-κλειδιά IS NULL και IS NOT NULL επιστρέφουν οριστική απάντηση όταν εμπλέκεται η τιμή NULL.

Συχνές Ερωτήσεις

Το μηδέν είναι αριθμός και μια κενή συμβολοσειρά είναι κείμενο, επομένως και οι δύο τιμές ελέγχουν την ισότητα αντιστοίχισης. Η τιμή NULL σημαίνει ότι δεν δόθηκε καμία τιμή, γι' αυτό και αποκρίνεται μόνο στις τιμές IS NULL και IS NOT NULL.

Η συνάρτηση IFNULL(στήλη, 'Δ/Υ') επιστρέφει την υποκατάστατη κάθε φορά που η στήλη είναι NULL. Η συνάρτηση COALESCE(a, b, c) επιστρέφει το πρώτο όρισμα που δεν είναι NULL. Και τα δύο είναι χρήσιμα μέσα. MySQL λειτουργίες και εκθέσεις.

Όχι. MySQL Η τιμή NOT NULL εφαρμόζεται αυτόματα σε κάθε στήλη πρωτεύοντος κλειδιού, επειδή ένα κλειδί που προσδιορίζει μια γραμμή δεν μπορεί να λείπει. Ένας ΜΟΝΑΔΙΚΟΣ δείκτης είναι διαφορετικός και επιτρέπει πολλαπλές τιμές NULL.

Συνήθως, ναι. Βοηθοί τεχνητής νοημοσύνης μέσα σε εργαλεία όπως MySQL Πάγκος εργασίας Μετατρέψτε τη φράση "μέλη χωρίς αριθμό τηλεφώνου" σε μια ρήτρα στήλης WHERE IS NULL. RevΔείτε το φίλτρο, επειδή μια δοκιμή ισότητας έναντι του NULL δεν επιστρέφει σιωπηλά τίποτα.

Συχνά, ναι. Τα εργαλεία αξιολόγησης τεχνητής νοημοσύνης επισημαίνουν σφάλματα όπως συγκρίσεις = NULL, ένα SELECT που υπολογίζει τον μέσο όρο μιας στήλης που περιέχει NULL και ΔΕΝ βρίσκεται σε λίστες που περιέχουν NULL. Η τελική κρίση ανήκει στο άτομο που γνωρίζει τα δεδομένα.

Συνοψίστε αυτήν την ανάρτηση με: