MySQL IS NULL & IS NOT NULL Οδηγός με ΠΑΡΑΔΕΙΓΜΑΤΑ

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

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

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

Με απλά λόγια, το 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 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

Ας μετρήσουμε όλα τα μέλη που έχουν ενημερώσει τον αριθμό επικοινωνίας τους

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 Ο πάγκος εργασίας δίνει το ακόλουθο σφάλμα-

NOT NULL Τιμές

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 email
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.