PostgreSQL Τύποι δεδομένων: Χαρακτήρας | Αριθμητικό | Δυαδικό | Boolean

Η PostgreSQL προσφέρει ένα πλούσιο σύνολο εγγενών τύπων δεδομένων για τους χρήστες. Οι χρήστες μπορούν να προσθέσουν νέους τύπους με τη βοήθεια της εντολής ΔΗΜΙΟΥΡΓΙΑ ΤΥΠΟΥ. Κάνει επίσης τα ερωτήματα πιο απλά και πιο ευανάγνωστα.

Τύποι δεδομένων στο PostgreSQL

Το PostgreSQL υποστηρίζει τους ακόλουθους τύπους δεδομένων:

  • Τύποι κειμένου
  • Αριθμητικοί τύποι
  • Ημερομηνίες και Timesρες
  • XML
  • JSON
  • Boolean
  • Bits
  • Δυαδικά δεδομένα
  • Δίκτυο
  • Πίνακες
  • Δημιουργήστε τον τύπο δεδομένων σας
  • Boolean
  • Προσωρινός
  • UUID
  • Πίνακας
  • JSON
  • Ειδικοί τύποι δεδομένων για αποθήκευση διεύθυνσης δικτύου και γεωμετρικών δεδομένων.

Ας μελετήσουμε λεπτομερώς τους τύπους δεδομένων PostgreSQL

Τύποι δεδομένων χαρακτήρων

Το PostgreSQL υποστηρίζει τύπους δεδομένων χαρακτήρων για αποθήκευση τιμών κειμένου. Η PostgreSQL δημιουργεί τύπους δεδομένων χαρακτήρων από τις ίδιες εσωτερικές δομές. Η PostgreSQL προσφέρει τρεις τύπους δεδομένων χαρακτήρων: CHAR (n), VARCHAR (n) και TEXT.

ΟνομαΠεριγραφή
varchar (n)Σας επιτρέπει να δηλώσετε μεταβλητό μήκος με όριο
Char (n)Σταθερού μήκους, κενή επένδυση
ΚείμενοΗ χρήση μπορεί να χρησιμοποιήσει αυτόν τον τύπο δεδομένων για να δηλώσει μια μεταβλητή με απεριόριστο μήκος

Αριθμητικοί τύποι δεδομένων

Η PostgreSQL υποστηρίζει δύο διαφορετικούς τύπους αριθμών:

  • Ακέραιοι
  • Αριθμοί κυμαινόμενων σημείων
ΟνομαΜέγεθος καταστήματοςΕύρος
smallint2 byte-32768 έως +32767
ακέραιος αριθμός4 byte-2147483648 έως +2147483647
bigint8 byte-9223372036854775808 έως 9223372036854775807
δεκαδικόςμεταβλητόςΕάν το δηλώσατε ως δεκαδικό τύπο δεδομένων κυμαίνεται από 131072 ψηφία πριν από το δεκαδικό έως 16383 ψηφία μετά το δεκαδικό σημείο
αριθμητικόςμεταβλητόςΕάν τον δηλώσετε ως αριθμό, μπορείτε να συμπεριλάβετε αριθμό έως 131072 ψηφία πριν από το δεκαδικό σημείο σε 16383 ψηφία μετά το δεκαδικό σημείο
πραγματικός4 byte6 δεκαδικά ψηφία ακρίβεια
διπλό8 byte15 δεκαδικά ψηφία ακρίβεια

Δυαδικοί τύποι δεδομένων

Μια δυαδική συμβολοσειρά είναι μια ακολουθία οκτάδων ή byte. Οι τύποι δεδομένων δυαδικού Postgres χωρίζονται με δύο τρόπους.

  • Οι δυαδικές συμβολοσειρές επιτρέπουν την αποθήκευση αποδόσεων μηδενικής αξίας
  • Μη εκτυπώσιμα byte

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

ΟνομαΜέγεθος αποθήκευσηςΠεριγραφή
Ψηφιόλεξη1 έως 4 byte συν το μέγεθος της δυαδικής συμβολοσειράςΔυαδική συμβολοσειρά μεταβλητού μήκους

Τύπος διεύθυνσης δικτύου

Πολλές εφαρμογές αποθηκεύουν πληροφορίες δικτύου, όπως διεύθυνση IP χρηστών ή

Αισθητήρες. Το PostgreSQL έχει τρεις εγγενείς τύπους που σας βοηθούν να βελτιστοποιήσετε τα δεδομένα δικτύου.

ΟνομαΜέγεθοςΠεριγραφή
μηλίτης7 ή 19 αντίοΔίκτυα IPV4 και IPv6
Inet7 ή 19 byteIPV4 και IPV5 κεντρικός υπολογιστής και δίκτυα
macaddr6 byteΔιευθύνσεις MAC

Η χρήση τύπων διευθύνσεων δικτύου έχει τα ακόλουθα πλεονεκτήματα

  1. Αποθήκευση χώρου αποθήκευσης
  2. Έλεγχος σφάλματος εισαγωγής
  3. Λειτουργίες όπως η αναζήτηση δεδομένων με υποδίκτυο

