Heim  >  Artikel  >  Datenbank  >  Was sind die MySQL-Feldtypen?

Was sind die MySQL-Feldtypen?

青灯夜游
青灯夜游Original
2022-04-14 15:10:1332055Durchsuche

Es gibt 5 Arten von MySQL-Feldtypen: 1. Ganzzahltyp, der hauptsächlich zum Speichern von Ganzzahlen verwendet wird, einschließlich INT, BIGINT, TINYINT usw.; 2. Gleitkommazahl- und Festkommazahltypen, die zum Speichern von Dezimalzahlen verwendet werden Zu den Punktzahlen gehören FLOAT und DOUBLE. Zu den Festkommazahlen gehören DECIMAL. 3. String-Typ, der zum Speichern von String-Daten usw. verwendet wird.

Was sind die MySQL-Feldtypen?

Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.

Jedes Feld in der Datenbank sollte einen geeigneten Datentyp haben, der die in dieser Spalte gespeicherten Daten einschränkt oder zulässt. Wenn ein Feld beispielsweise Zahlen speichert, sollte der entsprechende Datentyp ein numerischer Typ sein.

Die Verwendung des falschen Datentyps kann die Funktionalität und Leistung der Anwendung erheblich beeinträchtigen. Daher sollte beim Entwerfen von Tabellen besonderes Augenmerk auf die in Datenspalten verwendeten Datentypen gelegt werden. Das Ändern einer Datenspalte ist keine triviale Angelegenheit und kann zu Datenverlust führen. Daher muss beim Erstellen der Tabelle für jede Spalte der richtige Datentyp und die richtige Länge eingestellt werden.

Die Datentypen von MySQL-Feldern können grob in 5 Typen unterteilt werden, nämlich Ganzzahltyp, Gleitkommatyp und Festkommatyp, Datums- und Uhrzeittyp, Zeichenfolgentyp, Binärtyp usw.

Hinweis: Ganzzahltypen und Gleitkommatypen können zusammen als numerische Datentypen bezeichnet werden.

1. Ganzzahltyp

Der numerische Datentyp wird hauptsächlich zum Speichern ganzzahliger Zahlen verwendet.

MySQL bietet eine Vielzahl numerischer Datentypen. Je größer der Wertebereich, der gespeichert werden kann, desto größer ist der erforderliche Speicherplatz.

Die wichtigsten von MySQL bereitgestellten Ganzzahltypen sind TINYINT, SMALLINT, MEDIUMINT, INT und BIGINT, und den Attributfeldern können AUTO_INCREMENT-Einschränkungen für die automatische Inkrementierung hinzugefügt werden. In der folgenden Tabelle sind die numerischen Typen in MySQL aufgeführt.

Typname Beschreibung Speicherbedarf
TINYINT sehr kleine Ganzzahl 1 Byte
SMALLINT kleine Ganzzahl 2 Yu Festival
MEDIUMINT mittel Größe Ganzzahl 3 Bytes
INT (INTEGHR) Normale Ganzzahl 4 Bytes
BIGINT Große Ganzzahl 8 Bytes

As kann aus der obigen Tabelle ersehen werden, Verschiedene Arten von Ganzzahlen erfordern eine unterschiedliche Anzahl von Bytes zum Speichern. Der Typ TINYINT belegt die kleinste Anzahl an Bytes und der Typ BIGINT die größte Anzahl an Bytes. Je mehr Bytes er belegt, desto größer ist der Bereich Werte, die dargestellt werden können.

Der Wertebereich jedes Datentyps kann anhand der Anzahl der belegten Bytes ermittelt werden. Zum Beispiel erfordert TINYINT 1 Byte (8 Bit) zum Speichern, dann ist der Maximalwert der vorzeichenlosen TINYINT-Zahl 28-1, also 255; der Maximalwert der TINYINT-Zahl mit Vorzeichen ist 27-1, also 127.

2. Gleitkomma- und Festkommatypen

MySQL verwendet Gleitkomma- und Festkommazahlen zur Darstellung von Dezimalzahlen.

