Details zum MySQL-Datentyp

Details zum MySQL-Datentyp

1. Numerischer Typ

1.1 Klassifizierung numerischer Typen

  • Strenge numerische Typen ( INTEGER , SMALLINT , DECIMAL und NUMERIC )
  • Ungefähre numerische Datentypen ( FLOAT , REAL und DOUBLE PRECISION )

Numerische Typen in MySQL:

Ganzzahltypen Byte Minimum Maximal
TINYINT
1
Signiert -128
Vorzeichenlose 0
Signiert 127
Ohne Vorzeichen 255
SMALLINT
2
Signiert -32768
Vorzeichenlose 0
Signiert 32767
Ohne Vorzeichen 65535
MITTELINT
3
Signiert -8388608
Vorzeichenlose 0
Signiert 8388607
Ohne Signatur 1677215
INT, INTEGER
4
Signiert -2147483648
Vorzeichenlose 0
Signiert 2147483647
Ohne Vorzeichen 4294967295
BIGINT
8
Signiert -9223372036854775808
Vorzeichenlose 0
Signiert 9223372036854775807
Ohne Vorzeichen 18446744073709551615
Gleitkommatypen
Byte
Minimum Maximal
SCHWEBEN
4
±1,175494351E-38
±3,402823466E+38
DOPPELT
8
±2,2250738585072014E-308
±1,7976931348623157E+308
Festkommazahlentypen
Byte beschreiben
DEZ(M,D),
DEZIMAL(M,D)
M+2
Der maximale Wertebereich ist der gleiche wie bei DOUBLE. Der gültige Wertebereich für eine gegebene DECIMAL wird durch die Werte M und D bestimmt.
Entscheiden
Bit-Typ
Byte
Minimum Maximal
BIT(M)
1~8
BIT(1)
BIT(64)

1.1.1 Gleitkommazahlen

Wenn bei Gleitkommazahlen die Genauigkeit und die Skalierung nicht angegeben werden, werden sie entsprechend dem tatsächlichen Genauigkeitswert angezeigt. Wenn die Genauigkeit und die Skalierung angegeben werden, wird das gerundete Ergebnis automatisch eingefügt und das System meldet keinen Fehler. Wenn bei Festkommazahlen die Genauigkeit und die Skalierung nicht angegeben werden, wird die Operation entsprechend dem Standardwert decimal(10,0) ausgeführt und wenn die Daten den Genauigkeits- und Skalierungswert überschreiten, meldet das System einen Fehler.

1.1.2 Bit-Typ

BIT-Typ (Bit): reicht von 1 bis 64. Wenn nicht festgelegt, ist der Standardwert 1 Bit. Für dieses Feld wird das Ergebnis nicht angezeigt, wenn Sie den Befehl select direkt verwenden. Sie können die Funktion bin() (Anzeige im Binärformat) oder hex() (Anzeige im Hexadezimalformat) verwenden, um es zu lesen.

Beispiel:

mysql> Beschreibung t2;
+-------+--------+------+-----+---------+---------+----------+
| Feld | Typ | Null | Schlüssel | Standard | Extra |
+-------+--------+------+-----+---------+---------+----------+
| Ich würde | Bit(1) | JA | | NULL | |
+-------+--------+------+-----+---------+---------+----------+
1 Zeile im Satz (0,00 Sek.)

mysql> in t2-Werte einfügen (1);
Abfrage OK, 1 Zeile betroffen (0,05 Sek.)

mysql> wähle * aus t2;
+------+
|Ich würde|
+------+
| |
+------+
1 Zeile im Satz (0,00 Sek.)

mysql> wähle bin(id),hex(id) aus t2;
+---------+---------+
| bin(id) | hex(id) |
+---------+---------+
| 1 | 1 |
+---------+---------+
1 Zeile im Satz (0,03 Sek.)

Beim Einfügen von bit wird der Wert zunächst in Binärwerte umgewandelt. Wenn zulässig, wird er eingefügt. Wenn die Anzahl der Ziffern kleiner als die tatsächlich definierte Anzahl von Ziffern ist, schlägt das Einfügen fehl.

Wenn Sie beispielsweise gerade 2 in die Tabelle einfügen, ist der tatsächliche Binärwert 10, was die tatsächlich definierte Anzahl von bit(1) überschreitet, und es wird eine Ausnahme gemeldet. Definieren Sie id als bit(2) und die Einfügung wird erfolgreich sein.

mysql> in t2-Werte einfügen (2);
FEHLER 1406 (22001): Daten zu lang für Spalte „id“ in Zeile 1
mysql> Tabelle ändern t2 ID-Bit ändern (2);
Abfrage OK, 1 Zeile betroffen (0,67 Sek.)
Datensätze: 1 Duplikate: 0 Warnungen: 0

