Oracle Τύποι δεδομένων PL/SQL: Boolean, Number, Date [Παράδειγμα]

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

Οι τύποι δεδομένων PL/SQL ορίζουν πώς Oracle Αποθηκεύει, χειρίζεται και περιορίζει κάθε τιμή σε ένα μπλοκ. Ομαδοποιούνται σε οικογένειες χαρακτήρων, αριθμών, Boolean, ημερομηνίας και μεγάλων αντικειμένων (LOB), καθεμία με τη δική της μορφή αποθήκευσης, όρια μεγέθους και κανόνες ανάθεσης.

  • 🔤 Χαρακτήρας: Το CHAR έχει σταθερό μήκος, το VARCHAR2 έχει μεταβλητό μήκος και τα NCHAR και NVARCHAR2 χρησιμοποιούν το σύνολο εθνικών χαρακτήρων.
  • 🔢 Αριθμός: Η συνάρτηση NUMBER αποθηκεύει τιμές σταθερής ή κινητής υποδιαστολής με ακρίβεια έως και 38 ψηφία.
  • Boolean: Ισχύει TRUE ή FALSE και χρησιμοποιείται κυρίως στη λογική υπό όρους.
  • 📅 Ημερομηνία: Αποθηκεύει την ημερομηνία και την ώρα, με προεπιλογή τα μεσάνυχτα όταν δεν δίνεται ώρα.
  • 🗂️ ΚΤΥΠΩ ΥΨΗΛΑ ΣΦΑΙΡΑΝ ΤΕΝΙΣ: Τα BLOB, CLOB, NCLOB και BFILE αποθηκεύουν μεγάλα αδόμητα δεδομένα έως και 128 TB.
  • 💡 καλύτερη πρακτική: Προτιμήστε το VARCHAR2 αντί για το CHAR και το LOB αντί για το LONG για εξοικονόμηση μνήμης και διατήρηση της μελλοντικής διαθεσιμότητας.
  • 🔗 Πεδίο εφαρμογής: Οι τύποι SQL εφαρμόζονται σε στήλες πίνακα. Οι τύποι PL/SQL χρησιμοποιούνται μέσα σε μπλοκ PL/SQL.

Oracle Τύποι δεδομένων PL/SQL

Τι είναι οι τύποι δεδομένων PL/SQL;

Τύποι δεδομένων στην PL/SQL ορίστε πώς τα δεδομένα θα αποθηκεύονται, θα διαχειρίζονται και θα επεξεργάζονται από Oracle κατά την αποθήκευση και την επεξεργασία. Οι τύποι δεδομένων σχετίζονται με μια συγκεκριμένη μορφή αποθήκευσης και περιορισμούς εύρους. Στο Oracle, σε κάθε τιμή ή σταθερά αντιστοιχίζεται ένας τύπος δεδομένων.

Η κύρια διαφορά μεταξύ PL/SQL και SQL οι τύποι δεδομένων SQL περιορίζονται σε στήλες πίνακα, ενώ οι τύποι δεδομένων PL/SQL χρησιμοποιούνται στο Μπλοκ PL/SQL. Περισσότερα για αυτό αργότερα στο σεμινάριο.

Ακολουθεί ένα διάγραμμα των διαφορετικών Oracle Τύποι δεδομένων PL/SQL:

Διαφορετικοί τύποι δεδομένων σε PL/SQL
Διαφορετικοί τύποι δεδομένων σε PL/SQL

Τύπος δεδομένων ΧΑΡΑΚΤΗΡΑ PL/SQL

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

Αυτός ο τύπος δεδομένων χαρακτήρων ταξινομείται περαιτέρω ως εξής:

  • Τύπος δεδομένων CHAR (σταθερό μέγεθος συμβολοσειράς)
  • Τύπος δεδομένων VARCHAR2 (μεταβλητό μέγεθος συμβολοσειράς)
  • Τύπος δεδομένων VARCHAR
  • NCHAR (εγγενές σταθερό μέγεθος συμβολοσειράς)
  • NVARCHAR2 (εγγενές μέγεθος συμβολοσειράς μεταβλητής)
  • LONG και LONG RAW
Τύπος δεδομένων Περιγραφή Σύνταξη
ΑΠΑΝΘΡΑΚΩΝΩ Αυτός ο τύπος δεδομένων αποθηκεύει μια τιμή συμβολοσειράς και το μέγεθος της συμβολοσειράς καθορίζεται κατά τη στιγμή της δήλωσης της. μεταβλητή.

  • Oracle blank-pads η μεταβλητή αν δεν καταλαμβάνει ολόκληρο το δηλωμένο μέγεθος, επομένως Oracle κατανέμει τη μνήμη για το δηλωμένο μέγεθος ακόμα κι αν η μεταβλητή δεν την γεμίζει.
  • Ο περιορισμός μεγέθους είναι 1-2000 byte.
  • Το CHAR είναι πιο κατάλληλο όπου χειρίζεται ένα σταθερό μέγεθος δεδομένων.