Es gibt zwei Gleitkommatypen: Gleitkommazahlen mit einfacher Genauigkeit (FLOAT) und Gleitkommazahlen mit doppelter Genauigkeit (DOUBLE). Es gibt nur einen Festkommatyp, nämlich DECIMAL.

Sowohl Gleitkommatypen als auch Festkommatypen können durch (M, D) dargestellt werden, wobei M als Präzision bezeichnet wird und die Gesamtzahl der Ziffern angibt; D als Skalierung bezeichnet wird und die Anzahl der Dezimalstellen angibt.

Der Wertebereich des Gleitkommazahlentyps ist M (1~255) und D (1~30 und darf nicht größer als M-2 sein), die jeweils die Anzeigebreite und die Anzahl der Dezimalstellen darstellen. M und D sind in FLOAT und DOUBLE optional, und die Typen FLOAT und DOUBLE werden mit der maximalen von der Hardware unterstützten Präzision gespeichert. Der Standard-D-Wert für DECIMAL ist 0 und der M-Wert ist 10.

In der folgenden Tabelle sind die Dezimaltypen und Speicheranforderungen in MySQL aufgeführt.

Typname Beschreibung Speicheranforderungen
FLOAT Gleitkomma mit einfacher Genauigkeit 4 Bytes
DOUBLE Gleitkomma mit doppelter Genauigkeit 8 Bytes
DEZIMAL ( M, D), DEC Komprimierte „strenge“ Festkommazahl M+2 Bytes

DECIMAL-Typ unterscheidet sich von FLOAT und DOUBLE. DOUBLE wird tatsächlich in Form einer Zeichenfolge gespeichert. Der maximal mögliche Wertebereich von DECIMAL ist der gleiche wie der von DOUBLE, der effektive Wertebereich wird jedoch durch M und D bestimmt. Wenn M geändert und D festgelegt wird, wird der Wertebereich mit zunehmendem M größer.

Wie Sie der obigen Tabelle entnehmen können, ist der Speicherplatz von DECIMAL nicht festgelegt, sondern wird durch den Präzisionswert M bestimmt, der M+2 Bytes belegt.

Der Wertebereich des FLOAT-Typs ist wie folgt:

  • Der vorzeichenbehaftete Wertebereich: -3,402823466E+38~-1,175494351E-38.

  • Wertebereich ohne Vorzeichen: 0 und -1,175494351E-38~-3,402823466E+38. Der Wertebereich des Typs

DOUBLE ist wie folgt:

  • Der vorzeichenbehaftete Wertebereich: -1,7976931348623157E+308~-2,2250738585072014E-308.

  • Wertebereich ohne Vorzeichen: 0 und -2,2250738585072014E-308~-1,7976931348623157E+308.

Tipps: Unabhängig davon, ob es sich um einen Festkomma- oder einen Gleitkommatyp handelt: Wenn die vom Benutzer angegebene Genauigkeit den Präzisionsbereich überschreitet, wird sie zur Verarbeitung gerundet.

FLOAT und DOUBLE verwenden standardmäßig die tatsächliche Genauigkeit (bestimmt durch die Computerhardware und das Betriebssystem), wenn die Genauigkeit nicht angegeben ist. DECIMAL wird standardmäßig auf (10, 0) gesetzt, wenn die Genauigkeit nicht angegeben ist.

Der Vorteil von Gleitkommazahlen gegenüber Festkommazahlen besteht darin, dass sie bei konstanter Länge einen größeren Bereich darstellen können; der Nachteil besteht darin, dass es zu Genauigkeitsproblemen kommen kann.

Abschließend möchte ich betonen: In MySQL werden Festkommazahlen in Form von Zeichenfolgen gespeichert. Wenn die Genauigkeitsanforderungen relativ hoch sind (z. B. Währung, wissenschaftliche Daten), ist es besser, den Typ DECIMAL zu verwenden Die beiden anderen Gleitkommazahlen werden für Subtraktionen und Summen verwendet. Vergleichsoperationen sind ebenfalls problematisch. Sie müssen daher bei der Verwendung von Gleitkommazahlen vorsichtig sein und versuchen, Gleitkommavergleiche zu vermeiden.

