Αριθμητικοί τύποι δεδομένων σε sql. Γλώσσα SQL Τύποι δεδομένων SQL Τύποι δεδομένων

1.1. Τύποι χαρακτήρων

1) Χορδές σταθερού μήκους
ΑΠΑΝΘΡΑΚΩΝΩ()– μια γραμμή κειμένου σε μορφή που ορίζεται από τον προγραμματιστή. Ο φυσικός αριθμός ορίζει τις χορδές.
Στην πράξη, ο μέγιστος αριθμός χαρακτήρων κυμαίνεται από 256 στον MS SQL Server έως 32767 στο InterBase.
Το CHAR αντιμετωπίζεται ως CHAR(1)

2) Χορδές μεταβλητού μήκους
VARCHAR|ΧΑΡ ΠΑΡΑΛΛΟΝ [()]– μια συμβολοσειρά κειμένου μεταβλητού μήκους σε μορφή που ορίζεται από τον προγραμματιστή. Ο φυσικός αριθμός καθορίζει το μέγιστο μήκος γραμμής, αλλά ο πίνακας παρέχει χώρο μόνο για το πραγματικό μήκος της γραμμής.

3) Χαρακτηριστικά τύπων χαρακτήρων ενός αριθμού DBMS
Σε ορισμένα DBMS, για παράδειγμα, MS SQL Server, εάν το CHAR επιτρέπει την τιμή NULL, τότε αντιμετωπίζεται ως VARCHAR.
Στην Oracle, για πεδία VARCHAR2, μπορείτε να δεσμεύσετε χώρο σε κάθε μπλοκ για μελλοντικές ενημερώσεις πεδίων ορίζοντας την επιλογή PCTFREE.

1.2. Αριθμητικοί τύποι

1) Ακέραιοι τύποι δεδομένων
INT– αριθμός χωρίς υποδιαστολή. Το μέγεθος εξαρτάται από τη συγκεκριμένη υλοποίηση. Συχνά αυτό είναι 4 byte.
SMALLINT– Ίδιο με το INT, αλλά συνήθως μικρότερο σε μέγεθος. Συχνά 2 byte.
ΜΕΓΑΛΗ– Ίδιο με το INT, αλλά συνήθως μεγαλύτερο σε μέγεθος. Αυτό είναι 4 ή περισσότερα byte.

2) Πραγματικοί αριθμοί με σταθερό σημείο
ΔΕΚΕ |)]– Δεκαδικός αριθμός σταθερού σημείου.
Ο αριθμός έχει:
— συνολικός αριθμός σημαντικών δεκαδικών ψηφίων,
— ο μέγιστος αριθμός ψηφίων στα δεξιά της υποδιαστολής.

3) Πραγματικοί αριθμοί κινητής υποδιαστολής
ΦΛΟΤΕΡ– ένας αριθμός κινητής υποδιαστολής που αναπαρίσταται σε εκθετική μορφή στη βάση 10. Καθορίζει τη μέγιστη ακρίβεια.
ΠΡΑΓΜΑΤΙΚΟΣ– είναι το ίδιο με το FLOAT, αλλά η ακρίβεια εξαρτάται από την υλοποίηση.
ΔΙΠΛΟ– είναι το ίδιο με το REAL, αλλά η ακρίβεια μπορεί να είναι μεγαλύτερη σε μια συγκεκριμένη υλοποίηση.

1.3. Τύποι ημερομηνιών και ώρας

ΗΜΕΡΟΜΗΝΙΑ– ημερομηνία με τη μορφή εεεε-μμ-ηη (ISO), μμ/ηη/εεεε (ANSI).
ΧΡΟΝΟΣ– ώρα σε μορφή ωω.μμ.δδ (ISO), ωω:μμ πμ/μμ (ANSI).
ΔΙΑΣΤΗΜΑ– ημερομηνία και ώρα σε μορφή yyyy-mm-dd-hh.mm.ss.nnnnn (ISO). (συχνά TIMESTAMP).

Σημείωση:
Οι τύποι ημερομηνίας και ώρας μπορούν να καθοριστούν ως κυριολεκτικά συμβολοσειράς.
Ημερομηνία: 'εεεε-μμ-ηη', ώρα: 'ωω.μμ.δδ',
Διάστημα: «εεεε-μμ-ηη-ωω.μμ.δδ.ν…η».

1.4. Τύπος Boolean

BOOLEAN– λογική τιμή (TRUE, FALSE, GNOWN).
Για να κατανοήσουμε σωστά τον πίνακα αλήθειας στη λογική τριών τιμών (3VL), μπορούμε συμβατικά να υποθέσουμε ότι το FALSE είναι 0, το TRUE -1 και το UNKNOWN είναι 0,5.
Επειτα:
— Ο τελεστής AND επιστρέφει το μικρότερο.
— Ο τελεστής OR είναι η μεγαλύτερη από τις αρχικές τιμές.
- ΜΗ ΑΓΝΩΣΤΟΣ = ΑΓΝΩΣΤΟΣ.

2. Συλλογές

Οι συλλογές στην πραγματικότητα παραβιάζουν την πρώτη κανονική μορφή (1NF).

2.1. Πίνακας

[()] ΠΙΝΑΚΑΣ– ένα σύνολο τιμών του ίδιου τύπου.

Σημείωση:
Οι πίνακες εισήχθησαν στο SQL:99.
Παράδειγμα:
Έτσι, ο ορισμός WeekDays Varchar(10) ARRAY σάς επιτρέπει να αποθηκεύσετε το όνομα και των επτά ημερών της εβδομάδας σε ένα πεδίο.
Ένας αριθμός DBMS επιτρέπει ακόμη και πολυδιάστατους πίνακες. Έτσι στο InterBase είναι δυνατές έως και 16 αλλαγές, Clarion – 4.

2.2. Πολυσύνολο

[()] MULTISET– ένα απεριόριστο σύνολο τιμών του ίδιου τύπου, που επιτρέπει διπλότυπα.
Οι τιμές δημιουργούνται από τον κατασκευαστή - ειδικές συναρτήσεις.

Σημείωση:
Τα πολλαπλά σύνολα εισήχθησαν στο SQL:2003.

2.3. Ανώνυμος τύπος συμβολοσειράς

