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