3. Datums-/Uhrzeittyp

Es gibt viele Datentypen, die Datumsangaben in MySQL darstellen: YEAR, TIME, DATE, DTAETIME, TIMESTAMP. Wenn Sie nur Jahresinformationen aufzeichnen, können Sie nur den Typ YEAR verwenden.

Jeder Typ hat einen zulässigen Wertebereich. Wenn ein unzulässiger Wert angegeben wird, fügt das System einen „Null“-Wert in die Datenbank ein.

In der folgenden Tabelle sind die Datums- und Uhrzeittypen in MySQL aufgeführt.

.
Typname Datumsformat Datumsbereich Speicheranforderungen
JAHR JJJJ 1901 ~ 2155 1 Byte
ZEIT HH:MM:SS -838:59:59 ~ 838:59:59 3 Bytes
DATUM JJJJ-MM-TT 1000-01-01 ~ 9999-12-3 3 Wörter Abschnitt
DATETIME YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59 8 Bytes
TIMESTAMP YYYY-MM -DD ​​HH:MM:SS 1980-01-01 00:00:01 UTC ~ 2040-01-19 03:14:07 UTC 4 Bytes

YEAR-Typ

YEAR-Typ ist ein Einzelbyte-Typ, der zur Darstellung des Jahres verwendet wird und nur 1 Byte zur Speicherung benötigt. JAHR kann in verschiedenen Formaten wie folgt angegeben werden:

  • JAHR ausgedrückt im 4-stelligen Zeichenfolgen- oder 4-stelligen Zahlenformat im Bereich von „1901“ bis „2155“. Das Eingabeformat ist „JJJJ“ oder JJJJ. Wenn Sie beispielsweise „2010“ oder 2010 eingeben, werden die Werte 2010 eingefügt.

  • JAHR, ausgedrückt im 2-stelligen Zeichenfolgenformat im Bereich von „00“ bis „99“. Werte im Bereich von „00“ bis „69“ und „70“ bis „99“ werden in YEAR-Werte im Bereich von 2000 bis 2069 bzw. 1970 bis 1999 umgewandelt. „0“ hat die gleiche Wirkung wie „00“. Außerhalb des Bereichs eingegebene Werte werden in 2000 umgewandelt.

  • JAHR ausgedrückt als zweistellige Zahl im Bereich von 1 bis 99. Werte im Bereich von 1 bis 99 und 70 bis 99 werden in JAHR-Werte im Bereich von 2001 bis 2069 und 1970 bis umgewandelt 1999 bzw. Beachten Sie, dass hier ein Wert von 0 in 0000 und nicht in 2000 umgewandelt wird.

Tipp: Der zweistellige Ganzzahlbereich unterscheidet sich geringfügig vom zweistelligen Zeichenfolgenbereich. Um beispielsweise das Jahr 3000 einzufügen, könnte ein Leser das numerische Format 0 zur Darstellung von JAHR verwenden, aber tatsächlich ist der in die Datenbank eingefügte Wert 0000 und nicht wie erwartet 3000. Nur „0“ oder „00“ im String-Format können korrekt als 3000 interpretiert werden, unzulässige YEAR-Werte werden in 0000 umgewandelt.

TIME-Typ

TIME-Typ wird für Werte verwendet, die nur Zeitinformationen erfordern und 3 Bytes zur Speicherung benötigen. Das Format ist HH:MM:SS. HH steht für Stunden, MM für Minuten und SS für Sekunden.

Der Wertebereich des TIME-Typs beträgt -838:59:59~838:59:59. Der Grund, warum der Stundenteil so groß ist, liegt darin, dass der TIME-Typ nicht nur zur Darstellung der Tageszeit verwendet werden kann ( muss weniger als 24 Stunden betragen), kann aber auch eine bestimmte Zeit seit einem Ereignis oder die Zeit zwischen zwei Ereignissen sein (kann größer als 24 Stunden oder sogar negativ sein).

TIME-Werte können in verschiedenen Formaten angegeben werden, wie unten gezeigt.

  • 'D HH:MM:SS' Formatzeichenfolge. Diese „nicht strikten“ Syntaxen können auch verwendet werden: „HH:MM:SS“, „HH:MM“, „D HH“ oder „SS“. D stellt hier den Tag dar, der einen Wert zwischen 0 und 34 annehmen kann. Beim Einfügen in die Datenbank wird D in Stunden umgewandelt und im Format „D*24+HH“ gespeichert.

  • 'HHMMSS'-Format, eine Zeichenfolge ohne Trennzeichen oder ein numerischer Wert im HHMMSS-Format, vorausgesetzt eine aussagekräftige Zeit. Beispielsweise wird „101112“ als „10:11:12“ verstanden, aber „106112“ ist illegal (es hat einen bedeutungslosen Minutenteil) und wird beim Speichern zu 00:00:00.

Tipp: Bei der Zuweisung abgekürzter Werte zur TIME-Spalte beachten Sie bitte: Wenn kein Doppelpunkt vorhanden ist, geht MySQL bei der Interpretation des Werts davon aus, dass die beiden Ziffern ganz rechts Sekunden darstellen. (MySQL interpretiert TIME-Werte als vergangene Zeit und nicht als aktuelle Zeit). Ein Leser könnte beispielsweise denken, dass „1112“ und 1112 11:12:00 (also 12 Minuten nach 11 Uhr) bedeuten, MySQL interpretiert sie jedoch als 00:11:12 (also 11 Minuten und 12 Sekunden). ). Ebenso werden „12“ und 12 als 00:00:12 interpretiert. Wenn im TIME-Wert dagegen ein Doppelpunkt verwendet wird, wird dieser definitiv als Tageszeit betrachtet, d. h. „11:12“ bedeutet 11:12:00 und nicht 00:11:12.

DATE-Typ

DATE-Typ wird verwendet, wenn nur ein Datumswert ohne den Zeitteil benötigt wird und 3 Bytes zur Speicherung benötigt. Das Datumsformat ist „JJJJ-MM-TT“, wobei JJJJ für das Jahr, MM für den Monat und TT für den Tag steht.

Beim Zuweisen von Werten zu Feldern vom Typ DATE können Sie zum Einfügen Zeichenfolgen- oder numerische Daten verwenden, sofern diese dem Datumsformat von DATE entsprechen. Wie unten gezeigt:

  • Das Datum wird im Format „JJJJ-MM-TT“ oder „JJJJMMTT“ ausgedrückt, der Wertebereich ist „1000-01-01“ ~ „9999-12-3“. Geben Sie beispielsweise „31.12.2015“ oder „20151231“ ein und das in die Datenbank eingefügte Datum ist der 31.12.2015.

  • Stellen Sie das Datum im Zeichenfolgenformat „JJ-MM-TT“ oder „JJMMTT“ dar, wobei JJ den zweistelligen Jahreswert darstellt. MySQL interpretiert die Regeln für zweistellige Jahreswerte: Jahreswerte im Bereich von „00 bis 69“ werden in „2000 bis 2069“ umgewandelt, und Jahreswerte im Bereich von „70 bis 99“ werden in „2000 bis 2069“ umgewandelt „1970–1999“. Wenn Sie beispielsweise „15-12-31“ eingeben, ist das in die Datenbank eingefügte Datum der 31.12.2015; wenn Sie „991231“ eingeben, ist das in die Datenbank eingefügte Datum der 31.12.1999.

  • Datum wird im numerischen Format JJMMTT ausgedrückt. Ähnlich wie beim vorherigen werden Jahreswerte im Bereich von 00 bis 69 in 2000 bis 2069 und Jahreswerte im Bereich von 80 bis 99 in umgewandelt 1980–1999. Wenn Sie beispielsweise 151231 eingeben, ist das in die Datenbank eingefügte Datum der 31.12.2015, und wenn Sie 991231 eingeben, ist das in die Datenbank eingefügte Datum der 31.12.1999.

  • Verwenden Sie CURRENT_DATE oder NOW(), um das aktuelle Systemdatum einzufügen.

Tipp: MySQL erlaubt eine „entspannte“ Syntax: Jedes Satzzeichen kann als Trennzeichen zwischen Datumsteilen verwendet werden. Beispielsweise sind „98-11-31“, „98.11.31“, „98/11/31“ und „98@11@31“ gleichwertig und diese Werte werden korrekt in die Datenbank eingefügt.

DATETIME-Typ

DATETIME-Typ wird für Werte verwendet, die sowohl Datums- als auch Uhrzeitinformationen enthalten müssen, und erfordert 8 Bytes zur Speicherung. Das Datumsformat ist „JJJJ-MM-TT HH:MM:SS“, wobei JJJJ für das Jahr, MM für den Monat, TT für den Tag, HH für die Stunde, MM für die Minute und SS für die Sekunde steht.

Beim Zuweisen von Werten zu Feldern vom Typ DATETIME können Sie zum Einfügen Zeichenfolgen- oder numerische Daten verwenden, sofern diese dem Datumsformat von DATETIME entsprechen, wie unten gezeigt.

  • Das Datum wird im Zeichenfolgenformat „JJJJ-MM-TT HH:MM:SS“ oder „JJJJMMTDHHMMSS“ ausgedrückt, der Wertebereich ist „1000-01-01 00:00:00“~'9999-12 - 3 23:59:59'. Wenn Sie beispielsweise „2014-12-31 05:05:05“ oder „20141231050505“ eingeben, lautet der in die Datenbank eingefügte DATETIME-Wert 2014-12-31 05:05:05.

  • Ein Datum im Zeichenfolgenformat „JJ-MM-TT HH:MM:SS“ oder „JJMMTDHHMMSS“, wobei JJ den zweistelligen Jahreswert darstellt. Wie zuvor wird der Jahreswert im Bereich „00~79“ in „2000~2079“ umgewandelt und der Jahreswert im Bereich „80~99“ wird in „1980~1999“ umgewandelt. Wenn Sie beispielsweise „14-12-31 05:05:05“ eingeben, ist die in die Datenbank eingefügte DATETIME 2014-12-31 05:05:05; wenn Sie 141231050505 eingeben, ist die in die Datenbank eingefügte DATETIME 2014 -31.12. 05:05:05 .

  • Datum und Uhrzeit im numerischen Format YYYYMMDDHHMMSS oder YYMMDDHHMMSS. Wenn Sie beispielsweise 20141231050505 eingeben, ist die in die Datenbank eingefügte DATUMZEIT 2014-12-31 05:05:05; wenn Sie 140505050505 eingeben, ist die in die Datenbank eingefügte DATUMZEIT 2014-12-31 05:05:05.

Tipp: MySQL erlaubt eine „entspannte“ Syntax: Jedes Satzzeichen kann als Trennzeichen zwischen Datums- oder Uhrzeitteilen verwendet werden. Zum Beispiel „98-12-31 11:30:45“, „98.12.31 11+30+35“, „98/12/31 11*30*45“ und „98@12@31 11^30^“. 45‘ sind gleichwertig und diese Werte können korrekt in die Datenbank eingefügt werden.

TIMESTAMP-Typ

TIMESTAMP hat das gleiche Anzeigeformat wie DATETIME, die Anzeigebreite ist auf 19 Zeichen festgelegt, das Datumsformat ist JJJJ-MM-TT HH:MM:SS und erfordert 4 Bytes zur Speicherung. Allerdings ist der Wertebereich der TIMESTAMP-Spalte kleiner als der Wertebereich von DATETIME, also '1970-01-01 00:00:01'UTC~'2038-01-19 03:14:07'UTC. Stellen Sie beim Einfügen von Daten sicher, dass diese innerhalb des zulässigen Wertebereichs liegen.

Tipps: Die koordinierte Weltzeit (englisch: Coordinated Universal Time, französisch: Temps Universel Coordonné) ist auch als Universal Unified Time, Universal Standard Time und International Coordinated Time bekannt. Die englischen (CUT) und französischen (TUC) Abkürzungen sind unterschiedlich und als Kompromiss lautet die Abkürzung UTC.

TIMESTAMP und DATETIME, zusätzlich zu unterschiedlichen Speicherbytes und unterstützten Bereichen, ist der größte Unterschied:

  • DATETIME Beim Speichern von Datumsdaten werden diese im tatsächlichen Eingabeformat gespeichert, d. h. alles, was eingegeben wird, wird gespeichert. Es hat nichts mit der Zeitzone zu tun;

  • Die Speicherung des TIMESTAMP-Werts wird im UTC-Format (Universal Coordinated Time) gespeichert. Die aktuelle Zeitzone wird beim Speichern konvertiert und beim Abrufen wieder in die aktuelle Zeitzone umgewandelt. Das heißt, bei der Abfrage ist der angezeigte Zeitwert je nach aktueller Zeitzone unterschiedlich.

Tipp: Wenn Sie einem DATETIME- oder TIMESTAMP-Objekt einen DATE-Wert zuweisen, wird der Zeitanteil des resultierenden Werts auf „00:00:00“ gesetzt, sodass der DATE-Wert keine Zeitinformationen enthält. Wenn einem DATE-Objekt ein DATETIME- oder TIMESTAMP-Wert zugewiesen wird, wird der Zeitanteil des resultierenden Werts entfernt, sodass der DATE-Wert keine Zeitinformationen enthält.

4. String-Typ

Der String-Typ wird zum Speichern von String-Daten verwendet und kann auch Binärdaten von Bildern und Tönen speichern. Zeichenfolgen können mit Zeichenfolgen verglichen werden, bei denen die Groß-/Kleinschreibung beachtet wird oder bei denen die Groß-/Kleinschreibung nicht berücksichtigt wird, und es können auch Suchvorgänge mit regulären Ausdrücken durchgeführt werden.

String-Typen in MySQL umfassen CHAR, VARCHAR, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, ENUM, SET usw.

Die folgende Tabelle listet die String-Datentypen in MySQL auf. Das M in Klammern gibt an, dass die Länge angegeben werden kann.

^16
Typname Beschreibung Speicheranforderungen
CHAR(M) Nicht-binäre Zeichenfolge fester Länge M Bytes, 1<=M<=255
V ARCHAR(M) Nicht-binäre Zeichenfolge variabler Länge L+1 Bytes, wobei L< Bytes, wobei L<2^8
TEXT Kleine nicht-binäre Zeichenfolge L+2 Bytes, wobei L<2
MEDIUMTEXT Medium Eine nicht-binäre Zeichenfolge der Größe L+3 Bytes, wobei L<2^24
LONGTEXT Eine nicht-binäre Zeichenfolge der Größe L+ 4 Bytes, wobei L<2^ 32
ENUM Aufzählungstyp, kann nur einen Aufzählungszeichenfolgenwert haben 1 oder 2 Bytes, abhängig von der Anzahl der Aufzählungswerte (maximaler Wert ist 65535)
SET Ein Set-String-Objekt kann null oder mehr SET-Mitglieder haben 1, 2, 3, 4 oder 8 Bytes, abhängig von der Anzahl der Set-Mitglieder (bis zu 64 Mitglieder)

Die Typen VARCHAR und TEXT sind Typen variabler Länge und ihre Speicheranforderungen hängen von der tatsächlichen Länge des Spaltenwerts (in der vorherigen Tabelle mit L gekennzeichnet) und nicht von der maximal möglichen Größe des Typs ab.

Zum Beispiel kann eine VARCHAR(10)-Spalte eine Zeichenfolge mit einer maximalen Länge von 10 Zeichen speichern. Die tatsächliche Speicherung erfordert die Länge L der Zeichenfolge plus ein Byte, um die Länge der Zeichenfolge aufzuzeichnen. Für das Zeichen „abcd“ ist L 4 und die Speicherung erfordert 5 Bytes.

CHAR- und VARCHAR-Typen

CHAR(M) sind Zeichenfolgen fester Länge, und die Länge der Zeichenfolgenspalte wird bei der Definition angegeben. Beim Speichern werden die Leerzeichen rechts auf die angegebene Länge aufgefüllt. M stellt die Länge der Spalte dar und reicht von 0 bis 255 Zeichen.