ΣΕΙΡΑ ([()] , ...)– ένα σύνολο διαφορετικών τύπων τιμών, συμπεριλαμβανομένων των ένθετων.
Οι επιλογές μπορούν να καθορίσουν τη σειρά ταξινόμησης για τα πεδία τύπου συμβολοσειράς και μια σειρά από άλλες ρυθμίσεις.

Παράδειγμα:
Έτσι, ορίζοντας το Address ROW(State Char(6), City Varchar(30), Street Varchar(50)) σας επιτρέπει να αποθηκεύσετε μια λεπτομερή διεύθυνση σε ένα πεδίο.

3. Τύποι LOB

CLOB (Μεγάλο αντικείμενο χαρακτήρων)– συμπεριφέρονται σαν συμβολοσειρές χαρακτήρων, αλλά δεν επιτρέπεται να χρησιμοποιούνται:
— Στους περιορισμούς Πρωτεύον κλειδί, Μοναδικό, Ξένο κλειδί.
— Σε συγκρίσεις εκτός από καθαρές ισότητες ή ανισότητες, στις ενότητες Σειρά κατά και Ομαδοποίηση κατά.
BLOB (Δυαδικό μεγάλο αντικείμενο)– μια ροή byte σε μορφή στην οποία ο χρήστης μπορεί να τα γράψει σε μια στήλη βάσης δεδομένων.

3.1. Προβλήματα με τη χρήση LOB

1) Προβλήματα αποθήκευσης
Η αποθήκευση των LOB απευθείας σε πίνακες μαζί με άλλα δεδομένα διασπά την ικανότητα του βελτιστοποιητή να βασίζεται σε σελίδες δεδομένων που έχουν μέγεθος ώστε να ταιριάζουν με τις σελίδες του δίσκου.
Επομένως, τα LOB αποθηκεύονται σε ξεχωριστές περιοχές (τμήματα) της μνήμης του δίσκου.

2) Προβλήματα ενημέρωσης
Δεδομένου ότι το μέγεθος των αντικειμένων LOB μπορεί να φτάσει δεκάδες και εκατοντάδες megabyte, είναι αδύνατο να αποθηκευτούν εξ ολοκλήρου σε buffers. Επομένως, τα δεδομένα LOB υποβάλλονται σε επεξεργασία σε μέρη, για παράδειγμα, ανά ομάδες σελίδων. Οι δηλώσεις INSERT και UPDATE χρησιμοποιούν ειδικές τεχνικές για αποσπασματική επεξεργασία που σας επιτρέπουν να καλείτε την ίδια συνάρτηση API πολλές φορές στο ίδιο πεδίο. Το ίδιο ισχύει κατά την ανάγνωση δεδομένων χρησιμοποιώντας τις προτάσεις SELECT και FETCH.

3) Προβλήματα με την εκτέλεση συναλλαγών
Για την υποστήριξη συναλλαγών, τα περισσότερα DBMS διατηρούν ένα αρχείο καταγραφής συναλλαγών, το οποίο καταγράφει αντίγραφα των δεδομένων πριν και μετά τις τροποποιήσεις.
Ωστόσο, λόγω του μεγάλου μεγέθους τους, τα LOB δεν καταγράφονται.

4) Προβλήματα προώθησης δικτύου
Συχνά ο πελάτης και ο διακομιστής εκτελούνται σε διαφορετικούς υπολογιστές και η αποστολή ενός LOB στο δίκτυο μπορεί να διαταράξει την εργασία όλων όσων χρησιμοποιούν το δίκτυο εκείνη τη στιγμή.

4. Διαφορετικοί τύποι

4.1. Εξευρίσκων

Μια μοναδική δυαδική (τεσσάρων bit) τιμή (σε OOP - ένας περιγραφέας) που είναι αποθηκευμένη στη βάση δεδομένων.
Περιγράφεται στο κύριο πρόγραμμα και ισχύει μέχρι το τέλος της συναλλαγής.
Σχεδιασμένο για χειρισμό τιμών LOB (ή πινάκων) στην πλευρά του πελάτη. Αντί για ένα LOB, ένας σύνδεσμος σε αυτό αποστέλλεται στον πελάτη.
Μπορείτε να δηλώσετε: LOC: Ακέραιος ΩΣ LOCATOR.

4.2. XML

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

4.3. Σύνδεσμος δεδομένων

Οι σύνδεσμοι δεδομένων αποτελούν μέρος του SQL/MED 9075-9:2003.
Το Datalink είναι ένας ειδικός τύπος SQL που έχει σχεδιαστεί για να αποθηκεύει διευθύνσεις URL σε μια βάση δεδομένων, καθώς και έναν αριθμό συναρτήσεων που μπορούν να χρησιμοποιηθούν σε ερωτήματα SQL.
Τα χαρακτηριστικά και οι υποστηριζόμενες λειτουργίες βρίσκονται στον ιστότοπο:
Wiki.postgresql.org/wiki/DATALINK

Χρησιμοποιείται στο DB2, Oracle - για την αποθήκευση δεδομένων σε ένα εξωτερικό αρχείο BFile.

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

  • Ακέραιοι τύποι;
  • Κλασματικοί τύποι;
  • Τύποι χαρακτήρων;
  • Τύποι χρημάτων;
  • Χρονικοί τύποι (ημερομηνία/ώρα);

Ακέραιοι τύποι δεδομένων

Κλασματικοί τύποι δεδομένων

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

Τύπος δεδομένωνΠεριγραφή
CHAR(μέγεθος)Χρησιμοποιείται για την αποθήκευση χορδών. Η παράμετρος σε αγκύλες σάς επιτρέπει να καθορίσετε το μήκος της αποθηκευμένης συμβολοσειράς. Το μέγιστο μέγεθος σε byte που μπορεί να καθοριστεί για μια συμβολοσειρά είναι 255.
VARCHAR (μέγεθος)Παρόμοια με τον προηγούμενο τύπο, σας επιτρέπει να αποθηκεύετε συμβολοσειρές μήκους έως 255 χαρακτήρες. Ωστόσο, η διαφορά από το CHAR είναι ότι η απαιτούμενη ποσότητα μνήμης εκχωρείται για την αποθήκευση μιας τιμής αυτού του τύπου. Δηλαδή, μια συμβολοσειρά που αποτελείται από 5 χαρακτήρες θα απαιτήσει 6 byte μνήμης. Στην πρώτη περίπτωση, η μνήμη για την τιμή θα εκχωρηθεί σύμφωνα με την καθορισμένη παράμετρο.
NCHAR(μέγεθος)Δεδομένα συμβολοσειράς σταθερού μήκους στο Unicode. Το n καθορίζει το μήκος της συμβολοσειράς και πρέπει να είναι μια τιμή μεταξύ 1 και 4000. Το μέγεθος αποθήκευσης είναι διπλάσιο από την τιμή του μεγέθους σε byte. Συνιστάται η χρήση nchar εάν τα μεγέθη των στοιχείων δεδομένων στις στήλες αναμένεται να είναι παρόμοια.
ΝΒΑΡΧΑΡ
(μέγεθος|μέγιστο)
Δεδομένα συμβολοσειράς μεταβλητού μήκους στο Unicode. Το μέγεθος καθορίζει το μήκος της συμβολοσειράς και μπορεί να έχει τιμή από 1 έως 4000. Η μέγιστη τιμή υποδηλώνει ότι το μέγιστο μέγεθος αποθήκευσης είναι 2^31-1 χαρακτήρες (2 GB). Συνιστάται η χρήση του nvarchar εάν τα μεγέθη των στοιχείων δεδομένων στις στήλες αναμένεται να είναι διαφορετικά.
ΚΕΙΜΕΝΟΔεδομένα μεταβλητού μήκους μη Unicode στην κωδικοσελίδα του διακομιστή και με μέγιστο μήκος γραμμής 2^31-1 (2.147.483.647).
ΚΕΙΜΕΝΟΜεταβλητό μήκος κωδικοποιημένα δεδομένα Unicode με μέγιστο μήκος γραμμής 2^30 - 1 (1.073.741.823) byte.

Τύπος δεδομένων νομίσματος

Τύποι ώρας (ημερομηνία/ώρα)

Τύπος δεδομένωνΠεριγραφή
ΗΜΕΡΟΜΗΝΙΑΟ κύριος σκοπός είναι η αποθήκευση της ημερομηνίας με τη μορφή ΕΤΟΣ-ΜΗΝΑΣ-ΗΜΕΡΑ («ΕΕΕΕ-ΜΜ-ΗΗ» ή «ουουου-μμ-ηη»).
ΧΡΟΝΟΣΣας επιτρέπει να εισάγετε προσωρινές τιμές σε ένα κελί πίνακα. Όλες οι τιμές καθορίζονται στη μορφή "ωω:λλ:δδ".
ΗΜΕΡΟΜΗΝΙΑ ΩΡΑΣυνδυάζει τις λειτουργίες των δύο προηγούμενων τύπων. Η μορφή αποθήκευσης παρουσιάζεται ως εξής: "uuuu-mm-dd hh:mm:ss".
ΧΡΟΝΟΣΗΜΑΑποθηκεύει την ημερομηνία και την ώρα, που υπολογίζονται με τον αριθμό των δευτερολέπτων που έχουν περάσει από τα μεσάνυχτα της 1ης Ιανουαρίου 1970, μέχρι την καθορισμένη τιμή.

Παραδείγματα χρήσης τύπων δεδομένων

Ας δούμε ένα παράδειγμα του τρόπου χρήσης τύπων δεδομένων στην SQL.

Ένα παράδειγμα χρήσης τύπων δεδομένων

MySQL

ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ Επιταγές(id INT NOT NULL, Όνομα VARCHAR (50) NOT NULL, DataToDay DATE NOT NULL, Cost FLOAT NOT NULL);

ταυτότηταείναι ένας μετρητής (αποθηκεύει τον ατομικό αριθμό επιταγής), επομένως ανήκει στον ακέραιο τύπο δεδομένων, οπότε το κάνουμε INTή ΑΚΕΡΑΙΟΣ ΑΡΙΘΜΟΣ. ΟΧΙ ΚΕΝΟυποδεικνύει ότι η μεταβλητή δεν μπορεί να είναι κενή.
ΣΕ ΟνομαΘα αποθηκεύσουμε το όνομα του προϊόντος. Δεδομένου ότι η στήλη θα αποθηκεύει χαρακτήρες που χρησιμοποιούμε ΒΑΡΧΑΡ. Αφού καθορίσουμε τον τύπο, εκχωρούμε μνήμη για το όνομα (στην περίπτωσή μας είναι (50) ).
Οι παρακάτω στήλες του πίνακα δημιουργούνται με παρόμοιο τρόπο.

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

Τύπος δεδομένων - τι είναι;

Σήμερα, υπάρχουν αρκετοί ορισμοί που εξηγούν την έννοια του όρου «τύπος δεδομένων». Ωστόσο, καθένα από αυτά έχει ένα γενικό νόημα. Επομένως, μπορεί συμβατικά να οριστεί ως μια ομάδα δεδομένων που χαρακτηρίζεται από τις τιμές της (χαρακτήρας, αριθμητικός κ.λπ.), καθώς και από τις πράξεις που εφαρμόζονται στις εν λόγω τιμές.

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

Ταξινόμηση τύπων δεδομένων

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

Με βάση αυτά, αναπτύχθηκε μια σύγχρονη ταξινόμηση, που περιλαμβάνει δείκτες, λογικούς, ακέραιους, κινητής υποδιαστολής και τύπους δεδομένων συμβολοσειράς. SQL - η ταξινόμηση καλύπτει πλήρως όλα τα παραπάνω. Ωστόσο, για ορισμένα σύγχρονα DBMS υπάρχουν πρόσθετα πρόσθετα. Αυτά περιλαμβάνουν Oracle και MySQL.

Βασικοί τύποι δεδομένων

Αυτά που χρησιμοποιούνται για τη δημιουργία χαρακτηριστικών πίνακα που πληρούν τα γλωσσικά πρότυπα χωρίζονται σε 4 κατηγορίες:

  • τιμές συμβολοσειρών?
  • κλάσματα?
  • ακέραιες τιμές?
  • τιμές ημερομηνίας και ώρας.

Τύπος δεδομένων συμβολοσειράς

Η πρώτη ομάδα τιμών σάς επιτρέπει να αποθηκεύσετε τυχόν δεδομένα που παρουσιάζονται ως χαρακτήρες.

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

Χρησιμοποιείται για την αποθήκευση χορδών. Η παράμετρος σε αγκύλες σάς επιτρέπει να καθορίσετε το μήκος της αποθηκευμένης συμβολοσειράς. Το μέγιστο μέγεθος σε byte που μπορεί να καθοριστεί για μια συμβολοσειρά είναι 255.

Παρόμοια με τον προηγούμενο τύπο, σας επιτρέπει να αποθηκεύετε συμβολοσειρές μήκους έως 255 χαρακτήρες. Ωστόσο, η διαφορά από το CHAR είναι ότι η απαιτούμενη ποσότητα μνήμης εκχωρείται για την αποθήκευση μιας τιμής αυτού του τύπου. Δηλαδή, μια συμβολοσειρά που αποτελείται από 5 χαρακτήρες θα απαιτήσει 6 byte μνήμης. Στην πρώτη περίπτωση, η μνήμη για την τιμή θα εκχωρηθεί σύμφωνα με την καθορισμένη παράμετρο.

Χρησιμοποιείται για την αποθήκευση δεδομένων συμβολοσειράς έως 255 χαρακτήρες.

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

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

Αναπτύχθηκε με βάση τον τύπο TEXT, αλλά σας επιτρέπει να αποθηκεύετε περισσότερα δεδομένα λόγω του αυξημένου μεγέθους έως και 16.777.215 γραμμάτων ή συμβόλων.

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

Λειτουργικά παρόμοια με τους προηγούμενους τύπους, αλλά με αυξημένη χωρητικότητα μνήμης έως και 4 gigabyte.

Σας επιτρέπει να τοποθετήσετε μεγάλες ποσότητες δεδομένων στη βάση δεδομένων (4.294.967.295 χαρακτήρες).

ΑΡΙΘΜΟΣ (α, β, γ κ.λπ.)

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

Καθορίζει ένα σύνολο έγκυρων τιμών. Σε αντίθεση με τον προηγούμενο τύπο, χρησιμοποιείται για να περιέχει 64 παραμέτρους που μπορούν να αρχικοποιηθούν από οποιοδήποτε ή περισσότερα στοιχεία από τα δεδομένα ορίσματα.

Πίνακας κλασματικών τύπων δεδομένων

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

Για παράδειγμα, στους τραπεζικούς υπολογισμούς η ακρίβεια του κλασματικού μέρους φτάνει τα 8 ή τα 10 ψηφία. Οι δύο πρώτοι τύποι δεν μπορούν να χρησιμοποιηθούν σε αυτόν τον τομέα.

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

Ακέραιος τύπος δεδομένων

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

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

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

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

Όταν μαθαίνετε τα βασικά της SQL, οι τύποι δεδομένων ημερομηνίας και ώρας έχουν ιδιαίτερο ενδιαφέρον.

Η χρήση των παρακάτω τύπων παρέχει πρόσθετα οφέλη κατά την ανάπτυξη συστημάτων που εξαρτώνται από το χρονοδιάγραμμα.

Ο κύριος σκοπός είναι η αποθήκευση της ημερομηνίας με τη μορφή ΕΤΟΣ-ΜΗΝΑΣ-ΗΜΕΡΑ («ΕΕΕΕ-ΜΜ-ΗΗ» ή «ουουου-μμ-ηη»). Συνήθως, οι τιμές διαχωρίζονται με "-", αλλά οποιοσδήποτε χαρακτήρας εκτός από αριθμούς μπορεί να χρησιμοποιηθεί ως διαχωριστικό.

Σας επιτρέπει να εισάγετε προσωρινές τιμές σε ένα κελί πίνακα. Όλες οι τιμές καθορίζονται στη μορφή "ωω:λλ:δδ"

Συνδυάζει τις λειτουργίες των δύο προηγούμενων τύπων. Η μορφή αποθήκευσης παρουσιάζεται ως εξής: "uuuu-mm-dd hh:mm:ss".

Αποθηκεύει την ημερομηνία και την ώρα, που υπολογίζονται με τον αριθμό των δευτερολέπτων που έχουν περάσει από τα μεσάνυχτα της 1ης Ιανουαρίου 1970, μέχρι την καθορισμένη τιμή.

Χρησιμοποιείται για την αποθήκευση ετήσιων τιμών σε διψήφια ή τετραψήφια μορφή.

Τι άλλο πρέπει να ξέρετε;

Όλα αυτά τα είδη δεδομένων συστηματοποιούνται λεπτομερώς από τη Microsoft. Ανέπτυξε τους τύπους δεδομένων SQL με περισσότερες λεπτομέρειες.

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

Ειδικός δείκτης - NULL

Μερικές φορές, κατά τη συμπλήρωση μιας βάσης δεδομένων, προκύπτει μια κατάσταση όταν, κατά την προσθήκη μιας εγγραφής σε έναν πίνακα, δεν υπάρχει ανάγκη εισαγωγής πληροφοριών σε όλες τις στήλες. Για αυτό, χρησιμοποιείται ένας ειδικός δείκτης κενής τιμής - ΜΗΔΕΝΙΚΟ, το οποίο χρησιμοποιεί τη γλώσσα SQL ως βοήθημα. Όταν δημιουργούνται πίνακες, οι τύποι δεδομένων των στηλών που δεν απαιτείται να συμπληρωθούν καθορίζονται με μια δήλωση που επιτρέπει τη συμπερίληψη μηδενικών τιμών. Σε άλλη περίπτωση ο χειριστής ΜΗΔΕΝΙΚΟ με επιπλέον προσάρτημα ΔΕΝμπορεί να χρησιμοποιηθεί για να υποδείξει ότι πρέπει να συμπληρωθούν όλες οι τιμές.

Δείκτης ΜΗΔΕΝΙΚΟ δεν έχει τύπο, αλλά απλώς δείχνει μια κενή τιμή σε πίνακες βάσης δεδομένων. Επομένως, μπορεί να συνδυαστεί με οποιονδήποτε από τους παραπάνω τύπους.

Όλες οι τιμές σε μια στήλη πρέπει να είναι ο ίδιος τύπος δεδομένων. (Η μόνη εξαίρεση σε αυτόν τον κανόνα είναι οι τιμές του τύπου δεδομένων SQL_VARIANT.) Οι τύποι δεδομένων που χρησιμοποιούνται στο Transact-SQL μπορούν να χωριστούν στις ακόλουθες κατηγορίες:

    αριθμητικοί τύποι;

    Τύποι χαρακτήρων?

    προσωρινοί τύποι (ημερομηνίες ή/και ώρες)·

    άλλους τύπους δεδομένων.

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

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

