Τύποι δεδομένων SQL Server με παραδείγματα

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

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

  • 🔢 Ακριβής Αριθμητική: Οι bigint, int, smallint, tinyint, bit, decimal, numeric, money και smallmoney αποθηκεύουν ακριβείς ακέραιους αριθμούς και αριθμούς σταθερής υποδιαστολής.
  • 〰️ Προσεγγιστική Αριθμητική: Οι μεταβλητές float και real αποθηκεύουν κατά προσέγγιση τιμές κινητής υποδιαστολής που χρησιμοποιούνται σε επιστημονικούς υπολογισμούς.
  • 📅 Ημερομηνία και ώρα: Οι συναρτήσεις datetime, smalldatetime, date, time, datetimeoffset και datetime2 αποθηκεύουν χρονικές τιμές.
  • 🔤 Χαρακτήρας και Unicode: Τα char, varchar και text διατηρούν κείμενο. Τα nchar, nvarchar και ntext διατηρούν κείμενο Unicode.
  • Δυαδικό και Άλλο: Τα δυαδικά, τα varbinary και τα image αποθηκεύουν δεδομένα byte. Τα cursor, xml και uniqueidentifier καλύπτουν ειδικές ανάγκες.
  • 🧠 Επιλέγοντας την Wisely: Η αντιστοίχιση κάθε στήλης με τον μικρότερο κατάλληλο τύπο βελτιώνει την αποδοτικότητα αποθήκευσης και την ακεραιότητα των δεδομένων.

Τύποι δεδομένων 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 σε αυτές τις κατηγορίες.

Ομάδα διαγραμμάτωνping Τύποι δεδομένων 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.

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

Το VARCHAR αποθηκεύει χαρακτήρες που δεν είναι Unicode χρησιμοποιώντας ένα byte για τον καθένα, ενώ το NVARCHAR αποθηκεύει χαρακτήρες Unicode χρησιμοποιώντας δύο byte για τον καθένα. Επιλέξτε NVARCHAR όταν μια στήλη πρέπει να περιέχει πολλές γλώσσες ή σύμβολα εκτός μίας σελίδας κώδικα. Διαφορετικά, το VARCHAR χρησιμοποιεί λιγότερο χώρο αποθήκευσης.

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

Ναι. Στον SQL Server, οι δεκαδικοί και οι αριθμητικοί αριθμοί είναι λειτουργικά πανομοιότυποι. Και οι δύο δέχονται ακρίβεια και κλίμακα και αποθηκεύουν ακριβείς αριθμούς σταθερής υποδιαστολής, επομένως οι δύο λέξεις-κλειδιά είναι εναλλάξιμες. Μπορείτε να χρησιμοποιήσετε όποιο όνομα προτιμά η ομάδα σας για ευανάγνωστο.

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

Ναί. ΠΙΝΑΚΑΣ ΕΝΑΛΛΑΓΗΣ Η συνάρτηση table_name ΑΛΛΑΓΗ ΣΤΗΛΗΣ όνομα_στήλης νέος_τύπος αλλάζει τον τύπο δεδομένων μιας στήλης. Η αλλαγή είναι επιτυχής μόνο όταν οι υπάρχουσες τιμές μετατρέπονται καθαρά στον νέο τύπο. Διαφορετικά, αποτυγχάνει, επομένως δοκιμάστε τις μετατροπές και δημιουργήστε πρώτα αντίγραφα ασφαλείας των δεδομένων.

Η κανονική συνάρτηση VARCHAR(n) αποθηκεύει έως και 8,000 χαρακτήρες. Η συνάρτηση VARCHAR(max) αποθηκεύει έως και περίπου 2 GB (2^31-1 byte) και προορίζεται για μεγάλο κείμενο που υπερβαίνει τους 8,000 χαρακτήρες. Χρησιμοποιήστε τη συνάρτηση VARCHAR(max) μόνο όταν οι τιμές μπορούν πραγματικά να είναι τόσο μεγάλες.

Ναί. GitHub Copilot μπορεί να προτείνει τύπους δεδομένων στηλών και να δημιουργεί εντολές DECLARE και CREATE TABLE από προτροπές φυσικής γλώσσας. Να επιβεβαιώνετε πάντα την ακρίβεια, την κλίμακα, το μήκος και τις ανάγκες Unicode σε σχέση με τα δεδομένα σας πριν εφαρμόσετε τις προτάσεις του στην παραγωγή.

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

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