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

Τι είναι ο τύπος δεδομένων;
Ένας τύπος δεδομένων στο MS SQL Server ορίζεται ως ο τύπος δεδομένων που μπορεί να αποθηκεύσει οποιαδήποτε στήλη ή μεταβλητή. Είναι το είδος δεδομένων που περιέχει ένα αντικείμενο, όπως ακέραιο αριθμό, χαρακτήρα ή συμβολοσειρά. Κατά τη δημιουργία οποιουδήποτε τραπέζι or μεταβλητή, εκτός από τον καθορισμό του ονόματος, ορίζετε επίσης τον τύπο των δεδομένων που θα αποθηκεύει.
Πώς να χρησιμοποιήσετε τον τύπο δεδομένων MS SQL
Πρέπει να ορίσετε εκ των προτέρων τον τύπο δεδομένων που μπορεί να αποθηκεύσει μια στήλη ή μια μεταβλητή. Ο προσδιορισμός του τύπου δεδομένων περιορίζει επίσης τον χρήστη από το να εισάγει τυχόν μη αναμενόμενα ή μη έγκυρα δεδομένα.
Μπορείτε να κάνετε αποτελεσματική χρήση της μνήμης αντιστοιχίζοντας έναν κατάλληλο τύπο δεδομένων σε μια μεταβλητή ή στήλη, ο οποίος εκχωρεί μόνο την απαιτούμενη ποσότητα μνήμης συστήματος για τα δεδομένα αυτής της στήλης.
Η MS SQL προσφέρει ένα ευρύ φάσμα βασικών τύπων δεδομένων σε SQL για να ταιριάζει στις ανάγκες των χρηστών, όπως ημερομηνία, δυαδικά αρχεία, εικόνες και άλλα.
Γιατί να χρησιμοποιήσετε DataTypes;
Σκεφτείτε το παράδειγμα μιας απλής σελίδας εγγραφής για μια εφαρμογή ιστότοπου. Τα τρία πεδία εισαγωγής είναι Όνομα, Επώνυμο και Αριθμός τηλεφώνου επικοινωνίας.
Εδώ θα πρέπει να σημειώσουμε ότι, σε πραγματικές περιπτώσεις:
- Το «Όνομα/Επώνυμο» θα είναι πάντα αλφαβητικό.
- Η «Επικοινωνία» θα είναι πάντα αριθμητική.
Το παρακάτω παράδειγμα απεικονίζει αυτά τα πεδία σε μια φόρμα εγγραφής.
Από την παραπάνω εικόνα, είναι λογικό να ορίσουμε το "Όνομα/Επώνυμο" ως χαρακτήρα και την "Επαφή" ως ακέραιο αριθμό.
Είναι προφανές ότι σε οποιαδήποτε εφαρμογή, όλα τα πεδία έχουν τον έναν ή τον άλλο τύπο δεδομένων, για παράδειγμα αριθμητικά, αλφαβητικά, ημερομηνίας και πολλά άλλα.
Σημειώστε επίσης ότι διαφορετικοί τύποι δεδομένων έχουν διαφορετικές απαιτήσεις μνήμης. Επομένως, είναι πιο λογικό να ορίσετε τη στήλη ή τη μεταβλητή με τον τύπο δεδομένων που θα περιέχει, για αποτελεσματική χρήση της μνήμης.
Τύπος δεδομένων διαθέσιμος στον MS SQL Server
Ακολουθεί η λίστα τύπων δεδομένων του MS SQL Server. Ο MS SQL Server υποστηρίζει τις ακόλουθες κατηγορίες τύπων δεδομένων:
- Ακριβές αριθμητικό
- Αριθμητικό κατά προσέγγιση
- Ημερομηνία και ώρα
- Χορδές χαρακτήρων
- Συμβολοσειρές χαρακτήρων Unicode
- Δυαδικές χορδές
- Άλλοι τύποι δεδομένων
Το παρακάτω διάγραμμα ομαδοποιεί τους τύπους δεδομένων του MS SQL Server σε αυτές τις κατηγορίες.
Ακριβείς αριθμητικοί τύποι δεδομένων σε SQL
Η ακριβής αριθμητική έχει εννέα δευτερεύοντες τύπους δεδομένων στον SQL Server. Κάθε ένας αποθηκεύει ακέραιους αριθμούς ή αριθμούς σταθερής υποδιαστολής εντός ενός καθορισμένου εύρους.
| Τύπος δεδομένων | Περιγραφή | Κατώτερο όριο | Ανώτερο όριο | Μνήμη |
|---|---|---|---|---|
| bigint | Αποθηκεύει ακέραιους αριθμούς στο εύρος που δίνεται | −2^63 (−9,223,372,036,854,775,808) | 2^63−1 (9,223,372,036,854,775,807) | 8 bytes |
| int | Αποθηκεύει ακέραιους αριθμούς στο εύρος που δίνεται | −2^31 (−2,147,483,648) | 2^31−1 (2,147,483,647) | 4 bytes |
| ψιλόλιθος | Αποθηκεύει ακέραιους αριθμούς στο εύρος που δίνεται | −2^15 (−32,768) | 2^15−1 (32,767) | 2 bytes |
| μικροσκοπικός | Αποθηκεύει ακέραιους αριθμούς στο εύρος που δίνεται | 0 | 255 | 1 byte |
| κομμάτι | Μπορεί να πάρει τιμές 0, 1 ή NULL. | 0 | 1 | 1 byte / 8-bit στήλη |
| δεκαδικός | Χρησιμοποιείται για κλίμακα και σταθερούς αριθμούς ακριβείας | −10^38+1 | 10^38−1 | 5 έως 17 byte |
| αριθμητικός | Χρησιμοποιείται για κλίμακα και σταθερούς αριθμούς ακριβείας | −10^38+1 | 10^38−1 | 5 έως 17 byte |
| χρήματα | Χρησιμοποιείται για νομισματικά δεδομένα | -922,337,203,685,477.5808 | + 922,337,203,685,477.5807 | 8 bytes |
| μικρά χρήματα | Χρησιμοποιείται για νομισματικά δεδομένα | -214,478.3648 | + 214,478.3647 | 4 bytes |
Ακριβείς αριθμητικοί τύποι δεδομένων στον SQL Server με παραδείγματα:
Ερώτηση:
DECLARE @Datatype_Int INT = 2 PRINT @Datatype_Int
Παραγωγή:
2
Σύνταξη:
Decimal (P,S)
Εδώ, το P είναι η ακρίβεια και το S είναι η κλίμακα.
Ερώτηση:
DECLARE @Datatype_Decimal DECIMAL (3,2) = 2.31 PRINT @Datatype_Decimal
Παραγωγή:
2.31
Κατά προσέγγιση τύποι αριθμητικών δεδομένων σε SQL
Η κατηγορία προσεγγιστικών αριθμών SQL περιλαμβάνει τιμές κινητής υποδιαστολής και πραγματικές τιμές. Αυτοί οι τύποι δεδομένων χρησιμοποιούνται κυρίως σε επιστημονικούς υπολογισμούς.
| Τύπος δεδομένων | Περιγραφή | Κατώτερο όριο | Ανώτερο όριο | Μνήμη | Ακρίβεια |
|---|---|---|---|---|---|
| float(n) | Χρησιμοποιείται για κυμαινόμενο αριθμό ακριβείας | −1.79E+308 | 1.79 308 + | Εξαρτάται από την τιμή του n | 15 ψηφίο |
| πραγματικός | Χρησιμοποιείται για κυμαινόμενο αριθμό ακριβείας | −3.40E+38 | 3.40 38 + | 4 bytes | 7 ψηφίο |
Ο τύπος float χρησιμοποιεί την ακόλουθη σύνταξη:
Syntax: FLOAT [(n)]
Εδώ, n είναι ο αριθμός των bit που χρησιμοποιούνται για την αποθήκευση της mantissa του αριθμού float σε επιστημονική σημειογραφία. Από προεπιλογή, η τιμή του n είναι 53.
Όταν ορίζετε έναν τύπο δεδομένων όπως η μεταβλητή float, το n θα πρέπει να έχει τιμή μεταξύ 1 και 53. Ο SQL Server αντιμετωπίζει το n ως μία από τις δύο πιθανές τιμές: εάν 1<=n<=24, το n αντιμετωπίζεται ως 24. εάν 25<=n<=53, το n αντιμετωπίζεται ως 53.
Παράδειγμα ερωτήματος:
DECLARE @Datatype_Float FLOAT(24) = 22.1234 PRINT @Datatype_Float
Παραγωγή:
22.1234
Ημερομηνία και ώρα Τύποι δεδομένων σε SQL
Αυτή η κατηγορία αποθηκεύει δεδομένα τύπου ημερομηνίας και ώρας.
| Τύπος δεδομένων | Περιγραφή | Μέγεθος αποθήκευσης | Ακρίβεια | Κάτω Εύρος | Άνω Εύρος |
|---|---|---|---|---|---|
| Ημερομηνία ώρα | Χρησιμοποιείται για τον καθορισμό ημερομηνίας και ώρας από την 1η Ιανουαρίου 1753 έως τις 31 Δεκεμβρίου 9999. Έχει ακρίβεια 3.33 χιλιοστά του δευτερολέπτου. | 8 bytes | Στρογγυλοποιημένο σε προσαυξήσεις των 000, ,003, ,007 | 1753-01-01 | 9999-12-31 |
| smalldatetime | Χρησιμοποιείται για τον καθορισμό ημερομηνίας και ώρας από την 1η Ιανουαρίου 1900 έως τις 6 Ιουνίου 2079. Έχει ακρίβεια 1 λεπτού. | 4 byte, διορθωμένα | 1 λεπτά | 1900-01-01 | 2079-06-06 |
| Ραντεβού | Χρησιμοποιείται για την αποθήκευση μόνο μιας ημερομηνίας από 1η Ιανουαρίου 0001 έως 31 Δεκεμβρίου 9999 | 3 byte, διορθωμένα | 1 ημέρες | 0001-01-01 | 9999-12-31 |
| ώρα | Χρησιμοποιείται μόνο για την αποθήκευση χρονικών τιμών με ακρίβεια 100 νανοδευτερόλεπτων. | 5 bytes | 100 νανοδευτερόλεπτα | 00:00:00.0000000 | 23:59:59.9999999 |
| μετατόπιση ημερομηνίας | Παρόμοιο με την ημερομηνία/ώρα αλλά έχει μετατόπιση ζώνης ώρας | 10 bytes | 100 νανοδευτερόλεπτα | 0001-01-01 | 9999-12-31 |
| ώρα χρόνου2 | Χρησιμοποιείται για τον καθορισμό ημερομηνίας και ώρας από την 1η Ιανουαρίου 0001 έως την 31η Δεκεμβρίου 9999 | 6 bytes | 100 νανοδευτερόλεπτα | 0001-01-01 | 9999-12-31 |
Παράδειγμα ερωτήματος:
DECLARE @Datatype_Date DATE = '2030-01-01' PRINT @Datatype_Date
Παραγωγή:
'2030-01-01'
Τύποι δεδομένων συμβολοσειρών χαρακτήρων σε SQL
Αυτή η κατηγορία σχετίζεται με τύπους χαρακτήρων. Σας επιτρέπει να ορίσετε δεδομένα χαρακτήρων σταθερού και μεταβλητού μήκους. Διαθέτει τέσσερα είδη τύπων δεδομένων. Παρακάτω παρατίθενται οι τύποι δεδομένων συμβολοσειράς χαρακτήρων με παραδείγματα.
| Τύπος δεδομένων | Περιγραφή | Κατώτερο όριο | Ανώτερο όριο | Μνήμη |
|---|---|---|---|---|
| δεξαμενή | Είναι μια συμβολοσειρά χαρακτήρων με σταθερό πλάτος. Αποθηκεύει το πολύ 8,000 χαρακτήρες. | 0 χαρακτήρες | 8000 χαρακτήρες | n byte |
| βαρτσάρ | Αυτή είναι μια συμβολοσειρά χαρακτήρων με μεταβλητό πλάτος. | 0 χαρακτήρες | 8000 χαρακτήρες | n byte + 2 byte |
| varchar (μέγιστο) | Αυτή είναι μια συμβολοσειρά χαρακτήρων με μεταβλητό πλάτος. Αποθηκεύει έως και 1,073,741,824 χαρακτήρες. | 0 χαρακτήρες | 2^31 χαρακτήρες | n byte + 2 byte |
| κείμενο | Αυτή είναι μια συμβολοσειρά χαρακτήρων με μεταβλητό πλάτος. Αποθηκεύει έως και 2 GB δεδομένων κειμένου. | 0 χαρακτήρες | 2,147,483,647 χαρακτήρες | n byte + 4 byte |
Παράδειγμα ερωτήματος:
DECLARE @Datatype_Char VARCHAR(30) = 'This is Character Datatype' PRINT @Datatype_Char
Παραγωγή:
Αυτός είναι ο τύπος δεδομένων χαρακτήρων
Τύποι δεδομένων συμβολοσειρών χαρακτήρων Unicode σε SQL
Αυτή η κατηγορία αποθηκεύει το πλήρες εύρος χαρακτήρων Unicode, οι οποίοι χρησιμοποιούν την κωδικοποίηση χαρακτήρων UTF-16.
| Τύπος δεδομένων | Περιγραφή | Κατώτερο όριο | Ανώτερο όριο | Μνήμη |
|---|---|---|---|---|
| nchar | Είναι μια συμβολοσειρά Unicode σταθερού πλάτους. | 0 χαρακτήρες | 4000 χαρακτήρες | 2 φορές n byte |
| nvarchar | Είναι μια συμβολοσειρά Unicode μεταβλητού πλάτους. | 0 χαρακτήρες | 4000 χαρακτήρες | 2 φορές n byte + 2 byte |
| ntext | Είναι μια συμβολοσειρά Unicode μεταβλητού πλάτους. | 0 χαρακτήρες | 1,073,741,823 χαρακτήρες | 2 φορές το μήκος της χορδής |
Παράδειγμα ερωτήματος:
DECLARE @Datatype_nChar VARCHAR(30) = 'This is nCharacter Datatype' PRINT @Datatype_nChar
Παραγωγή:
Αυτός είναι nCharacter Datatype
Τύποι δεδομένων δυαδικών συμβολοσειρών σε SQL
Αυτή η κατηγορία περιέχει δυαδικές συμβολοσειρές σταθερού και μεταβλητού μήκους.
| Τύπος δεδομένων | Περιγραφή | Κατώτερο όριο | Ανώτερο όριο | Μνήμη |
|---|---|---|---|---|
| δυαδικό | Είναι μια δυαδική συμβολοσειρά σταθερού πλάτους. Αποθηκεύει έως και 8,000 byte. | 0 bytes | 8000 bytes | n byte |
| βαρβινικός | Αυτή είναι μια δυαδική συμβολοσειρά μεταβλητού πλάτους. Αποθηκεύει έως και 8,000 byte. | 0 bytes | 8000 bytes | Το πραγματικό μήκος των δεδομένων που εισάγονται + 2 byte |
| εικόνα | Αυτή είναι μια δυαδική συμβολοσειρά μεταβλητού πλάτους. Αποθηκεύει έως και 2 GB. | 0 bytes | 2,147,483,647 bytes | - |
Παράδειγμα ερωτήματος:
DECLARE @Datatype_Binary BINARY(2) = 12; PRINT @Datatype_Binary
Παραγωγή:
0x000C
Άλλοι τύποι δεδομένων σε SQL
Αυτοί είναι οι άλλοι τύποι δεδομένων του SQL Server, με τις περιγραφές τους παρακάτω:
| Τύπος δεδομένων | Περιγραφή |
|---|---|
| Δρομέας | Η έξοδός του είναι μια στήλη με τις μεταβλητές sp_cursor_list και sp_describe_cursor. Επιστρέφει το όνομα της μεταβλητής δρομέα. |
| Rowversion | Σφραγίζει την έκδοση στις γραμμές του πίνακα. |
| Ιεραρχία | Αυτός ο τύπος δεδομένων αντιπροσωπεύει μια θέση σε μια ιεραρχία. |
| Μοναδικό αναγνωριστικό | Αποθηκεύει ένα GUID, το οποίο συχνά μετατρέπεται από μια έκφραση χαρακτήρα. |
| Sql_variant | Αποθηκεύει τιμές τύπων δεδομένων που υποστηρίζονται από τον SQL Server. |
| XML | Αποθηκεύει δεδομένα XML σε μια στήλη. |
| Τύπος Χωρικής Γεωμετρίας | Αντιπροσωπεύει δεδομένα σε ένα επίπεδο σύστημα συντεταγμένων. |
| Τύπος Χωρικής Γεωγραφίας | Αντιπροσωπεύει δεδομένα στο σύστημα συντεταγμένων γύρω από τη γη. |
| τραπέζι | Αποθηκεύει ένα σύνολο αποτελεσμάτων για μεταγενέστερη επεξεργασία. |
Ενδιαφέροντα γεγονότα!
- Ο τύπος δεδομένων CHAR είναι ταχύτερος από τον τύπο δεδομένων VARCHAR κατά την ανάκτηση δεδομένων, επειδή το σταθερό πλάτος του αποφεύγει το μήκος bookkee.ping.


