Heim  >  Artikel  >  Datenbank  >  Detaillierte Einführung in die von MySQL unterstützten Datentypen

Detaillierte Einführung in die von MySQL unterstützten Datentypen

不言
不言nach vorne
2019-02-15 14:15:412639Durchsuche

Dieser Artikel bietet Ihnen eine detaillierte Einführung in die von MySQL unterstützten Datentypen. Ich hoffe, dass er für Sie hilfreich ist.

1. Numerische Typen

Mysql unterstützt alle numerischen Typen in Standard-SQL, einschließlich strenger Datentypen (INTEGER, SMALLINT, DECIMAL, NUMBERIC) und ungefähre numerische Werte Typ (FLOAT, REAL, DOUBLE PRESISION) und erweitern Sie auf dieser Basis. (Empfohlener Kurs: MySQL-Tutorial)

wurde um drei Ganzzahlen unterschiedlicher Länge erweitert: TINYINT, MEDIUMINT und BIGINT sowie einen BIT-Typ zum Speichern von Bitdaten.

Ganzzahltyp Bytes Bereich (mit Vorzeichen) Bereich (ohne Vorzeichen) Verwendung

TINYINT 1 Byte (-128, 127) (0, 255) Kleiner ganzzahliger Wert

SMALLINT 2 Bytes (-32 768, 32 767) (0, 65 535) Großer ganzzahliger Wert

MEDIUMINT 3 Bytes (-8 388 608, 8 388 607) (0, 16 777 215) großer ganzzahliger Wert

INT oder INTEGER 4 Bytes (-2 147 483 648, 2 147 483 647) (0, 4 294 967 295) Großer ganzzahliger Wert

BIGINT 8 Bytes (-9 233 372 036 854 775 808, 9 223 372 036 854 775 807) (0, 18 446 744 073 709 551 615) Maximaler ganzzahliger Wert

FLOAT 4 Bytes (-3,402 8 23 466 E+38, 1,175 494 351 E-38), 0, (1.175 494 351 E-38, 3.402 823 466 351 E+38) 0, (1.175 494 351 E-38, 3.402 823 466 E+38) Gleitkommawert mit einfacher Genauigkeit

DOUBLE 8 Bytes (1.797 693 134 862 315 7 E+308, 2.225 073 858 507 201 4 E-308), 0, (2.225 073 858 507 201 4 E-308, 1.797 693 1 34 862 315 7 E+ 308) 0, ( 2.225 073 858 507 201 4 E-308, 1.797 693 134 862 315 7 E+308) Gleitkommawert mit doppelter Genauigkeit

DECIMAL zu DECIMAL(M,D), wenn M>D, ist M+2, sonst D+2 Hängt davon ab von den Werten von M und D. Hängt von den Werten von M und D ab. Dezimalwert

INT Typ:

Die 5 wichtigsten in MySQL unterstützten Ganzzahltypen sind TINYINT, SMALLINT, MEDIUMINT , INT und BIGINT. Diese Typen sind weitgehend identisch, lediglich die Größe der von ihnen gespeicherten Werte unterscheidet sich.

MySQL erweitert den SQL-Standard in Form eines optionalen Anzeigebreitenindikators, sodass beim Abrufen eines Werts aus der Datenbank der Wert auf eine angegebene Länge verlängert werden kann. Wenn Sie beispielsweise angeben, dass der Typ eines Felds INT(6),

ist, wird sichergestellt, dass Werte mit weniger als 6 Ziffern automatisch mit Leerzeichen aufgefüllt werden, wenn sie aus der Datenbank abgerufen werden. Beachten Sie, dass die Verwendung eines Breitenindikators keinen Einfluss auf die Größe des Felds oder den Wertebereich hat, den es speichern kann.

Falls wir eine Zahl in einem Feld speichern müssen, das den zulässigen Bereich überschreitet, kürzt MySQL sie vor dem Speichern entsprechend dem Ende des zulässigen Bereichs, das ihr am nächsten liegt. Eine weitere Besonderheit ist, dass

MySQL den unzulässigen Wert automatisch auf 0 ändert, bevor er in die Tabelle eingefügt wird.

Der Modifikator UNSIGNED gibt an, dass das Feld nur positive Werte enthält. Da die positiven und negativen Vorzeichen der Zahlen nicht gespeichert werden müssen, kann bei der Speicherung ein „Bit“ Platz gespart werden. Dadurch vergrößert sich der Wertebereich, den dieses Feld speichern kann.

Der Modifikator ZEROFILL gibt an, dass 0 (keine Leerzeichen) zur Ergänzung des Ausgabewerts verwendet werden kann. Verwenden Sie diesen Modifikator, um zu verhindern, dass die MySQL-Datenbank negative Werte speichert.