grade CHAR;
manager CHAR (10):= 'guru99';

Επεξήγηση σύνταξης:

  • Η πρώτη εντολή δηλώνει τη μεταβλητή 'grade' τύπου δεδομένων CHAR με μέγιστο μέγεθος 1 byte (προεπιλεγμένη τιμή).
  • Η δεύτερη εντολή δηλώνει τη μεταβλητή 'manager' τύπου δεδομένων CHAR με μέγιστο μέγεθος 10 και εκχωρεί την τιμή 'guru99', η οποία είναι 6 byte. Oracle σε αυτήν την περίπτωση, διαθέτει 10 byte αντί για 6.
ΒΑΡΚΑΡΗ2 Αυτός ο τύπος δεδομένων αποθηκεύει μια συμβολοσειρά, αλλά το μήκος της δεν είναι σταθερό.

  • Ο περιορισμός μεγέθους είναι 1-4000 byte για μια στήλη πίνακα και 1-32767 byte για μια μεταβλητή.
  • Το μέγεθος ορίζεται για κάθε μεταβλητή κατά τη δήλωση.
  • Oracle εκχωρεί μνήμη μόνο αφού οριστεί η μεταβλητή, επομένως χρησιμοποιεί το πραγματικό μήκος της αποθηκευμένης συμβολοσειράς αντί για το δηλωμένο μέγεθος.
  • Είναι πάντα καλό να χρησιμοποιείτε το VARCHAR2 αντί για το CHAR για να βελτιστοποιήσετε τη χρήση μνήμης.
manager VARCHAR2(10) := 'guru99';

Επεξήγηση σύνταξης:

  • Η εντολή δηλώνει τη μεταβλητή 'manager' τύπου δεδομένων VARCHAR2 με μέγιστο μέγεθος 10 και αντιστοιχίζει την μεταβλητή 'guru99', η οποία είναι 6 byte. Oracle διαθέτει μνήμη μόνο 6 byte εδώ.
VARCHAR Αυτό είναι συνώνυμο με τον τύπο δεδομένων VARCHAR2.

  • Είναι πάντα καλή πρακτική να χρησιμοποιείτε το VARCHAR2 αντί για το VARCHAR για να αποφεύγετε αλλαγές στη συμπεριφορά.
manager VARCHAR(10) := 'guru99';

Επεξήγηση σύνταξης:

  • Η εντολή δηλώνει τη μεταβλητή 'manager' τύπου δεδομένων VARCHAR με μέγιστο μέγεθος 10 και εκχωρεί στην μεταβλητή 'guru99', 6 byte. Oracle διαθέτει μόνο 6 byte, παρόμοια με το VARCHAR2.
ΝΧΑΡ Αυτός ο τύπος δεδομένων είναι ο ίδιος με τον CHAR, αλλά το σύνολο χαρακτήρων είναι το εθνικό σύνολο χαρακτήρων.

  • Αυτό το σύνολο χαρακτήρων μπορεί να οριστεί για την περίοδο λειτουργίας χρησιμοποιώντας NLS_PARAMETERS.
  • Το σύνολο χαρακτήρων μπορεί να είναι είτε UTF16 είτε UTF8.
  • Ο περιορισμός μεγέθους είναι 1-2000 byte.
native NCHAR(10);

Επεξήγηση σύνταξης:

  • Η εντολή δηλώνει τη μεταβλητή 'native' τύπου δεδομένων NCHAR με μέγιστο μέγεθος 10.
  • Το μήκος εξαρτάται από τον αριθμό των bytes ανά χαρακτήρα που ορίζεται στο σύνολο χαρακτήρων.
NVARCHAR2 Αυτός ο τύπος δεδομένων είναι ο ίδιος με τον VARCHAR2, αλλά το σύνολο χαρακτήρων είναι το εθνικό σύνολο χαρακτήρων.

  • Αυτό το σύνολο χαρακτήρων μπορεί να οριστεί για την περίοδο λειτουργίας χρησιμοποιώντας NLS_PARAMETERS.
  • Το σύνολο χαρακτήρων μπορεί να είναι είτε UTF16 είτε UTF8.
  • Ο περιορισμός μεγέθους είναι 1-4000 byte.
Native_var NVARCHAR2(10):= 'guru99';