Zum Beispiel definiert CHAR(4) eine Zeichenfolgenspalte fester Länge, die maximal 4 Zeichen enthält. Wenn ein CHAR-Wert abgerufen wird, werden nachgestellte Leerzeichen entfernt.

VARCHAR(M) ist eine Zeichenfolge variabler Länge, M stellt die Länge der maximalen Spalte dar und der Bereich von M liegt zwischen 0 und 65535. Die maximale tatsächliche Länge eines VARCHAR wird durch die Größe der längsten Zeile und den verwendeten Zeichensatz bestimmt, während der tatsächlich belegte Platz der tatsächlichen Länge der Zeichenfolge plus eins entspricht.

Zum Beispiel definiert VARCHAR(50) eine Zeichenfolge mit einer maximalen Länge von 50. Wenn die eingefügte Zeichenfolge nur 10 Zeichen enthält, besteht die tatsächlich gespeicherte Zeichenfolge aus 10 Zeichen und einem Zeichenfolgenendezeichen. Nachgestellte VARCHAR-Leerzeichen bleiben beim Speichern und Abrufen von Werten erhalten.

TEXT-Typ

TEXT-Spalte speichert nicht-binäre Zeichenfolgen wie Artikelinhalte, Kommentare usw. Nachgestellte Leerzeichen werden beim Speichern oder Abfragen von TEXT-Spaltenwerten nicht entfernt.

TEXT-Typen sind in 4 Typen unterteilt: TINYTEXT, TEXT, MEDIUMTEXT und LONGTEXT. Verschiedene TEXT-Typen haben unterschiedliche Speicherplätze und Datenlängen.

  • TINYTEXT stellt eine TEXT-Spalte mit einer Länge von 255 (28-1) Zeichen dar.

  • TEXT stellt eine TEXT-Spalte mit einer Länge von 65535 (216-1) Zeichen dar.

  • MEDIUMTEXT stellt eine TEXT-Spalte mit einer Länge von 16777215 (224-1) Zeichen dar.

  • LONGTEXT stellt eine TEXT-Spalte mit einer Länge von 4294967295 oder 4 GB (232-1) Zeichen dar.

ENUM-Typ

ENUM ist ein String-Objekt, dessen Wert ein Spaltenwert ist, der in der Spaltenspezifikation beim Erstellen der Tabelle aufgezählt wird. Das Syntaxformat lautet wie folgt:

