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

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

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

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

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 τύπους δεδομένων

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

Συνοψίστε αυτήν την ανάρτηση με: