Heim > Datenbank > MySQL-Tutorial > Hauptteil

Was sind die Datentypen von MySQL? Detaillierte Erläuterung der MySQL-Datentypen

php是最好的语言
Freigeben: 2018-08-04 17:42:11
Original
3246 Leute haben es durchsucht

Dieser Artikel listet die Datentypliste (Liste) von MySQL auf, die hauptsächlich fünf Hauptkategorien umfasst: Ganzzahltyp, Gleitkommatyp, Zeichenfolgentyp, Datumstyp und andere Datentypen Es gibt auch Längen und Bereiche von MySQL-Datentypen mit Nutzungsempfehlungen und Grundprinzipien für die Auswahl von Datentypen.

1. MySQL-Datentypen

Umfassen hauptsächlich die folgenden fünf Kategorien:

Integer-Typen: BIT, BOOL, TINY INT, SMALL INT, MEDIUM INT, INT, BIG INT

Gleitkommatyp: FLOAT, DOUBLE, DECIMAL

Stringtyp: CHAR, VARCHAR, TINY TEXT, TEXT, MEDIUM TEXT, LONGTEXT, TINY BLOB, BLOB, MEDIUM BLOB, LONG BLOB

Datumstypen: Date, DateTime, TimeStamp, Time, Year

Andere Datentypen: BINARY, VARBINARY, ENUM, SET, Geometry, Point, MultiPoint, LineString, MultiLineString, Polygon, GeometryCollection usw.

1. Wenn unsigned zum Wertebereich des Integer-Typs

MySQL数据类型 含义(有符号)
tinyint(m) 1个字节  范围(-128~127)
smallint(m) 2个字节  范围(-32768~32767)
mediumint(m) 3个字节  范围(-8388608~8388607)
int(m) 4个字节  范围(-2147483648~2147483647)
bigint(m) 8个字节  范围(+-9.22*10的18次方)

hinzugefügt wird, wird der Maximalwert verdoppelt. Beispielsweise ist der Wertebereich von tinyint unsigned (0~256). ).

Das m in int(m) stellt die Anzeigebreite im SELECT-Abfrageergebnissatz dar. Es hat keinen Einfluss auf den tatsächlichen Wertebereich oder die Anzeigebreite. Ich weiß nicht, wozu dieses m dient.

2. Gleitkommatyp (Float und Double)

MySQL数据类型 含义
float(m,d) 单精度浮点型    8位精度(4字节)     m总个数,d小数位
double(m,d) 双精度浮点型    16位精度(8字节)    m总个数,d小数位

Angenommen, ein Feld ist als Float(6,3) definiert. Wenn eine Zahl 123,45678 eingefügt wird, speichert die tatsächliche Datenbank 123,457 , aber die Gesamtzahl unterliegt der tatsächlichen Zahl, also 6 Ziffern. Der ganzzahlige Teil hat eine maximale Länge von 3 Ziffern. Wenn die Zahl 12.1234 eingefügt wird, wird 12.1200 gespeichert Punkttypen werden in der Datenbank als Näherungswerte gespeichert, während Festkommatypen genaue Werte in der Datenbank speichern.

decimal(m,d) Parameter m<65 ist die Gesamtzahl, d<30 und d

4. String (char, varchar, _text)

char und varchar:

1.char(n) Wenn die Anzahl der gespeicherten Zeichen weniger als beträgt n, Fügen Sie dann Leerzeichen hinzu und entfernen Sie die Leerzeichen bei der Abfrage. Daher dürfen am Ende von Zeichenfolgen, die im Typ char gespeichert sind, keine Leerzeichen stehen, und varchar ist nicht darauf beschränkt.
MySQL数据类型含义
char(n)固定长度,最多255个字符
varchar(n)固定长度,最多65535个字符
tinytext可变长度,最多255个字符
text可变长度,最多65535个字符
mediumtext可变长度,最多2的24次方-1个字符
longtext可变长度,最多2的32次方-1个字符

2.char(n) feste Länge, char(4) belegt 4 Bytes, egal wie viele Zeichen gespeichert werden, varchar ist die tatsächliche Anzahl der gespeicherten Zeichen + 1 Byte (n< ;=255) oder 2 Bytes (n>255),

Varchar(4) belegt also beim Speichern von 3 Zeichen 4 Bytes.