Τύποι αριθμητικών δεδομένων T-SQL
Τύπος δεδομένων Περιγραφή
ΑΚΕΡΑΙΟΣ ΑΡΙΘΜΟΣ

Αντιπροσωπεύει ακέραιες τιμές 4 byte στην περιοχή -2 32 έως 2 32 - 1. Το INT είναι μια σύντομη μορφή του INTEGER.

SMALLINT

Αντιπροσωπεύει ακέραιες τιμές 2 byte στην περιοχή -32.768 έως 32.767

TINYINT

Αντιπροσωπεύει ακέραιες τιμές 1 byte στην περιοχή από 0 έως 255

ΜΕΓΑΛΗ

Αντιπροσωπεύει ακέραιες τιμές μήκους 8 byte στην περιοχή -2 63 έως 2 63 - 1

ΔΕΚΑΔΙΚΑ(p,[s])

Αντιπροσωπεύει τιμές σταθερού σημείου. Το όρισμα p (ακρίβεια) καθορίζει τον συνολικό αριθμό ψηφίων και το όρισμα s (κλίμακα) καθορίζει τον αριθμό των ψηφίων στα δεξιά της υποδιαστολής. Ανάλογα με την τιμή του ορίσματος p, οι δεκαδικές τιμές αποθηκεύονται σε 5 έως 17 byte. Το DEC είναι μια σύντομη μορφή του DECIMAL.

NUMERIC(p,[s])

Συνώνυμο του ΔΕΚΑΔΙΚΟΥ.

ΠΡΑΓΜΑΤΙΚΟΣ

Χρησιμοποιείται για την αναπαράσταση τιμών κινητής υποδιαστολής. Το εύρος των θετικών τιμών εκτείνεται από περίπου 2,23E -308 έως -1,18E -38. Μπορεί επίσης να αναπαρασταθεί μια μηδενική τιμή.

FLOAT[(p)]

Όπως και ο τύπος REAL, αντιπροσωπεύει τιμές κινητής υποδιαστολής [(p)]. Το όρισμα p καθορίζει την ακρίβεια. Στην τιμή p< 25 представляемые значения имеют одинарную точность (требуют 4 байта для хранения), а при значении p >= 25 - διπλή ακρίβεια (απαιτούνται 8 byte για αποθήκευση).

ΧΡΗΜΑΤΑ

Χρησιμοποιείται για την αναπαράσταση χρηματικών αξιών. Οι τιμές MONEY αντιστοιχούν σε τιμές ΔΕΚΑΔΙΩΝ 8 byte, στρογγυλεμένες σε τέσσερα δεκαδικά ψηφία

SMALLMONEY

Αντιπροσωπεύει τις ίδιες τιμές με τον τύπο MONEY, αλλά έχει μήκος 4 byte

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

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

Τύποι δεδομένων χαρακτήρων T-SQL
Τύπος δεδομένων Περιγραφή
CHAR[(n)]

Χρησιμοποιείται για την αναπαράσταση συμβολοσειρών σταθερού μήκους που αποτελούνται από n χαρακτήρες ενός byte. Η μέγιστη τιμή του n είναι 8000. Ο CHARACTER(n) είναι μια εναλλακτική ισοδύναμη μορφή του CHAR(n). Εάν το n δεν προσδιορίζεται ρητά, τότε η τιμή του θεωρείται ότι είναι 1.

VARCHAR[(n)]

Χρησιμοποιείται για την αναπαράσταση μιας συμβολοσειράς χαρακτήρων ενός byte μεταβλητού μήκους (0< n < 8 000). В отличие от типа данных CHAR, количество байтов для хранения значений типа данных VARCHAR равно их действительной длине. Этот тип данных имеет два синонима: CHAR VARYING и CHARACTER VARYING.

NCHAR[(n)]

Χρησιμοποιείται για την αποθήκευση συμβολοσειρών σταθερού μήκους που αποτελούνται από χαρακτήρες Unicode. Η κύρια διαφορά μεταξύ τύπων δεδομένων CHAR και NCHAR είναι ότι μια συμβολοσειρά NCHAR απαιτεί 2 byte για την αποθήκευση κάθε χαρακτήρα, ενώ μια συμβολοσειρά CHAR απαιτεί 1 byte. Επομένως, μια συμβολοσειρά τύπου δεδομένων NCHAR μπορεί να περιέχει το πολύ 4000 χαρακτήρες. Ο τύπος NCHAR μπορεί να χρησιμοποιηθεί για την αποθήκευση, για παράδειγμα, χαρακτήρων του ρωσικού αλφαβήτου, επειδή Οι κωδικοποιήσεις ενός byte δεν το επιτρέπουν.

NVARCHAR[(n)]

Χρησιμοποιείται για την αποθήκευση συμβολοσειρών μεταβλητού μήκους χαρακτήρων Unicode. Κάθε χαρακτήρας μιας συμβολοσειράς τύπου δεδομένων NVARCHAR απαιτεί 2 byte για αποθήκευση, επομένως μια συμβολοσειρά τύπου δεδομένων NVARCHAR μπορεί να περιέχει το πολύ 4000 χαρακτήρες.

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

Τύποι δεδομένων χρόνου

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

Τύποι δεδομένων ΗΜΕΡΟΜΗΝΙΑ ΩΡΑΚαι SMALLDATETIMEχρησιμοποιούνται για την αποθήκευση ημερομηνίας και ώρας ως ακέραιες τιμές μήκους 4 και 2 byte, αντίστοιχα. Οι τιμές του τύπου DATETIME και SMALLDATETIME αποθηκεύονται εσωτερικά ως δύο ξεχωριστές αριθμητικές τιμές. Το στοιχείο ημερομηνίας των τιμών του τύπου DATETIME αποθηκεύεται στην περιοχή από 01/01/1753 έως 31/12/9999 και το αντίστοιχο στοιχείο τιμών του τύπου SMALLDATETIME αποθηκεύεται στο εύρος από 01/01/1900 έως 06/06/2079. Το στοιχείο ώρας αποθηκεύεται σε ένα δεύτερο πεδίο 4 byte (2 byte για τιμές SMALLDATETIME) ως ο αριθμός των τριών εκατοστών του δευτερολέπτου (για DATETIME) ή ο αριθμός των λεπτών (για SMALLDATETIME) που έχουν περάσει από τα μεσάνυχτα.

Εάν θέλετε να αποθηκεύσετε μόνο το στοιχείο ημερομηνίας ή ώρας, η χρήση των τιμών DATETIME ή SMALLDATETIME είναι κάπως άβολη. Για το λόγο αυτό, εισήχθησαν τύποι δεδομένων στον SQL Server ΗΜΕΡΟΜΗΝΙΑΚαι ΧΡΟΝΟΣ, τα οποία αποθηκεύουν μόνο τα στοιχεία ημερομηνίας και ώρας των τιμών DATETIME, αντίστοιχα. Οι τιμές DATE καταλαμβάνουν 3 byte, αντιπροσωπεύοντας το εύρος ημερομηνιών από 01/01/0001 έως 31/12/9999. Οι τιμές TIME καταλαμβάνουν 3-5 byte και αντιπροσωπεύουν χρόνο με ακρίβεια 100 ns.

Τύπος δεδομένων DATETIME2χρησιμοποιείται για την αναπαράσταση τιμών ημερομηνίας και ώρας με υψηλή ακρίβεια. Ανάλογα με τις απαιτήσεις, οι τιμές αυτού του τύπου μπορούν να οριστούν σε διαφορετικά μήκη και καταλαμβάνουν από 6 έως 8 byte. Η συνιστώσα του χρόνου αντιπροσωπεύει το χρόνο με ακρίβεια 100 ns. Αυτός ο τύπος δεδομένων δεν υποστηρίζει τη θερινή ώρα.

Όλοι οι προσωρινοί τύποι δεδομένων που συζητήθηκαν μέχρι στιγμής δεν υποστηρίζουν ζώνες ώρας. Τύπος δεδομένων DATETIMEOFFSETέχει ένα στοιχείο για την αποθήκευση της μετατόπισης ζώνης ώρας. Για το λόγο αυτό, οι τιμές αυτού του τύπου καταλαμβάνουν 6 έως 8 byte. Όλες οι άλλες ιδιότητες αυτού του τύπου δεδομένων είναι ίδιες με αυτές του τύπου δεδομένων DATETIME2.

Οι τιμές ημερομηνίας στο Transact-SQL ορίζονται από προεπιλογή ως μια συμβολοσειρά της μορφής "μμμ ηη εεε" (για παράδειγμα, "10 Ιαν 1993") που περικλείεται σε μονά ή διπλά εισαγωγικά. (Αλλά η σχετική σειρά των στοιχείων του μήνα, της ημέρας και του έτους μπορεί να αλλάξει χρησιμοποιώντας την οδηγία ΡΥΘΜΙΣΗ ΜΟΡΦΗ ΗΜΕΡΟΜΗΝΙΑΣ. Επιπλέον, το σύστημα υποστηρίζει αριθμητικές τιμές για το στοιχείο μήνα και τους οριοθέτες / και -.) Ομοίως, η τιμή χρόνου καθορίζεται σε μορφή 24 ωρών ως "ωω: χιλιοστά" (για παράδειγμα, "22:24") .

Το Transact-SQL υποστηρίζει διάφορες μορφές για την εισαγωγή τιμών DATETIME. Όπως αναφέρθηκε, κάθε στοιχείο ορίζεται ξεχωριστά, επομένως οι τιμές ημερομηνίας και ώρας μπορούν να καθοριστούν με οποιαδήποτε σειρά ή ξεχωριστά. Εάν ένα από τα στοιχεία δεν έχει καθοριστεί, το σύστημα χρησιμοποιεί την προεπιλεγμένη τιμή για αυτό. (Η προεπιλεγμένη ώρα είναι 12:00 π.μ. (πριν το μεσημέρι).)

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

Υπάρχουν δύο τύποι δυαδικών τύπων δεδομένων: ΔΥΑΔΙΚΟΣ και VARBINARY. Αυτοί οι τύποι δεδομένων περιγράφουν αντικείμενα δεδομένων στην εσωτερική μορφή του συστήματος και χρησιμοποιούνται για την αποθήκευση συμβολοσειρών bit. Για το λόγο αυτό, οι τιμές αυτών των τύπων εισάγονται χρησιμοποιώντας δεκαεξαδικούς αριθμούς.

Οι τιμές του τύπου bit περιέχουν μόνο ένα bit, επομένως έως και οκτώ τιμές αυτού του τύπου μπορούν να αποθηκευτούν σε ένα byte. Μια σύντομη περιγραφή των ιδιοτήτων των δυαδικών τύπων δεδομένων και των τύπων bit δίνεται στον παρακάτω πίνακα:

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

Τύπος δεδομένων LOB (Μεγάλο αντικείμενο)χρησιμοποιείται για την αποθήκευση αντικειμένων δεδομένων μεγέθους έως 2 GB. Τέτοια αντικείμενα χρησιμοποιούνται συνήθως για την αποθήκευση μεγάλων ποσοτήτων δεδομένων κειμένου και για τη φόρτωση προσθηκών και αρχείων ήχου και βίντεο. Το Transact-SQL υποστηρίζει τους ακόλουθους τύπους δεδομένων LOB:

Ξεκινώντας με τον SQL Server 2005, το ίδιο μοντέλο προγραμματισμού χρησιμοποιείται για την πρόσβαση σε τιμές τυπικών τύπων δεδομένων και τιμές τύπων δεδομένων LOB. Με άλλα λόγια, μπορείτε να χρησιμοποιήσετε βολικές συναρτήσεις συστήματος και τελεστές συμβολοσειρών για να εργαστείτε με αντικείμενα LOB.

Στη Μηχανή Βάσης Δεδομένων Παράμετρος MAXχρησιμοποιείται με τύπους δεδομένων VARCHAR, NVARCHAR και VARBINARY για τον καθορισμό τιμών στηλών μεταβλητού μήκους. Όταν χρησιμοποιείται η προεπιλεγμένη τιμή μήκους MAX αντί να καθορίζεται ρητά το μήκος μιας τιμής, το σύστημα εξετάζει το μήκος μιας συγκεκριμένης συμβολοσειράς και αποφασίζει εάν θα αποθηκεύσει αυτήν τη συμβολοσειρά ως κανονική τιμή ή ως τιμή LOB. Η παράμετρος MAX καθορίζει ότι το μέγεθος των τιμών στηλών μπορεί να είναι μέχρι το μέγιστο μέγεθος LOB του συστήματος.

Παρόλο που το σύστημα αποφασίζει πώς θα αποθηκεύονται τα αντικείμενα LOB, οι προεπιλεγμένες ρυθμίσεις μπορούν να παρακαμφθούν χρησιμοποιώντας τη διαδικασία συστήματος sp_tableoption με το όρισμα LARGE_VALUE_TYPES_OUT_OF_ROW. Εάν αυτό το όρισμα οριστεί σε 1, τότε τα δεδομένα σε στήλες που δηλώνονται με χρήση της παραμέτρου MAX θα αποθηκευτούν χωριστά από άλλα δεδομένα. Εάν το όρισμα είναι 0, το Database Engine αποθηκεύει όλες τις τιμές έως και 8.060 byte στη σειρά του πίνακα ως κανονικά δεδομένα και αποθηκεύει μεγαλύτερες τιμές εκτός σειράς στην περιοχή αποθήκευσης LOB.

Ξεκινώντας από τον SQL Server 2008, μπορείτε να χρησιμοποιήσετε το VARBINARY(MAX) για στήλες τύπου Χαρακτηριστικό FILESTREAMγια αποθήκευση δεδομένων BLOB (Δυαδικό μεγάλο αντικείμενο)απευθείας στο σύστημα αρχείων NTFS. Το κύριο πλεονέκτημα αυτού του χαρακτηριστικού είναι ότι το μέγεθος του αντίστοιχου αντικειμένου LOB περιορίζεται μόνο από το μέγεθος του τόμου του συστήματος αρχείων.

Τύπος δεδομένων UNIQUEIDENTIFIER

Όπως υποδηλώνει το όνομά του, ο τύπος δεδομένων UNIQUEIDENTIFIER είναι ένας μοναδικός αριθμός αναγνώρισης που αποθηκεύεται ως δυαδική συμβολοσειρά 16 byte. Αυτός ο τύπος δεδομένων σχετίζεται στενά με το αναγνωριστικό GUID (Παγκόσμιο μοναδικό αναγνωριστικό - μοναδικό παγκοσμίως αναγνωριστικό), που εγγυάται τη μοναδικότητα σε παγκόσμια κλίμακα. Έτσι, αυτός ο τύπος δεδομένων επιτρέπει στα δεδομένα και τα αντικείμενα να αναγνωρίζονται μοναδικά σε κατανεμημένα συστήματα.

Μπορείτε να αρχικοποιήσετε μια στήλη ή μια μεταβλητή τύπου UNIQUEIDENTIFIER χρησιμοποιώντας τη συνάρτηση NEWID ή NEWSEQUENTIALID ή χρησιμοποιώντας μια σταθερά συμβολοσειράς ειδικής μορφής που αποτελείται από δεκαεξαδικά ψηφία και παύλες. Αυτά τα χαρακτηριστικά συζητούνται στο επόμενο άρθρο.

Μια στήλη με τιμές του τύπου δεδομένων UNIQUEIDENTIFIER μπορεί να προσπελαστεί χρησιμοποιώντας ένα ερώτημα λέξη-κλειδί ROWGUIDCOLγια να υποδείξετε ότι η στήλη περιέχει τιμές αναγνωριστικού. (Αυτή η λέξη-κλειδί δεν δημιουργεί τιμές.) Ένας πίνακας μπορεί να περιέχει πολλές στήλες UNIQUEIDENTIFIER, αλλά μόνο μία από αυτές μπορεί να έχει τη λέξη-κλειδί ROWGUIDCOL.

Τύπος δεδομένων SQL_VARIANT

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

Για πρόσβαση και εμφάνιση πληροφοριών σχετικά με τις τιμές μιας στήλης τύπου SQL_VARIANT, χρησιμοποιήστε τη συνάρτηση SQL_VARIANT_PROPERTY.

Θα πρέπει να δηλώσετε έναν τύπο στήλης ως SQL_VARIANT μόνο εάν είναι πραγματικά απαραίτητο. Για παράδειγμα, εάν η στήλη προορίζεται για αποθήκευση τιμών διαφορετικών τύπων δεδομένων ή εάν ο τύπος δεδομένων που θα αποθηκευτεί σε αυτήν τη στήλη είναι άγνωστος κατά τη δημιουργία του πίνακα.

Τύπος δεδομένων HIERARCHYID

Ο τύπος δεδομένων HIERARCHYID χρησιμοποιείται για την αποθήκευση μιας πλήρους ιεραρχίας. Για παράδειγμα, μια τιμή αυτού του τύπου μπορεί να αποθηκεύσει μια ιεραρχία όλων των υπαλλήλων ή μια ιεραρχία φακέλων. Αυτός ο τύπος υλοποιείται ως τύπος που ορίζεται από το χρήστη CLR που καλύπτει διάφορες λειτουργίες συστήματος για τη δημιουργία και την εργασία με κόμβους ιεραρχίας. Οι ακόλουθες συναρτήσεις, μεταξύ άλλων, ανήκουν σε μεθόδους αυτού του τύπου δεδομένων: GetLevel(), GetAncestor(), GetDescendant(), Read() και Write().

Τύπος δεδομένων TIMESTAMP

Ο τύπος δεδομένων TIMESTAMP καθορίζει μια στήλη που ορίζεται ως VARBINARY(8) ή BINARY(8) , ανάλογα με τη μηδενικότητα της στήλης. Για κάθε βάση δεδομένων, το σύστημα διατηρεί έναν μετρητή του οποίου η τιμή αυξάνεται κάθε φορά που εισάγεται ή ενημερώνεται οποιαδήποτε σειρά που περιέχει ένα κελί TIMESTAMP και εκχωρεί αυτήν την τιμή σε αυτό το κελί. Έτσι, χρησιμοποιώντας κελιά TIMESTAMP, μπορείτε να προσδιορίσετε τον σχετικό χρόνο της τελευταίας τροποποίησης των αντίστοιχων σειρών του πίνακα. ( ΑΝΑΒΟΛΗείναι συνώνυμο του TIMESTAMP.)

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

Επιλογές αποθήκευσης

Ξεκινώντας με τον SQL Server 2008, υπάρχουν δύο διαφορετικές επιλογές αποθήκευσης, οι οποίες σας επιτρέπουν να αποθηκεύετε LOB και να εξοικονομείτε χώρο στο δίσκο. Αυτές είναι οι ακόλουθες επιλογές:

    αποθήκευση δεδομένων τύπου FILESTREAM.

    αποθήκευση με αραιές στήλες.

