在本教學中,您將瞭解MySQL數據類型以及如何在MySQL中設計資料庫時有效地使用它們。
資料庫表包含具有特定數據類型(如數字或字串)的多個列。 MySQL提供更多的數據類型,而不僅僅是數字或字串。 MySQL中的每種數據類型都可以通過以下特徵來確定:
- 它用來表示數據值。
- 佔用的空間以及值是固定長度還是可變長度。
- 數據類型的值可以被索引。
- MySQL如何比較特定數據類型的值。
數據類型 | 指定值和範圍 |
---|---|
char |
String(0~255) |
varchar |
String(0~255) |
tinytext |
String(0~255) |
text |
String(0~65536) |
blob |
String(0~65536) |
mediumtext |
String(0~16777215) |
mediumblob |
String(0~16777215) |
longblob |
String(0~4294967295) |
longtext |
String(0~4294967295) |
tinyint |
Integer(-128~127) |
smallint |
Integer(-32768~32767) |
mediumint |
Integer(-8388608~8388607) |
int |
Integer(-214847668~214847667) |
bigint |
Integer(-9223372036854775808~9223372036854775807) |
float |
decimal(精確到23位小數) |
double |
decimal(24~54位小數) |
decimal |
將double 轉儲為字串形式 |
date |
YYYY-MM-DD |
datetime |
YYYY-MM-DD HH:MM:SS |
timestamp |
YYYYMMDDHHMMSS |
time |
HH:MM:SS |
enum |
選項值之一 |
set |
選項值子集 |
boolean |
tinyint(1) |
MySQL數值數據類型
在MySQL中,您可以找到所有SQL標準數字類型,包括精確數字數據類型和近似數字數據類型,包括整數,定點和浮點數。 此外,MySQL還具有用於存儲位值的BIT數據類型。數字類型可以是有符號或無符號,但BIT
類型除外。
下表顯示了MySQL中數字類型的總結:
數字類型 | 描述 |
---|---|
TINYINT | 一個很小的整數 |
SMALLINT | 一個小的整數 |
MEDIUMINT | 一個中等大小的整數 |
INT | 一個標準整數 |
BIGINT | 一個大整數 |
DECIMAL | 定點數 |
FLOAT |
單精確度浮點數 |
DOUBLE |
雙精度浮點數 |
BIT | 一個位元組字段 |
MySQL布爾數據類型
MySQL沒有內置的 BOOLEAN 或 BOOL 數據類型。所以要表示布爾值,MySQL使用最小的整數類型,也就是TINYINT(1)
。 換句話說,BOOLEAN
和BOOL
是TINYINT(1)
的同義詞。
MySQL字串數據類型
在MySQL中,字串可以容納從純文本到二進位數據(如圖像或檔)的任何內容。可以通過使用LIKE運算符,正則表達式和全文搜索,根據模式匹配來比較和搜索字串。
下表顯示了MySQL中的字串數據類型:
字串類型 | 描述 |
---|---|
char | 固定長度的非二進位(字元)字串 |
varchar | 可變長度的非二進位字串 |
BINARY |
一個固定長度的二進位字串 |
VARBINARY |
一個可變長度的二進位字串 |
TINYBLOB |
一個非常小的BLOB(二進位大對象) |
BLOB |
一個小的BLOB(二進位大對象) |
MEDIUMBLOB |
一個中等大小的BLOB(二進位大對象) |
LONGBLOB |
一個大的BLOB(二進位大對象) |
TINYTEXT | 一個非常小的非二進位字串 |
TEXT | 一個小的非二進位字串 |
MEDIUMTEXT | 一個中等大小的非二進位字串 |
LONGTEXT | 一個很大的非二進位字串 |
ENUM | 枚舉; 每個列值可以被分配一個枚舉成員 |
SET |
集合; 每個列值可以分配零個或多個SET 成員 |
MySQL日期和時間數據類型
MySQL提供日期和時間的類型以及日期和時間的組合。 此外,MySQL還支持時間戳數據類型,用於跟蹤表的一行中的更改。如果只想存儲沒有日期和月份的年份數據,則可以使用YEAR
數據類型。
下表說明了MySQL日期和時間數據類型:
字串類型 | 描述 |
---|---|
DATE | YYYY-MM-DD 格式的日期值 |
TIME | hh:mm:ss 格式的時間值 |
DATETIME | YYYY-MM-DD hh:mm:ss 格式的日期和時間值 |
TIMESTAMP | YYYY-MM-DD hh:mm:ss 格式的時間戳記值 |
YEAR |
YYYY 或YY 格式的年值 |
MySQL空間數據類型
MySQL支持許多包含各種幾何和地理值的空間數據類型,如下表所示:
字串類型 | 描述 |
---|---|
GEOMETRY | 任何類型的空間值 |
POINT | 一個點(一對X-Y座標) |
LINESTRING | 曲線(一個或多個POINT 值) |
POLYGON | 多邊形 |
GEOMETRYCOLLECTION | GEOMETRY 值的集合 |
MULTILINESTRING | LINESTRING 值的集合 |
MULTIPOINT | POINT 值的集合 |
MULTIPOLYGON | POLYGON 值的集合 |
JSON數據類型
MySQL 5.7.8
版本支持原生JSON數據類型,可以更有效地存儲和管理JSON文檔。 本機JSON數據類型提供JSON文檔的自動驗證和最佳存儲格式。
在本教學中,您學習了各種MySQL數據類型,可幫助您確定在創建表時應使用哪些數據類型。