English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Die folgenden Abschnitte beschreiben die DATATYPE, die MySQL unterstützt.
MySQL unterstützt drei Arten von DATATYPE:Zeichen,ZahlenundDatum/ZeitDATATYPE.
Zeichen DATATYPE werden in der Regel verwendet, um Namen, Adressen, Beschreibungen oder jeden Wert zu speichern, der aus Buchstaben und Ziffern besteht, einschließlich binärer Daten, wie z.B. Bilder oder Audiodateien.
DATATYPE CHAR ermöglicht die Speicherung bis zu255Zeichen einer festen Länge. Der DATATYPE VARCHAR ermöglicht die Speicherung bis zu65,535Zeichen einer variablen Länge (in MySQL 5.0.3wurde vorher begrenzt auf255charakteren).
Die Länge der DATATYPE CHAR und VARCHAR ist die Anzahl der maximalen Zeichen, die gespeichert werden sollen. Zum Beispiel, CHAR mit5) am meisten aufnehmen kann5charakteren. kann gespeichert werden.
Der Hauptunterschied zwischen den DATATYPE CHAR und VARCHAR besteht darin, wie sie Daten speichern. Wenn ein Wert in einer CHAR-Spalte gespeichert wird, wird er mit leeren Leerzeichen auf die angegebene Länge aufgefüllt, aber wenn ein Wert in einer VARCHAR-Spalte gespeichert wird, wird er nicht aufgefüllt. Dies bedeutet, dass der Wert "ab" als CHAR mit einer Länge von4) in VARCHAR(4) in der Spalte gespeichert wird, wird dieser Wert als "ab" gespeichert, während derselbe Wert als "ab" gespeichert wird.
Hinweis:/Regionalkode. VARCHAR kann Speicherplatz sparen, wenn es sich um Werte mit variabler Länge wie Namen oder Titeln handelt.
Hinweis:Die maximale gültige Länge von VARCHAR ist abhängig von der maximalen Zeilenlänge (65,535Bytes, die von allen Spalten gemeinsam genutzt werden, und die durch die verwendete Zeichensatzkodierung festgelegten Beschränkungen.
BINARY und VARBINARY-Typen ähneln CHAR und VARCHAR, differenzieren sich jedoch darin, dass sie binäre Zeichenfolgen anstatt nicht binäre Zeichenfolgen enthalten. Die maximale zulässige Länge von BINARY und VARBINARY ist wie bei CHAR und VARCHAR, der Unterschied liegt darin, dass die Länge von BINARY und VARBINARY in Bytes und nicht in Zeichen angegeben wird.
TEXT und BLOB-Datentypen sind speziell für die Speicherung großer Datenmengen bestimmt. Der TEXT-Datentyp wird verwendet, um lange Zeichenfolgen zu speichern, wie z.B. Beschreibungen, Blog-Kommentare und dergleichen.
BLOB ist ein binärer Grossobjekt, der eine variable Anzahl von Daten speichern kann. Diese Funktion ist besonders nützlich, wenn Sie binäre Mediendateien (wie Bilder oder Audiodateien) in einer Datenbank speichern müssen.
Die vier BLOB-Typen sind TINYBLOB, BLOB, MEDIUMBLOB und LONGBLOB. Der Unterschied zwischen ihnen liegt nur in der maximalen Länge der enthaltenen Werte. Ebenso gibt es diese vier Texttypen: TINYTEXT, TEXT, MEDIUMTEXT und LONGTEXT. Diese entsprechen den vier BLOB-Typen und haben die gleiche maximale Länge und Speicheranforderung.
Die folgende Tabelle listet die paarweise auftretenden MySQL-Zeichenketten-Datentypen auf. Unabhängig davon, ob der Typ binär oder nicht binär ist, wird die maximale Länge in Bytes angegeben.
Binäre Datentypen | Nicht binäre Datentypen | Maximale Länge |
---|---|---|
BINARY | CHAR | 255 |
VARBINARY | VARCHAR | 65,535 |
TINYBLOB | TINYTEXT | 255 |
BLOB | TEXT | 65,535 |
MEDIUMBLOB | MEDIUMTEXT | 16,777,215 |
LONGBLOB | LONGTEXT | 4,294,967,295 |
Hinweis:Für nicht binäre Zeichenketten-Datentypen wird der Spaltenlängenwert normalerweise als Zeichenanzahl und nicht als Byteanzahl bezeichnet. Dies bedeutet, dass die maximale Zeichenanzahl für Zeichenketten mit mehrbyte Zeichen geringer ist.
Der ENUM-Datentyp ermöglicht es Ihnen, eine Liste möglicher Werte zu spezifizieren, die in einer Spalte gespeichert werden können. Zum Beispiel als ENUM für Geschlecht ('male', 'female') NOT Eine Spalte mit NULL kann folgende Werte haben: '' (leerer String), 'male' oder 'female'. Sie können in einer ENUM-Liste maximal65,535unterschiedliche Werte. Falls Sie einen ungültigen Wert in eine ENUM-Spalte einfügen (d.h. einen String, der in der Liste der erlaubten Werte nicht existiert), wird ein leerer String eingefügt.
SET-Typen erlauben die Angabe einer Liste von Werten, die in die Spalte eingefügt werden sollen, z.B. Enum. Der SET-Typ ermöglicht es jedoch, mehrere Werte aus der angegebenen Werteliste auszuwählen, im Gegensatz zum ENUM-Datentyp, der nur einen Wert auswählen erlaubt.
Zum Beispiel kann eine Spalte, die als option SET('one', 'two') NOT NULL spezifiziert ist, die folgenden Werte speichern: "one", 'two' oder 'one,two'. Mehrere durch Kommas getrennte Werte (,) können angegeben werden. Für den SET-Datentyp können maximal64unterschiedliche Werte.
Numerische Datentypen werden in der Regel verwendet, um Daten wie Preise und Gehälter zu speichern.
MySQL unterstützt die SQL-Standard Ganzzahltypen INTEGER (oder INT) und SMALLINT. MySQL unterstützt auch die Ganzzahltypen TINYINT, MEDIUMINT und BIGINT als Erweiterung des SQL-Standards. Die folgende Tabelle zeigt das Spektrum jeder Ganzzahltypen.
Datentyp | Bereich (signiert) | Bereich (ungerzeichnet) |
---|---|---|
TINYINT | -128 bis 127 | 0 bis |
SMALLINT | -32768 bis 32767 | 0 bis |
MEDIUMINT | -8388608 bis 8388607 | 0 bis |
INT | -2147483648 bis 2147483647 | 0 bis |
BIGINT | -9223372036854775808 bis 9223372036854775807 | 0 bis |
Numerische Datentypen haben die zusätzlichen Attribute SIGNED (Zeichen) und UNSIGNED (ungerzeichnet). Numerische Datentypen sind standardmäßig signiert und reichen von negativ bis positiv. Die Hinzufügung des Attributes UNSIGNED an numerische Spalten ermöglicht es nicht, negative Zahlen zu verwenden und verschiebt das Spektrum, so dass der Mindestwert von 0 beginnt,而不是 von einer negativen Zahl.
DECIMAL und NUMERIC-Datentypen dienen dazu, genaue Zahlen zu speichern. Diese Datentypen werden auch als "festgelegte" oder "genaue" Typen bezeichnet und werden in der Regel verwendet, wenn eine genaue Präzision erforderlich ist, z.B. beim Speichern von Gelddaten wie Produktpreisen. In MySQL wird NUMERIC als DECIMAL implementiert.
Bei der Angabe von DECIMAL- oder NUMERIC-Spalten kann die Genauigkeit und die Anzahl der Dezimalstellen angegeben werden, z.B. DECIMAL(P, S) oder NUMERIC(P, S), wobei P die Genauigkeit und S die Anzahl der Dezimalstellen ist. Die Genauigkeit kann die maximale Anzahl der Stellen im Feld speichern, einschließlich der Dezimalstellen, während die Anzahl der Dezimalstellen die Anzahl der Stellen nach dem Dezimalpunkt angibt. Zum Beispiel, Preis DECIMAL(6,2)Spalte kann alle Werte speichern, die sechs Stellen haben und zwei Dezimalstellen beinhalten, d.h.-9999.99bis9999.99Werte.
FLOAT und DOUBLE-Typen stellen Näherungswerte von numerischen Daten dar. Dies ist der Grund, warum diese Datentypen auch "Fließkommartyp" oder "Näherungswerttyp" genannt werden.
MySQL unterstützte Syntax: FLOAT(M, D) oder DOUBLE PRECISION(M, D). In diesem Fall (M, D) bedeutet, dass bis zu M Stellen gespeichert werden können, wobei D Stellen nach dem Dezimalpunkt stehen können. Zum Beispiel wird angezeigt als FLOAT(7,3) als-9999.999。 MySQL runde Werte beim Speichern ab, daher, wenn Sie9999.0009Einfügen von FLOAT(7,3),则近似结果为9999.001。
Hinweis:Das Vergleichen von Fließkommawerten kann Probleme verursachen, da sie Näherungswerte sind und keine genauen Werte sind. Daher sollten Sie, um Werte zu speichern, die für Vergleiche verwendet werden können, wie Preis, Gehalt usw., den DATETIME-Datentyp verwenden.
Datum- und Uhrzeit-Datentypen werden in der Regel verwendet, um Daten wie Geburtsdatum, Einstellungsdatum, Datum und Uhrzeit beim Erstellen oder Aktualisieren eines Eintrags in einer Tabelle und so weiter zu speichern.
Der DATE-Datentyp wird verwendet, um Daten zu speichern. MySQL DATE speichert im Format 'YYYY-MM-DD'-Format speichert und检索 Werte, wobei YYYY, MM und DD die Jahres-, Monats- und Tageskomponenten der Zeit sind. Der unterstützte Bereich ist " 1000-01-01bis " 9999-12-31。
Der TIME-Datentyp kann verwendet werden, um die tägliche Zeit oder den Zeitintervall zu speichern. MySQL TIME speichert und检索 Werte im Format 'HH:MM:SS', wobei HH, MM und SS die Stunden-, Minuten- und Sekundenkomponenten der Zeit sind (oder im Format 'HHH:MM:SS' für die großen Stunden). Der unterstützte Bereich der TIME-Werte ist '-838:59:59bis '838:59:59。
Die Stundenkomponente kann groß sein, da der TIME-Typ in MySQL nicht nur zum Speichern der Zeit am Tag verwendet werden kann (muss weniger als24Stunden), und kann auch für die verstrichene Zeit oder den Zeitintervall zwischen zwei Ereignissen verwendet werden (der möglicherweise weit größer ist24Stunden, sogar negative).
Hinweis:Standardmäßig werden Werte, die außerhalb des TIME-Bereichs liegen, aber gültig sind, auf den nächstgelegenen Endpunkt des Bereichs gekürzt. Zum Beispiel, " 860:00:00" wird in " 838:59:59Ungültige TIME-Werte werden in " 00:00:00" umgewandelt.
DATETIME und TIMESTAMP-Datentypen werden verwendet, um Datum und Uhrzeit im Format 'YYYY-MM-DD HH:MM:SS'-Format zum Speichern von kombinierten Datum- und Zeitwerten. Diese Datentypen werden in der Regel verwendet, um Datum und Uhrzeit beim Versenden von Bestellungen, beim Erstellen oder Ändern einer Zeile in einer Tabelle und so weiter zu speichern.
Diese Datentypen sind in vielen Aspekten ähnlich, aber es gibt einige Unterschiede. DATETIME unterstützt den Bereich '1000-01-01 00:00:00' bis '9999-12-31 23:59:59jedoch, der Zeitstempelbereich beträgt '1970-01-01 00:00:01' UTC zu'2038-01-19 03:14:07' UTC.
TIMESTAMP und DATETIME haben ebenfalls spezielle automatische Initialisierungs- und automatische Aktualisierungsattribute, aber diese Attribute gelten nicht für MySQL 5.6.5DATETIMEM.
Hinweis: MySQL konvertiert TIMESTAM-Werte aus der aktuellen Zeitzone in UTC zum Speichern und konvertiert sie von UTC in die aktuelle Zeitzone zum Abrufen.
YEAR-Datentyp wird verwendet, um Vierstellige Jahreswerte im Format YYYY zu speichern.
kann es als YEAR oder YEAR(4) unterstützt. Der Wertebereich der unterstützten YEAR-Werte ist1901bis2155. Ungültige YEAR-Werte werden in 0000 umgewandelt.
Hinweis:Ältere MySQL-Versionen erlauben es jedoch, es zu verwenden, um Zweistellige Jahreswerte YEAR(2) wird jedoch jetzt nicht mehr unterstützt und wird in MySQL 5.7.5In China wurde die Unterstützung dafür entfernt.