PostgreSQL Τύποι δεδομένων: Αριθμητικοί, Χαρακτήρες, Byte

⚡ Έξυπνη Σύνοψη

PostgreSQL Οι τύποι δεδομένων ορίζουν το είδος της τιμής που μπορεί να αποθηκεύσει κάθε στήλη, καλύπτοντας τις κατηγορίες χαρακτήρων, αριθμών, δυαδικών, ημερομηνίας και ώρας, Boolean, γεωμετρικών, δικτύου, UUID, XML και JSON. PostgreSQL Επιτρέπει επίσης στους χρήστες να δημιουργούν προσαρμοσμένους τύπους με την εντολή CREATE TYPE.

  • 🔤 Τύποι χαρακτήρων: Οι CHAR, VARCHAR και TEXT αποθηκεύουν τιμές κειμένου σταθερού μήκους, μεταβλητού μήκους και απεριόριστου μήκους.
  • 🔢 Αριθμητικοί τύποι: Οι ακέραιοι αριθμοί και οι τύποι κινητής υποδιαστολής κυμαίνονται από smallint έως bigint, καθώς και ακριβείς αριθμητικές και δεκαδικές τιμές.
  • 🕒 Ημερομηνία και ώρα: Οι τύποι χρονικής σήμανσης, ημερομηνίας, ώρας και διαστήματος προσφέρουν ακρίβεια μικροδευτερολέπτων με προαιρετικές ζώνες ώρας.
  • Λογική τιμή και απαρίθμηση: Η λογική τιμή ισχύει για true, false ή null, ενώ οι απαριθμημένοι τύποι μοντελοποιούν σπάνια μεταβαλλόμενα σταθερά σύνολα.
  • 🌐 Εξειδικευμένοι τύποι: Τα δίκτυα, τα γεωμετρικά, τα UUID, τα XML, τα JSON και τα JSONB χειρίζονται διευθύνσεις, σχήματα, αναγνωριστικά και δομημένα δεδομένα.
  • 💡 καλύτερη πρακτική: Προτιμήστε το TEXT για συμβολοσειρές και το NUMERIC για αριθμούς και δημιουργήστε προσαρμοσμένους τύπους μόνο όταν χρειάζεται.

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

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

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

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

Ας διαβάσουμε 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 έχει τρεις εγγενείς τύπους που σας βοηθούν να βελτιστοποιήσετε τα δεδομένα δικτύου.

Όνομα Μέγεθος Περιγραφή
cidr 7 ή 19 byte IPv4 και IPv6 δίκτυα
Inet 7 ή 19 byte Υπολογιστές και δίκτυα IPv4 και IPv6
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 Σεπτεμβρίου 2025 σε οποιαδήποτε λειτουργία
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),…)
Polygon 40 + 16n byte Polygon [(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

Το Καθολικά Μοναδικό Αναγνωριστικό (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"], "onboarded": true}');

Ψευδο-Τύποι

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

Καθένας από τους διαθέσιμους ψευδοτύπους είναι χρήσιμος σε περιπτώσεις όπου τα έγγραφα συμπεριφοράς μιας συνάρτησης δεν αντιστοιχούν στην απλή λήψη ή επιστροφή μιας τιμής μιας συγκεκριμένης Τύπος δεδομένων SQL.

Όνομα Περιγραφή
Κάθε Η συνάρτηση δέχεται όλους τους τύπους δεδομένων εισόδου.
Ένας πίνακας Η συνάρτηση δέχεται οποιονδήποτε τύπο δεδομένων πίνακα.
Οποιοδήποτε στοιχείο Η συνάρτηση δέχεται οποιονδήποτε τύπο δεδομένων.
Οποιοδήποτε αριθμ Η συνάρτηση δέχεται οποιονδήποτε τύπο δεδομένων enum.
Nonarray Η συνάρτηση δέχεται οποιονδήποτε τύπο δεδομένων εκτός πίνακα.
Cstring Η συνάρτηση δέχεται ή επιστρέφει συμβολοσειρά C με μηδενικό τερματισμό.
Εσωτερικός Η εσωτερική συνάρτηση δέχεται ή επιστρέφει τύπο δεδομένων εσωτερικού διακομιστή.
Language_handler Δηλώνεται ότι επιστρέφει τον χειριστή γλώσσας.
Ρεκόρ Βρείτε μια συνάρτηση που επιστρέφει έναν απροσδιόριστο τύπο σειράς.
Σκανδάλη Μια συνάρτηση ενεργοποίησης χρησιμοποιείται για την επιστροφή της σκανδάλης.

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

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

  • Χρησιμοποιήστε τον τύπο δεδομένων "κείμενο", εκτός εάν θέλετε να περιορίσετε την εισαγωγή
  • Μην χρησιμοποιείτε ποτέ το "char".
  • Οι ακέραιοι χρησιμοποιούν το "int". Χρησιμοποιήστε το bigint μόνο όταν έχετε πραγματικά μεγάλους αριθμούς
  • Χρησιμοποιήστε "αριθμητικό" σχεδόν πάντα
  • Χρησιμοποιήστε το float in PostgreSQL εάν έχετε πηγή δεδομένων IEEE 754

Συχνές Ερωτήσεις

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

Ναί. PostgreSQL επιτρέπει σε οποιαδήποτε στήλη να αποθηκεύει έναν πίνακα ενός βασικού τύπου, όπως integer[] ή text[]. Οι πίνακες είναι χρήσιμοι για λίστες τιμών και μπορούν να αναζητηθούν, να καταχωρηθούν σε ευρετήριο και να μην ενσωματωθούν σε ερωτήματα.

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

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

Ναι. Η Τεχνητή Νοημοσύνη μπορεί να αντιστοιχίσει τύπους δεδομένων από MySQL, Oracleή SQL Server σε αυτούς PostgreSQL ισοδύναμα και αναντιστοιχίες σημαιών, όπως TINYINT ή NVARCHAR, helping Σχεδιάζετε μια ομαλότερη μετεγκατάσταση βάσης δεδομένων.

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