SQLite Τύποι δεδομένων με Παράδειγμα: Int, Text, Numeric, Real, Blob

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

SQLite πληκτρολογείται λιγότερο. Δεν υπάρχουν τύποι δεδομένων, μπορείτε να αποθηκεύσετε οποιονδήποτε τύπο δεδομένων θέλετε σε οποιαδήποτε στήλη. Αυτό ονομάζεται δυναμικοί τύποι.

Σε στατικούς τύπους, όπως και σε άλλα συστήματα διαχείρισης βάσεων δεδομένων, εάν δηλώσατε μια στήλη με έναν ακέραιο τύπο δεδομένων, μπορείτε να εισαγάγετε μόνο τιμές ακέραιου τύπου δεδομένων. Ωστόσο, σε δυναμικούς τύπους όπως το in SQLite, ο τύπος της στήλης καθορίζεται από την τιμή που έχει εισαχθεί. Και μετά SQLite αποθηκεύει αυτή την τιμή ανάλογα με τον τύπο του.

SQLite Μαθήματα αποθήκευσης

In SQLite υπάρχουν διαφορετικές μέθοδοι αποθήκευσης ανάλογα με τον τύπο της τιμής, αυτές οι διαφορετικές μέθοδοι αποθήκευσης ονομάζονται κλάσεις αποθήκευσης σε SQLite.

Ακολουθούν οι κατηγορίες αποθήκευσης που είναι διαθέσιμες σε SQLite:

  • Τιμή NULL – αυτή η κλάση αποθήκευσης χρησιμοποιείται για την αποθήκευση οποιασδήποτε τιμής NULL.
  • ΑΚΕΡΑΙΟΣ ΑΡΙΘΜΟΣ – οποιαδήποτε αριθμητική τιμή αποθηκεύεται ως υπογεγραμμένη ακέραια τιμή (Μπορεί να περιέχει θετικές και αρνητικές ακέραιες τιμές). Οι τιμές INTEGER σε SQLite αποθηκεύονται σε 1, 2, 3, 4, 6 ή 8 byte αποθήκευσης ανάλογα με την τιμή του αριθμού.
  • ΠΡΑΓΜΑΤΙΚΌΣ – αυτή η κλάση αποθήκευσης χρησιμοποιείται για την αποθήκευση των τιμών κινητής υποδιαστολής και αποθηκεύονται σε χώρο αποθήκευσης 8 byte.
  • ΚΕΙΜΕΝΟ – αποθηκεύει συμβολοσειρές κειμένου. Υποστηρίζει επίσης διαφορετικές κωδικοποιήσεις όπως UTF-8, UTF-16 BE ή UTF-26LE.
  • Blob – χρησιμοποιείται για την αποθήκευση μεγάλων αρχείων, όπως εικόνες ή αρχεία κειμένου. Η τιμή αποθηκεύεται ως πίνακας byte όπως και η τιμή εισόδου.

SQLite Τύπος συγγένειας

Η συνάφεια τύπου είναι ο προτεινόμενος τύπος δεδομένων που αποθηκεύονται σε μια στήλη. Ωστόσο, μπορείτε ακόμα να αποθηκεύσετε οποιονδήποτε τύπο δεδομένων όπως θέλετε, αυτοί οι τύποι συνιστάται να μην απαιτούνται.

Αυτοί οι τύποι εισήχθησαν στο SQLite για μεγιστοποίηση της συμβατότητας μεταξύ SQLite και άλλες σύστημα διαχείρισης βάσης δεδομένων.

Οποιαδήποτε στήλη δηλώνεται σε ένα SQLite στη βάση δεδομένων εκχωρείται μια συνάφεια τύπου ανάλογα με τον τύπο δεδομένων που έχει δηλωθεί. Εδώ η ανύψωση του τύπου συγγένει SQLite:

  • ΚΕΙΜΕΝΟ.
  • ΑΡΙΘΜΗΤΙΚΟΣ.
  • ΑΚΕΡΑΙΟΣ ΑΡΙΘΜΟΣ.
  • ΠΡΑΓΜΑΤΙΚΟΣ.
  • ΑΜΟΡΦΗ ΜΑΖΑ.

Δείτε πώς SQLite καθορίζει τη συγγένεια της στήλης από τον δηλωμένο τύπο δεδομένων της:

  1. Η συγγένεια INTEGER εκχωρείται εάν ο δηλωμένος τύπος περιέχει το κορδόνι "INT".
  2. Η συνάφεια TEXT εκχωρείται, εάν η στήλη περιέχει στον τύπο δεδομένων της μία από τις ακόλουθες συμβολοσειρές "ΚΕΙΜΕΝΟ, ΑΠΑΝΘΡΑΚΩΝΩ, ή "CLOB". Για παράδειγμα, στον τύπο VARCHAR θα εκχωρηθεί η συνάφεια TEXT.
  3. Η συνάφεια BLOB εκχωρείται εάν η στήλη δεν έχει καθορισμένο τύπο ή ο τύπος δεδομένων είναι BLOB.
  4. Η ΠΡΑΓΜΑΤΙΚΗ συγγένεια εκχωρείται εάν ο τύπος περιέχει μία από τις ακόλουθες συμβολοσειρές "ΔΙΠΛΗ, ΠΡΑΓΜΑΤΙΚΌΣ, ή "FLOAT".
  5. Η συνάφεια NUMERIC εκχωρείται για οποιονδήποτε άλλο τύπο δεδομένων.

Υπάρχει επίσης ένας πίνακας στην ίδια σελίδα που δείχνει μερικά παραδείγματα για την αντιστοίχιση μεταξύ SQLite τύποι δεδομένων και οι συνάφειές τους που καθορίζονται από αυτούς τους κανόνες:

SQLite Τύπος συγγένειας
Χαρτογράφηση μεταξύ SQLite τύπους δεδομένων και συνάφειες

Παραδείγματα αποθήκευσης τύπων δεδομένων σε SQLite

Αποθήκευση αριθμού με SQLite ακέραιος αριθμός

Οποιαδήποτε στήλη τύπου δεδομένων περιέχει τη λέξη "INT", θα της εκχωρηθεί μια συνάφεια τύπου ΑΚΕΡΑΙΟΣ. Θα αποθηκευτεί σε μια κλάση αποθήκευσης INTEGER.

Όλοι οι ακόλουθοι τύποι δεδομένων εκχωρούνται ως συνάφεια τύπου INTEGER:

  • INT, ΑΚΡΑΙΟΣ, ΜΕΓΑΛΟΣ.
  • INT2, INT4, INT8.
  • TINYINT, SMALLINT, MEDIUM INT.

Συνάφεια τύπου INTEGER σε SQLite μπορεί να κρατήσει οποιονδήποτε εκχωρημένο ακέραιο αριθμό (θετικό ή αρνητικό) από 1 byte έως το μέγιστο 8 byte.

Αποθήκευση αριθμών με SQLite ΠΡΑΓΜΑΤΙΚΌΣ

Οι ΠΡΑΓΜΑΤΙΚΟΙ αριθμοί είναι ο αριθμός με διπλή ακρίβεια κινητής υποδιαστολής. SQLite αποθηκευμένους πραγματικούς αριθμούς ως πίνακα 8 byte. Ακολουθεί η λίστα με τους τύπους δεδομένων SQLite που μπορείτε να χρησιμοποιήσετε για να αποθηκεύσετε ΠΡΑΓΜΑΤΙΚΟΥΣ αριθμούς:

  • ΠΡΑΓΜΑΤΙΚΟΣ.
  • ΔΙΠΛΟ.
  • ΔΙΠΛΗ ΑΚΡΙΒΕΙΑ.
  • ΦΛΟΤΕΡ.

Αποθήκευση μεγάλων δεδομένων με SQLite Blob

Υπάρχει μόνο ένας τρόπος αποθήκευσης μεγάλων αρχείων σε ένα SQLite βάση δεδομένων και χρησιμοποιεί τον τύπο δεδομένων BLOB. Αυτός ο τύπος δεδομένων χρησιμοποιείται για την αποθήκευση μεγάλων αρχείων όπως εικόνες, αρχεία (από οποιονδήποτε τύπο) κ.λπ. Το αρχείο μετατρέπεται σε πίνακα bytes και στη συνέχεια αποθηκεύεται στο ίδιο μέγεθος με το αρχείο εισόδου.

Εναποθήκευση SQLite Booleans

SQLite δεν διαθέτει ξεχωριστή κατηγορία αποθήκευσης BOOLEAN. Ωστόσο, οι τιμές BOOLEAN αποθηκεύονται ως ΑΚΕΡΑΙΟΙ με τιμές 0 (ως ψευδής) ή 1 (ως αληθής).

Εναποθήκευση SQLite ημερομηνίες και ώρες

Μπορείτε να δηλώσετε ημερομηνία ή ημερομηνία ώρας SQLite χρησιμοποιώντας έναν από τους παρακάτω τύπους δεδομένων:

  • ΗΜΕΡΟΜΗΝΙΑ
  • ΗΜΕΡΟΜΗΝΙΑ ΩΡΑ
  • ΧΡΟΝΟΣΗΜΑ
  • TIME

Σημειώστε ότι δεν υπάρχει ξεχωριστή κατηγορία αποθήκευσης DATE ή DATETIME SQLite. Αντίθετα, τυχόν τιμές που δηλώνονται με έναν από τους προηγούμενους τύπους δεδομένων αποθηκεύονται σε μια κλάση αποθήκευσης ανάλογα με τη μορφή ημερομηνίας της τιμής που έχει εισαχθεί ως εξής:

  • ΚΕΙΜΕΝΟ – εάν εισαγάγατε την τιμή ημερομηνίας στη μορφή της συμβολοσειράς ISO8601 ("ΕΕΕΕ-ΜΜ-ΗΗ ΩΩ:ΜΛ:ΔΣ.ΔΔΣ").
  • ΠΡΑΓΜΑΤΙΚΌΣ – εάν εισαγάγατε την τιμή ημερομηνίας στους αριθμούς των ημερών του Ιουλιανού, τον αριθμό των ημερών από το μεσημέρι στο Γκρίνουιτς στις 24 Νοεμβρίου 4714 π.Χ. Τότε η τιμή ημερομηνίας θα αποθηκευτεί ως ΠΡΑΓΜΑΤΙΚΗ.
  • ΑΚΕΡΑΙΟΣ ΑΡΙΘΜΟΣ as Unix Ώρα, ο αριθμός των δευτερολέπτων από το 1970-01-01 00:00:00 UTC.

Περίληψη

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