Τι πρέπει να γνωρίζετε για τις τιμές NULL

Κατανοήστε τη χρήση των NULL για την αποφυγή προβλημάτων βάσης δεδομένων

Οι νέοι χρήστες στον κόσμο των βάσεων δεδομένων συγχέονται συχνά από μια ειδική αξία που αφορά ειδικά το πεδίο - την τιμή NULL. Αυτή η τιμή μπορεί να βρεθεί σε ένα πεδίο που περιέχει οποιοδήποτε τύπο δεδομένων και έχει πολύ ιδιαίτερη σημασία στο πλαίσιο μιας σχεσιακής βάσης δεδομένων. Είναι ίσως καλύτερο να αρχίσουμε τη συζήτησή μας για το NULL με μερικά λόγια για το τι δεν είναι το NULL:

Αντίθετα, το NULL είναι η τιμή που χρησιμοποιείται για να αντιπροσωπεύει ένα άγνωστο κομμάτι δεδομένων. Συχνά, οι προγραμματιστές βάσης δεδομένων θα χρησιμοποιήσουν τη φράση "τιμή NULL", αλλά αυτό είναι λανθασμένο. Θυμηθείτε: ένα NULL είναι μια άγνωστη τιμή στην οποία το πεδίο εμφανίζεται κενό.

NULL στον πραγματικό κόσμο

Ας ρίξουμε μια ματιά σε ένα απλό παράδειγμα: ένα τραπέζι που περιέχει το απόθεμα για μια βάση φρούτων. Ας υποθέσουμε ότι το απόθεμά μας περιέχει 10 μήλα και τρία πορτοκάλια. Επίσης διαθέτουμε αποθέματα δαμάσκηνων, αλλά οι πληροφορίες αποθέματός μας είναι ελλιπείς και δεν γνωρίζουμε πόσα (αν υπάρχουν) δαμάσκηνα βρίσκονται σε απόθεμα. Χρησιμοποιώντας την τιμή NULL, θα έχουμε τον πίνακα αποθέματος που φαίνεται στον παρακάτω πίνακα.

Καταγραφή αποθέματος φρούτων

InventoryID Είδος Ποσότητα
1 Μήλα 10
2 Πορτοκάλια 3
3 Δαμάσκηνα ΜΗΔΕΝΙΚΟ


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

Σε NULL ή NOT NULL;

Ένας πίνακας μπορεί να σχεδιαστεί είτε για να επιτρέψει τις τιμές 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, ΣΗΜΕΙΟ, ΠΟΣΟΤΗΤΑ ΑΠΟ ΤΟ ΑΠΟΘΕΜΑΤΙΚΟ, ΟΠΟΥ Η ΠΟΣΟΤΗΤΑ ΔΕΝ ΕΙΝΑΙ ΝΑΙ.

Δεδομένου του παραδείγματος μας εδώ, αυτό θα επέστρεφε:

InventoryID Είδος Ποσότητα
3 Δαμάσκηνα

Λειτουργεί σε NULLs

Η εργασία με τις τιμές NULL παράγει συχνά αποτελέσματα NULL, ανάλογα με τη λειτουργία SQL . Για παράδειγμα, υποθέτοντας ότι το Α είναι NULL:

Αριθμητικοί χειριστές

Σύγκριση φορέων

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

Αυτό είναι NULL με λίγα λόγια!