mysql> in t2-Werte einfügen (2);
Abfrage OK, 1 Zeile betroffen (0,03 Sek.)

mysql> wähle bin(id),hex(id) aus t2;
+---------+---------+
| bin(id) | hex(id) |
+---------+---------+
| 1 | 1 |
| 10 | 2 |
+---------+---------+
2 Zeilen im Satz (0,00 Sek.)

1.1.3 Uhrzeit- und Datumstyp

1.1.3 Uhrzeit- und Datumstyp

Datums- und Uhrzeittypen Byte Minimum Maximal
DATUM
4
1000-01-01
31.12.9999
DATETIME
8
1000-01-01 00:00:00
9999-12-31 23:59:59
ZEITSTEMPEL
4
19700101080001
Irgendwann im Jahr 2038
ZEIT
3
-838:59:59
838:59:59
JAHR
1 1901
2155
  • DATE : wird verwendet, um Jahr, Monat und Tag anzugeben
  • DATETIME : wird zur Darstellung von Jahr, Monat, Tag, Stunde, Minute und Sekunde verwendet (unterstützte Einfügeformate: 2007-9-3 12:10:10', '2007/9/3 12+10+10', '20070903121010', 20070903121010 usw.)
  • TIME : wird nur zur Anzeige von Stunden, Minuten und Sekunden verwendet
  • TIMESTAMP : Häufiges Einfügen oder Aktualisieren von Daten auf die aktuelle Systemzeit
  • YEAR : gibt das Jahr an

Beispiel 1: Erstellen Sie einen Zeitplan (dt) mit drei Datumstypen in den Feldern: Datum, Uhrzeit und Datum/Uhrzeit und geben Sie Werte ein, um die angezeigten Ergebnisse anzuzeigen

mysql> Tabelle erstellen dt(d Datum, t Uhrzeit, dt Datum/Uhrzeit);
Abfrage OK, 0 Zeilen betroffen (0,23 Sek.)


mysql> in dt-Werte einfügen (jetzt(), jetzt(), jetzt());
Abfrage OK, 1 Zeile betroffen, 1 Warnung (0,05 Sek.)

mysql> wähle * aus dt;
+------------+----------+---------------------+
| d | t | dt |
+------------+----------+---------------------+
| 13.05.2021 | 10:14:07 | 13.05.2021 10:14:07 |
+------------+----------+---------------------+
1 Zeile im Satz (0,00 Sek.)

Beispiel 2: Erstellen Sie eine Testtabelle t, setzen Sie das Feld id1 auf den Typ TIMESTAMP, fügen Sie einen Nullwert ein und zeigen Sie an

mysql> Tabelle erstellen t(id1 Zeitstempel);
Abfrage OK, 0 Zeilen betroffen (0,22 Sek.)

mysql> in t-Werte einfügen (null);
Abfrage OK, 1 Zeile betroffen (0,05 Sek.)

mysql> wähle * aus t;
+---------------------+
|
+---------------------+
| 13.05.2021 10:18:05 |
+---------------------+
1 Zeile im Satz (0,00 Sek.)

Es kann festgestellt werden, dass das System automatisch einen Standardwert von CURRENT_TIMESTAMP (Systemdatum) für ID1 erstellt. (Beachten Sie, dass MySQL nur den Standardwert des ersten TIMESTAMP Felds in der Tabelle auf das Systemdatum setzt. Wenn ein zweiter TIMESTAMP -Typ vorhanden ist, wird der Standardwert auf 0 gesetzt.)

Beispiel 3: Erklärung wie oben

mysql> Tabelle ändern t, Spalte ID2-Zeitstempel hinzufügen;
Abfrage OK, 0 Zeilen betroffen (0,48 Sek.)
Datensätze: 0 Duplikate: 0 Warnungen: 0

mysql> anzeigen, Tabelle erstellen t \G;
*************************** 1. Reihe ***************************
       Tabelle: t
Tabelle erstellen: CREATE TABLE `t` (
  `id1` Zeitstempel NICHT NULL STANDARD CURRENT_TIMESTAMP BEI UPDATE CURRENT_TIMESTAMP,
  `id2` Zeitstempel NICHT NULL STANDARD '0000-00-00 00:00:00'
) ENGINE=InnoDB STANDARD CHARSET=latin1
1 Zeile im Satz (0,00 Sek.)

FEHLER:
Keine Abfrage angegeben

1.1.4 String-Typ

Zeichenfolgentyp Byte Beschreibung und Speicheranforderungen
CHARME)
M
M ist eine Ganzzahl zwischen 0 und 255
VARCHAR(M)
M ist eine Ganzzahl zwischen 0 und 65535, die Länge des Wertes + 1 Byte
KLEINBLÖCK
Die zulässige Länge beträgt 0 bis 255 Bytes, die Länge des Wertes + 1 Byte
KLECKS
Die zulässige Länge beträgt 0 bis 65535 Bytes, der Wert Länge + 2 Bytes
MITTELBLOB
Die zulässige Länge beträgt 0 bis 167772150 Bytes, die Länge des Wertes + 3 Bytes
LANGBLOB
Die zulässige Länge beträgt 0 bis 4294967295 Bytes, die Länge des Wertes + 4 Bytes
TINYTEXT
Die zulässige Länge beträgt 0 bis 255 Bytes, der Wert Länge + 2 Bytes
TEXT
Die zulässige Länge beträgt 0 bis 65535 Bytes, der Wert Länge + 2 Bytes
MITTELTEXT
Die zulässige Länge beträgt 0 bis 167772150 Bytes, die Länge des Wertes + 3 Bytes
LANGTEXT
Die zulässige Länge beträgt 0 bis 4294967295 Bytes, die Länge des Wertes + 4 Bytes
VARBINARY(M)
Erlaubt Bytefolgen variabler Länge von 0 bis M Bytes, die Länge des Wertes + 1 Byte
BINÄR(M)
M
Byte-Strings mit fester Länge von 0 bis M Bytes sind zulässig

  • CHAR : feste Länge. Bei der Suche werden nachstehende Leerzeichen gelöscht.
  • VARCHAR : String mit variabler Länge, diese Leerzeichen bleiben bei der Suche erhalten

Beispiel:

mysql> Tabelle erstellen varc(v varchar(4),c char(4));
Abfrage OK, 0 Zeilen betroffen (0,20 Sek.)

mysql> einfügen in varc-Werte('abc ','abc ');
Abfrage OK, 1 Zeile betroffen (0,03 Sek.)

mysql> wähle Länge(v), Länge(c) aus varc;
+--------------+--------------+
| Länge(v) | Länge(c) |
+--------------+--------------+
| 4 | 3 |
+--------------+--------------+
1 Zeile im Satz (0,01 Sek.)
mysql> wähle concat(v,'+'),concat(c,'+') aus varc;
+---------------+---------------+
| concat(v,'+') | concat(c,'+') |
+---------------+---------------+
| abc + | abc+ |
+---------------+---------------+
1 Zeile im Satz (0,00 Sek.)

  • BINARY : Ähnlich wie char , aber es handelt sich um eine binäre Zeichenfolge.
  • VARBINARY : Ähnlich wie varchar , speichert aber Binärzeichenfolgen.

Beispiel:

mysql> Tabelle erstellen bina(c binary(3));
Abfrage OK, 0 Zeilen betroffen (0,22 Sek.)

mysql> in t einfügen, setze c='a';
FEHLER 1054 (42S22): Unbekannte Spalte „c“ in „Feldliste“
mysql> in Bina-Set c='a' einfügen;
Abfrage OK, 1 Zeile betroffen (0,05 Sek.)

mysql> wähle *,hex(c),c='a',c='a\0',c='a\0\0' aus bina;
+------+--------+-------+---------+-----------+
| c | hex(c) | c='a' | c='a\0' | c='a\0\0' |
+------+--------+-------+---------+-----------+
| ein | 610000 | 0 | 0 | 1 |
+------+--------+-------+---------+-----------+
1 Zeile im Satz (0,00 Sek.)

Es zeigt sich, dass beim Speichern eines BINARY der Wert am Ende mit „0x00“ (Nullbytes) aufgefüllt wird, um die angegebene Felddefinitionslänge zu erreichen. Wie aus dem obigen Beispiel ersichtlich, wird aus 'a' in einer BINARY(3) -Spalte beim Einfügen 'a\0\0'.

1.1.5 ENUM-Typ

ENUM : Eine Aufzählung von 1 bis 255 Mitgliedern erfordert 1 Byte Speicher; für 255 bis 65535 Mitglieder werden 2 Byte Speicher benötigt.

Beispiel:

mysql> Tabelle erstellen Gend (Geschlecht Enumeration ('M', 'F'));
Abfrage OK, 0 Zeilen betroffen (0,20 Sek.)

mysql> einfügen in Gend-Werte('M'),('F'),('1'),(null);
Abfrage OK, 4 Zeilen betroffen (0,03 Sek.)
Datensätze: 4 Duplikate: 0 Warnungen: 0