<字段名> ENUM( &#39;值1&#39;, &#39;值1&#39;, …, &#39;值n&#39; )

Der Feldname bezieht sich auf das zu definierende Feld und der Wert n bezieht sich auf den n-ten Wert in der Aufzählungsliste.

Felder vom Typ ENUM können bei der Übernahme von Werten aus der angegebenen Aufzählungsliste abgerufen werden und können jeweils nur eines annehmen. Wenn im erstellten Element Leerzeichen vorhanden sind, werden die nachfolgenden Leerzeichen automatisch entfernt.

ENUM-Werte werden intern durch Ganzzahlen dargestellt, und jeder Enumerationswert hat einen Indexwert; die im Listenwert zulässigen Mitgliedswerte werden beginnend mit 1 nummeriert, und MySQL speichert diese Indexnummer bis zu 65535 Elemente.

SET-Typ

SET ist ein Zeichenfolgenobjekt, das null oder mehr Werte haben kann. Die SET-Spalte kann bis zu 64 Mitglieder haben, und der Wert ist ein Spaltenwert, der beim Erstellen der Tabelle angegeben wird. Wenn Sie einen SET-Spaltenwert angeben, der mehrere SET-Mitglieder enthält, trennen Sie jedes Mitglied durch ein Komma. Das Syntaxformat ist wie folgt: Der SET-Wert wird intern durch eine Ganzzahl dargestellt Die Liste hat eine Indexnummer. Nachgestellte Leerzeichen aus SET-Mitgliedswerten werden beim Erstellen der Tabelle automatisch entfernt.

Aber im Gegensatz zum ENUM-Typ kann das Feld vom Typ ENUM nur einen Wert aus den definierten Spaltenwerten zum Einfügen auswählen, während die Spalte vom Typ SET die Vereinigung mehrerer Zeichen aus den definierten Spaltenwerten auswählen kann.

Tipps: Wenn doppelte Spaltenwerte in das SET-Feld eingefügt werden, löscht MySQL automatisch die doppelten Werte, die in das SET-Feld eingefügt werden. Die Reihenfolge der in das SET-Feld eingefügten Werte ist nicht wichtig. MySQL zeigt sie in der definierten Reihenfolge an Reihenfolge, wenn sie in der Datenbank gespeichert werden; wenn falsche Werte eingegeben wurden, ignoriert MySQL diese Werte standardmäßig und gibt eine Warnung aus.

5. Binärtyp MySQL unterstützt zwei Arten von Zeichendaten: Textzeichenfolgen und Binärzeichenfolgen. Im vorherigen Abschnitt „MySQL-String-Typ“ haben wir über Text-Strings gesprochen, in diesem Abschnitt werden wir Binär-Strings erklären.

Binäre Zeichenfolgentypen werden manchmal direkt als „Binärtypen“ bezeichnet.

Binärzeichenfolgen in MySQL sind BIT, BINARY, VARBINARY, TINYBLOB, BLOB, MEDIUMBLOB und LONGBLOB.

Die folgende Tabelle listet die binären Datentypen in MySQL auf. Das M in Klammern gibt an, dass die Länge angegeben werden kann.

类型名称 说明 存储需求
BIT(M) 位字段类型 大约 (M+7)/8 字节
BINARY(M) 固定长度二进制字符串 M 字节
VARBINARY (M) 可变长度二进制字符串 M+1 字节
TINYBLOB (M) 非常小的BLOB L+1 字节,在此,L<2^8
BLOB (M) 小 BLOB L+2 字节,在此,L<2^16
MEDIUMBLOB (M) 中等大小的BLOB L+3 字节,在此,L<2^24
LONGBLOB (M) 非常大的BLOB L+4 字节,在此,L<2^32

BIT 类型

位字段类型。M 表示每个值的位数,范围为 1~64。如果 M 被省略,默认值为 1。如果为 BIT(M) 列分配的值的长度小于 M 位,在值的左边用 0 填充。例如,为 BIT(6) 列分配一个值 b'101',其效果与分配 b'000101' 相同。

BIT 数据类型用来保存位字段值,例如以二进制的形式保存数据 13,13 的二进制形式为 1101,在这里需要位数至少为 4 位的 BIT 类型,即可以定义列类型为 BIT(4)。大于二进制 1111 的数据是不能插入 BIT(4) 类型的字段中的。

提示:默认情况下,MySQL 不可以插入超出该列允许范围的值,因而插入数据时要确保插入的值在指定的范围内。

BINARY 和 VARBINARY 类型

BINARY 和 VARBINARY 类型类似于 CHAR 和 VARCHAR,不同的是它们包含二进制字节字符串。使用的语法格式如下:

列名称 BINARY(M) 或者 VARBINARY(M)

BINARY 类型的长度是固定的,指定长度后,不足最大长度的,将在它们右边填充 “\0” 补齐,以达到指定长度。例如,指定列数据类型为 BINARY(3),当插入 a 时,存储的内容实际为 “\a0\0”,当插入 ab 时,实际存储的内容为“ab\0”,无论存储的内容是否达到指定的长度,存储空间均为指定的值 M。

VARBINARY 类型的长度是可变的,指定好长度之后,长度可以在 0 到最大值之间。例如,指定列数据类型为 VARBINARY(20),如果插入的值长度只有 10,则实际存储空间为 10 加 1,实际占用的空间为字符串的实际长度加 1。

BLOB 类型

BLOB 是一个二进制的对象,用来存储可变数量的数据。BLOB 类型分为 4 种:TINYBLOB、BLOB、MEDIUMBLOB 和 LONGBLOB

【相关推荐:mysql视频教程

Das obige ist der detaillierte Inhalt vonWas sind die MySQL-Feldtypen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn