Οι νέοι χρήστες στον κόσμο των βάσεων δεδομένων συγχέονται συχνά από μια ειδική αξία που αφορά ειδικά το πεδίο - την τιμή NULL. Αυτή η τιμή μπορεί να βρεθεί σε ένα πεδίο που περιέχει οποιοδήποτε τύπο δεδομένων και έχει πολύ ιδιαίτερη σημασία στο πλαίσιο μιας σχεσιακής βάσης δεδομένων. Είναι ίσως καλύτερο να αρχίσουμε τη συζήτησή μας για το NULL με λίγα λόγια για το τι είναι NULL δεν :
- Το NULL δεν είναι ο αριθμός μηδέν.
- Το NULL δεν είναι η τιμή κενής συμβολοσειράς ("").
Αντίθετα, το NULL είναι η τιμή που χρησιμοποιείται για να αντιπροσωπεύει ένα άγνωστο κομμάτι δεδομένων. Συχνά, οι προγραμματιστές βάσης δεδομένων θα χρησιμοποιήσουν τη φράση "τιμή NULL", αλλά αυτό είναι λανθασμένο. Θυμηθείτε: ένα NULL είναι μια άγνωστη τιμή στην οποία το πεδίο εμφανίζεται κενό.
NULL στον πραγματικό κόσμο
Ας ρίξουμε μια ματιά σε ένα απλό παράδειγμα: ένα τραπέζι που περιέχει το απόθεμα για μια βάση φρούτων. Ας υποθέσουμε ότι το απόθεμά μας περιέχει 10 μήλα και τρία πορτοκάλια. Επίσης διαθέτουμε αποθέματα δαμάσκηνων, αλλά οι πληροφορίες αποθέματός μας είναι ελλιπείς και δεν γνωρίζουμε πόσα (αν υπάρχουν) δαμάσκηνα βρίσκονται σε απόθεμα. Χρησιμοποιώντας την τιμή NULL, θα έχουμε τον πίνακα αποθέματος που φαίνεται στον παρακάτω πίνακα.
Καταγραφή αποθέματος φρούτων
InventoryID | Είδος | Ποσότητα |
1 | Μήλα | 10 |
2 | Πορτοκάλια | 3 |
3 | Δαμάσκηνα | ΜΗΔΕΝΙΚΟ |
Θα ήταν σαφώς λανθασμένο να συμπεριλάβουμε μια ποσότητα 0 για το αρχείο δαμάσκηνων, διότι αυτό θα σήμαινε ότι είχαμε όχι δαμάσκηνα στο απόθεμα. Αντίθετα, ίσως έχουμε μερικά δαμάσκηνα, αλλά δεν είμαστε σίγουροι. Ένας πίνακας μπορεί να σχεδιαστεί είτε για να επιτρέψει τις τιμές NULL είτε όχι. Εδώ είναι ένα παράδειγμα SQL που δημιουργεί έναν πίνακα Αποθέματος που επιτρέπει κάποιες NULLs: SQL> CREATE INVENTORY ΠΙΝΑΚΑ (InventoryID INT NOT NULL, Στοιχείο VARCHAR (20) NOT NULL, Ποσότητα INT). Ο πίνακας αποθέματος εδώ δεν επιτρέπει τιμές NULL για το InventoryID και το Είδος στήλες, αλλά τους επιτρέπει για το Ποσότητα στήλη. Ενώ επιτρέποντας μια τιμή NULL είναι απολύτως ωραία, οι τιμές NULL μπορούν να προκαλέσουν προβλήματα επειδή οποιαδήποτε σύγκριση των τιμών στις οποίες ένα είναι NULL οδηγεί πάντα σε NULL. Για να ελέγξετε αν ο πίνακας σας περιέχει τιμές NULL, χρησιμοποιήστε τον IS NULL ή IS NOT NULL τελεστή. Ακολουθεί ένα παράδειγμα του IS NULL: SQL> SELECT INVENTORYID, ΣΗΜΕΙΟ, ΠΟΣΟΤΗΤΑ ΑΠΟ ΤΟ ΑΠΟΘΕΜΑΤΙΚΟ, ΟΠΟΥ Η ΠΟΣΟΤΗΤΑ ΔΕΝ ΕΙΝΑΙ ΝΑΙ. Δεδομένου του παραδείγματος μας εδώ, αυτό θα επέστρεφε: Η εργασία με τις τιμές NULL παράγει συχνά αποτελέσματα NULL, ανάλογα με τη λειτουργία SQL. Για παράδειγμα, υποθέτοντας ότι το Α είναι NULL: Αριθμητικοί χειριστές Σύγκριση φορέων Αυτά είναι μόνο μερικά παραδείγματα χειριστών που θα το κάνουν πάντα επιστρέφει NULL αν ένας τελεστής είναι NULL. Πολύ πιο περίπλοκα ερωτήματα υπάρχουν και όλα είναι περίπλοκα από τις τιμές NULL. Το σημείο αιχμής είναι ότι, εάν επιτρέπετε τις τιμές NULL στη βάση δεδομένων σας, κατανοήστε τις συνέπειες και σχεδιάστε γι 'αυτές. Αυτό είναι NULL με λίγα λόγια!Σε NULL ή NOT NULL;
InventoryID Είδος Ποσότητα 3 Δαμάσκηνα
Λειτουργεί σε NULLs