3.Die Geschwindigkeit beim Abrufen von Zeichenfolgen vom Typ Char ist schneller als vom Typ Varchar.

Varchar und Text:

1. Varchar kann n angeben, Text nicht. Der interne Speicher von Varchar ist die tatsächliche Anzahl der gespeicherten Zeichen + 1 Byte (n<=255) oder 2 Bytes (n>). 255), Text ist die tatsächliche Anzahl der Zeichen + 2 Zeichen


Abschnitte.

2. Der Texttyp darf keinen Standardwert haben.

3.varchar kann direkt einen Index erstellen, und der Text muss die erste Anzahl von Zeichen angeben, um einen Index zu erstellen. Die Abfragegeschwindigkeit von Varchar ist schneller als die von Text. Beim Erstellen von Indizes scheint der Textindex nicht zu funktionieren.

5. Binärdaten (_Blob)

1. _BLOB und _text werden im Textmodus gespeichert, während _Blob im Binärmodus gespeichert wird Modus. Groß- und Kleinschreibung wird nicht beachtet.

2. Die in _BLOB gespeicherten Daten können nur als Ganzes ausgelesen werden.

3._TEXT kann den Zeichensatz angeben, _BLO muss den Zeichensatz nicht angeben.

6. Datums- und Uhrzeittyp

Wenn Sie ein Feld als Zeitstempel definieren, werden die Zeitdaten in diesem Feld automatisch aktualisiert, wenn andere Felder geändert werden, sodass dieses Datentypfeld die letzte Änderungszeit dieses Datensatzes speichern kann.

Attribute von Datentypen

MySQL关键字 含义
NULL 数据列可包含NULL值
NOT NULL 数据列不允许包含NULL值
DEFAULT 默认值
PRIMARY KEY 主键
AUTO_INCREMENT 自动递增,适用于整数类型
UNSIGNED 无符号
CHARACTER SET name 指定一个字符集

2. Länge und Bereich von MYSQL-Datentypen

Liste der Datentypen und Bytelängen:

< /tr> < tr>< td>TinyBlob< /td>< td>Bis zu 65535 verschiedene Aufzählungswerte< td>Bis zu 64 verschiedene Werte< /tr>
Datentyp Bytelänge Bereich oder Verwendung
Bit 1 Unsigned [0,255], signiert [-128,127], Tianyuan Blog Hinweis: Sowohl BIT als auch BOOL Boolean-Typen belegen 1 Byte td>
TinyInt 1 Integer [0,255]
SmallInt 2 Unsigned [0,65535], signiert [-32768,32767]
MediumInt td> 3 Unsigned [0,2^24-1], signiert [-2^23,2^23-1]]
Int 4 Unsigned [0,2^32-1], signiert [-2^31,2^31-1]
BigInt 8 Unsigniert [0,2^64-1], signiert [-2^63,2^63 - 1]
Float(M,D) 4 Gleitkommazahl mit einfacher Genauigkeit. Tianyuan Blog erinnert daran, dass D hier Präzision ist. Wenn D<=24, ist es der Standard-FLOAT. Wenn D>24, wird es automatisch in den Typ DOUBLE konvertiert.
Double(M,D) 8 Gleitkomma mit doppelter Genauigkeit.
Dezimal(M,D) M+1 oder M+2 Ungepackte Gleitkommazahl, Verwendung ähnlich FLOAT und DOUBLE, Tianyuan Blog erinnert Sie daran, dass bei Verwendung des Decimal-Datentyps in ASP das direkt aus der Datenbank gelesene Decimal vor dem Betrieb möglicherweise in einen Float- oder Double-Typ konvertiert werden muss.
Datum 3 Wird im Format JJJJ-MM-TT angezeigt, zum Beispiel: 19.07.2009
Datum Uhrzeit 8 Wird im Format JJJJ-MM-TT HH:MM:SS angezeigt, zum Beispiel: 2009 -07-19 11:22:30
TimeStamp 4 Anzeige im Format JJJJ-MM-TT, Beispiel: 2009-07 -19
Zeit 3 wird im Format HH:MM:SS angezeigt. Beispiel: 11:22:30
Jahr 1 wird im Format JJJJ angezeigt. Beispiel: 2009
Char(M) M
数据类型 字节长度 范围或用法
Bit 1 无符号[0,255],有符号[-128,127],天缘博客备注:BIT和BOOL布尔型都占用1字节
TinyInt 1 整数[0,255]
SmallInt 2 无符号[0,65535],有符号[-32768,32767]
MediumInt 3 无符号[0,2^24-1],有符号[-2^23,2^23-1]]
Int 4 无符号[0,2^32-1],有符号[-2^31,2^31-1]
BigInt 8 无符号[0,2^64-1],有符号[-2^63 ,2^63 -1]
Float(M,D) 4 单精度浮点数。天缘博客提醒这里的D是精度,如果D<=24则为默认的FLOAT,如果D>24则会自动被转换为DOUBLE型。
Double(M,D) 8  双精度浮点。
Decimal(M,D) M+1或M+2 未打包的浮点数,用法类似于FLOAT和DOUBLE,天缘博客提醒您如果在ASP中使用到Decimal数据类型,直接从数据库读出来的Decimal可能需要先转换成Float或Double类型后再进行运算。
Date 3 以YYYY-MM-DD的格式显示,比如:2009-07-19
Date Time 8 以YYYY-MM-DD HH:MM:SS的格式显示,比如:2009-07-19 11:22:30
TimeStamp 4 以YYYY-MM-DD的格式显示,比如:2009-07-19
Time 3 以HH:MM:SS的格式显示。比如:11:22:30
Year 1 以YYYY的格式显示。比如:2009
Char(M) M

