Τι είναι ο τύπος δεδομένων;
Ο τύπος δεδομένων ορίζεται ως ο τύπος δεδομένων που μπορεί να αποθηκεύσει οποιαδήποτε στήλη ή μεταβλητή στον MS SQL Server.
Κατά τη δημιουργία οποιουδήποτε πίνακα ή μεταβλητής, εκτός από τον καθορισμό του ονόματος, ορίζετε επίσης τον τύπο δεδομένων που θα αποθηκεύσει.
Τρόπος χρήσης του τύπου δεδομένων MS SQL
- Πρέπει να ορίσετε εκ των προτέρων, τον τύπο δεδομένων που μπορεί να αποθηκεύσει μια στήλη ή μια μεταβλητή. Ο προσδιορισμός του τύπου δεδομένων περιορίζει επίσης το χρήστη από την εισαγωγή τυχόν μη αναμενόμενων ή μη έγκυρων δεδομένων.
- Μπορείτε να κάνετε αποτελεσματική χρήση της μνήμης εκχωρώντας έναν κατάλληλο τύπο δεδομένων σε μεταβλητή ή στήλη που θα εκχωρεί μόνο την απαιτούμενη ποσότητα μνήμης συστήματος για τα δεδομένα της αντίστοιχης στήλης.
- Το MS SQL προσφέρει μια ευρεία κατηγορία του τύπου δεδομένων σύμφωνα με τις ανάγκες του χρήστη. Όπως Ημερομηνία, δυαδικές εικόνες κ.λπ.
Σε αυτό το σεμινάριο, θα μάθετε:
- Τι είναι ο τύπος δεδομένων;
- Τρόπος χρήσης του τύπου δεδομένων MS SQL
- Γιατί να χρησιμοποιήσετε τους τύπους δεδομένων;
- Ακριβής αριθμητικός
- Αριθμητικός κατά προσέγγιση
- Ημερομηνία και ώρα
- Συμβολοσειρές χαρακτήρων
- Συμβολοσειρές χαρακτήρων Unicode
- Δυαδική συμβολοσειρά
- Άλλοι τύποι δεδομένων
Γιατί να χρησιμοποιήσετε τους τύπους δεδομένων;
Ας πάρουμε ένα δείγμα απλής σελίδας εγγραφής της εφαρμογής ιστότοπου. Τρία πεδία εισαγωγής είναι το Όνομα, το Επώνυμο και ο αριθμός επικοινωνίας.
Εδώ πρέπει να σημειώσουμε ότι σε πραγματικό χρόνο:
- Το "Όνομα / Επώνυμο" θα είναι πάντα αλφαβητικό .
- Η "επαφή" θα είναι πάντα αριθμητική .
- Από την παραπάνω εικόνα αξίζει να ορίσετε "Όνομα / Επώνυμο" ως χαρακτήρα και " Επικοινωνία" ως ακέραιο .
Είναι προφανές ότι σε οποιαδήποτε εφαρμογή, όλα τα πεδία έχουν τον ένα ή τον άλλο τύπο δεδομένων. Π.χ. αριθμητικά, αλφαβητικά, ημερομηνία και πολλά άλλα.
Επίσης, σημειώστε ότι διαφορετικός τύπος δεδομένων έχει διαφορετική απαίτηση μνήμης. Επομένως, είναι πιο λογικό να ορίσετε τη στήλη ή τη μεταβλητή με τον τύπο δεδομένων που θα διατηρήσει για αποτελεσματική χρήση της μνήμης.
Τύπος δεδομένων διαθέσιμος σε MS SQL
Ο διακομιστής MS SQL υποστηρίζει τις ακόλουθες κατηγορίες τύπου δεδομένων:
- Ακριβής αριθμητικός
- Αριθμητικό κατά προσέγγιση
- Ημερομηνία και ώρα
- Συμβολοσειρές χαρακτήρων
- Συμβολοσειρές χαρακτήρων Unicode
- Δυαδικές χορδές
- Άλλοι τύποι δεδομένων
Ακριβής αριθμητικός
Ο ακριβής αριθμητικός έχει εννέα τύπους τύπων υπο-δεδομένων. Ακριβείς τύποι αριθμητικών δεδομένων
Τύπος δεδομένων | Περιγραφή | Κατώτερο όριο | Ανώτερο όριο | Μνήμη |
---|---|---|---|---|
bigint | Αποθηκεύει ολόκληρους αριθμούς στη δεδομένη περιοχή | −2 63 (,29.223.372, 036.854.775.808) | 2 63−1 (,29.223.372, 036.854.775.807) | 8 byte |
int | Αποθηκεύει ολόκληρους αριθμούς στη δεδομένη περιοχή | −2 31 (−2.147, 483.648) | 2 31−1 (−2.147, 483.647) | 4 byte |
μικρός | Αποθηκεύει ολόκληρους αριθμούς στη δεδομένη περιοχή | −2 15 (−32.767) | 2 15 (−32.768) | 2 byte |
μικροσκοπικό | Αποθηκεύει ολόκληρους αριθμούς στη δεδομένη περιοχή | 0 | 255 | 1 byte |
κομμάτι | Μπορεί να πάρει τιμές 0, 1 ή NULL. | 0 | 1 | 1 στήλη byte / 8bit |
δεκαδικός | Χρησιμοποιείται για αριθμούς κλίμακας και σταθερής ακρίβειας | −10 38 + 1 | 10 381-1 | 5 έως 17 byte |
αριθμητικός | Χρησιμοποιείται για αριθμούς κλίμακας και σταθερής ακρίβειας | −10 38 + 1 | 10 381-1 | 5 έως 17 byte |
χρήματα | Χρησιμοποιημένα νομισματικά δεδομένα | 22922.337, 203, 685.477.5808 | +922.337, 203, 685.477.5807 | 8 byte |
μικρά χρήματα | Χρησιμοποιημένα νομισματικά δεδομένα | 14214,478,3648 | +214.478.3647 | 4 byte |
Παραδείγματα:
Ερώτηση:
DECLARE @Datatype_Int INT = 2PRINT @Datatype_Int
Έξοδος: 2
Σύνταξη: Δεκαδικό (P, S)
Εδώ,
- Το P είναι ακρίβεια
- Το S είναι κλίμακα
Ερώτηση:
DECLARE @Datatype_Decimal DECIMAL (3,2) = 2.31PRINT @Datatype_Decimal
Έξοδος: 2.31
Αριθμητικός κατά προσέγγιση
Η κατά προσέγγιση αριθμητική κατηγορία περιλαμβάνει κυμαινόμενο σημείο και πραγματικές τιμές. Χρησιμοποιούνται κυρίως σε επιστημονικούς υπολογισμούς. Τύπος αριθμητικών δεδομένων κατά προσέγγιση
Τύπος δεδομένων | Περιγραφή | Κατώτερο όριο | Ανώτερο όριο | Μνήμη | Ακρίβεια |
---|---|---|---|---|---|
επιπλέουν (ν) | Χρησιμοποιείται για κυμαινόμενο αριθμό ακρίβειας | −1.79E + 308 | 1.79E + 308 | Εξαρτάται από την τιμή του n | 7 ψηφία |
πραγματικός | Χρησιμοποιείται για κυμαινόμενο αριθμό ακρίβειας | −3.40E + 38 | 3.40Ε + 38 | 4 byte | 15 ψηφία |
Syntax: FLOAT [(n)]
Εδώ, n είναι ο αριθμός των bit που χρησιμοποιούνται για την αποθήκευση της μάντισσας του αριθμού 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.1234PRINT @Datatype_Float
Έξοδος: 22.1234
Ημερομηνία και ώρα
Αποθηκεύει δεδομένα τύπου Ημερομηνία και ώρα. Τύπος δεδομένων ημερομηνίας και ώρας
Τύπος δεδομένων | Περιγραφή | Μέγεθος αποθήκευσης | Ακρίβεια | Κάτω εύρος | Άνω εμβέλεια |
---|---|---|---|---|---|
Ημερομηνία ώρα | Χρησιμοποιείται για τον καθορισμό ημερομηνίας και ώρας από την 1η Ιανουαρίου 1753 έως τις 31 Δεκεμβρίου 9999. Έχει ακρίβεια 3,33 χιλιοστά του δευτερολέπτου. | 8 byte | Στρογγυλοποιήθηκε σε προσαυξήσεις των .000, .003, .007 | 1753-01-01 | 9999-12-31 |
μικρή ώρα | Χρησιμοποιήθηκε για τον καθορισμό ημερομηνίας και ώρας από 1 Ιανουαρίου 0001 έως 31 Δεκεμβρίου 9999. Έχει ακρίβεια 100 νανοδευτερόλεπτα | 4 byte, σταθερά | 1 λεπτό | 1900-01-01 | 2079-06-06 |
ημερομηνία | Χρησιμοποιήθηκε για την αποθήκευση μόνο από 1 Ιανουαρίου 0001 έως 31 Δεκεμβρίου 9999 | 3 byte, σταθερά | 1 ημέρα | 0001-01-01 | 9999-12-31 |
χρόνος | Χρησιμοποιείται για την αποθήκευση τιμών μόνο χρόνου με ακρίβεια 100 νανοδευτερόλεπτα. | 5 byte | 100 νανοδευτερόλεπτα | 00: 00: 00.0000000 | 23: 59: 59,9999999 |
χρονοδιάγραμμα | Παρόμοια με την ώρα δεδομένων αλλά έχει μετατόπιση ζώνης ώρας | 10 byte | 100 νανοδευτερόλεπτα | 0001-01-01 | 9999-12-31 |
ώρα χρόνου2 | Χρησιμοποιήθηκε για τον καθορισμό ημερομηνίας και ώρας από 1 Ιανουαρίου 0001 έως 31 Δεκεμβρίου 9999 | 6 byte | 100 νανοδευτερόλεπτα | 0001-01-01 | 9999-12-31 |
Παράδειγμα ερωτήματος:
DECLARE @Datatype_Date DATE = '2030-01-01'PRINT @Datatype_Date
Έξοδος: "2030-01-01"
Συμβολοσειρές χαρακτήρων
Αυτή η κατηγορία σχετίζεται με έναν τύπο χαρακτήρα. Επιτρέπει στον χρήστη να καθορίσει τον τύπο δεδομένων του χαρακτήρα που μπορεί να έχει σταθερό και μεταβλητό μήκος. Έχει τέσσερα είδη τύπων δεδομένων. Τύποι δεδομένων συμβολοσειρών χαρακτήρων
Τύπος δεδομένων | Περιγραφή | Κατώτερο όριο | Ανώτερο όριο | Μνήμη |
---|---|---|---|---|
απανθρακώνω | Είναι μια συμβολοσειρά χαρακτήρων με σταθερό πλάτος. Αποθηκεύει έως και 8.000 χαρακτήρες. | 0 χαρακτήρες | 8000 χαρακτήρες | n bytes |
βαρτσάρ | Αυτή είναι μια συμβολοσειρά χαρακτήρων με μεταβλητό πλάτος | 0 χαρακτήρες | 8000 χαρακτήρες | n bytes + 2 byte |
varchar (μέγ.) | Αυτή είναι μια συμβολοσειρά χαρακτήρων με μεταβλητό πλάτος. Αποθηκεύει έως 1.073.741.824 χαρακτήρες. | 0 χαρακτήρες | 2 31 χαρακτήρες | n bytes + 2 byte |
κείμενο | Αυτή είναι μια συμβολοσειρά χαρακτήρων με μεταβλητό πλάτος. Αποθηκεύει έως 2 GB δεδομένων κειμένου. | 0 χαρακτήρες | 2.147.483.647 χαρακτήρες | n bytes + 4 byte |
Παράδειγμα ερωτήματος:
DECLARE @Datatype_Char VARCHAR(30) = 'This is Character Datatype'PRINT @Datatype_Char
Έξοδος: Αυτός είναι ο τύπος δεδομένων χαρακτήρων
Συμβολοσειρές χαρακτήρων Unicode
Αυτή η κατηγορία αποθηκεύει την πλήρη γκάμα χαρακτήρων Unicode που χρησιμοποιεί την κωδικοποίηση χαρακτήρων UTF-16. Τύποι δεδομένων συμβολοσειράς χαρακτήρων Unicode
Τύπος δεδομένων | Περιγραφή | Κατώτερο όριο | Ανώτερο όριο | Μνήμη |
---|---|---|---|---|
nchar | Είναι μια συμβολοσειρά Unicode σταθερού πλάτους | 0 χαρακτήρες | 4000 χαρακτήρες | 2 φορές n byte |
nvarchar | Είναι μια συμβολοσειρά unicode μεταβλητού πλάτους | 0 χαρακτήρες | 4000 χαρακτήρες | 2 φορές n bytes + 2 byte |
ntext | Είναι μια συμβολοσειρά unicode μεταβλητού πλάτους | 0 χαρακτήρες | 1.073.741.823 char | 2 φορές το μήκος της χορδής |
Παράδειγμα ερωτήματος:
DECLARE @Datatype_nChar VARCHAR(30) = 'This is nCharacter Datatype'PRINT @Datatype_nChar
Έξοδος: Αυτός είναι ο τύπος δεδομένων nCharacter
Δυαδική συμβολοσειρά
Αυτή η κατηγορία περιέχει μια δυαδική συμβολοσειρά σταθερού και μεταβλητού μήκους. Τύποι δεδομένων δυαδικής συμβολοσειράς
Τύπος δεδομένων | Περιγραφή | Κατώτερο όριο | Ανώτερο όριο | Μνήμη |
---|---|---|---|---|
δυάδικος | Είναι μια δυαδική συμβολοσειρά σταθερού πλάτους. Αποθηκεύει έως και 8.000 bytes. | 0 byte | 8000 byte | n bytes |
σπονδυλική στήλη | Αυτή είναι μια δυαδική συμβολοσειρά μεταβλητού πλάτους. Αποθηκεύει έως και 8.000 byte | 0 byte | 8000 byte | Το πραγματικό μήκος των δεδομένων που εισήχθησαν + 2 byte |
εικόνα | Αυτή είναι μια δυαδική συμβολοσειρά μεταβλητού πλάτους. Αποθηκεύει έως 2 GB. | 0 byte | 2.147.483.647 byte |
Παράδειγμα ερωτήματος:
DECLARE @Datatype_Binary BINARY(2) = 12;PRINT @Datatype_Binary
Έξοδος: 0x000C
Άλλοι τύποι δεδομένων
Αυτοί είναι άλλοι διαφορετικοί τύποι δεδομένων με την παρακάτω περιγραφή-
Τύπος δεδομένων | Περιγραφή |
---|---|
Δρομέας | Το αποτέλεσμα είναι μια στήλη sp_cursor_list και sp_describe_cursor. Επιστρέφει το όνομα της μεταβλητής του δρομέα. |
Έκδοση σειράς | Η έκδοση σφραγίζει τις σειρές του πίνακα. |
Ιεραρχία | Αυτός ο τύπος δεδομένων αντιπροσωπεύει μια θέση στην ιεραρχία |
Μοναδικό αναγνωριστικό | Μετατροπή από μια έκφραση χαρακτήρα. |
Sql_variant | Αποθηκεύει τιμές των τύπων δεδομένων που υποστηρίζονται από διακομιστή SQL. |
XML | Αποθηκεύει δεδομένα XML σε μια στήλη. |
Τύπος χωρικής γεωμετρίας | Αντιπροσωπεύει δεδομένα σε ένα επίπεδο επίπεδο συντεταγμένων. |
Τύπος χωρικής γεωγραφίας | Αντιπροσωπεύει δεδομένα στο σύστημα συντεταγμένων στρογγυλής γης. |
τραπέζι | Αποθηκεύει ένα σύνολο αποτελεσμάτων για μεταγενέστερη επεξεργασία. |
Ενδιαφέροντα γεγονότα!
- Ο τύπος δεδομένων CHAR είναι πιο γρήγορος από το VARCHAR κατά την ανάκτηση δεδομένων.
Περίληψη:
- Κάθε στήλη σε πίνακες καθορίζει τον τύπο δεδομένων κατά τη δημιουργία του πίνακα.
- Υπάρχουν έξι κύριες κατηγορίες και μία άλλη κατηγορία. Άλλα διάφορα διαθέτουν εννέα υποκατηγορίες τύπων δεδομένων.