Typen FLOAT, DOUBLE und DECIMAL

Die drei von MySQL unterstützten Gleitkommatypen sind die Typen FLOAT, DOUBLE und DECIMAL. Der numerische Typ FLOAT wird zur Darstellung von Gleitkommawerten mit einfacher Genauigkeit verwendet, und der numerische Typ DOUBLE wird zur Darstellung von Gleitkommawerten mit doppelter Genauigkeit verwendet.

Wie Ganzzahlen benötigen auch diese Typen zusätzliche Parameter: einen Anzeigebreitenindikator und einen Dezimalpunktindikator. Beispielsweise gibt die Anweisung FLOAT(7,3) an, dass der angezeigte Wert 7 Ziffern mit 3 Ziffern nach dem Dezimalpunkt nicht überschreitet.

Bei einem Wert mit mehr Nachkommastellen als im zulässigen Bereich rundet MySQL ihn vor dem Einfügen automatisch auf den nächsten Wert.

Der Datentyp DECIMAL wird in Berechnungen verwendet, die eine sehr hohe Präzision erfordern. Dieser Typ ermöglicht die Angabe der Genauigkeit und Zählmethode des Werts als Auswahlparameter. Die Präzision bezieht sich hier auf die Gesamtzahl der für diesen Wert gespeicherten signifikanten Ziffern,

, während die Zählmethode die Anzahl der Ziffern nach dem Dezimalpunkt angibt. Beispielsweise gibt die Anweisung DECIMAL(7,3) an, dass der gespeicherte Wert 7 Stellen und 3 Nachkommastellen nicht überschreiten darf.

Das Weglassen der Genauigkeits- und Zählmethodenmodifizierer des Datentyps DECIMAL führt dazu, dass die MySQL-Datenbank die Genauigkeit auf 10 und die Zählmethode auf 0 für alle als dieser Datentyp identifizierten Felder setzt.

Die Modifikatoren UNSIGNED und ZEROFILL können auch mit den Datentypen FLOAT, DOUBLE und DECIMAL verwendet werden. Und der Effekt ist der gleiche wie beim INT-Datentyp.

2. String-Typ

MySQL bietet 8 grundlegende String-Typen: CHAR, VARCHAR, BINARY, VARBINARY, BLOB, TEXT, ENUM, SET und andere String-Typen.

kann Daten speichern, die von einem einfachen Zeichen bis hin zu riesigen Textblöcken oder Binärzeichenfolgen reichen.

String-Typ Bytegröße Beschreibung und Speicheranforderungen

CHAR 0-255 Bytes String mit fester Länge

VARCHAR 0-255 Bytes String mit variabler Länge

TINYBLOB 0–255 Bytes Binäre Zeichenfolge mit nicht mehr als 255 Zeichen TINYTEXT 0–255 Bytes BLOB 0–65535 Bytes in Binärform Langtextdaten

TEXT 0–65535 Bytes Langtextdaten

MEDIUMBLOB 0- 16 777 215 Byte Textdaten mittlerer Länge in Binärform

MEDIUMTEXT 0-16 7 77 215 Bytes Textdaten mittlerer Länge

LOGNGBLOB 0-4 294 967 295 Bytes sehr große Textdaten in Binärform

LONGTEXT 0-4 294 967 295 Bytes sehr große Textdaten

VARBINARY(M)                                                                  ‐ ' s ' s ‐ ‐ ‐ ‐ dürfen Byte-Strings fester Länge mit einer Länge sein von 0-M Bytes und die Länge des Werts + 1 Byte Abschnitt mit Byte-Strings fester Länge

CHAR- und VARCHAR-Typen

Der CHAR-Typ wird für Strings fester Länge verwendet und muss es sein definiert mit einem Größenmodifikator in Klammern. Dieser Größenmodifikator liegt zwischen 0 und 255. Werte, die größer als die angegebene Länge sind, werden abgeschnitten, während Werte, die kleiner als die angegebene Länge sind, mit Leerzeichen aufgefüllt werden.

Der CHAR-Typ kann den BINARY-Modifikator verwenden. Bei Verwendung in Vergleichsoperationen führt dieser Modifikator dazu, dass CHAR in binärer Form an der Operation teilnimmt und nicht in der herkömmlichen Weise, bei der die Groß-/Kleinschreibung beachtet wird.

Eine Variante des CHAR-Typs ist der VARCHAR-Typ. Es handelt sich um einen Zeichenfolgentyp mit variabler Länge und muss außerdem einen Indikator im Bereich von 0 bis 255 haben. Der Unterschied zwischen CHAR und VARCHGAR besteht in der Art und Weise, wie die MYSQL-Datenbank mit dem