定长字符串。

VarChar(M) M 变长字符串,要求M<=255
Binary(M)M类似Char的二进制存储,特点是插入定长不足补0
VarBinary(M)M类似VarChar的变长二进制存储,特点是定长不补0
Tiny TextMax:255大小写不敏感
TextMax:64K大小写不敏感
Medium TextMax:16M大小写不敏感
Long TextMax:4G大小写不敏感
TinyBlobMax:255大小写敏感
BlobMax:64K大小写敏感
MediumBlobMax:16M大小写敏感
LongBlobMax:4G大小写敏感
Enum1或2最大可达65535个不同的枚举值
Set可达8最大可达64个不同的值
Geometry
Point
LineString
Polygon
MultiPoint
MultiLineString
MultiPolygon
GeometryCollection
String fester Länge. <🎜>
VarChar(M)MString mit variabler Länge, erfordert M<=255
Binary(M)MBinärer Speicher ähnlich wie Char, gekennzeichnet durch das Einfügen von Lücken fester Länge und Auffüllen von 0
VarBinary(M)MBinärspeicher mit variabler Länge ähnlich wie VarChar, gekennzeichnet durch feste Länge ohne Auffüllung 0
Winziger TextMax:255Groß- und Kleinschreibung wird nicht beachtet
TextMax :64KGroß-/Kleinschreibung wird nicht beachtet
Mittelgroßer TextMax:16MGroß-/Kleinschreibung wird nicht beachtetGroß-/Kleinschreibung wird beachtet< /td>
Langer TextMax:4GGroß- und Kleinschreibung wird ignoriert
Max:255Groß-/Kleinschreibung beachten
BlobMax:64K Groß-/Kleinschreibung beachten
MediumBlobMax:16MGroß-/Kleinschreibung beachten
LongBlobMax:4GGroß-/Kleinschreibung beachten
Enum 1 oder 2
SetBis zu 8
Geometrie
Punkt
LineString
Polygon
MultiPoint
MultiLineString
MultiPolygon
GeometryCollection

3. Verwendungsvorschläge

1. Bei der Angabe des Datentyps wird im Allgemeinen das Prinzip der Kleinheit übernommen. Wenn Sie beispielsweise TINY INT verwenden können, ist es am besten, INT zu verwenden Sie können den FLOAT-Typ verwenden. Es ist am besten, den DOUBLE-Typ nicht zu verwenden. Dadurch wird die Betriebseffizienz von MYSQL erheblich verbessert, insbesondere unter Testbedingungen mit großem Datenvolumen.

2. Es besteht keine Notwendigkeit, die Datentabelle zu komplex zu gestalten. Die Unterscheidung zwischen Funktionsmodulen ist möglicherweise für die spätere Wartung praktischer.

3 Die Benennung von Feldern ist ebenfalls eine Fähigkeit

4. Bevor Sie die Datentabellenstruktur entwerfen, stellen Sie sich bitte vor, dass das Ergebnis vernünftiger und effizienter ist

5 Die Datenbank muss sein Es ist ein Kompromiss zwischen Effizienz und Skalierbarkeit, und es ist unangemessen, eine der beiden Seiten zu bevorzugen

Grundprinzipien für die Auswahl von Datentypen

Voraussetzung: Verwenden Sie eine geeignete Speicher-Engine.
Auswahlprinzip: Bestimmen Sie, wie der geeignete Datentyp basierend auf der ausgewählten Speicher-Engine ausgewählt wird.
Die folgenden Auswahlmethoden werden nach Speicher-Engine klassifiziert:

  • MyISAM-Datenspeicher-Engine und Datenspalten: MyISAM-Datentabelle, am besten verwenden Sie Datenspalten mit fester Länge (CHAR). anstelle einer variablen Datenspalte der Länge (VARCHAR).

  • MEMORY-Speicher-Engine und Datenspalten: MEMORY-Datentabellen verwenden derzeit Datenzeilenspeicher mit fester Länge, daher spielt es keine Rolle, ob Sie CHAR- oder VARCHAR-Spalten verwenden. Beide werden als CHAR-Typen behandelt.

  • InnoDB-Speicher-Engine und Datenspalten: Es wird empfohlen, den Typ VARCHAR zu verwenden.

Für InnoDB-Datentabellen unterscheidet das interne Zeilenspeicherformat nicht zwischen Spalten fester Länge und Spalten variabler Länge (alle Datenzeilen verwenden Kopfzeiger, die auf Datenspaltenwerte zeigen), also in Im Wesentlichen ist die Verwendung von CHAR-Spalten fester Länge nicht unbedingt einfacher als die Verwendung von VARCHAR-Spalten variabler Länge. Daher ist der Hauptleistungsfaktor der von den Datenzeilen insgesamt genutzte Speicher. Da CHAR im Durchschnitt mehr Platz einnimmt als VARCHAR, ist es besser, VARCHAR zu verwenden, um den Gesamtspeicher und die Festplatten-E/A der zu verarbeitenden Datenzeilen zu minimieren.
Sprechen wir über Datenspalten fester Länge und Datenspalten variabler Länge.

char und varchar

CHAR- und VARCHAR-Typen sind ähnlich, werden jedoch unterschiedlich gespeichert und abgerufen. Sie unterscheiden sich auch hinsichtlich ihrer maximalen Länge und ob nachgestellte Leerzeichen erhalten bleiben. Während der Speicherung oder des Abrufs wird keine Fallkonvertierung durchgeführt.
Die folgende Tabelle zeigt die Ergebnisse nach dem Speichern verschiedener Zeichenfolgewerte in den Spalten CHAR(4) und VARCHAR(4) und veranschaulicht den Unterschied zwischen CHAR und VARCHAR:

CHAR(4)存储需求VARCHAR(4)存储需求
''' '4个字节''1个字节
'ab''ab '4个字节'ab '3个字节
'abcd''abcd'4个字节'abcd'5个字节
'abcdefgh''abcd'4个字节'abcd'5个字节

Bitte beachten Sie, dass der Wert in der letzten Zeile in der obigen Tabelle gilt nur, wenn keinen strikten Modus verwendet ; wenn MySQL im strikten Modus ausgeführt wird, werden Werte, die die Spaltenlänge überschreiten, nicht gespeichert und Fehler werden auftreten.
Die aus den Spalten CHAR(4) und VARCHAR(4) abgerufenen Werte sind nicht immer gleich, da nachgestellte Leerzeichen beim Abrufen aus der Spalte CHAR entfernt werden. Das folgende Beispiel veranschaulicht den Unterschied:
mysql> CREATE TABLE vc (v VARCHAR(4), c CHAR(4));
Abfrage OK, 0 Zeilen betroffen (0,02 Sek.)
MySQL> VALUES('ab', 'ab');
Abfrage OK, 1 Zeile (0,00 Sek.)
mysql>
+----------------+----------------+
|. |. CONCAT(c, '+') |
+----------------+----------------+
|. ab + |. ab+ |
+----------------+----------------+
1 Zeile im Satz (0,00 Sek.)

Verwandte Artikel:

Detaillierte Erklärung der MYSQL-Datentypen

Detaillierte Erklärung der korrekten Verwendung von Zahlen Arten von MySQL-Datentypen

Ähnliche Videos:

Datenbank-MySQL-Video-Tutorial

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage