- Λεπτομέριες
- Τελευταία ενημέρωση: 17 Απριλίου 2021
Η PostgreSQL προσφέρει ένα πλούσιο σύνολο εγγενών τύπων δεδομένων για τους χρήστες. Οι χρήστες μπορούν να προσθέσουν νέους τύπους με τη βοήθεια της εντολής ΔΗΜΙΟΥΡΓΙΑ ΤΥΠΟΥ. Κάνει επίσης τα ερωτήματα πιο απλά και πιο ευανάγνωστα.
Τύποι δεδομένων στο PostgreSQL
Το PostgreSQL υποστηρίζει τους ακόλουθους τύπους δεδομένων:
- Τύποι κειμένου
- Αριθμητικοί τύποι
- Ημερομηνίες και Timesρες
- XML
- JSON
- Boolean
- Bits
- Δυαδικά δεδομένα
- Δίκτυο
- Πίνακες
- Δημιουργήστε τον τύπο δεδομένων σας
- Boolean
- Προσωρινός
- UUID
- Πίνακας
- JSON
- Ειδικοί τύποι δεδομένων για αποθήκευση διεύθυνσης δικτύου και γεωμετρικών δεδομένων.
Ας μελετήσουμε λεπτομερώς τους τύπους δεδομένων PostgreSQL
- Τύποι δεδομένων χαρακτήρων
- Αριθμητικοί τύποι δεδομένων
- Δυαδικοί τύποι δεδομένων
- Τύπος διεύθυνσης δικτύου
- Τύπος αναζήτησης κειμένου
- Τύποι δεδομένων ημερομηνίας/ώρας
- Boolean Type
- Τύποι γεωμετρικών δεδομένων
- Απαριθμημένοι τύποι
- Τύπος εύρους
- Τύπος UUID
- Τύπος XML
- Τύπος JSON
- Pseευδο-Τύποι
Τύποι δεδομένων χαρακτήρων
Το PostgreSQL υποστηρίζει τύπους δεδομένων χαρακτήρων για αποθήκευση τιμών κειμένου. Η PostgreSQL δημιουργεί τύπους δεδομένων χαρακτήρων από τις ίδιες εσωτερικές δομές. Η PostgreSQL προσφέρει τρεις τύπους δεδομένων χαρακτήρων: CHAR (n), VARCHAR (n) και TEXT.
Ονομα | Περιγραφή |
---|---|
varchar (n) | Σας επιτρέπει να δηλώσετε μεταβλητό μήκος με όριο |
Char (n) | Σταθερού μήκους, κενή επένδυση |
Κείμενο | Η χρήση μπορεί να χρησιμοποιήσει αυτόν τον τύπο δεδομένων για να δηλώσει μια μεταβλητή με απεριόριστο μήκος |
Αριθμητικοί τύποι δεδομένων
Η PostgreSQL υποστηρίζει δύο διαφορετικούς τύπους αριθμών:
- Ακέραιοι
- Αριθμοί κυμαινόμενων σημείων
Ονομα | Μέγεθος καταστήματος | Εύρος |
---|---|---|
smallint | 2 byte | -32768 έως +32767 |
ακέραιος αριθμός | 4 byte | -2147483648 έως +2147483647 |
bigint | 8 byte | -9223372036854775808 έως 9223372036854775807 |
δεκαδικός | μεταβλητός | Εάν το δηλώσατε ως δεκαδικό τύπο δεδομένων κυμαίνεται από 131072 ψηφία πριν από το δεκαδικό έως 16383 ψηφία μετά το δεκαδικό σημείο |
αριθμητικός | μεταβλητός | Εάν τον δηλώσετε ως αριθμό, μπορείτε να συμπεριλάβετε αριθμό έως 131072 ψηφία πριν από το δεκαδικό σημείο σε 16383 ψηφία μετά το δεκαδικό σημείο |
πραγματικός | 4 byte | 6 δεκαδικά ψηφία ακρίβεια |
διπλό | 8 byte | 15 δεκαδικά ψηφία ακρίβεια |
Δυαδικοί τύποι δεδομένων
Μια δυαδική συμβολοσειρά είναι μια ακολουθία οκτάδων ή byte. Οι τύποι δεδομένων δυαδικού Postgres χωρίζονται με δύο τρόπους.
- Οι δυαδικές συμβολοσειρές επιτρέπουν την αποθήκευση αποδόσεων μηδενικής αξίας
- Μη εκτυπώσιμα byte
Οι συμβολοσειρές χαρακτήρων δεν επιτρέπουν μηδέν οκτάδες και επίσης δεν επιτρέπουν άλλες τιμές και ακολουθίες οκτάδας που είναι άκυρες σύμφωνα με τους κανόνες κωδικοποίησης του συνόλου χαρακτήρων της βάσης δεδομένων.
Ονομα | Μέγεθος αποθήκευσης | Περιγραφή |
---|---|---|
Ψηφιόλεξη | 1 έως 4 byte συν το μέγεθος της δυαδικής συμβολοσειράς | Δυαδική συμβολοσειρά μεταβλητού μήκους |
Τύπος διεύθυνσης δικτύου
Πολλές εφαρμογές αποθηκεύουν πληροφορίες δικτύου, όπως διεύθυνση IP χρηστών ή
Αισθητήρες. Το PostgreSQL έχει τρεις εγγενείς τύπους που σας βοηθούν να βελτιστοποιήσετε τα δεδομένα δικτύου.
Ονομα | Μέγεθος | Περιγραφή |
---|---|---|
μηλίτης | 7 ή 19 αντίο | Δίκτυα IPV4 και IPv6 |
Inet | 7 ή 19 byte | IPV4 και IPV5 κεντρικός υπολογιστής και δίκτυα |
macaddr | 6 byte | Διευθύνσεις MAC |
Η χρήση τύπων διευθύνσεων δικτύου έχει τα ακόλουθα πλεονεκτήματα
- Αποθήκευση χώρου αποθήκευσης
- Έλεγχος σφάλματος εισαγωγής
- Λειτουργίες όπως η αναζήτηση δεδομένων με υποδίκτυο
Τύπος αναζήτησης κειμένου
Η PostgreSQL παρέχει δύο τύπους δεδομένων που έχουν σχεδιαστεί για να υποστηρίζουν αναζήτηση πλήρους κειμένου. Η αναζήτηση πλήρους κειμένου είναι η αναζήτηση μέσω μιας συλλογής εγγράφων φυσικής γλώσσας για την αναζήτηση εκείνων που ταιριάζουν καλύτερα σε ένα ερώτημα.
- Αναζήτηση κειμένου Tsvector Οι μεταβλητοί τύποι PostgreSQL αντιπροσωπεύουν ένα έγγραφο σε μορφή βελτιστοποιημένη για αναζήτηση κειμένου
- Η αναζήτηση κειμένου τύπου ερωτήματος αποθηκεύει τις λέξεις -κλειδιά που πρέπει να αναζητηθούν
Τύποι δεδομένων ημερομηνίας/ώρας
Η χρονική σήμανση PostgreSQL προσφέρει ακρίβεια μικροδευτερολέπτου αντί για δεύτερη ακρίβεια. Επιπλέον, έχετε επίσης τη δυνατότητα αποθήκευσης με ζώνη ώρας ή χωρίς. Η PostgreSQL θα μετατρέψει τη χρονική σήμανση με ζώνη ώρας σε UTC κατά την εισαγωγή και θα την αποθηκεύσει.
Η εισαγωγή ημερομηνίας και ώρας γίνεται αποδεκτή σε διάφορες μορφές, συμπεριλαμβανομένων των παραδοσιακών Postgres, ISO 8601. Συμβατό με SQL κ.λπ.
Η PostgreSQL υποστηρίζει παραγγελίες ημέρας / μήνα / έτους. Οι μορφές που υποστηρίζονται είναι DMY, MDY, YMD
Τύποι χρονικών δεδομένων
Ονομα | Μέγεθος | Εύρος | Ανάλυση |
---|---|---|---|
Χρονική σήμανση χωρίς ζώνη ώρας | 8 byte | 4713 π.Χ. έως 294276 μ.Χ | 1 μικρό δευτερόλεπτο/14 ψηφία |
Χρονική σήμανση με ζώνη ώρας | 8 byte | 4713 π.Χ. έως 294276 μ.Χ | 1 μικρό δευτερόλεπτο/14 ψηφία |
ημερομηνία | 4 byte | 4713 π.Χ. έως 294276 μ.Χ | Μια μέρα |
Χρόνος χωρίς ζώνη ώρας | 8 byte | 00:00:00 έως 24:00:00 | 1 μικρό δευτερόλεπτο/14 ψηφία |
Χρόνος με ζώνη ώρας | 12 byte | 00:00:00 + 1459 έως 24: 00: 00-1459 | 1 μικρό δευτερόλεπτο/14 ψηφία |
Διάστημα | 12 byte | -178000000 έως 178000000 χρόνια | 1 μικρό δευτερόλεπτο/14 ψηφία |
Παραδείγματα:
Εισαγωγή | Περιγραφή |
---|---|
2025-09-07 | ISO 8601, 7 Σεπτεμβρίου με οποιοδήποτε στυλ ημερομηνίας (προτεινόμενη μορφή) |
7 Σεπτεμβρίου 2025 | 7 Σεπτεμβρίου με οποιοδήποτε στυλ ημερομηνίας |
7/9/2025 | 7 Σεπτεμβρίου με MDY, 9 Ιουλίου με DMY |
7/9/25 | 7 Σεπτεμβρίου 2025, με MDY |
2025-Σεπ-7 | 7 Σεπτεμβρίου με οποιοδήποτε στυλ ημερομηνίας |
Σεπ-7-2018 | 7 Σεπτεμβρίου με οποιοδήποτε στυλ ημερομηνίας |
7-Σεπ-25 | 7 Σεπτεμβρίου 2025, με YMD |
20250907 | ISO 8601,7 Σεπ 20225 σε οποιαδήποτε λειτουργία |
2.025.250 | έτος και ημέρα του έτους, στην περίπτωση αυτή, 7 Σεπτεμβρίου 2025 |
J25250 | Ιουλιανό ραντεβού |
Timeρα/ withρα με είσοδο ζώνης ώρας
Εισαγωγή | Περιγραφή |
---|---|
11: 19: 38.507 11:19:38 11:19 111938 | ISO 8601 |
11:19 π.μ | Asδια με 11:19 |
11:19 ΜΜ | ίδιο με 23:19 |
23: 19-3 23: 19-03: 00 231900-03 | ISO 8601, ίδιο με 11:19 μ.μ. EST |
11:19 μ.μ. EST | ζώνη ώρας καθορισμένη ως EST, ίδια με 23:19 EST |
Boolean Type
Ένας τύπος δεδομένων Boolean μπορεί να κρατηθεί
- Αληθής
- Ψευδής
- μηδενικό
αξίες.
Χρησιμοποιείτε α μπουλ ή boolean λέξη -κλειδί για να δηλώσετε μια στήλη με τον τύπο δεδομένων Boolean.
Όταν εισάγετε τιμές σε μια boolean στήλη, το Postgre μετατρέπει τιμές όπως
- Ναί
- και
- 1
- τ
- αληθής
σε 1.
Ενώ αξίες όπως
- Οχι
- Ν
- 0
- φά
- Ψευδής
μετατρέπονται σε 0
Κατά την επιλογή δεδομένων, οι τιμές μετατρέπονται ξανά σε ναι, αληθινές, y κ.λπ.
Τύποι γεωμετρικών δεδομένων
Οι τύποι γεωμετρικών δεδομένων αντιπροσωπεύουν δισδιάστατα χωρικά αντικείμενα. Βοηθούν στην εκτέλεση λειτουργιών όπως περιστροφές, κλιμάκωση, μετάφραση κ.
Ονομα | Μέγεθος αποθήκευσης | Αναπαράσταση | Περιγραφή |
---|---|---|---|
Σημείο | 16 byte | Σημείο σε αεροπλάνο | (x, y) |
Γραμμή | 32 byte | Άπειρη γραμμή | ((xl.yl). (x2.y2)) |
Lseg | 32 byte | Τμήμα πεπερασμένων γραμμών | ((xl.yl). (x2.y2)) |
Κουτί | 32 byte | Ορθογώνιο κουτί | ((xl.yl). (x2.y2)) |
Μονοπάτι | 16n + 16n byte | Κλείσιμο και άνοιγμα διαδρομής | ((xl.yl), ...) |
Πολύγωνο | 40 + 16n byte | Πολύγωνο | [(xl.yl) ....] |
Κύκλος | 24 byte | Κύκλος | (κεντρικό σημείο και ακτίνα) |
Απαριθμημένοι τύποι
Ο απαριθμημένος τύπος δεδομένων PostgreSQL είναι χρήσιμος για την αναπαράσταση σπάνια μεταβαλλόμενων πληροφοριών, όπως κωδικό χώρας ή αναγνωριστικό κλάδου. Ο απαριθμημένος τύπος δεδομένων αντιπροσωπεύεται σε έναν πίνακα με ξένα κλειδιά για να διασφαλιστεί η ακεραιότητα των δεδομένων.
Παράδειγμα:
Το χρώμα των μαλλιών είναι αρκετά στατικό σε μια δημογραφική βάση δεδομένων | _+_ |
Τύπος εύρους
Πολλές επιχειρηματικές εφαρμογές απαιτούν δεδομένα σε εύρη. Συνήθως, δύο στήλες (παράδειγμα: ημερομηνία έναρξης, ημερομηνία λήξης) ορίζονται για την αντιμετώπιση εύρους. Αυτό είναι και αναποτελεσματικό και δύσκολο να διατηρηθεί.
Το Postgre έχει δημιουργήσει τύπους εύρους ως εξής
- int4range - Εμφάνιση εύρους ακέραιου
- int8range - Εύρος εμφάνισης bigint
- numrange - Εμφανίζει το αριθμητικό εύρος
- tstrange - Σας βοηθά να εμφανίσετε χρονική σήμανση χωρίς ζώνη ώρας
- παράξενο - Σας επιτρέπει να εμφανίσετε χρονική σήμανση με ζώνη ώρας
- εύρος ημερομηνιών - Εύρος ημερομηνίας
Τύπος UUID
Το Universally Unique Identifies (UUID) είναι μια ποσότητα 128-bit που παράγεται από έναν αλγόριθμο. Είναι πολύ απίθανο το ίδιο αναγνωριστικό να δημιουργηθεί από άλλο άτομο στον κόσμο χρησιμοποιώντας τον ίδιο αλγόριθμο. Αυτός είναι ο λόγος για τον οποίο τα κατανεμημένα συστήματα, αυτά τα αναγνωριστικά είναι μια ιδανική επιλογή καθώς προσφέρει μοναδικότητα σε μια ενιαία βάση δεδομένων. Ένα UUID γράφεται ως ομάδα δεκαδικών ψηφίων πεζών, με διάφορες ομάδες να χωρίζονται με παύλες.
Το PostgreSQL έχει έναν εγγενή τύπο δεδομένων UUID που καταναλώνει 16 byte αποθήκευσης. Το UUID είναι ένας ιδανικός τύπος δεδομένων για κύρια κλειδιά.
Παράδειγμα:
CREATE TYPE hair_color AS ENUM ('brown','black','red','grey','blond')
Το Postgre δέχεται επίσης εναλλακτικές μορφές εισόδων UUID όπως όλα τα κεφαλαία γράμματα, χωρίς παύλες, τιράντες κ.λπ.
Τύπος XML
Η PostgreSQL σάς επιτρέπει να αποθηκεύετε δεδομένα XML σε έναν τύπο δεδομένων, αλλά δεν είναι παρά μια επέκταση σε έναν τύπο δεδομένων κειμένου. Αλλά το πλεονέκτημα είναι ότι ελέγχει ότι η είσοδος XML είναι καλά διαμορφωμένη.
Παράδειγμα:
d5f28c97-b962-43be-9cf8-ca1632182e8e
Τύπος JSON
Για αποθήκευση δεδομένων JSON Το PostgreSQL προσφέρει 2 τύπους δεδομένων
- JSON
- JSONB
json | Jsonb |
---|---|
Μια απλή επέκταση ενός τύπου δεδομένων κειμένου με επικύρωση JSON | Μια δυαδική αναπαράσταση των δεδομένων JSON |
Η εισαγωγή είναι γρήγορη αλλά η ανάκτηση δεδομένων σχετικά αργή. | Η εισαγωγή είναι αργή αλλά επιλεγμένη (η ανάκτηση δεδομένων είναι γρήγορη) |
Αποθηκεύει τα εισαγόμενα δεδομένα ακριβώς με τον τρόπο που περιλαμβάνει τον κενό χώρο. | Υποστηρίζει ευρετηρίαση. Μπορεί να βελτιστοποιήσει τον κενό χώρο για να γίνει πιο γρήγορη η ανάκτηση. |
Επανεπεξεργασία κατά την ανάκτηση δεδομένων | Δεν απαιτείται επανεπεξεργασία κατά την ανάκτηση δεδομένων |
Ο πιο ευρέως χρησιμοποιούμενος τύπος δεδομένων JSON μας χρησιμοποίησε το jsonb εκτός εάν υπάρχει κάποια εξειδικευμένη ανάγκη χρήσης τύπων δεδομένων JSON.
Παράδειγμα:
XMLPARSE (DOCUMENT 'Data Type...')
CREATE TABLE employee ( id integer NOT NULL, age integer NOT NULL, data jsonb );
Pseευδο-Τύποι
Η PostgreSQL έχει πολλές καταχωρήσεις ειδικού σκοπού που ονομάζονται ψευδο-τύποι. Δεν μπορείτε να χρησιμοποιήσετε ψευδο-τύπους ως τύπους στηλών PostgreSQL. Χρησιμοποιούνται για να δηλώσουν ή να ορίσουν το όρισμα ή τον τύπο επιστροφής.
Κάθε ένας από τους διαθέσιμους ψευδο-τύπους είναι χρήσιμος σε καταστάσεις όπου τα έγγραφα συμπεριφοράς μιας συνάρτησης δεν αντιστοιχούν στην απλή λήψη ή επιστροφή μιας τιμής ενός συγκεκριμένου τύπου δεδομένων SQL.
Ονομα | Περιγραφή |
---|---|
Οποιος | Η λειτουργία δέχεται όλους τους τύπους δεδομένων εισόδου. |
Μια συστοιχία | Η συνάρτηση δέχεται οποιονδήποτε τύπο δεδομένων πίνακα. |
Οποιοδήποτε στοιχείο | Η συνάρτηση δέχεται οποιονδήποτε τύπο δεδομένων. |
Οποιοδήποτε enum | Η συνάρτηση δέχεται οποιονδήποτε τύπο δεδομένων enum. |
Nonarray | Η συνάρτηση δέχεται οποιονδήποτε τύπο δεδομένων χωρίς πίνακα. |
Cstring | Η συνάρτηση δέχεται ή επιστρέφει συμβολοσειρά C με μηδενικό τερματισμό. |
Εσωτερικός | Η εσωτερική λειτουργία αποδέχεται ή επιστρέφει τον τύπο δεδομένων εσωτερικού διακομιστή. |
Language_handler | Δηλώνεται ότι επιστρέφει ο χειριστής γλώσσας. |
Ρεκόρ | Βρείτε μια συνάρτηση που επιστρέφει έναν απροσδιόριστο τύπο γραμμής. |
Δώσει το έναυσμα για | Μια λειτουργία σκανδάλης χρησιμοποιείται για την επιστροφή της σκανδάλης. |
Είναι σημαντικό ο χρήστης που χρησιμοποιεί αυτήν τη λειτουργία να βεβαιωθεί ότι η συνάρτηση θα συμπεριφέρεται με ασφάλεια όταν χρησιμοποιείται ψευδο-τύπος ως τύπος ορίσματος.
Βέλτιστες πρακτικές με χρήση τύπων δεδομένων
- Χρησιμοποιήστε τον τύπο δεδομένων 'κειμένου' εκτός εάν θέλετε να περιορίσετε την εισαγωγή
- Ποτέ μην χρησιμοποιείτε 'char'.
- Οι ακέραιοι χρησιμοποιούν 'int'. Χρησιμοποιήστε το bigint μόνο όταν έχετε πραγματικά μεγάλους αριθμούς
- Χρησιμοποιήστε το 'αριθμητικό' σχεδόν πάντα
- Χρησιμοποιήστε το float στο PostgreSQL εάν έχετε προέλευση δεδομένων IEEE 754
Περίληψη
- Η PostgreSQL προσφέρει ένα πλούσιο σύνολο εγγενών τύπων δεδομένων για τους χρήστες
- Το PostgreSQL υποστηρίζει τύπους δεδομένων χαρακτήρων για αποθήκευση τιμών κειμένου
- Η PostgreSQL υποστηρίζει δύο διαφορετικούς τύπους αριθμών: 1. Ακέραιοι, 2. Αριθμοί κυμαινόμενου σημείου
- Μια δυαδική συμβολοσειρά είναι μια ακολουθία bytes ή octets
- Το PostgreSQL έχει τύπο διεύθυνσης δικτύου για να σας βοηθήσει να βελτιστοποιήσετε την αποθήκευση δεδομένων δικτύου
- Αναζήτηση κειμένου Οι δομές δεδομένων PostgreSQL έχουν σχεδιαστεί για να υποστηρίζουν αναζήτηση πλήρους κειμένου
- Ημερομηνία/typesρα Οι τύποι δεδομένων PSQL επιτρέπουν πληροφορίες ημερομηνίας και ώρας σε διάφορες μορφές
- Οι τύποι πεδίων Boolean Postgres μπορούν να κρατήσουν τρεις τιμές 1. Σωστό 2. Λάθος 3. Μηδέν
- Οι τύποι δεδομένων γεωμετρικών PostgreSQL αντιπροσωπεύουν δισδιάστατα χωρικά αντικείμενα
- Οι απαριθμημένοι τύποι δεδομένων στο PostgreSQL είναι χρήσιμοι για την αναπαράσταση σπάνια μεταβαλλόμενων πληροφοριών, όπως κωδικός χώρας ή αναγνωριστικό κλάδου
- Το Universally Unique Identifies (UUID) είναι μια ποσότητα 128-bit που παράγεται από έναν αλγόριθμο
- Η PostgreSQL έχει πολλές καταχωρήσεις ειδικού σκοπού που ονομάζονται ψευδο-τύποι
- Είναι η καλύτερη πρακτική να χρησιμοποιείτε τον τύπο δεδομένων «κειμένου», εκτός εάν θέλετε να περιορίσετε την εισαγωγή