Επεξήγηση σύνταξης:

  • Η εντολή δηλώνει τη μεταβλητή 'Native_var' τύπου δεδομένων NVARCHAR2 με μέγιστο μέγεθος 10.
LONG και LONG RAW Αυτός ο τύπος δεδομένων αποθηκεύει μεγάλο κείμενο ή ακατέργαστα δεδομένα έως και 2 GB.

  • Αυτά χρησιμοποιούνται κυρίως στο λεξικό δεδομένων.
  • Το LONG αποθηκεύει δεδομένα συνόλου χαρακτήρων, ενώ το LONG RAW αποθηκεύει δεδομένα σε δυαδική μορφή.
  • Το LONG RAW δέχεται αντικείμενα πολυμέσων και εικόνες, ενώ το LONG λειτουργεί μόνο σε δεδομένα που μπορούν να αποθηκευτούν χρησιμοποιώντας ένα σύνολο χαρακτήρων.
Large_text LONG;
Large_raw LONG RAW;

Επεξήγηση σύνταξης:

  • Η πρόταση δηλώνει το 'Large_text' για τύπο δεδομένων LONG και το 'Large_raw' για τύπο δεδομένων LONG RAW.

Σημείωση: Η χρήση του τύπου δεδομένων LONG δεν συνιστάται από OracleΟ τύπος δεδομένων LOB θα πρέπει να προτιμάται.

PL/SQL NUMBER Τύπος δεδομένων

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

A NUMBER(8,2);
B NUMBER(8);
C NUMBER;

Επεξήγηση σύνταξης:

  • Η πρώτη δήλωση δηλώνει τη μεταβλητή 'A' αριθμητικού τύπου δεδομένων με συνολική ακρίβεια 8 και 2 δεκαδικά ψηφία.
  • Το δεύτερο δηλώνει το 'B' αριθμητικού τύπου δεδομένων με συνολική ακρίβεια 8 και χωρίς δεκαδικά ψηφία.
  • Το τρίτο είναι το πιο γενικό, δηλώνοντας 'C' τύπου δεδομένων αριθμού χωρίς περιορισμό στην ακρίβεια ή τα δεκαδικά ψηφία. Μπορεί να έχει έως και 38 ψηφία.

Τύπος δεδομένων PL/SQL BOOLEAN

Αυτός ο τύπος δεδομένων αποθηκεύει λογικές τιμές. Oracle Ο τύπος δεδομένων Boolean αντιπροσωπεύει είτε TRUE είτε FALSE και χρησιμοποιείται κυρίως σε δηλώσεις υπό όρους. Οι τιμές δεν χρειάζεται να περικλείονται σε εισαγωγικά κατά την εκχώρηση.

Var1 BOOLEAN;

Επεξήγηση σύνταξης:

  • Η μεταβλητή 'Var1' δηλώνεται ως τύπος δεδομένων BOOLEAN. Η έξοδος θα είναι είτε true είτε false, ανάλογα με το σύνολο συνθήκης.

PL/SQL DATE Τύπος δεδομένων

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

Το πρότυπο Oracle Η μορφή ώρας για την είσοδο και την έξοδο είναι 'ΗΗ-ΜΟΝ-ΕΕ', η οποία ορίζεται σε NLS_PARAMETERS (NLS_DATE_FORMAT) σε επίπεδο συνεδρίας.

newyear DATE:= '01-JAN-2015';
current_date DATE:= SYSDATE;

Επεξήγηση σύνταξης:

  • Η μεταβλητή 'newyear' δηλώνεται ως τύπος δεδομένων DATE και της έχει εκχωρηθεί η τιμή 1 Ιανουαρίου 2015.
  • Η δεύτερη δήλωση δηλώνει τον τύπο δεδομένων 'current_date' ως DATE και αντιστοιχίζει την τρέχουσα ημερομηνία συστήματος.
  • Και οι δύο μεταβλητές περιέχουν πληροφορίες χρόνου.

Τύπος δεδομένων PL/SQL LOB

Αυτός ο τύπος δεδομένων χρησιμοποιείται κυρίως για την αποθήκευση και τον χειρισμό μεγάλων μπλοκ μη δομημένων δεδομένων, όπως εικόνες και αρχεία πολυμέσων. Oracle προτιμά τον τύπο δεδομένων LOB έναντι του τύπου δεδομένων LONG επειδή είναι πιο ευέλικτος. Τα κύρια πλεονεκτήματα του LOB έναντι του LONG είναι:

  • Ένας πίνακας περιορίζεται σε μία στήλη LONG, ενώ δεν υπάρχει περιορισμός στον αριθμό των στηλών LOB.
  • Τα εργαλεία διεπαφής δεδομένων δέχονται LOB κατά την αντιγραφή, αλλά παραλείπουν τις στήλες LONG, οι οποίες πρέπει να αντιγραφούν χειροκίνητα.
  • Μια στήλη LONG αποθηκεύει έως και 2 GB, ενώ μια στήλη LOB μπορεί να αποθηκεύσει έως και 128 TB.
  • Oracle Συνεχίζει να βελτιώνει τον τύπο δεδομένων LOB με κάθε κυκλοφορία, ενώ το LONG παραμένει σε μεγάλο βαθμό αμετάβλητο.

