mysql data types what are different data types mysql
Μάθετε σχετικά με διαφορετικούς τύπους δεδομένων MySQL, όπως αριθμητικά, συμβολοσειρά, τύπος δεδομένων ημερομηνίας, JSON, Boolean κ.λπ. με παραδείγματα:
Σε αυτό το σεμινάριο, θα μάθουμε για διαφορετικούς τύπους δεδομένων που υποστηρίζονται από τη MySQL. Οι τύποι δεδομένων καθορίζονται σε κάθε στήλη κατά τη δημιουργία ενός πίνακα και επίσης κατά την ενημέρωση / αλλαγή του πίνακα για να προσθέσετε μια νέα στήλη στον υπάρχοντα πίνακα
Θα μάθουμε για τους τύπους δεδομένων σε τρεις διαφορετικές κατηγορίες, δηλαδή τον τύπο αριθμητικών δεδομένων, τους τύπους δεδομένων συμβολοσειράς και τους τύπους δεδομένων χρόνου χρόνου.
Τι θα μάθετε:
- Τύποι δεδομένων MySQL
- συμπέρασμα
Τύποι δεδομένων MySQL
Προαπαιτούμενα
Θα μάθουμε όλους τους τύπους δεδομένων με παραδείγματα εργασίας στη MySQL. Ως εκ τούτου, συνιστάται να εγκαταστήσετε το MySQL για την εκτέλεση των ερωτημάτων μαζί με λεπτομέρειες για καλύτερη κατανόηση της έννοιας.
Επίσης, μπορείτε να δημιουργήσετε ένα δείγμα βάσης δεδομένων που ονομάζεται sql_data_types που θα περιέχει όλους τους πίνακες που θα χρησιμοποιούσαμε για παραδείγματα.
create database sql_data_types; use sql_data_types;
Αριθμητικοί τύποι δεδομένων
Οι τύποι αριθμητικών δεδομένων μπορούν να χωριστούν σε 3 τύπους:
- Τύποι ακέραιων δεδομένων
- Τύποι σταθερών σημείων
- Τύποι κυμαινόμενου σημείου
Ας συζητήσουμε καθένα από αυτά:
Τύποι ακέραιων δεδομένων
Αυτοί οι τύποι δεδομένων υποστηρίζουν ακέραιους αριθμούς χωρίς καμία δεκαδική αναπαράσταση. Υπάρχουν διάφοροι υπότυποι όπως - INT, TINYINT, MEDIUMINT, SMALLINT, BIGINT
ΙΝΤ:
Σύνταξη:
INT((width)) (UNSIGNED) (ZEROFILL)
Γεγονότα:
Περιγραφή | Εύρος | Μνήμη | Επιλογές |
---|---|---|---|
MEDIUMBLOB | 0-16,777,215 (16MB) | CREATE TABLE mediumblob_example(mediumblob_col MEDIUMBLOB); | |
Συνήθως χρησιμοποιούμενος αριθμητικός τύπος. Αποθηκεύει ολόκληρους αριθμούς DEFAULT - Μη υπογεγραμμένες τιμές | –2.147.483.648 έως 2.147.483.647 | 4 byte | Εάν χρησιμοποιείται με την επιλογή UNSIGNED - Το εύρος αλλάζει σε 0 έως 4.294.967.295 Η επιλογή πλάτους μπορεί να χρησιμοποιηθεί με το ZEROFILL για να συμπληρώσετε τις καταχωρήσεις με μηδέν για τιμές μικρότερες από το πλάτος |
Παραδείγματα:
Θα δημιουργήσουμε έναν πίνακα με 1 στήλη με τύπο δεδομένων INT και διαφορετικές επιλογές.
CREATE TABLE numbers_int(int_col INT) INSERT into numbers_int values(100),(-324),(2456),(-100000); select * from numbers_int
Έξοδος της εντολής SELECT:
CREATE TABLE numbers_int_options(int_col_with_options INT(4) ZEROFILL ); INSERT into numbers_int_options values(1),(123),(1234),(12345); select * from numbers_int_options;
Έξοδος της παραπάνω εντολής:
Άλλες παραλλαγές του INT:
Υπάρχουν πολλές διαθέσιμες επιλογές για το INT ανάλογα με τις συγκεκριμένες απαιτήσεις. Αυτά χρησιμοποιούνται συνήθως όταν η μνήμη ή ο χώρος είναι ανησυχητική, αλλά για όλους τους πρακτικούς σκοπούς, το INT είναι το πιο ευρέως χρησιμοποιούμενο.
Οι διαφορετικές παραλλαγές του τύπου δεδομένων INT που είναι διαθέσιμοι παρατίθενται παρακάτω:
Τύπος δεδομένων | Εύρος | Παράδειγμα | Χρησιμοποιημένη μνήμη / byte |
---|---|---|---|
TINYINT | -128 - 127 | CREATE TABLE numbers_tinyint(tinyint_col TINYINT); | 1 |
SMALLINT | -32768 - 32767 | CREATE TABLE numbers_smallint(smallint_col SMALLINT); | δύο |
ΜΕΣΑΙΟ | -8388608 - 8388607 | CREATE TABLE numbers_mediumint(mediumint_col MEDIUMINT); | 3 |
ΜΕΓΑΛΗ | -2 ^ 63 - (2 ^ 63-1) | CREATE TABLE numbers_bigint(bigint_col BIGINT); | 8 |
Τύποι κυμαινόμενου σημείου
Οι τύποι κυμαινόμενου σημείου είναι κατά προσέγγιση τύποι τιμών και αυτό εξαρτάται από το όχι. ακρίβειας δεκαδικού σημείου που καθορίστηκε κατά τη δήλωση τύπου στήλης.
Υπάρχουν 2 τύποι τύπων δεδομένων κυμαινόμενου σημείου: FLOAT και DOUBLE που υποστηρίζουν διαφορετικά εύρη και καταναλώνουν μνήμη / χώρο αποθήκευσης.
Πλωτό & ΔΙΠΛΟ
Σύμφωνα με τη νέα προτεινόμενη σύνταξη - τόσο η ακρίβεια FLOAT όσο και η ΔΙΠΛΗ μπορούν να καθοριστούν χρησιμοποιώντας μόνο τύπους δεδομένων FLOAT.
Σύνταξη:
FLOAT(p)
Εδώ, Π -> ακρίβεια
Γεγονότα:
Περιγραφή | Μνήμη | Επιλογές | Παραδείγματα |
---|---|---|---|
Το FLOAT / DOUBLE αντιπροσωπεύει αριθμούς κινητής υποδιαστολής με κατά προσέγγιση τιμές Δηλαδή Όταν η MySQL αποθηκεύει αυτές τις τιμές αυτές οι τιμές προσεγγίζονται στην πλησιέστερη ακρίβεια σύμφωνα με τον τύπο που δηλώνεται. Η ακρίβεια μεταξύ 0-23 αντιπροσωπεύει τον τύπο FLOAT ενώ 24 έως 53 θα δημιουργούσε έναν διπλό τύπο που καταναλώνει 8 bytes | -Ακρίβεια - 0-23 => 4 byte -Ακρίβεια -24-53 => 8 byte | -Οι αριθμοί κυμαινόμενου σημείου μπορούν να ΥΠΟΓΡΑΦΟΝΤΑΙ όσο και ΑΝΕΞΑΓΩΓΗ -FLOAT είναι γενικά ακριβής έως και 7 δεκαδικά ψηφία, ενώ το DOUBLE είναι ακριβές έως και 14 δεκαδικά ψηφία -Υπάρχει επίσης ένας άλλος μη τυπικός τρόπος δήλωσης FLOAT και DOUBLE με την προδιαγραφή των σημείων ακριβείας FLOAT (n, d) - όπου το n είναι συνολικά ψηφία και το d δεν είναι δεκαδικά ψηφία | -Δημιουργήστε πίνακα με μια στήλη ΔΙΠΛΟΣ τύπος δεδομένων ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ αριθμοί_ διπλό (διπλό_ΔΙΑΜΟΡΦΩΣΗ (30)); -Δημιουργήστε πίνακα με μια στήλη ΔΙΠΛΟ τύπο δεδομένων και ψηφία ακριβείας ως 5 ΔΗΜΙΟΥΡΓΙΑ ΤΡΑΠΕΖΙ αριθμών_ διπλό (διπλό_γκόλ ΔΙΠΛΟ (20,5)); |
Ας δούμε μερικά παραδείγματα ανάκτησης των τιμών των διπλών τύπων:
CREATE TABLE numbers_double(double_col DOUBLE(20,5)); insert into numbers_double VALUES(123.45),(-145),(12.3456788); select * from numbers_double;
Έξοδος της δήλωσης SELECT:
Μπορούμε να δούμε εδώ ότι οι τιμές αποθηκεύονται έως και 5 δεκαδικά σημεία όπως καθορίζονται κατά τη δήλωση τύπου δεδομένων.
Τύποι σταθερών σημείων
Αυτοί οι τύποι δεδομένων χρησιμοποιούνται για την αποθήκευση μιας ακριβούς τιμής με καθορισμένη ακρίβεια. Αυτοί οι τύποι δεδομένων χρησιμοποιούνται συνήθως όταν απαιτείται αποθήκευση ακριβείας. Για παράδειγμα, τραπεζικοί λογαριασμοί είναι απαίτηση να διατηρούνται τα υπόλοιπα με 2 δεκαδικά ψηφία, πρέπει να αποθηκεύονται δεδομένα με ακριβή ακρίβεια.
ΔΕΙΚΤΗΣ / ΑΡΙΘΜΟΣ
Σύνταξη:
DECIMAL((width(,decimals))) (UNSIGNED) (ZEROFILL)
Γεγονότα:
Περιγραφή | Εύρος | Μνήμη | Επιλογές |
---|---|---|---|
Το DECIMAL είναι ένας αριθμητικός τύπος δεδομένων στη MySQL και αποθηκεύει ακριβείς τιμές με την καθορισμένη ακρίβεια. Η προεπιλεγμένη κλίμακα ή πλάτος για τον τύπο δεδομένων DECIMAL είναι ακρίβεια 10 και 0. Λάβετε υπόψη ότι οι τύποι DECIMAL και NUMERIC μπορούν να χρησιμοποιηθούν εναλλακτικά. | Εξαρτάται από το καθορισμένο εύρος Για παράδειγμα Το DECIMAL (5,2) θα έχει εύρος από -999,99 έως 999,99 | Δυαδική μορφή χρηστών MySQL για την αποθήκευση DECIMAL τύπου δεδομένων - Απαιτεί τέσσερα byte για κάθε 9 ψηφία - Έτσι για παράδειγμα, εάν έχουμε DECIMAL (14,2) - θα απαιτούσαμε συνολικά - 9 (4) + 2 (1) => 7 byte | -Η μέγιστη τιμή πλάτους μπορεί να είναι 265 -Ο αριθμός των δεκαδικών είναι προαιρετικός και η προεπιλεγμένη τιμή είναι 0 |
Παράδειγμα:
CREATE TABLE numbers_decimal(dec_col DECIMAL(4,2)) INSERT INTO numbers_decimal values(-99),(50.50);
Τύποι δεδομένων DateTime
Οι τύποι δεδομένων DateTime στη MySQL, όπως υποδηλώνει το όνομα, χρησιμοποιούνται για την αποθήκευση τιμών ημερομηνίας και ώρας στη βάση δεδομένων MySQL.
Υπάρχουν 2 χρονικοί τύποι που υποστηρίζονται από τη MySQL - DATETIME και TIMESTAMP
Ας συζητήσουμε και τα δύο στις παρακάτω ενότητες.
ΗΜΕΡΟΜΗΝΙΑ ΩΡΑ
Σύνταξη:
DATETIME(n)
Εδώ, n -> τμήμα ακρίβειας / κλασματικού μέρους δευτερολέπτων (η μέγιστη ακρίβεια υποστηρίζεται είναι 6).
Γεγονότα:
Περιγραφή | Εύρος | Μνήμη | Παραδείγματα |
---|---|---|---|
Χρησιμοποιείται για την αποθήκευση ημερομηνίας και ώρας στη στήλη MySQL Όταν ερωτήθηκε, τα δεδομένα της στήλης εμφανίζουν την ώρα με την παρακάτω μορφή: ΕΕΕΕ-ΜΜ-ΗΗ ΥΗ: ΜΜ: SS | 1000-01-01 00:00:00 - 9999-12-31 23:59:59 | 5 byte Όταν συμπεριλαμβάνεται ένα κλασματικό μέρος, τότε για κάθε 2 κλασματικά ψηφία καταναλώνεται ένα επιπλέον byte. | CREATE table datetime_example(date_col DATETIME); // ΑΠΟΤΕΛΕΣΜΑ date_col 2020-08-08 22:22:53 |
TIMESTAMP
Σύνταξη:
TIMESTAMP(n)
Εδώ, n -> μέρος ακρίβειας / κλασματικού μέρους δευτερολέπτων (η μέγιστη ακρίβεια υποστηρίζεται είναι 6)
Γεγονότα:
Περιγραφή | Εύρος | Μνήμη | Παραδείγματα |
---|---|---|---|
Ένας άλλος τύπος χρονικών δεδομένων που χρησιμοποιείται για την αποθήκευση της ώρας δεδομένων. Αυτό αποθηκεύει την ώρα ημερομηνίας ως UTC επίσης με περιορισμένο εύρος μεταξύ 1970 και 2038 | 1970-01-01 00:00:01 UTC - 2038-01-19 03:14:07 UTC | 4 byte | CREATE table timestamp_example(ts_col TIMESTAMP); ΠΑΡΑΓΩΓΗ ts_col 2020-08-08 22:19:11 |
Τύποι δεδομένων συμβολοσειράς
Οι τύποι δεδομένων συμβολοσειράς, όπως υποδηλώνει το όνομα, χρησιμοποιούνται για την αποθήκευση συμβολοσειρών / κειμένων ή κηλίδων πληροφοριών κειμένου στη βάση δεδομένων. Ανάλογα με την περίπτωση χρήσης υπάρχουν διαφορετικοί τύποι δεδομένων που είναι διαθέσιμοι - CHAR, VARCHAR, BINARY, VARBINARY, TEXT, ENUM, SET & BLOB
Ας κατανοήσουμε κάθε έναν από αυτούς τους διαφορετικούς τύπους δεδομένων με παραδείγματα.
CHAR και ΒΑΡΚΑΡ
Και οι δύο αυτοί τύποι χρησιμοποιούνται για την αποθήκευση τιμών String στις στήλες της MySQL, αλλά διαφέρουν ως προς τον τρόπο αποθήκευσης και ανάκτησης των τιμών.
Το CHAR & VARCHAR δηλώνεται με μήκος, το οποίο δείχνει το μέγιστο μήκος της συμβολοσειράς που θέλετε να αποθηκεύσετε στη στήλη.
Σύνταξη:
CHAR(n) VARCHAR(n)
Εδώ, n -> max no. χαρακτήρων προς αποθήκευση από τη στήλη
Γεγονότα:
Τύπος | Περιγραφή | Εύρος | Παραδείγματα |
---|---|---|---|
ΑΠΑΝΘΡΑΚΩΝΩ Σύνταξη - CHAR (n) | Το CHAR μπορεί να αποθηκεύσει τη συμβολοσειρά μήκους «n» όπως ορίζεται στη δήλωση. Εάν η συμβολοσειρά έχει χαρακτήρα μικρότερο από n, τότε είναι γεμάτο με κενά. | Το μήκος του τύπου δεδομένων CHAR μπορεί να κυμαίνεται από 0 - 255 Ανάλογα με το μήκος, η κατανάλωση μνήμης θα κυμαίνεται από 0 - 255 byte. | CREATE TABLE string_example(char_col CHAR(50)); |
ΒΑΡΚΑΡ Σύνταξη - ΒΑΡΚΑΡ (n) | Το VARCHAR σάς επιτρέπει να αποθηκεύετε συμβολοσειρές μεταβλητού μήκους και να καταναλώνετε μνήμη έναντι του πραγματικού μεγέθους των αποθηκευμένων συμβολοσειρών και όχι της μέγιστης τιμής που καθορίζεται κατά τον ορισμό της στήλης. | Το μήκος του τύπου δεδομένων VARCHAR μπορεί να κυμαίνεται από 0 - 65535 Ανάλογα με το μήκος, η κατανάλωση μνήμης θα κυμαίνεται από 0 - 65535 byte. | CREATE TABLE string_example(varchar_col VARCHAR(50)); |
ΔΙΕΥΡΥΝΣΗ ΚΑΙ ΠΡΟΒΟΛΗ
Παρόμοια με το CHAR και το VARCHAR - αυτοί οι τύποι δεδομένων αποθηκεύουν συμβολοσειρές αλλά σε δυαδική μορφή.
Το μήκος των τύπων δεδομένων BINARY και VARBINARY μετράται σε byte σε αντίθεση με τον αριθμό χαρακτήρων στους τύπους δεδομένων CHAR και VARCHAR.
Σύνταξη:
BINARY(n) VARBINARY(n)
Εδώ, n -> max no. byte για αποθήκευση από τη στήλη.
Γεγονότα:
Τύπος | Περιγραφή | Εύρος | Παραδείγματα |
---|---|---|---|
ΔΥΑΔΙΚΟΣ Σύνταξη - ΔΙΕΥΡΥΝΣΗ (n) | Το BINARY μπορεί να αποθηκεύσει δυαδικά byte. Για τιμές μικρότερες από n είναι σωστές με 0 byte και αποθηκεύονται | Το μήκος του BINARY τύπου δεδομένων μπορεί να κυμαίνεται από 0 - 255 Ανάλογα με το μήκος, η κατανάλωση μνήμης θα κυμαίνεται από 0 - 255 byte. | CREATE TABLE binary_string(binary_col BINARY(50)); |
ΠΑΡΑΡΤΗΜΑ Σύνταξη - ΒΙΒΛΙΟΘΗΚΗ (n) | Το VARBINARY σάς επιτρέπει να αποθηκεύετε δυαδικές συμβολοσειρές μεταβλητού μήκους μέχρι το μήκος (όπως καθορίζεται στον ορισμό της στήλης) | Το μήκος του VARBINARY τύπου δεδομένων μπορεί να κυμαίνεται από 0 - 65535 Ανάλογα με το μήκος, η κατανάλωση μνήμης θα κυμαίνεται από 0 - 65535 byte. | CREATE TABLE variable_binary_string(varbinary_col VARBINARY(50)); |
Ας κατανοήσουμε τον τύπο δεδομένων BINARY με περισσότερες λεπτομέρειες. Θα δημιουργήσουμε έναν πίνακα με στήλη καθένας από δυαδικούς και βαρυτικούς τύπους δεδομένων και θα εξετάσουμε τα περιεχόμενα.
CREATE TABLE binary_strings(binary_col BINARY(50), varbinary_col VARBINARY(50)); INSERT into binary_strings values('hello', 'hello'); SELECT * from binary_strings;
Τώρα έχουμε δει την έξοδο ως BLOB που σημαίνει - σι inary μεγάλο κακό ΟΒ ject - και αυτές δεν είναι παρά δυαδική / Hex αναπαράσταση των τιμών String που έχουμε εισαγάγει στις στήλες.
Τώρα θα εξετάσουμε τις τιμές αυτών των δυαδικών συμβολοσειρών και θα δούμε πώς αποθηκεύονται.
Αρχικά, ας δούμε την τιμή που υπάρχει στο 'binary_col' που είναι τύπου BINARY δεδομένων.
Ας καταλάβουμε ποιες είναι οι τιμές που αποθηκεύονται - Εάν παρατηρήσετε τις τιμές σε σχέση με τις πρώτες 5 καταχωρήσεις - δηλ. Πρώτη σειρά και 5 πρώτες στήλες (0-4)
Αυτές είναι απλώς οι παραστάσεις HEX για τους χαρακτήρες της συμβολοσειράς «γεια» που έχουμε αποθηκεύσει.
Τώρα, δεδομένου ότι είναι ένας τύπος δεδομένων BINARY μήκους 50, μπορούμε να δούμε ότι τα υπόλοιπα bytes είναι γεμάτα με τιμές '00' που δεν είναι παρά αναπαράσταση byte για το ψηφίο '0'.
Δείτε την τιμή που υπάρχει στο 'varbinary_col' που είναι τύπου VARBINARY δεδομένων.
Εδώ, για το VARBINARY, μπορείτε να δείτε ότι οι τιμές συμπληρώνονται για μήκος 5 το οποίο ισοδυναμεί με το μήκος συμβολοσειράς που αποθηκεύσαμε. Δεν υπάρχει μηδενική επένδυση παρόλο που δηλώσαμε μια στήλη VARBINARY μήκους 50.
BLOB και ΚΕΙΜΕΝΟ
Οι τύποι δεδομένων BLOB και TEXT είναι παρόμοιοι με τους τύπους δεδομένων BINARY και CHAR με τη διάκριση ότι μπορούν να υποστηρίξουν μεγαλύτερα μεγέθη σε σχέση με τους βασικούς ομολόγους τους.
Είναι σημαντικό να σημειωθεί ότι το BLOB αποθηκεύει δεδομένα ως Binary Strings, ενώ ο τύπος δεδομένων TEXT αποθηκεύει ως μη δυαδικές συμβολοσειρές. Επίσης, όλοι αυτοί οι τύποι δεδομένων δεν απαιτούν τον προσδιορισμό του μήκους, ενώ αναφέρονται ο τύπος δεδομένων. Έχουν εκ φύσεως μεταβλητό μήκος στη φύση και καταναλώνουν μνήμη μόνο έναντι που αποθηκεύεται ως η πραγματική τιμή της στήλης.
Οι τύποι δεδομένων BLOB χρησιμοποιούνται γενικά για την αποθήκευση αρχείων όπως εικόνες, έγγραφα pdf κ.λπ. ως δυαδικές συμβολοσειρές με ασφαλή και αποτελεσματικό τρόπο.
Λεπτομέρειες σχετικά με διάφορες παραλλαγές των τύπων δεδομένων BLOB και TEXT παρατίθενται παρακάτω:
Τύπος | Εύρος | Περιγραφή | Παραδείγματα |
---|---|---|---|
TINYTEXT | 0-255 (255 bytes) | Το εύρος είναι το ίδιο με το VARCHAR - Χρησιμοποιείται για την αποθήκευση μικρών πληροφοριών, όπως τίτλοι, ονόματα συγγραφέων κ.λπ. | CREATE TABLE tinytext_example(tinytext_col TINYTEXT); |
ΚΕΙΜΕΝΟ | 0-65535 (64 KB) | Αυτός ο τύπος δεδομένων είναι επαρκής για την αποθήκευση κειμένου για ένα άρθρο μικρού έως μεσαίου μεγέθους. | CREATE TABLE text_example(text_col TEXT); |
ΜΕΘΟΔΟΣ | 0-16,777,215 (16MB) | Αυτός ο τύπος δεδομένων μπορεί να επαρκεί για την αποθήκευση κειμένου για ένα ολόκληρο βιβλίο | CREATE TABLE mediumtext_example(mediumtext_col MEDIUMTEXT); |
LONGTEXT | 0 - 4.294.967.295 (4 GB) | Το LONGTEXT χρησιμοποιείται σπάνια ειδικά σε περιπτώσεις όπου το MEDIUMTEXT δεν αρκεί. | CREATE TABLE longtext_example(longtext_col LONGTEXT); |
TINYBLOB | 0-255 (255 bytes) | Όλοι οι τύποι δεδομένων BLOB χρησιμοποιούνται για την αποθήκευση Binary String και γενικά προτιμώνται για την αποθήκευση αρχείων όπως εικόνων, εγγράφων pdf ή μικρών εφαρμογών. Ανάλογα με τις απαιτήσεις μεγέθους, μπορούν να επιλεγούν και να χρησιμοποιηθούν οι διαφορετικοί τύποι δεδομένων BLOB. | CREATE TABLE tinyblob_example(tinyblob_col TINYBLOB); |
ΑΜΟΡΦΗ ΜΑΖΑ | 0-65535 (64 KB) | CREATE TABLE blob_example(blob_col BLOB); | |
LONGBLOB | 0 - 4.294.967.295 (4 GB) | CREATE TABLE longblob_example(longblob_col LONGBLOB); |
ENUM
Το ENUM είναι ένας τύπος δεδομένων συμβολοσειράς που προκαθορίζει τις επιτρεπόμενες τιμές που μπορεί να έχει μια στήλη. Είναι παρόμοιο με τους τύπους δεδομένων ENUM που υπάρχουν σε διαφορετικές γλώσσες προγραμματισμού όπως JAVA, C # κ.λπ.
Οι τιμές ENUM, όταν αποθηκεύονται μετατρέπονται σε αριθμούς έναντι κάθε τιμής στήλης που έχει ως αποτέλεσμα σημαντική εξοικονόμηση μνήμης για πίνακες που έχουν μεγάλο αριθμό εγγραφών, δηλαδή ας υποθέσουμε ότι έχουμε ένα ENUM με τιμές - τιμή1, τιμή2 και τιμή ευρετήρια 1,2,3 πίσω από τα παρασκήνια.
Σύνταξη:
ENUM({comma separated enum values})
Παραδείγματα ερωτημάτων:
Δημιουργήστε έναν πίνακα με 2 στήλες για την αποθήκευση μοντέλων για κινητά ως συμβολοσειρά και ονόματα εταιρειών ως τύπους δεδομένων ENUM με τιμές - APPLE, SAMSUNG και NOKIA. Ας δούμε επίσης ερωτήματα για ανάκτηση δεδομένων με συγκεκριμένη τιμή ENUM.
CREATE TABLE mobile_details(model VARCHAR(100), brand ENUM('SAMSUNG', 'APPLE', 'NOKIA')); INSERT INTO mobile_details values ('IPHONE X', 'APPLE'),('GALAXY M1', 'SAMSUNG'), ('GALAXY M2', 1) ;
Στο παραπάνω ερώτημα, μπορείτε να δείτε ότι χρησιμοποιήσαμε ονόματα Enum καθώς και αριθμητικά ευρετήρια τόσο κατά την εισαγωγή.
Ας δοκιμάσουμε να υποβάλουμε ερώτημα σε όλες τις κινητές συσκευές με την επωνυμία «SAMSUNG», καθώς και να κάνουμε ερώτηση έναντι του αριθμητικού ευρετηρίου της SAMSUNG που είναι «1».
SELECT * FROM mobile_details where brand='SAMSUNG' SELECT * FROM mobile_details where brand=1
Η παραγωγή και των δύο παραπάνω ερωτημάτων θα είναι η ίδια όπως αναφέρεται παρακάτω:
ΣΕΙΡΑ
Ο τύπος δεδομένων MySQL SET είναι ένα αντικείμενο συμβολοσειράς που μπορεί να έχει μία ή περισσότερες από μία τιμές από ένα επιτρεπόμενο εύρος όπως περιγράφεται κατά τον ορισμό της στήλης. Είναι παρόμοιο με το ENUM, αλλά επιτρέπει να συσχετιστούν πολλές τιμές από την καθορισμένη λίστα ως τιμές στηλών.
Επίσης, οι τύποι δεδομένων SET αποθηκεύονται ως ευρετήρια αριθμών ξεκινώντας από 2 ^ 0 - δηλ. 1,2,4,8 κ.λπ.
Σύνταξη:
SET({comma separated list of allowed values})
Παράδειγμα:
Ας προσπαθήσουμε να κατανοήσουμε τον τύπο δεδομένων SET με παραδείγματα. Θα δημιουργήσουμε έναν πίνακα με το όνομα mobile_details με ένα μοντέλο στήλης τύπου String και μια στήλη με το όνομα υποστηριζόμενο λειτουργικό σύστημα που είναι ένας καθορισμένος τύπος δεδομένων και περιέχει μια λίστα υποστηριζόμενων εκδόσεων λειτουργικού συστήματος.
CREATE TABLE mobile_details(model VARCHAR(100), supported_os SET('ios9', 'ios10', 'android8', 'android9','android10'));
Μπορούμε να δούμε ότι έχουμε παραθέσει τιμές λειτουργικού συστήματος ως μέρος μιας στήλης με τύπο δεδομένων SET. Οι αντίστοιχες τιμές DECIMAL που ανατίθενται σε αυτές αναφέρονται παρακάτω:
Τώρα, αν θέλουμε να εκχωρήσουμε τιμή SET, για παράδειγμα, «Android8, android9» σε μια σειρά μπορούμε απλώς να αντιστοιχίσουμε την προσθήκη των εκχωρημένων δεκαδικών τιμών, δηλαδή 12 να έχουν το ίδιο αποτέλεσμα.
Ανατρέξτε στο παραπάνω ερώτημα INSERT για αντιστοίχιση σε σειρά με όνομα μοντέλου 'GALAXYM1'
INSERT INTO mobile_details values ('IPHONE X', ('ios9,ios10')),('GALAXY M1', (12)), ('GALAXY M2', ('android9,android10')) ; SELECT * from mobile_details;
Έξοδος της παραπάνω εντολής:
Μπορούμε επίσης να υποβάλουμε ερώτημα στη στήλη SET έναντι της δεκαδικής αναπαράστασής τους - ας υποθέσουμε ότι θέλουμε να υποβάλουμε ερώτημα για «ios9, ios10» - το άθροισμα της δεκαδικής αναπαράστασης είναι 3, έτσι μπορούμε να υποβάλουμε ερώτημα ως:
SELECT * from mobile_details where supported_os=3
Παραγωγή:
Ειδικοί τύποι δεδομένων
BOOLEAN
Ο τύπος δεδομένων MySQL Boolean αποθηκεύει μια τιμή στήλης ως TRUE ή FALSE. Αυτός ο τύπος δεδομένων είναι γενικά κατάλληλος για την αποθήκευση τιμών σημαίας στους πίνακες MySQL. Για παράδειγμα - Ένας πίνακας τραπεζικού λογαριασμού με στήλη με όνομα is_savings_account μπορεί να αποθηκεύσει είτε αληθές είτε ψευδές.
Η τιμή BOOLEAN αποθηκεύεται στο MySQL ως 1 ή 0 για TRUE και FALSE, αντίστοιχα.
Σύνταξη:
columnName BOOLEAN
Παράδειγμα:
CREATE TABLE account_details(accNo BIGINT, is_savings BOOLEAN); INSERT into account_details values (123456,true), (110002, false), (234567, 1);
Κατά την εισαγωγή ή ανάκτηση τιμών για τον τύπο δεδομένων BOOLEAN μπορούμε είτε να χρησιμοποιήσουμε TRUE ή FALSE ή τις αριθμητικές αναπαραστάσεις τους - δηλαδή 1 ή 0.
select * from account_details where is_savings=1;
Έξοδος της παραπάνω εντολής:
JSON
Η MySQL υποστηρίζει το εγγενές JSON ως τύπο δεδομένων για αντικείμενα στη σημειογραφία JSON. Διευκολύνει την αποθήκευση, την αναζήτηση και την ανάκτηση για έγγραφα τύπου JSON αντί για αποθήκευση ως συμβολοσειρές κειμένου ή δυαδικά Blobs.
Σύνταξη:
columnName JSON
Γεγονότα:
Ορισμός | Εύρος | Παραδείγματα |
---|---|---|
Ο τύπος δεδομένων JSON χρησιμοποιείται για την αποθήκευση εγγράφων σε μορφή JSON. Κάθε στήλη που ορίζεται ως JSON θα ρίχνει ένα σφάλμα εάν ένα μη έγκυρο JSON αποθηκεύεται από ένα ερώτημα INSERT. | Το εύρος ή το μέγεθος του τύπου δεδομένων JSON είναι παρόμοιο με το LONGTEXT ή το LONGBLOB | CREATE TABLE json_example(json_col JSON); |
Παράδειγμα:
Η MySQL παρέχει διαφορετικές λειτουργίες για την αναζήτηση δεδομένων JSON. Ας προσπαθήσουμε να εισαγάγουμε κάτω από το JSON και στη συνέχεια θα δούμε τις συναρτήσεις MySQL για το ερώτημα.
{ 'data': { 'id': 1, 'email': 'test@abc.com', 'first_name': 'Steve', 'last_name': 'Wilson', } } { 'data': { 'id': 2, 'email': 'test@123.com', 'first_name': 'Alex', 'last_name': 'Johson', } }
Ας δούμε εντολές για δημιουργία πίνακα και εισαγωγή των δεδομένων JSON.
create table json_example(json_col JSON); insert into json_example values( '{'data': { 'id': 1, 'email': 'test@abc.com', 'first_name': 'Steve', 'last_name': 'Wilson' }}'); insert into json_example values( '{'data': { 'id': 2, 'email': 'test@123.com', 'first_name': 'Alex', 'last_name': 'Johnson' }}');
Ερώτηση του πίνακα και εκτύπωση των ονομάτων και των πεδίων email από τα δεδομένα JSON που είναι αποθηκευμένα στις σειρές πίνακα.
select json_col->'$.data.first_name' as firstname, json_col->'$.data.email' as email from json_example
Παραγωγή:
Συχνές Ερωτήσεις
Ε # 1) Πώς μπορούμε να αλλάξουμε τον τύπο δεδομένων για μια στήλη MySQL μόλις εκχωρηθεί;
Απάντηση: Ο τύπος δεδομένων της στήλης μπορεί να αλλάξει χρησιμοποιώντας Εντολή ALTER TABLE .
Εξετάστε έναν πίνακα student_info με όνομα 2 στηλών και ηλικία τύπων VARCHAR και INT αντίστοιχα. Αυτό μπορεί να επιτευχθεί χρησιμοποιώντας την ακόλουθη εντολή CREATE TABLE:
CREATE TABLE student_info(name CHAR(20), age INT);
Υπάρχουν μερικές παραλλαγές σε αυτήν την εντολή
τι είναι μια δοκιμαστική περίπτωση σε δοκιμές λογισμικού με παράδειγμα
- Εάν θέλουμε να αλλάξουμε μόνο τον τύπο δεδομένων της στήλης - Μπορούμε να χρησιμοποιήσουμε την εντολή MODIFY μαζί με το ALTER
Στον παραπάνω πίνακα ας υποθέσουμε ότι θέλουμε να αλλάξουμε τον τύπο δεδομένων της στήλης ηλικίας, μπορούμε να χρησιμοποιήσουμε την ακόλουθη εντολή
ALTER TABLE student_info MODIFY age TINYINT
- Αν θέλουμε να αλλάξουμε το όνομα της στήλης καθώς και τον τύπο δεδομένων της στήλης - Μπορούμε να χρησιμοποιήσουμε την εντολή ΑΛΛΑΓΗ μαζί με το ALTER
Στον παραπάνω πίνακα ας υποθέσουμε ότι θέλουμε να αλλάξουμε το όνομα της στήλης από «όνομα» σε «sname» και τον τύπο δεδομένων από CHAR σε VARCHAR (50), μπορούμε να χρησιμοποιήσουμε την ακόλουθη εντολή:
ALTER TABLE student_info CHANGE name sname VARCHAR(50)
Q # 2) Ποιος είναι ο τύπος δεδομένων για μια εικόνα στο mysql;
Απάντηση: Για την αποθήκευση οποιουδήποτε από τους τύπους αρχείων στο MySQL όπως εικόνες, pdf κ.λπ. Ο τύπος δεδομένων BLOB ή binary είναι ο πιο κατάλληλος τύπος. Υπάρχουν διάφορες παραλλαγές του τύπου δεδομένων BLOB που διατίθενται ανάλογα με το μέγεθος του αρχείου προορισμού που θέλουμε να αποθηκεύσουμε. Μπορούμε να χρησιμοποιήσουμε παραλλαγές BLOB όπως - TINYBLOB, BLOB, MEDIUMBLOB, LONGBLOB
Q # 3) Ποιος τύπος δεδομένων είναι πιο κατάλληλος για την αποθήκευση εγγράφων στο mysql;
Απάντηση: Παρόμοια με το BLOB για εικόνες ή αρχεία pdf, για την αποθήκευση εγγράφων / άρθρων κειμένου, μπορεί να χρησιμοποιηθεί τύπος δεδομένων TEXT. Αυτή είναι μια επέκταση στον τύπο δεδομένων CHAR με υποστήριξη για επιπλέον αποθήκευση χαρακτήρων.
Οι διάφορες παραλλαγές του τύπου δεδομένων TEXT είναι διαθέσιμες - ΚΕΙΜΕΝΟ, ΕΙΔΙΚΟ ΚΕΙΜΕΝΟ, MEDIUMTEXT & LONGTEXT
Q # 4) Ποιος είναι ο τύπος δεδομένων για το νόμισμα στη MySQL;
Απάντηση: Για την αποθήκευση δεδομένων για τιμές νομίσματος, ο πιο κατάλληλος τύπος δεδομένων είναι DECIMAL. Χρησιμοποιείται για την αποθήκευση τύπων δεδομένων με ακριβή ακρίβεια. Για παράδειγμα, ένα όνομα στήλης με τύπο DECIMAL (4,2), θα αποθηκεύσει τιμές από -99,99 έως 99,99 και θα επιστρέψει την τιμή με την ίδια ακρίβεια στην ανάκτηση σε αντίθεση με. προσέγγιση για αριθμούς κινητής υποδιαστολής.
Ε # 5) Τι θα συμβεί εάν κάποιος προσπαθήσει να εισαγάγει αρνητικούς αριθμούς για ακέραιες στήλες ΑΝΕΞΑΓΩΓΗ;
Απάντηση: Η MySQL δημιουργεί ένα σφάλμα για τέτοιες παρεμβάσεις
Ας προσπαθήσουμε να δημιουργήσουμε έναν πίνακα με μια στήλη INT με επιλογή ΑΠΟΓΡΑΦΗ.
CREATE TABLE int_unsigned(age INT UNSIGNED); INSERT into int_unsigned values(-350);
Error Code: 1264. Out of range value for column 'int_col_with_options' at row 1
Q # 6) Πώς να λάβετε τρέχοντα δεδομένα ημερομηνίας στο mysql;
Απάντηση: Η MySQL παρέχει 2 ενσωματωμένες συναρτήσεις ώρας ημερομηνίας για τη λήψη τρεχουσών τιμών
Η συνάρτηση CURDATE () επιστρέφει την τρέχουσα ημερομηνία
SELECT CURDATE();
Παραγωγή
2020-08-10
Η συνάρτηση NOW () επιστρέφει την τρέχουσα ημερομηνία με χρονική σήμανση.
SELECT NOW();
Παραγωγή
2020-08-10 00:42:54
Q # 7) Εκτός CHAR και VARCHAR - ποιο είναι πιο κατάλληλο;
Απάντηση: Το VARCHAR σημαίνει μεταβλητό χαρακτήρα και έχει ένα σημαντικό πλεονέκτημα ότι καταναλώνει λιγότερη μνήμη έναντι του CHAR του ίδιου μήκους. Για παράδειγμα, Μια στήλη με VARCHAR (50) εάν αποθηκεύει συμβολοσειρές μήκους 20 θα έχει ως αποτέλεσμα την κατανάλωση μόλις 20 byte σε αντίθεση με έναν τύπο δεδομένων που δηλώνεται με το CHAR (50)
Q # 8) Πώς να ενημερώσετε την τιμή ENUM στη MySQL;
Απάντηση: Για να ενημερώσετε μια στήλη ENUM στη MySQL, θα πρέπει να τροποποιήσετε αναφέροντας τις υπάρχουσες τιμές στηλών, έτσι ώστε οι υπάρχουσες καταχωρήσεις να παραμείνουν ανέπαφες.
Ας προσπαθήσουμε να το καταλάβουμε με ένα παράδειγμα.
Ας υποθέσουμε ότι έχουμε έναν πίνακα που ονομάζεται mobile_details με πεδίο πεδίου ως String (VARCHAR) και στήλη επωνυμίας ως ENUM με αρχικές τιμές ως 'APPLE', SAMSUNG 'και' NOKIA '
Τώρα, ας υποθέσουμε ότι θέλουμε να προσθέσουμε ένα άλλο εμπορικό σήμα 'MOTOROLA' στο υπάρχον enum. Ας δούμε τα ερωτήματα που πρέπει να εκτελέσουμε.
CREATE TABLE mobile_details(model VARCHAR(100), brand ENUM('SAMSUNG', 'APPLE', 'NOKIA'));
Μόλις δημιουργηθεί, μπορείτε να λάβετε τις λεπτομέρειες των αρχικών τιμών ENUM χρησιμοποιώντας την εντολή DESCRIBE
DESCRIBE mobile_details;
Τώρα ας εκτελέσουμε την εντολή για ενημέρωση του ENUM
ALTER TABLE mobile_details MODIFY column brand ENUM('SAMSUNG', 'APPLE', 'NOKIA', 'MOTOROLA');
Μπορούμε ξανά να εκτελέσουμε την εντολή DESCRIBE για να δούμε αν οι ενημερώσεις εφαρμόζονται με επιτυχία.
DESCRIBE mobile_details
Εδώ είναι η έξοδος της παραπάνω εντολής:
συμπέρασμα
Σε αυτό το σεμινάριο μάθαμε για τους διαφορετικούς τύπους δεδομένων που υποστηρίζονται από τη MySQL.
Μάθαμε για τους τύπους δεδομένων Numeric, Floating, String και Date time μαζί με σύνταξη και διάφορα παραδείγματα.
Οι τύποι δεδομένων MySQL είναι οι θεμελιώδεις λίθοι για να ξεκινήσετε και μία από τις πιο κρίσιμες πτυχές κατά τη διάρκεια του Σχεδίου Σχεδίων MySQL.
Συνιστώμενη ανάγνωση
- Τύποι δεδομένων C ++
- Τύποι δεδομένων Python
- C # Τύποι δεδομένων και μεταβλητές με παραδείγματα
- Τύποι δεδομένων PL SQL, μεταβλητές, σταθερές και λογικά
- Τύποι δεδομένων Array - int Array, Double array, Array of Strings κ.λπ.
- MySQL Delete Statement - Διαγραφή σύνταξης εντολών και παραδείγματα
- Εισαγωγή MySQL σε πίνακα - Εισαγωγή σύνταξης δήλωσης και παραδείγματα
- MySQL JOIN Tutorial: Εσωτερικό, εξωτερικό, σταυρό, αριστερά, δεξιά και μόνος