Αυτές οι επιλογές αποθήκευσης συζητούνται στις ακόλουθες υποενότητες.

Αποθήκευση δεδομένων FILESTREAM

Όπως αναφέρθηκε προηγουμένως, ο SQL Server υποστηρίζει την αποθήκευση μεγάλων αντικειμένων (LOB) μέσω του τύπου δεδομένων VARBINARY(MAX). Η ιδιότητα αυτού του τύπου δεδομένων είναι ότι τα δυαδικά μεγάλα αντικείμενα (BLOB) αποθηκεύονται στη βάση δεδομένων. Αυτό μπορεί να προκαλέσει προβλήματα απόδοσης κατά την αποθήκευση πολύ μεγάλων αρχείων, όπως αρχεία ήχου ή βίντεο. Σε τέτοιες περιπτώσεις, αυτά τα δεδομένα αποθηκεύονται εκτός της βάσης δεδομένων σε εξωτερικά αρχεία.

Η αποθήκευση δεδομένων FILESTREAM υποστηρίζει τη διαχείριση αντικειμένων LOB που είναι αποθηκευμένα στο σύστημα αρχείων NTFS. Το κύριο πλεονέκτημα αυτού του τύπου αποθήκευσης είναι ότι παρόλο που τα δεδομένα αποθηκεύονται εκτός της βάσης δεδομένων, η διαχείριση τους γίνεται από τη βάση δεδομένων. Έτσι, αυτός ο τύπος αποθήκευσης έχει τις ακόλουθες ιδιότητες:

    Τα δεδομένα FILESTREAM μπορούν να αποθηκευτούν χρησιμοποιώντας τη δήλωση CREATE TABLE και για να εργαστείτε με αυτά τα δεδομένα μπορείτε να χρησιμοποιήσετε δηλώσεις για να τροποποιήσετε τα δεδομένα (ΕΠΙΛΟΓΗ, ΕΙΣΑΓΩΓΗ, ΕΝΗΜΕΡΩΣΗ και ΔΙΑΓΡΑΦΗ).

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

Αραιές στήλες

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

Οι στήλες αυτού του τύπου σάς επιτρέπουν να βελτιστοποιήσετε την αποθήκευση στηλών των οποίων οι πλειοψηφικές τιμές είναι μηδενικές. Όταν χρησιμοποιείτε αραιές στήλες, η αποθήκευση μηδενικών τιμών δεν απαιτεί χώρο στο δίσκο, αλλά από την άλλη πλευρά, η αποθήκευση μη μηδενικών τιμών απαιτεί επιπλέον 2 έως 4 byte, ανάλογα με τον τύπο τους. Για αυτόν τον λόγο, η Microsoft συνιστά τη χρήση αραιών στηλών μόνο σε περιπτώσεις όπου αναμένεται τουλάχιστον το 20% της συνολικής εξοικονόμησης χώρου στο δίσκο.

Οι αραιές στήλες ορίζονται με τον ίδιο τρόπο όπως και άλλες στήλες πίνακα. το ίδιο ισχύει και για την αντιμετώπισή τους. Αυτό σημαίνει ότι μπορείτε να χρησιμοποιήσετε προτάσεις SELECT, INSERT, UPDATE και DELETE για να αποκτήσετε πρόσβαση σε αραιές στήλες με τον ίδιο τρόπο που έχετε πρόσβαση στις κανονικές στήλες. Η μόνη διαφορά αφορά τη δημιουργία αραιών στηλών: για να ορίσετε μια συγκεκριμένη στήλη ως αραιή, χρησιμοποιήστε SPARSE επιχείρημαμετά το όνομα της στήλης, όπως φαίνεται σε αυτό το παράδειγμα:

στήλη_όνομα_δεδομένα_τύπος SPARSE

Πολλές αραιές στήλες πίνακα μπορούν να ομαδοποιηθούν σε ένα σύνολο στηλών. Αυτό το σύνολο θα ήταν ένας εναλλακτικός τρόπος αποθήκευσης και πρόσβασης σε τιμές σε όλες τις αραιές στήλες ενός πίνακα.

NULL τιμή

Το Null είναι μια ειδική τιμή που μπορεί να εκχωρηθεί σε ένα κελί πίνακα. Αυτή η τιμή χρησιμοποιείται συνήθως όταν οι πληροφορίες σε ένα κελί είναι άγνωστες ή δεν είναι εφαρμόσιμες. Για παράδειγμα, εάν δεν γνωρίζετε τον αριθμό τηλεφώνου σπιτιού ενός υπαλλήλου της εταιρείας, συνιστούμε να ορίσετε το αντίστοιχο κελί στη στήλη home_telephone σε null.

Εάν η τιμή οποιουδήποτε τελεστή οποιασδήποτε αριθμητικής παράστασης είναι μηδενική, η τιμή του αποτελέσματος της αξιολόγησης αυτής της παράστασης θα είναι επίσης μηδενική. Επομένως, σε μονομερείς αριθμητικές πράξεις, εάν η τιμή της παράστασης A είναι μηδενική, τότε και το +A και το -A επιστρέφουν μηδενικό. Σε δυαδικές παραστάσεις, εάν η τιμή ενός ή και των δύο τελεστών Α και Β είναι μηδενική, τότε το αποτέλεσμα της πρόσθεσης, αφαίρεσης, πολλαπλασιασμού, διαίρεσης και διαμόρφωσης αυτών των τελεστών θα είναι επίσης μηδενικό.

Εάν μια παράσταση περιέχει έναν τελεστή σύγκρισης και ο ένας ή και οι δύο τελεστές της είναι null, το αποτέλεσμα αυτής της πράξης θα είναι επίσης μηδενικό.

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

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

    NULL εάν η τιμή της παραμέτρου ANSI_NULL_DFLT_ONΗ εντολή SET είναι ενεργοποιημένη.

    NOT NULL εάν η παράμετρος ANSI_NULL_DFLT_OFF της δήλωσης SET είναι ενεργοποιημένη.

Εάν η δήλωση set δεν είναι ενεργοποιημένη, η στήλη θα είναι από προεπιλογή NOT NULL. (Οι μηδενικές τιμές δεν επιτρέπονται για στήλες TIMESTAMP.)



Έχετε ερωτήσεις;

Αναφέρετε ένα τυπογραφικό λάθος

Κείμενο που θα σταλεί στους συντάκτες μας: