Η MySQL ΕΙΝΑΙ ΜΗΝ & ΔΕΝ ΕΙΝΑΙ NULL Tutorial με ΠΑΡΑΔΕΙΓΜΑΤΑ

Πίνακας περιεχομένων:

Anonim

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

Μηδενική ως αξία

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

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

Ας δούμε τώρα μερικά από τα βασικά για το NULL προτού προχωρήσουμε περαιτέρω στη συζήτηση.

  • Το NULL δεν είναι τύπος δεδομένων - αυτό σημαίνει ότι δεν αναγνωρίζεται ως "int", "ημερομηνία" ή οποιοσδήποτε άλλος καθορισμένος τύπος δεδομένων.
  • Οι αριθμητικές πράξεις που περιλαμβάνουν NULL επιστρέφουν πάντα NULL για παράδειγμα, 69 + NULL = 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 This email address is being protected from spambots. You need JavaScript enabled to view it.
2 Janet Smith Jones Female 23-06-1980 Melrose 123 NULL NULL This email address is being protected from spambots. You need JavaScript enabled to view it.
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 This email address is being protected from spambots. You need JavaScript enabled to view it.
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 δεν έχουν συμπεριληφθεί

Τι δεν είναι;

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

Κατάσταση

ΟΧΙ Αποτέλεσμα χειριστή

Αληθής

Ψευδής

Ψευδής

Αληθής

Γιατί να χρησιμοποιήσετε ΟΧΙ null;

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

ΟΧΙ 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

ΕΔΩ

  • Το "IS NULL" είναι η λέξη-κλειδί που εκτελεί τη σύγκριση Boolean. Επιστρέφει true εάν η παρεχόμενη τιμή είναι NULL και false εάν η παρεχόμενη τιμή δεν είναι NULL.
  • Το "NOT NULL" είναι η λέξη-κλειδί που εκτελεί τη Boolean σύγκριση. Επιστρέφει 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 This email address is being protected from spambots. You need JavaScript enabled to view it.
3 Robert Phil Male 12-07-1989 3rd Street 34 NULL 12345 This email address is being protected from spambots. You need JavaScript enabled to view it.
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

Σύγκριση μηδενικής τιμής s

Λογική τριών τιμών - η εκτέλεση Boolean λειτουργιών σε συνθήκες που περιλαμβάνουν NULL μπορεί είτε να επιστρέψει "Άγνωστο", "True" είτε "False".

Για παράδειγμα, η χρήση της λέξης-κλειδιού "IS NULL" όταν πραγματοποιείτε εργασίες σύγκρισης που περιλαμβάνουν NULL μπορεί είτε να επιστρέψει αληθής είτε ψευδής . Χρησιμοποιώντας άλλους χειριστές σύγκρισης επιστρέφει το "Άγνωστο" (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 είναι ψευδής και ψευδής εάν η τιμή Boolean είναι αληθής.
  • Ο όρος NOT NULL χρησιμοποιείται για την εξάλειψη των τιμών NULL από ένα σύνολο αποτελεσμάτων
  • Η εκτέλεση αριθμητικών πράξεων σε τιμές NULL επιστρέφει πάντα αποτελέσματα NULL.
  • Οι τελεστές σύγκρισης όπως [, =, κ.λπ.] δεν μπορούν να χρησιμοποιηθούν για τη σύγκριση τιμών NULL.