Τύπος αναζήτησης κειμένου

Η PostgreSQL παρέχει δύο τύπους δεδομένων που έχουν σχεδιαστεί για να υποστηρίζουν αναζήτηση πλήρους κειμένου. Η αναζήτηση πλήρους κειμένου είναι η αναζήτηση μέσω μιας συλλογής εγγράφων φυσικής γλώσσας για την αναζήτηση εκείνων που ταιριάζουν καλύτερα σε ένα ερώτημα.

  • Αναζήτηση κειμένου Tsvector Οι μεταβλητοί τύποι PostgreSQL αντιπροσωπεύουν ένα έγγραφο σε μορφή βελτιστοποιημένη για αναζήτηση κειμένου
  • Η αναζήτηση κειμένου τύπου ερωτήματος αποθηκεύει τις λέξεις -κλειδιά που πρέπει να αναζητηθούν

Τύποι δεδομένων ημερομηνίας/ώρας

Η χρονική σήμανση PostgreSQL προσφέρει ακρίβεια μικροδευτερολέπτου αντί για δεύτερη ακρίβεια. Επιπλέον, έχετε επίσης τη δυνατότητα αποθήκευσης με ζώνη ώρας ή χωρίς. Η PostgreSQL θα μετατρέψει τη χρονική σήμανση με ζώνη ώρας σε UTC κατά την εισαγωγή και θα την αποθηκεύσει.

Η εισαγωγή ημερομηνίας και ώρας γίνεται αποδεκτή σε διάφορες μορφές, συμπεριλαμβανομένων των παραδοσιακών Postgres, ISO 8601. Συμβατό με SQL κ.λπ.

Η PostgreSQL υποστηρίζει παραγγελίες ημέρας / μήνα / έτους. Οι μορφές που υποστηρίζονται είναι DMY, MDY, YMD

Τύποι χρονικών δεδομένων

ΟνομαΜέγεθοςΕύροςΑνάλυση
Χρονική σήμανση χωρίς ζώνη ώρας8 byte4713 π.Χ. έως 294276 μ.Χ1 μικρό δευτερόλεπτο/14 ψηφία
Χρονική σήμανση με ζώνη ώρας8 byte4713 π.Χ. έως 294276 μ.Χ1 μικρό δευτερόλεπτο/14 ψηφία
ημερομηνία4 byte4713 π.Χ. έως 294276 μ.ΧΜια μέρα
Χρόνος χωρίς ζώνη ώρας8 byte00:00:00 έως 24:00:001 μικρό δευτερόλεπτο/14 ψηφία
Χρόνος με ζώνη ώρας12 byte00:00:00 + 1459 έως 24: 00: 00-14591 μικρό δευτερόλεπτο/14 ψηφία
Διάστημα12 byte-178000000 έως 178000000 χρόνια1 μικρό δευτερόλεπτο/14 ψηφία

Παραδείγματα:

ΕισαγωγήΠεριγραφή
2025-09-07ISO 8601, 7 Σεπτεμβρίου με οποιοδήποτε στυλ ημερομηνίας (προτεινόμενη μορφή)
7 Σεπτεμβρίου 20257 Σεπτεμβρίου με οποιοδήποτε στυλ ημερομηνίας
7/9/20257 Σεπτεμβρίου με MDY, 9 Ιουλίου με DMY
7/9/257 Σεπτεμβρίου 2025, με MDY
2025-Σεπ-77 Σεπτεμβρίου με οποιοδήποτε στυλ ημερομηνίας
Σεπ-7-20187 Σεπτεμβρίου με οποιοδήποτε στυλ ημερομηνίας
7-Σεπ-257 Σεπτεμβρίου 2025, με YMD
20250907ISO 8601,7 Σεπ 20225 σε οποιαδήποτε λειτουργία
2.025.250έτος και ημέρα του έτους, στην περίπτωση αυτή, 7 Σεπτεμβρίου 2025
J25250Ιουλιανό ραντεβού

Timeρα/ withρα με είσοδο ζώνης ώρας

ΕισαγωγήΠεριγραφή
11: 19: 38.507 11:19:38 11:19 111938ISO 8601
11:19 π.μAsδια με 11:19
11:19 ΜΜίδιο με 23:19
23: 19-3 23: 19-03: 00 231900-03ISO 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))
Lseg32 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 τύπους δεδομένων

  1. JSON
  2. JSONB
jsonJsonb
Μια απλή επέκταση ενός τύπου δεδομένων κειμένου με επικύρωση 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 έχει πολλές καταχωρήσεις ειδικού σκοπού που ονομάζονται ψευδο-τύποι
  • Είναι η καλύτερη πρακτική να χρησιμοποιείτε τον τύπο δεδομένων «κειμένου», εκτός εάν θέλετε να περιορίσετε την εισαγωγή