MySQL IS NULL & IS NOT NULL Οδηγός με ΠΑΡΑΔΕΙΓΜΑΤΑ
Στην SQL, το Null είναι ταυτόχρονα τιμή και λέξη-κλειδί. Ας δούμε πρώτα την τιμή NULL –
Μηδενικό ως τιμή
Με απλά λόγια, το NULL είναι απλώς ένας κάτοχος θέσης για δεδομένα που δεν υπάρχουν. Όταν εκτελείτε λειτουργίες εισαγωγής σε πίνακες, θα είναι στιγμές που ορισμένες τιμές πεδίων δεν θα είναι διαθέσιμες.
Προκειμένου να ικανοποιηθούν οι απαιτήσεις των αληθινών σχεσιακών συστημάτων διαχείρισης βάσεων δεδομένων, MySQL χρησιμοποιεί το NULL ως κάτοχο θέσης για τις τιμές που δεν έχουν υποβληθεί. Το παρακάτω στιγμιότυπο οθόνης δείχνει πώς φαίνονται οι τιμές NULL στη βάση δεδομένων.
Ας δούμε τώρα μερικά από τα βασικά για το NULL πριν προχωρήσουμε περαιτέρω στη συζήτηση.
- Το NULL δεν είναι τύπος δεδομένων – αυτό σημαίνει ότι δεν αναγνωρίζεται ως «int», «date» ή οποιοσδήποτε άλλος καθορισμένος τύπος δεδομένων.
- Αριθμητικές πράξεις συμμετοχή Τιμή NULL πάντοτε επιστροφή NULL για παράδειγμα, 69 + NULL = NULL.
- Όλα αθροιστικές συναρτήσεις επηρεάζουν μόνο σειρές που δεν έχουν NULL τιμές.
Ας δείξουμε τώρα πώς η συνάρτηση count αντιμετωπίζει τις μηδενικές τιμές. Ας δούμε τα τρέχοντα περιεχόμενα του πίνακα μελών-
SELECT * FROM `members`;
Η εκτέλεση του παραπάνω σεναρίου μας δίνει τα ακόλουθα αποτελέσματα
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 |
Ας μετρήσουμε όλα τα μέλη που έχουν ενημερώσει τον αριθμό επικοινωνίας τους
SELECT COUNT(contact_number) FROM `members`;
Η εκτέλεση του παραπάνω ερωτήματος μας δίνει τα ακόλουθα αποτελέσματα.
COUNT(contact_number) |
---|
7 |
Σημείωση: Οι τιμές που είναι NULL δεν έχουν συμπεριληφθεί
Τι ΔΕΝ είναι;
Ο λογικός τελεστής NOT χρησιμοποιείται για τον έλεγχο για συνθήκες Boolean και επιστρέφει true εάν η συνθήκη είναι false. Ο τελεστής NOT επιστρέφει false εάν η συνθήκη που δοκιμάστηκε είναι αληθής
Κατάσταση | ΔΕΝ Operator Αποτέλεσμα |
---|---|
Οι αληθινοί | Ψευδής |
Ψευδής | Οι αληθινοί |
Γιατί να χρησιμοποιήσετε το NOT 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 Ο πάγκος εργασίας δίνει το ακόλουθο σφάλμα-
NULL Λέξεις-κλειδιά
Το NULL μπορεί επίσης να χρησιμοποιηθεί ως λέξη-κλειδί κατά την εκτέλεση Boolean πράξεων σε τιμές που περιλαμβάνουν NULL. Η λέξη-κλειδί «IS/NOT» χρησιμοποιείται σε συνδυασμό με τη λέξη NULL για τέτοιους σκοπούς. Η βασική σύνταξη όταν χρησιμοποιείται το null ως λέξη-κλειδί είναι η εξής
`comlumn_name' IS NULL `comlumn_name' NOT NULL
ΕΔΩ
- «ΕΙΝΑΙ ΜΗΝΥΤΟ είναι η λέξη-κλειδί που εκτελεί τη σύγκριση Boole. Επιστρέφει true εάν η παρεχόμενη τιμή είναι NULL και false εάν η παρεχόμενη τιμή δεν είναι NULL.
- "ΟΧΙ ΚΕΝΟ"είναι η λέξη-κλειδί που εκτελεί τη σύγκριση Boole. Επιστρέφει true εάν η παρεχόμενη τιμή δεν είναι NULL και false εάν η παρεχόμενη τιμή είναι null.
Ας δούμε τώρα ένα πρακτικό παράδειγμα που χρησιμοποιεί τη λέξη-κλειδί NOT NULL για την εξάλειψη όλων των τιμών στηλών που έχουν μηδενικές τιμές.
Συνεχίζοντας με το παραπάνω παράδειγμα, ας υποθέσουμε ότι χρειαζόμαστε στοιχεία μελών των οποίων ο αριθμός επικοινωνίας δεν είναι μηδενικός. Μπορούμε να εκτελέσουμε ένα ερώτημα όπως
SELECT * FROM `members` WHERE contact_number IS NOT NULL;
Η εκτέλεση του παραπάνω ερωτήματος δίνει μόνο εγγραφές όπου ο αριθμός επικοινωνίας δεν είναι μηδενικός.
Ας υποθέσουμε ότι θέλουμε εγγραφές μελών όπου ο αριθμός επικοινωνίας είναι μηδενικός. Μπορούμε να χρησιμοποιήσουμε το ακόλουθο ερώτημα
SELECT * FROM `members` WHERE contact_number IS NULL;
Η εκτέλεση του παραπάνω ερωτήματος δίνει στοιχεία μέλους των οποίων ο αριθμός επικοινωνίας είναι 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 |
Σύγκριση μηδενικών τιμών
Λογική τριών αξιών – η εκτέλεση λειτουργιών Boolean σε συνθήκες που περιλαμβάνουν NULL μπορεί είτε να επιστρέψει «Άγνωστο», «Σωστό» ή «Λάθος».
Για παράδειγμα, χρησιμοποιώντας τη λέξη-κλειδί "IS NULL". κατά την εκτέλεση πράξεων σύγκρισης που αφορούν NULL μπορεί είτε να επιστρέψει αληθής or ψευδής. Χρησιμοποιώντας άλλους τελεστές σύγκρισης επιστρέφει "Άγνωστο" (NULL).
Ας υποθέσουμε ότι συγκρίνετε τον αριθμό πέντε με το 5
SELECT 5 =5;
Το αποτέλεσμα του ερωτήματος είναι 1 που σημαίνει ΑΛΗΘΕΙΑ
5 =5 |
---|
1 |
Ας κάνουμε την ίδια λειτουργία με το NULL
SELECT NULL = NULL;
NULL = NULL |
---|
NULL |
Ας δούμε ένα άλλο παράδειγμα
SELECT 5 > 5;
5 > 5 |
---|
0 |
Το αποτέλεσμα του ερωτήματος είναι 0 που σημαίνει FALSE
Ας δούμε το ίδιο παράδειγμα χρησιμοποιώντας NULL
SELECT NULL > NULL;
NULL > NULL |
---|
NULL |
Ας χρησιμοποιήσουμε τη λέξη-κλειδί IS NULL
SELECT 5 IS NULL;
5 IS NULL |
---|
0 |
Το αποτέλεσμα του ερωτήματος είναι 0 που είναι FALSE
SELECT NULL IS NULL;
NULL IS NULL |
---|
1 |
Το αποτέλεσμα του ερωτήματος είναι 1 που είναι ΑΛΗΘΗΣ
Σύνοψη
- Το NULL είναι μια θήκη τιμής για προαιρετικά πεδία πίνακα.
- MySQL αντιμετωπίζει την τιμή NULL διαφορετικά από άλλους τύπους δεδομένων. Οι τιμές NULL όταν χρησιμοποιούνται σε μια συνθήκη αξιολογούνται στην ψευδή τιμή Boolean.
- Η λογική λειτουργία NOT χρησιμοποιείται για τον έλεγχο των Boolean τιμών και αξιολογείται ως true εάν η Boolean τιμή είναι false και false εάν η Boolean τιμή είναι true.
- Ο όρος NOT NULL χρησιμοποιείται για την εξάλειψη των τιμών NULL από ένα σύνολο αποτελεσμάτων
- Η εκτέλεση αριθμητικών πράξεων σε τιμές NULL επιστρέφει πάντα αποτελέσματα NULL.
- Οι τελεστές σύγκρισης όπως [, =, κ.λπ.] δεν μπορούν να χρησιμοποιηθούν για τη σύγκριση τιμών NULL.