PostgreSQL Τύποι δεδομένων: Byte, Numeric, Character, Binary
PostgreSQL προσφέρει ένα πλούσιο σύνολο εγγενών τύπων δεδομένων για τους χρήστες. Οι χρήστες μπορούν να προσθέσουν νέους τύπους με τη βοήθεια της εντολής CREATE TYPE. Επίσης, κάνει τα ερωτήματα πιο απλά και πιο ευανάγνωστα.
Τύποι δεδομένων σε PostgreSQL
PostgreSQL υποστηρίζει τους ακόλουθους τύπους δεδομένων:
- Τύποι κειμένου
- Αριθμητικοί τύποι
- Ημερομηνίες και ώρες
- XML
- JSON
- Boolean
- bits
- Δυαδικά Δεδομένα
- Δίκτυο
- Array
- Δημιουργήστε τον τύπο δεδομένων σας
- Boolean
- Χρονικός
- UUID
- Παράταξη
- JSON
- Ειδικοί τύποι δεδομένων για την αποθήκευση διεύθυνσης δικτύου και γεωμετρικών δεδομένων.
Ας διαβάσουμε PostgreSQL αναλυτικά τους τύπους δεδομένων
Τύποι δεδομένων χαρακτήρων
PostgreSQL υποστηρίζει τύπους δεδομένων χαρακτήρων για την αποθήκευση τιμών κειμένου. PostgreSQL δημιουργεί τύπους δεδομένων χαρακτήρων από τις ίδιες εσωτερικές δομές. PostgreSQL προσφέρει τρεις τύπους δεδομένων χαρακτήρων: CHAR(n), VARCHAR(n) και TEXT.
| Όνομα | Περιγραφή |
|---|---|
| varchar(n) | Σας επιτρέπει να δηλώσετε μεταβλητό μήκος με όριο |
| Χαρ(n) | Σταθερού μήκους, κενό με επένδυση |
| Κείμενο | Η χρήση μπορεί να χρησιμοποιήσει αυτόν τον τύπο δεδομένων για να δηλώσει μια μεταβλητή με απεριόριστο μήκος |
Αριθμητικοί τύποι δεδομένων
PostgreSQL υποστηρίζει δύο διαφορετικούς τύπους αριθμών:
- Ακεραίες
- Αριθμοί κινητής υποδιαστολής
| Όνομα | Μέγεθος καταστήματος | Σειρά |
|---|---|---|
| ψιλόλιθος | 2 bytes | -32768 έως + 32767 |
| ακέραιος αριθμός | 4 bytes | -2147483648 έως + 2147483647 |
| bigint | 8 bytes | -9223372036854775808 να 9223372036854775807 |
| δεκαδικός | μεταβλητή | Εάν το δηλώσατε ως δεκαδικό τύπο δεδομένων κυμαίνεται από 131072 ψηφία πριν από την υποδιαστολή έως 16383 ψηφία μετά την υποδιαστολή |
| αριθμητικός | μεταβλητή | Εάν το δηλώσετε ως αριθμό, μπορείτε να συμπεριλάβετε αριθμό έως και 131072 ψηφία πριν από την υποδιαστολή έως 16383 ψηφία μετά την υποδιαστολή |
| πραγματικός | 4 bytes | Ακρίβεια 6 δεκαδικών ψηφίων |
| διπλασιαστεί | 8 bytes | Ακρίβεια 15 δεκαδικών ψηφίων |
Δυαδικοί τύποι δεδομένων
Μια δυαδική συμβολοσειρά είναι μια ακολουθία οκτάδων ή byte. Οι τύποι δεδομένων Binary Postgres χωρίζονται με δύο τρόπους.
- Οι δυαδικές συμβολοσειρές επιτρέπουν την αποθήκευση πιθανοτήτων τιμής μηδέν
- Μη εκτυπώσιμες οκτάδες
Οι συμβολοσειρές χαρακτήρων δεν επιτρέπουν μηδενικές οκτάδες και επίσης δεν επιτρέπουν οποιεσδήποτε άλλες τιμές οκτάδας και ακολουθίες που δεν είναι έγκυρες σύμφωνα με τους κανόνες κωδικοποίησης του συνόλου χαρακτήρων της βάσης δεδομένων.
| Όνομα | Μέγεθος αποθήκευσης | Περιγραφή |
|---|---|---|
| Ψηφιόλεξη | 1 έως 4 byte συν το μέγεθος της δυαδικής συμβολοσειράς | Δυαδική συμβολοσειρά μεταβλητού μήκους |
Τύπος διεύθυνσης δικτύου
Πολλές εφαρμογές αποθηκεύουν πληροφορίες δικτύου όπως διευθύνσεις IP χρηστών ή αισθητήρες. PostgreSQL έχει τρεις εγγενείς τύπους που σας βοηθούν να βελτιστοποιήσετε τα δεδομένα δικτύου.
| Όνομα | Μέγεθος | Περιγραφή |
|---|---|---|
| μηλίτης | 7 ή 19 byte | IPV4 και IPv6 δίκτυα |
| Inet | 7 ή 19 byte | Κεντρικός υπολογιστής IPV4 και IPV5 και δίκτυα |
| macaddr | 6 bytes | Διευθύνσεις MAC |
Η χρήση των τύπων διευθύνσεων δικτύου έχει τα ακόλουθα πλεονεκτήματα
- Εξοικονόμηση χώρου αποθήκευσης
- Έλεγχος σφαλμάτων εισαγωγής
- Λειτουργίες όπως η αναζήτηση δεδομένων ανά υποδίκτυο
Τύπος αναζήτησης κειμένου
PostgreSQL παρέχει δύο τύπους δεδομένων που έχουν σχεδιαστεί για να υποστηρίζουν την αναζήτηση πλήρους κειμένου. Η αναζήτηση πλήρους κειμένου είναι η αναζήτηση μέσω μιας συλλογής εγγράφων φυσικής γλώσσας για την αναζήτηση εκείνων που ταιριάζουν καλύτερα με ένα ερώτημα.
- Αναζήτηση κειμένου Tsvector PostgreSQL οι τύποι μεταβλητών αντιπροσωπεύουν ένα έγγραφο σε μορφή βελτιστοποιημένη για αναζήτηση κειμένου
- Η αναζήτηση κειμένου τύπου ερωτήματος αποθηκεύει τις λέξεις-κλειδιά που πρέπει να αναζητηθούν
Ημερομηνία/Ώρα Τύποι δεδομένων
PostgreSQL Η χρονική σήμανση προσφέρει ακρίβεια μικροδευτερόλεπτου αντί για δεύτερη ακρίβεια. Επιπλέον, έχετε επίσης τη δυνατότητα αποθήκευσης με ζώνη ώρας ή χωρίς. PostgreSQL θα μετατρέψει τη χρονική σήμανση με ζώνη ώρας σε UTC κατά την είσοδο και θα την αποθηκεύσει.
Η εισαγωγή ημερομηνίας και ώρας γίνεται αποδεκτή σε διάφορες μορφές, συμπεριλαμβανομένων των παραδοσιακών Postgres, ISO 8601. Συμβατά με SQL κ.λπ.
PostgreSQL υποστηρίζει παραγγελία ημέρας / μήνα / έτους. Οι μορφές που υποστηρίζονται είναι DMY, MDY, YMD
Χρονικοί τύποι δεδομένων
| Όνομα | Μέγεθος | Σειρά | Ανάλυση |
|---|---|---|---|
| Χρονική σήμανση χωρίς ζώνη ώρας | 8 bytes | 4713 π.Χ. έως το 294276 μ.Χ | 1 μικροδευτερόλεπτο/14 ψηφία |
| Χρονική σήμανση με ζώνη ώρας | 8 bytes | 4713 π.Χ. έως το 294276 μ.Χ | 1 μικροδευτερόλεπτο/14 ψηφία |
| Ραντεβού | 4 bytes | 4713 π.Χ. έως το 294276 μ.Χ | Μια μέρα |
| Ώρα χωρίς ζώνη ώρας | 8 bytes | 00:00:00 to 24:00:00 | 1 μικροδευτερόλεπτο/14 ψηφία |
| Ώρα με ζώνη ώρας | 12 bytes | 00:00:00 + 1459 έως 24:00:00-1459 | 1 μικροδευτερόλεπτο/14 ψηφία |
| Διάστημα | 12 bytes | -178000000 έως 178000000 χρόνια | 1 μικροδευτερόλεπτο/14 ψηφία |
Παραδείγματα
| Εισαγωγή | Περιγραφή |
|---|---|
| 2025-09-07 | ISO 8601, 7 Σεπτεμβρίου με οποιοδήποτε στυλ ημερομηνίας (προτεινόμενη μορφή) |
| Σεπτέμβριος 7, 2025 | 7 Σεπτεμβρίου με οποιοδήποτε στυλ ραντεβού |
| 9/7/2025 | 7 Σεπτεμβρίου με MDY, 9 Ιουλίου με DMY |
| 9/7/25 | 7 Σεπτεμβρίου 2025, με MDY |
| 2025-Σεπ-7 | 7 Σεπτεμβρίου με οποιοδήποτε στυλ ραντεβού |
| Σεπ-7-2018 | 7 Σεπτεμβρίου με οποιοδήποτε στυλ ραντεβού |
| 7-Σεπ-25 | 7 Σεπτεμβρίου 2025, με την ΥΜΔ |
| 20250907 | ISO 8601,7 Σεπ 20225 σε οποιαδήποτε λειτουργία |
| 2025.250 | έτος και ημέρα του έτους, σε αυτήν την περίπτωση, 7 Σεπτεμβρίου 2025 |
| J25250 | Ιουλιανή ημερομηνία |
Ώρα/Ώρα με είσοδο ζώνης ώρας
| Εισαγωγή | Περιγραφή |
|---|---|
| 11:19:38.507 11:19:38 11:19 111938 |
ISO 8601 |
| 11: 19 πμ | Το ίδιο με το 11:19 |
| 11: 19 μμ | το ίδιο με το 23:19 |
| 23: 19-3 23:19 - 03:00 231900-03 |
ISO 8601, ίδιο με το 11:19 PM EST |
| 23: 19 EST | ζώνη ώρας που προσδιορίζεται ως EST, ίδια με τις 11:19 μ.μ. EST |
Boolean Τύπος
Ένας τύπος δεδομένων Boolean μπορεί να χωρέσει
- Οι αληθινοί
- Ψευδής
- μηδέν
αξιών.
Χρησιμοποιείτε α μπουλ or boolean λέξη-κλειδί για να δηλώσετε μια στήλη με τον τύπο δεδομένων Boolean.
Όταν εισάγετε τιμές σε μια στήλη boolean, η Postgre μετατρέπει τιμές όπως
- Ναι
- y
- 1
- t
- ναι
έως το 1.
Ενώ αξίες όπως
- Οχι
- N
- 0
- F
- Ψευδής
μετατρέπονται σε 0
Κατά την επιλογή δεδομένων, οι τιμές μετατρέπονται ξανά σε yes, true, y, κ.λπ.
Γεωμετρικοί τύποι δεδομένων
Οι γεωμετρικοί τύποι δεδομένων αντιπροσωπεύουν δισδιάστατα χωροαντικείμενα. Βοηθούν στην εκτέλεση λειτουργιών όπως περιστροφές, κλιμάκωση, μετάφραση κ.λπ.
| Όνομα | Μέγεθος αποθήκευσης | Αναπαράσταση | Περιγραφή |
|---|---|---|---|
| Σημείο | 16 bytes | Δείξτε σε ένα αεροπλάνο | (χ, γ) |
| γραμμή | 32 bytes | Άπειρη γραμμή | ((xl.yl ).(x2.y2)) |
| Lseg | 32 bytes | Τμήμα πεπερασμένης γραμμής | ((xl.yl ).(x2.y2)) |
| Box | 32 bytes | Ορθογώνιος Box | ((xl.yl ).(x2.y2)) |
| μονοπάτι | 16n + 16n byte | Κλείσιμο και ανοιχτό μονοπάτι | ((xl.yl),…) |
| Πολύγωνο | 40 + 16n byte | Πολύγωνο | [(xl.yl)….] |
| Κύκλος | 24 bytes | Κύκλος | <(xy).r> (κεντρικό σημείο και ακτίνα) |
Απαριθμημένοι τύποι
Αριθμημένος PostgreSQL Ο τύπος δεδομένων είναι χρήσιμος για την αναπαράσταση σπάνια μεταβαλλόμενων πληροφοριών, όπως κωδικό χώρας ή αναγνωριστικό υποκαταστήματος. Ο τύπος δεδομένων Enumerated αναπαρίσταται σε έναν πίνακα με ξένα κλειδιά για τη διασφάλιση της ακεραιότητας των δεδομένων.
Παράδειγμα
Το χρώμα των μαλλιών είναι αρκετά στατικό σε μια δημογραφική βάση δεδομένων
CREATE TYPE hair_color AS ENUM
('brown','black','red','grey','blond')
Τύπος εύρους
Πολλές επιχειρηματικές εφαρμογές απαιτούν δεδομένα σε εύρη. Συνήθως, δύο στήλες (παράδειγμα: ημερομηνία έναρξης, ημερομηνία λήξης) ορίζονται για την αντιμετώπιση των περιοχών. Αυτό είναι τόσο αναποτελεσματικό όσο και δύσκολο να διατηρηθεί.
Η Postgre έχει δημιουργήσει τύπους σειράς ως εξής
- int4range — Εμφάνιση εύρους ακέραιου αριθμού
- int8range — Εμφάνιση εύρους bigint
- αριθμήσεις — Εμφανίζει το αριθμητικό εύρος
- tstrange — Σας βοηθά να εμφανίσετε χρονική σήμανση χωρίς ζώνη ώρας
- περίεργο — Σας επιτρέπει να εμφανίζετε χρονική σήμανση με ζώνη ώρας
- εύρος ημερομηνιών — Εύρος ημερομηνιών
Τύπος UUID
Το Universally Unique Identifies (UUID) είναι μια ποσότητα 128-bit που δημιουργείται από έναν αλγόριθμο. Είναι πολύ απίθανο το ίδιο αναγνωριστικό να δημιουργηθεί από άλλο άτομο στον κόσμο χρησιμοποιώντας τον ίδιο αλγόριθμο. Γι' αυτό για τα κατανεμημένα συστήματα, αυτά τα αναγνωριστικά αποτελούν ιδανική επιλογή καθώς προσφέρουν μοναδικότητα σε μια ενιαία βάση δεδομένων. Ένα UUID γράφεται ως μια ομάδα πεζών δεκαεξαδικών ψηφίων, με διάφορες ομάδες που χωρίζονται με παύλες.
PostgreSQL έχει έναν εγγενή τύπο δεδομένων UUID που καταναλώνει 16 byte αποθήκευσης. Το UUID είναι ένας ιδανικός τύπος δεδομένων για πρωτεύοντα κλειδιά.
Παράδειγμα
d5f28c97-b962-43be-9cf8-ca1632182e8e
Η Postgre δέχεται επίσης εναλλακτικές μορφές εισόδων UUID, όπως όλα τα κεφαλαία, χωρίς παύλες, αγκύλες κ.λπ.
Τύπος XML
PostgreSQL σας επιτρέπει να αποθηκεύετε δεδομένα XML σε έναν τύπο δεδομένων, αλλά δεν είναι τίποτα άλλο από μια επέκταση σε έναν τύπο δεδομένων κειμένου. Αλλά το πλεονέκτημα είναι ότι ελέγχει ότι η εισαγωγή XML είναι καλά διαμορφωμένη.
Παράδειγμα
XMLPARSE (DOCUMENT '<?xml version="1.0"?><tutorial><chapter>Data Type</chapter><chapter>...</chapter></tutorial>')
Τύπος JSON
Για αποθήκευση δεδομένων JSON PostgreSQL προσφέρει 2 τύπους δεδομένων
- JSON
- JSONB
| json | Jsonb |
|---|---|
| Μια απλή επέκταση ενός τύπου δεδομένων κειμένου με επικύρωση JSON | Μια δυαδική αναπαράσταση των δεδομένων JSON |
| Η εισαγωγή είναι γρήγορη, αλλά η ανάκτηση δεδομένων είναι σχετικά αργή. | Η εισαγωγή είναι αργή, αλλά επιλέξτε (η ανάκτηση δεδομένων είναι γρήγορη) |
| Αποθηκεύει τα δεδομένα εισαγωγής με τον ίδιο ακριβώς τρόπο που περιλαμβάνει κενό διάστημα. | Υποστηρίζει ευρετηρίαση. Μπορεί να βελτιστοποιήσει το κενό διάστημα για να κάνει την ανάκτηση πιο γρήγορη. |
| Επανεπεξεργασία για την ανάκτηση δεδομένων | Δεν απαιτείται επανεπεξεργασία για την ανάκτηση δεδομένων |
Ο πιο ευρέως χρησιμοποιούμενος τύπος δεδομένων JSON χρησιμοποιούσε το jsonb εκτός και αν υπάρχει κάποια εξειδικευμένη ανάγκη χρήσης του τύπου δεδομένων JSON.
Παράδειγμα
CREATE TABLE employee ( id integer NOT NULL, age integer NOT NULL, data jsonb );
INSERT INTO employee VALUES (1, 35, '{"name": "Tom Price", "tags": ["Motivated", "SelfLearner"], "onboareded": true}');
Ψευδο-Τύποι
PostgreSQL έχει πολλές καταχωρήσεις ειδικού σκοπού που ονομάζονται ψευδοτύποι. Δεν μπορείτε να χρησιμοποιήσετε ψευδοτύπους ως PostgreSQL τύπους στηλών. Χρησιμοποιούνται για τη δήλωση ή τη λειτουργία του ορίσματος ή του τύπου επιστροφής.
Καθένας από τους διαθέσιμους ψευδοτύπους είναι χρήσιμος σε περιπτώσεις όπου τα έγγραφα συμπεριφοράς μιας συνάρτησης δεν αντιστοιχούν στην απλή λήψη ή επιστροφή μιας τιμής μιας συγκεκριμένης Τύπος δεδομένων SQL.
| Όνομα | Περιγραφή |
|---|---|
| Κάθε | Η συνάρτηση δέχεται όλους τους τύπους δεδομένων εισόδου. |
| Ένας πίνακας | Η συνάρτηση δέχεται οποιονδήποτε τύπο δεδομένων πίνακα. |
| Οποιοδήποτε στοιχείο | Η συνάρτηση δέχεται οποιονδήποτε τύπο δεδομένων. |
| Οποιοδήποτε αριθμ | Η συνάρτηση δέχεται οποιονδήποτε τύπο δεδομένων enum. |
| Nonarray | Η συνάρτηση δέχεται οποιονδήποτε τύπο δεδομένων εκτός πίνακα. |
| Cstring | Η συνάρτηση δέχεται ή επιστρέφει συμβολοσειρά C με μηδενικό τερματισμό. |
| Εσωτερικός | Η εσωτερική συνάρτηση δέχεται ή επιστρέφει τύπο δεδομένων εσωτερικού διακομιστή. |
| Language_handler | Δηλώνεται ότι επιστρέφει τον χειριστή γλώσσας. |
| Ρεκόρ | Βρείτε μια συνάρτηση που επιστρέφει έναν απροσδιόριστο τύπο σειράς. |
| Σκανδάλη | Μια συνάρτηση ενεργοποίησης χρησιμοποιείται για την επιστροφή της σκανδάλης. |
Είναι σημαντικό ο χρήστης που χρησιμοποιεί αυτή τη συνάρτηση να πρέπει να βεβαιωθεί ότι η συνάρτηση θα συμπεριφέρεται με ασφάλεια όταν χρησιμοποιείται ένας ψευδοτύπος ως τύπος ορίσματος.
καλυτερα πρακτικές με χρήση τύπων δεδομένων
- Χρησιμοποιήστε τον τύπο δεδομένων "κείμενο", εκτός εάν θέλετε να περιορίσετε την εισαγωγή
- Μην χρησιμοποιείτε ποτέ το "char".
- Οι ακέραιοι χρησιμοποιούν το "int". Χρησιμοποιήστε το bigint μόνο όταν έχετε πραγματικά μεγάλους αριθμούς
- Χρησιμοποιήστε "αριθμητικό" σχεδόν πάντα
- Χρησιμοποιήστε το float in PostgreSQL εάν έχετε πηγή δεδομένων IEEE 754
Περίληψη
- PostgreSQL προσφέρει ένα πλούσιο σύνολο εγγενών τύπων δεδομένων για τους χρήστες
- PostgreSQL υποστηρίζει τύπους δεδομένων χαρακτήρων για την αποθήκευση τιμών κειμένου
- PostgreSQL υποστηρίζει δύο διαφορετικούς τύπους αριθμών: 1. Ακέραιοι, 2. Αριθμοί κινητής υποδιαστολής
- Μια δυαδική συμβολοσειρά είναι μια ακολουθία από byte ή οκτάδες
- PostgreSQL έχει τύπο διεύθυνσης δικτύου για να σας βοηθήσει να βελτιστοποιήσετε την αποθήκευση δεδομένων δικτύου
- Αναζήτηση κειμένου PostgreSQL Οι δομές δεδομένων έχουν σχεδιαστεί για να υποστηρίζουν την αναζήτηση πλήρους κειμένου
- Ημερομηνία/Ώρα Οι τύποι δεδομένων PSQL επιτρέπουν πληροφορίες ημερομηνίας και ώρας σε διάφορες μορφές
- Οι τύποι πεδίων Boolean Postgres μπορούν να έχουν τρεις τιμές 1. True 2. False 3. Null
- Γεωμετρικός PostgreSQL οι τύποι δεδομένων αντιπροσωπεύουν δισδιάστατα χωροαντικείμενα
- Απαριθμημένοι τύποι δεδομένων σε PostgreSQL είναι χρήσιμο για την αναπαράσταση σπάνια μεταβαλλόμενων πληροφοριών, όπως κωδικό χώρας ή αναγνωριστικό υποκαταστήματος
- Οι Universally Unique Identifies (UUID) είναι μια ποσότητα 128-bit που δημιουργείται από έναν αλγόριθμο
- PostgreSQL έχει πολλές καταχωρήσεις ειδικού σκοπού που ονομάζονται ψευδοτύποι
- Είναι βέλτιστη πρακτική να χρησιμοποιείτε τον τύπο δεδομένων "κείμενο", εκτός εάν θέλετε να περιορίσετε την εισαγωγή
