Skip to main content

Ορισμός και σωστή χρήση των τιμών NULL

Access 2003 Expert - Πλαίσια ελέγχου (Ενδέχεται 2024)

Access 2003 Expert - Πλαίσια ελέγχου (Ενδέχεται 2024)
Anonim

Οι νέοι χρήστες στον κόσμο των βάσεων δεδομένων συγχέονται συχνά από μια ειδική αξία που αφορά ειδικά το πεδίο - την τιμή 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:

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

    • A + B = NULL
    • Α - Β = NULL
    • Α * Β = NULL
    • A / B = NULL

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

    • Α = Β = NULL
    • Α! = Β = NULL
    • A> B = NULL
    • Α! <Β = NULL

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

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