mysql> wähle * von Geschlecht;
+--------+
|Geschlecht|
+--------+
| M |
| F |
| M |
| NULL |
+--------+
4 Zeilen im Satz (0,00 Sek.)

Daraus können wir ersehen, dass beim Einfügen von Werten vom Aufzählungstyp die Groß-/Kleinschreibung ignoriert wird und der anfängliche Index bei 1 beginnt; bei der Abfrage wird er in Großbuchstaben umgewandelt und es können auch Nullen eingefügt werden.

1.1.6 SET-Typ

SET : String-Objekt, das 64 Mitglieder enthalten kann. Unterschiedliche Mitglieder haben unterschiedliche Speichermethoden.

Ein Satz von 1 bis 8 Mitgliedern, der 1 Byte belegt.
Ein Satz von 9 bis 16 Mitgliedern, der 2 Bytes belegt.
Ein Satz von 17 bis 24 Mitgliedern, der 3 Bytes belegt.
Ein Satz von 25 bis 32 Mitgliedern, der 4 Bytes belegt.
Ein Satz von 33 bis 64 Mitgliedern, der 8 Bytes belegt.
Der Unterschied zwischen Set und EMUN besteht darin, dass Set mehrere Mitglieder gleichzeitig auswählen kann, während ENUM nur eines auswählen kann.

Beispiel:

mysql> Tabelle erstellen st(Spaltensatz('a','b','c','d'));
Abfrage OK, 0 Zeilen betroffen (0,20 Sek.)

mysql> in st-Werte einfügen('a,b'),('a,d,a'),('a,c'),('a');
Abfrage OK, 4 Zeilen betroffen (0,03 Sek.)
Datensätze: 4 Duplikate: 0 Warnungen: 0

mysql> in st-Werte einfügen ('f');
FEHLER 1265 (01000): Daten für Spalte „col“ in Zeile 1 abgeschnitten
mysql> in st-Werte einfügen (null);
Abfrage OK, 1 Zeile betroffen (0,03 Sek.)

mysql> wähle * von st;
+------+
| Spalte |
+------+
| a,b |
| ein, d |
| a,c |
| ein |
| NULL |
+------+
5 Zeilen im Satz (0,00 Sek.)

Daraus können wir ersehen, dass das Set mehrere Mitglieder und auch Null einfügen kann. Beim Einfügen einer nicht vorhandenen Definitionsspalte wird eine Ausnahme gemeldet und das Einfügen schlägt fehl.

Das könnte Sie auch interessieren:
  • Grundkenntnisse der MySQL-Datenbank
  • Detaillierte Erklärung des Integer-Datentyps tinyint in MySQL
  • Detaillierte Erläuterung der MySql-Datentyp-Tutorialbeispiele
  • Grundsätze zur Auswahl von MySQL-Datentypen
  • MySQL-Datenbankoperationen und Datentypen

<<:  Detaillierte Schritte zum manuellen Konfigurieren der IP-Adresse in Linux

>>:  33 Eis- und Schnee-Schriftarten zum Download empfohlen (privat und kommerziell)

Artikel empfehlen

Ein Artikel, der Ihnen HTML beibringt

Wenn Sie nicht unbedingt Künstler werden möchten,...

Der Unterschied und die Verwendung von LocalStorage und SessionStorage in Vue

Inhaltsverzeichnis Was ist LocalStorage Was ist S...

So führen Sie PostgreSQL mit Docker aus

1. Installieren Sie Docker. Referenz-URL: Docker-...

Eine kurze Diskussion über den VUE Uni-App-Lebenszyklus

Inhaltsverzeichnis 1. Anwendungslebenszyklus 2. S...

So erstellen Sie eine Datenbank in Navicat 8 für MySQL

Beim Entwickeln einer Website müssen Sie häufig e...

Einführung in die Verwendung gängiger XHTML-Tags

Es gibt viele Tags in XHTML, aber nur wenige werd...

Vue implementiert Login-Sprung

In diesem Artikelbeispiel wird der spezifische Co...

Erläuterung der HTTPS-Prinzipien

Da die Kosten für die Erstellung von HTTPS-Websit...

Aufbauprinzip des Nexus-Privatservers und Tutorial-Analyse

eins. Warum einen privaten Nexus-Server erstellen...

So importieren Sie Excel-Dateien in eine MySQL-Datenbank

In diesem Artikel erfahren Sie, wie Sie Excel-Dat...

Zwei Methoden zum Strecken des Hintergrundbilds einer Webseite

Es gibt zwei Lösungen: Eine Möglichkeit ist CSS, b...