SQLite Τύποι δεδομένων: Ακέραιος, Κείμενο, Αριθμητικό, Πραγματικό, Blob
⚡ Έξυπνη Σύνοψη
SQLite Οι τύποι δεδομένων λειτουργούν διαφορετικά από άλλες βάσεις δεδομένων επειδή SQLite χρησιμοποιεί δυναμική typing, αποθηκεύοντας οποιαδήποτε τιμή σε οποιαδήποτε στήλη. Οι κλάσεις αποθήκευσης, η συγγένεια τύπων και τα δηλωμένα ονόματα τύπων καθορίζουν μαζί τον τρόπο με τον οποίο κάθε τιμή αποθηκεύεται φυσικά στον δίσκο.

Οι παρακάτω ενότητες εξηγούν πώς SQLite χειρίζεται τύπους δεδομένων, ξεκινώντας με τις πέντε κλάσεις αποθήκευσης, έπειτα πληκτρολογεί τη συνάφεια και τους κανόνες ανάθεσής της και, τέλος, επεξεργάζεται παραδείγματα αποθήκευσης ακεραίων, πραγματικών αριθμών, BLOB, λογικών διαστάσεων και ημερομηνιών.
Τύποι δεδομένων σε SQLite διαφέρουν από εκείνα σε άλλα συστήματα διαχείρισης βάσεων δεδομένων. SQLite, μπορείτε να δηλώσετε τύπους δεδομένων κανονικά, αλλά μπορείτε να αποθηκεύσετε οποιαδήποτε τιμή σε οποιονδήποτε τύπο δεδομένων.
SQLite είναι χωρίς τύπο. Δεν υπάρχουν σταθεροί τύποι δεδομένων. Μπορείτε να αποθηκεύσετε οποιονδήποτε τύπο δεδομένων θέλετε σε οποιαδήποτε στήλη. Αυτό ονομάζεται δυναμική typing.
Σε στατικούς τύπους, όπως και σε άλλα συστήματα διαχείρισης βάσεων δεδομένων, εάν δηλώσετε μια στήλη με τον τύπο δεδομένων integer, μπορείτε να εισαγάγετε μόνο τιμές με τύπο δεδομένων integer. Ωστόσο, σε δυναμικούς τύπους, όπως στο SQLite, ο τύπος της στήλης καθορίζεται από την τιμή που εισάγεται και, στη συνέχεια, SQLite αποθηκεύει αυτή την τιμή ανάλογα με τον τύπο του.
SQLite Μαθήματα αποθήκευσης
In SQLite Υπάρχουν διαφορετικές μέθοδοι αποθήκευσης ανάλογα με τον τύπο της τιμής. Αυτές οι διαφορετικές μέθοδοι αποθήκευσης ονομάζονται κλάσεις αποθήκευσης. SQLite.
Ακολουθούν οι κατηγορίες αποθήκευσης που είναι διαθέσιμες σε SQLite:
- Τιμή NULL – αυτή η κλάση αποθήκευσης χρησιμοποιείται για την αποθήκευση οποιασδήποτε τιμής NULL.
- ΑΚΕΡΑΙΟΣ ΑΡΙΘΜΟΣ – οποιαδήποτε αριθμητική τιμή αποθηκεύεται ως προσημασμένη ακέραια τιμή (μπορεί να περιέχει τόσο θετικές όσο και αρνητικές ακέραιες τιμές). Οι τιμές INTEGER στο SQLite αποθηκεύονται σε 1, 2, 3, 4, 6 ή 8 byte αποθήκευσης ανάλογα με την τιμή του αριθμού.
- ΠΡΑΓΜΑΤΙΚΌΣ – αυτή η κλάση αποθήκευσης χρησιμοποιείται για την αποθήκευση των τιμών κινητής υποδιαστολής και αποθηκεύονται σε 8 byte χώρου αποθήκευσης.
- ΚΕΙΜΕΝΟ – αποθηκεύει συμβολοσειρές κειμένου. Υποστηρίζει επίσης διαφορετικές κωδικοποιήσεις όπως UTF-8, UTF-16BE ή UTF-16LE.
- Blob – χρησιμοποιείται για την αποθήκευση μεγάλων αρχείων, όπως εικόνες ή αρχεία κειμένου. Η τιμή αποθηκεύεται ως πίνακας byte, όπως και η τιμή εισόδου.
SQLite Τύπος συγγένειας
Η συνάφεια τύπων είναι ο συνιστώμενος τύπος δεδομένων που αποθηκεύονται σε μια στήλη. Ωστόσο, μπορείτε να αποθηκεύσετε οποιονδήποτε τύπο δεδομένων επιθυμείτε. Αυτοί οι τύποι συνιστώνται, δεν είναι απαραίτητοι.
Αυτοί οι τύποι εισήχθησαν στο SQLite για μεγιστοποίηση της συμβατότητας μεταξύ SQLite και άλλες σύστημα διαχείρισης βάσης δεδομένωνs.
Οποιαδήποτε στήλη δηλώνεται σε ένα SQLite Στη βάση δεδομένων αντιστοιχίζεται μια συγγένεια τύπου ανάλογα με τον δηλωμένο τύπο δεδομένων της. Ακολουθεί η λίστα με τις συγγένειες τύπων στο SQLite:
- ΚΕΙΜΕΝΟ.
- ΑΡΙΘΜΗΤΙΚΟΣ.
- ΑΚΕΡΑΙΟΣ ΑΡΙΘΜΟΣ.
- ΠΡΑΓΜΑΤΙΚΟΣ.
- ΑΜΟΡΦΗ ΜΑΖΑ.
Εδώ είναι το πώς SQLite καθορίζει τη συγγένεια μιας στήλης από τον δηλωμένο τύπο δεδομένων της:
- Η συγγένεια INTEGER εκχωρείται εάν ο δηλωμένος τύπος περιέχει το κορδόνι «ΕΣΩΤΕΡΙΚΟΣ».
- Η συνάφεια TEXT αντιστοιχίζεται εάν η στήλη περιέχει στον τύπο δεδομένων της μία από τις ακόλουθες συμβολοσειρές: "TEXT", "CHAR" ή "CLOB". Για παράδειγμα, στον τύπο VARCHAR θα αντιστοιχιστεί η συνάφεια TEXT.
- Η συνάφεια BLOB εκχωρείται εάν η στήλη δεν έχει καθορισμένο τύπο ή ο τύπος δεδομένων είναι BLOB.
- Η συνάφεια REAL αντιστοιχίζεται εάν ο τύπος περιέχει μία από τις ακόλουθες συμβολοσειρές: "DOUB", "REAL" ή "FLOAT".
- Η συνάφεια NUMERIC εκχωρείται για οποιονδήποτε άλλο τύπο δεδομένων.
Υπάρχει επίσης ένας πίνακας που δείχνει μερικά παραδείγματα του χάρτη παρακάτωping μεταξύ SQLite τύποι δεδομένων και οι συνάφειές τους που καθορίζονται από αυτούς τους κανόνες:
Παραδείγματα αποθήκευσης τύπων δεδομένων σε SQLite
Αποθήκευση αριθμών με SQLite ΑΚΕΡΑΙΟΣ ΑΡΙΘΜΟΣ
Εάν οποιαδήποτε στήλη έχει έναν τύπο δεδομένων που περιέχει τη λέξη "INT", θα της αντιστοιχιστεί μια συνάφεια τύπου INTEGER. Θα αποθηκευτεί σε μια κλάση αποθήκευσης INTEGER.
Σε όλους τους ακόλουθους τύπους δεδομένων έχει εκχωρηθεί μια συνάφεια τύπου INTEGER:
- INT, ΑΚΡΑΙΟΣ, ΜΕΓΑΛΟΣ.
- INT2, INT4, INT8.
- ΜΙΚΡΟΣ, ΜΙΚΡΟΣ ΜΕΝΤΑ, ΜΕΣΑΙΑ ΜΕΝΤΑ.
Συνάφεια τύπου INTEGER σε SQLite μπορεί να χωρέσει οποιονδήποτε ακέραιο αριθμό (θετικό ή αρνητικό) που έχει εκχωρηθεί, από 1 byte έως και 8 byte.
Αποθήκευση αριθμών με SQLite ΠΡΑΓΜΑΤΙΚΌΣ
Οι ΠΡΑΓΜΑΤΙΚΟΙ αριθμοί είναι αριθμοί με ακρίβεια διπλής κινητής υποδιαστολής. SQLite αποθηκεύει πραγματικούς αριθμούς ως πίνακα 8 byte. Ακολουθεί η λίστα με τους τύπους δεδομένων στο SQLite που μπορείτε να χρησιμοποιήσετε για να αποθηκεύσετε ΠΡΑΓΜΑΤΙΚΟΥΣ αριθμούς:
- ΠΡΑΓΜΑΤΙΚΟΣ.
- ΔΙΠΛΟ.
- ΔΙΠΛΗ ΑΚΡΙΒΕΙΑ.
- ΦΛΟΤΕΡ.
Αποθήκευση μεγάλων δεδομένων με SQLite Blob
Υπάρχει μόνο ένας τρόπος για να αποθηκεύσετε μεγάλα αρχεία σε ένα SQLite βάση δεδομένων, και αυτό χρησιμοποιεί τον τύπο δεδομένων BLOB. Αυτός ο τύπος δεδομένων χρησιμοποιείται για την αποθήκευση μεγάλων αρχείων όπως εικόνες ή αρχεία οποιουδήποτε τύπου. Το αρχείο μετατρέπεται σε έναν πίνακα byte και στη συνέχεια αποθηκεύεται στο ίδιο μέγεθος με το αρχείο εισόδου.
Εναποθήκευση SQLite Booleans
SQLite δεν έχει ξεχωριστή κλάση αποθήκευσης BOOLEAN. Αντίθετα, οι τιμές BOOLEAN αποθηκεύονται ως INTEGERS, με το 0 να αντιπροσωπεύει την τιμή false και το 1 την τιμή true.
Εναποθήκευση SQLite ημερομηνίες και ώρες
Μπορείτε να δηλώσετε ημερομηνίες ή ημερομηνίες-ώρες σε SQLite χρησιμοποιώντας έναν από τους παρακάτω τύπους δεδομένων:
- ΗΜΕΡΟΜΗΝΙΑ
- ΗΜΕΡΟΜΗΝΙΑ ΩΡΑ
- ΧΡΟΝΟΣΗΜΑ
- TIME
Σημειώστε ότι δεν υπάρχει ξεχωριστή κλάση αποθήκευσης DATE ή DATETIME στο SQLiteΑντίθετα, τυχόν τιμές που δηλώνονται με έναν από τους προηγούμενους τύπους δεδομένων αποθηκεύονται σε μια κλάση αποθήκευσης ανάλογα με τη μορφή ημερομηνίας της εισαγόμενης τιμής, ως εξής:
- ΚΕΙΜΕΝΟ – εάν εισαγάγετε την τιμή ημερομηνίας σε μορφή συμβολοσειράς ISO8601 (“YYYY-MM-DD HH:MM:SS.SSS”).
- ΠΡΑΓΜΑΤΙΚΌΣ – αν εισαγάγετε την τιμή ημερομηνίας ως αριθμό ημέρας Ιουλιανής περιόδου, ο αριθμός των ημερών από το μεσημέρι στο Γκρίνουιτς στις 24 Νοεμβρίου 4714 π.Χ. Η τιμή ημερομηνίας αποθηκεύεται στη συνέχεια ως ΠΡΑΓΜΑΤΙΚΗ.
- ΑΚΕΡΑΙΟΣ ΑΡΙΘΜΟΣ - όπως και Unix Ώρα, ο αριθμός των δευτερολέπτων από το 1970-01-01 00:00:00 UTC.