Επομένως, είναι πάντα καλό να χρησιμοποιείτε τον τύπο δεδομένων LOB αντί για LONG. Οι διαφορετικοί τύποι δεδομένων LOB παρακάτω μπορούν να αποθηκεύσουν έως και 128 terabyte:

  1. Blob
  2. CLOB και NCLOB
  3. ΠΡΟΦΙΛ
Τύπος δεδομένων Περιγραφή Σύνταξη
Blob Αυτός ο τύπος δεδομένων αποθηκεύει δεδομένα LOB σε μορφή δυαδικού αρχείου έως και 128 TB. Δεν αποθηκεύει δεδομένα με βάση λεπτομέρειες συνόλου χαρακτήρων, επομένως μπορεί να αποθηκεύσει μη δομημένα δεδομένα, όπως αντικείμενα πολυμέσων και εικόνες.
Binary_data BLOB;

Επεξήγηση σύνταξης:

  • Η μεταβλητή 'Binary_data' δηλώνεται ως BLOB.
CLOB και NCLOB Το CLOB αποθηκεύει δεδομένα LOB στο σύνολο χαρακτήρων, ενώ το NCLOB αποθηκεύει δεδομένα στο εγγενές σύνολο χαρακτήρων. Επειδή αυτά χρησιμοποιούν χώρο αποθήκευσης που βασίζεται σε σύνολο χαρακτήρων, δεν μπορούν να αποθηκεύσουν δεδομένα όπως πολυμέσα ή εικόνες. Το μέγιστο μέγεθος είναι 128 TB.
Charac_data CLOB;

Επεξήγηση σύνταξης:

  • Η μεταβλητή 'Charac_data' δηλώνεται ως τύπος δεδομένων CLOB.
ΠΡΟΦΙΛ
  • Το BFILE αποθηκεύει μη δομημένα δυαδικά δεδομένα εκτός της βάσης δεδομένων ως αρχείο λειτουργικού συστήματος.
  • Το μέγεθος ενός BFILE περιορίζεται από το λειτουργικό σύστημα και τα αρχεία είναι μόνο για ανάγνωση και δεν μπορούν να τροποποιηθούν.

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

Το CHAR έχει σταθερό μήκος και κενά pad στο δηλωμένο μέγεθος, σπαταλώντας χώρο σε σύντομες τιμές. Το VARCHAR2 έχει μεταβλητό μήκος και αποθηκεύει μόνο τους πραγματικούς χαρακτήρες, επομένως προτιμάται για τις περισσότερες στήλες συμβολοσειρών.

Το LOB επιτρέπει πολλές στήλες ανά πίνακα, αποθηκεύει έως και 128 TB και βελτιώνεται συνεχώς σε κάθε έκδοση. Το LONG περιορίζεται σε μία στήλη, έχει μέγιστο μέγεθος 2 GB και διατηρείται κυρίως για συμβατότητα με παλαιότερες εκδόσεις.

Όχι σε παλαιότερες εκδόσεις. Το BOOLEAN ήταν ένας τύπος μόνο για PL/SQL, επομένως οι στήλες του πίνακα χρησιμοποιούσαν μια σημαία NUMBER ή CHAR. Χρησιμοποιείται απευθείας μέσα σε μπλοκ για λογική υπό όρους.

Ναι. Δημιουργώντας προφίλ τιμών δείγματος για μήκος, εύρος και μορφή, η Τεχνητή Νοημοσύνη μπορεί να προτείνει VARCHAR2, NUMBER, DATE ή LOB και να επισημάνει στήλες που είναι υπερμεγέθεις. Επιβεβαιώστε την επιλογή με βάση μελλοντικά δεδομένα.

Ναι. Η συνάρτηση DATE αποθηκεύει αιώνα, έτος, μήνα, ημέρα, ώρα, λεπτό και δευτερόλεπτο. Εάν δεν δοθεί ώρα, η προεπιλεγμένη τιμή είναι μεσάνυχτα. Για κλασματικά δευτερόλεπτα ή ζώνες ώρας, χρησιμοποιήστε τη συνάρτηση TIMESTAMP.

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