-Indikator umgeht: CHAR behandelt diese Größe als die Größe des Werts und füllt sie mit Leerzeichen, wenn die Länge nicht ausreicht. Der Typ VARCHAR hingegen behandelt dies als Maximalwert und speichert den Wert nur mit der Länge

, die tatsächlich zum Speichern der Zeichenfolge erforderlich ist (plus einem zusätzlichen Byte zum Speichern der Länge der Zeichenfolge selbst). Daher werden VARCHAR-Typen, die kürzer als die Indikatorlänge sind, nicht mit Leerzeichen aufgefüllt, aber Werte, die länger als der Indikator sind, werden trotzdem abgeschnitten.

Da der Typ VARCHAR die Länge des gespeicherten Werts basierend auf dem tatsächlichen Inhalt dynamisch ändern kann, kann die Verwendung des Typs VARCHAR erheblich Speicherplatz sparen und die Speichereffizienz verbessern, wenn Sie nicht sicher sind, wie viele Zeichen ein Feld benötigt.

Der Typ VARCHAR ist identisch mit dem Typ CHAR, wenn der Modifikator BINARY verwendet wird.

TEXT- und BLOB-Typen

Für Fälle, in denen die Feldlängenanforderung 255 überschreitet, stellt MySQL zwei Typen bereit: TEXT und BLOB. Sie alle haben je nach Größe der gespeicherten Daten unterschiedliche Untertypen. Diese großen Datenmengen werden zum Speichern binärer Datentypen wie Textblöcke oder Bilder,

Sounddateien usw. verwendet.

Es gibt Unterschiede in der Klassifizierung und im Vergleich zwischen TEXT- und BLOB-Typen. Beim BLOB-Typ wird die Groß-/Kleinschreibung beachtet, während bei TEXT die Groß-/Kleinschreibung nicht beachtet wird. Größenmodifikatoren werden für verschiedene BLOB- und TEXT-Untertypen nicht verwendet.

Werte, die größer als der vom angegebenen Typ unterstützte maximale Bereich sind, werden automatisch abgeschnitten.

3. Datums- und Uhrzeittypen

MySQL bietet 5 verschiedene Datentypen zur Auswahl bei der Verarbeitung von Datums- und Uhrzeittypwerten. Sie können in einfache Datums- und Uhrzeittypen und gemischte Datums- und Uhrzeittypen unterteilt werden.

In jedem Untertyp sind abhängig von der erforderlichen Genauigkeit Untertypen verfügbar, und MySQL verfügt über integrierte Funktionen zum Konvertieren verschiedener Eingabeformate in ein Standardformat. Typgröße (Bytes) Bereich Formatverwendung

DATUM 4 1000-01-01/9999-12-31 JJJJ-MM-TT Datumswert

ZEIT 3 ’ - 838:59:59'/'838:59:59' HH:MM:SS Zeitwert oder Dauer

JAHR 1 1901/2155 JJJJ Jahreswert

DATUM UHRZEIT 8 1000-01 - 01 00:00:00/9999-12-31 23:59:59 JJJJ-MM-TT HH:MM:SS Gemischte Datums- und Uhrzeitwerte

TIMESTAMP 4 1970-01-01 00:00:00/irgendwann im Jahr 2037 YYYYMMDD HHMMSS Gemischte Datums- und Zeitwerte, Zeitstempel

DATE-, TIME- und TEAR-Typen

MySQL Das DATE und TEAR-Typen speichern einfache Datumswerte und der TIME-Typ speichert Zeitwerte. Diese Typen können als Zeichenfolgen oder Folgen von Ganzzahlen ohne Trennzeichen beschrieben werden. Wenn sie als Zeichenfolge beschrieben werden, sollten Werte vom Typ

durch Bindestriche als Trennzeichen und Werte vom Typ TIME durch Doppelpunkte als Trennzeichen getrennt werden.

Es ist zu beachten, dass ein Wert vom Typ TIME ohne Doppelpunkttrennzeichen von MySQL als Dauer und nicht als Zeitstempel interpretiert wird.

MySQL interpretiert auch maximal den Wert von zwei Ziffern im Jahr eines Datums oder zwei Ziffern, die für den TEAR-Typ in einer SQL-Anweisung eingegeben werden. Denn alle Werte vom Typ TEAR müssen mit 4 Zahlen gespeichert werden.

MySQL versucht, eine zweistellige Jahreszahl in einen vierstelligen Wert umzuwandeln. Konvertiert Werte im Bereich 00-69 in den Bereich 2000-2069. Konvertiert Werte im Bereich 70-99 bis 1970-1979.

Wenn der von MySQL automatisch umgerechnete Wert nicht unseren Anforderungen entspricht, geben Sie bitte die 4-stellige Jahreszahl ein.

DATEYIME- und TIMESTAMP-Typen

Zusätzlich zu den Datums- und Uhrzeitdatentypen unterstützt MySQL auch zwei gemischte Typen, DATEYIME und TIMESTAMP. Sie können Datum und Uhrzeit als einen einzelnen Wert speichern.

Beide Typen werden üblicherweise zum automatischen Speichern von Zeitstempeln verwendet, die das aktuelle Datum und die aktuelle Uhrzeit enthalten, und können gut in Anwendungen funktionieren, die eine große Anzahl von Datenbanktransaktionen durchführen und einen Prüfpfad für Debugging- und Überprüfungszwecke erstellen müssen .

Wenn wir einem Feld vom Typ TIMESTAMP nicht explizit einen Wert zuweisen oder ihm ein Nullwert zugewiesen wird. MySQL füllt es automatisch mit dem aktuellen Datum und der aktuellen Uhrzeit des Systems.

Zusammengesetzte Typen

MySQL unterstützt auch zwei zusammengesetzte Datentypen, ENUM und SET, die die SQL-Spezifikation erweitern. Obwohl es sich bei diesen Typen technisch gesehen um Zeichenfolgentypen handelt, können sie als unterschiedliche Datentypen behandelt werden.

Mit einem ENUM-Typ kann nur ein Wert aus einer Sammlung abgerufen werden, während mit dem SET-Typ eine beliebige Anzahl von Werten aus einer Sammlung abgerufen werden kann.

ENUM-Typ

Der ENUM-Typ ähnelt ein wenig einer einzelnen Option, da nur ein Wert im Satz abgerufen werden kann. Leichter zu verstehen, wenn es um sich gegenseitig ausschließende Daten wie das menschliche Geschlecht geht. Felder vom Typ ENUM können einen Wert aus einer Sammlung abrufen oder einen Nullwert verwenden.

Eine andere Eingabe als diese führt dazu, dass MySQL eine leere Zeichenfolge in dieses Feld einfügt. Wenn außerdem die Groß-/Kleinschreibung des eingefügten Werts nicht mit der Groß-/Kleinschreibung der Werte in der Sammlung übereinstimmt, verwendet MySQL automatisch die Groß-/Kleinschreibung des eingefügten Werts, um ihn in einen Wert umzuwandeln, der mit der Groß-/Kleinschreibung der Sammlung übereinstimmt.

Der ENUM-Typ kann systemintern als Zahl gespeichert werden und wird ab 1 indiziert. Ein ENUM-Typ kann bis zu 65536 Elemente enthalten, von denen eines von MySQL zum Speichern von Fehlerinformationen reserviert ist.

Dieser Fehlerwert wird durch den Index 0 oder einen leeren String dargestellt.

MySQL betrachtet die in der ENUM-Typsammlung angezeigten Werte als zulässige Eingaben, und alle anderen Eingaben schlagen fehl. Dies zeigt, dass der Speicherort des fehlerhaften Datensatzes leicht gefunden werden kann, indem nach Zeilen gesucht wird, die eine leere Zeichenfolge oder einen entsprechenden numerischen Index von 0 enthalten.

SET-Typ

Der SET-Typ ist dem ENUM-Typ ähnlich, aber nicht identisch. Der SET-Typ kann beliebig viele Werte aus einer vordefinierten Sammlung annehmen. Und genau wie beim Typ ENUM führt jeder Versuch, einen nicht vordefinierten Wert in ein Feld vom Typ SET einzufügen, dazu, dass

MySQL eine leere Zeichenfolge einfügt. Wenn Sie einen Datensatz einfügen, der sowohl legale als auch illegale Elemente enthält, behält MySQL die legalen Elemente bei und entfernt die illegalen Elemente.

Ein SET-Typ kann bis zu 64 Elemente enthalten. In einem SET-Element wird der Wert als diskrete Folge von „Bits“ gespeichert, die das entsprechende Element darstellen. Bits sind eine einfache und effiziente Möglichkeit, geordnete Sammlungen von Elementen zu erstellen.

Und es entfernt auch doppelte Elemente, sodass es unmöglich ist, zwei identische Elemente im SET-Typ zu enthalten.

Wenn Sie illegale Datensätze aus einem Feld vom Typ SET finden möchten, suchen Sie einfach nach Zeilen, die leere Zeichenfolgen oder Binärwerte von 0 enthalten.

Durch ein allgemeines Verständnis des Zwecks, der physischen Speicherung, des Darstellungsbereichs usw. jedes Datentyps. Auf diese Weise können wir bei bestimmten Anwendungen den geeigneten Datentyp entsprechend den entsprechenden Merkmalen auswählen, sodass wir versuchen können,

kleinere Speicherkosten gegen höhere Daten auszutauschen, um die Anwendung zu erfüllen Leistung.

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die von MySQL unterstützten Datentypen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen