MySQL 教程
/ 數(shù)據(jù)類型
數(shù)據(jù)類型
列的數(shù)據(jù)類型定義了該列可以保存的值:整數(shù)、字符、貨幣、日期和時間、二進(jìn)制等。
MySQL 數(shù)據(jù)類型(8.0 版)
數(shù)據(jù)庫表中的每一列都必須有名稱和數(shù)據(jù)類型。
SQL 開發(fā)人員必須在創(chuàng)建表時決定將在每列中存儲的數(shù)據(jù)類型。 數(shù)據(jù)類型是 SQL 了解每列中預(yù)期的數(shù)據(jù)類型的指南,它還標(biāo)識 SQL 將如何與存儲的數(shù)據(jù)交互。
在 MySQL 中有三種主要的數(shù)據(jù)類型:字符串、數(shù)字、日期和時間。
字符串?dāng)?shù)據(jù)類型
數(shù)據(jù)類型 | 描述 |
---|---|
CHAR(size) | 一個固定長度的字符串(可以包含字母、數(shù)字和特殊字符)。 size 參數(shù)指定以字符為單位的列長度 - 可以從 0 到 255。默認(rèn)為 1 |
VARCHAR(size) | 可變長度字符串(可以包含字母、數(shù)字和特殊字符)。 size 參數(shù)指定字符的最大列長度 - 可以從 0 到 65535 |
BINARY(size) | 等于 CHAR(),但存儲二進(jìn)制字節(jié)字符串。 size 參數(shù)以字節(jié)為單位指定列長度。默認(rèn)為 1 |
VARBINARY(size) | 等于 VARCHAR(),但存儲二進(jìn)制字節(jié)字符串。 size 參數(shù)指定最大列長度(以字節(jié)為單位)。 |
TINYBLOB | 對于 BLOB(二進(jìn)制大對象)。最大長度:255 字節(jié) |
TINYTEXT | 保存一個最大長度為 255 個字符的字符串 |
TEXT(size) | 保存一個最大長度為 65,535 字節(jié)的字符串 |
BLOB(size) | 對于 BLOB(二進(jìn)制大對象)。最多可容納 65,535 字節(jié)的數(shù)據(jù) |
MEDIUMTEXT | 保存最大長度為 16,777,215 個字符的字符串 |
MEDIUMBLOB | 對于 BLOB(二進(jìn)制大對象)。最多可容納 16,777,215 字節(jié)的數(shù)據(jù) |
LONGTEXT | 保存最大長度為 4,294,967,295 個字符的字符串 |
LONGBLOB | 對于 BLOB(二進(jìn)制大對象)。最多可容納 4,294,967,295 字節(jié)的數(shù)據(jù) |
ENUM(val1, val2, val3, ...) | 只能有一個值的字符串對象,從可能值列表中選擇。您最多可以在一個 ENUM 列表中列出 65535 個值。如果插入的值不在列表中,則將插入一個空白值。 這些值按您輸入的順序排序 |
SET(val1, val2, val3, ...) | 可以有 0 個或多個值的字符串對象,從可能的值列表中選擇。一個 SET 列表中最多可以列出 64 個值 |
數(shù)值數(shù)據(jù)類型
數(shù)據(jù)類型 | 描述 |
---|---|
BIT(size) | 位值類型。每個值的位數(shù)在 size 中指定。 size 參數(shù)可以保存從 1 到 64 的值。size 的默認(rèn)值為 1。 |
TINYINT(size) | 一個非常小的整數(shù)。有符號范圍是-128 到 127。無符號范圍是 0 到 255。size 參數(shù)指定最大顯示寬度(即 255) |
BOOL | 零被認(rèn)為是false,非零值被認(rèn)為是true。 |
BOOLEAN | 等同 BOOL |
SMALLINT(size) | 一個小整數(shù)。有符號范圍是 -32768 到 32767。無符號范圍是 0 到 65535。size 參數(shù)指定最大顯示寬度(即 255) |
MEDIUMINT(size) | 一個中等整數(shù)。有符號范圍是 -8388608 到 8388607。無符號范圍是 0 到 16777215。size 參數(shù)指定最大顯示寬度(即 255) |
INT(size) | 一個中等整數(shù)。有符號范圍是 -2147483648 到 2147483647。無符號范圍是 0 到 4294967295。size 參數(shù)指定最大顯示寬度(即 255) |
INTEGER(size) | 等于 INT(size) |
BIGINT(size) | 一個大整數(shù)。有符號范圍是-9223372036854775808到9223372036854775807。無符號范圍是0到18446744073709551615。size參數(shù)指定最大顯示寬度(即255) |
FLOAT(size, d) | 一個浮點(diǎn)數(shù)。 size 中指定了總位數(shù)。小數(shù)點(diǎn)后的位數(shù)在 d 參數(shù)中指定。此語法在 MySQL 8.0.17 中已棄用,并將在未來的 MySQL 版本中刪除 |
FLOAT(p) | 一個浮點(diǎn)數(shù)。 MySQL 使用 p 值來確定是使用 FLOAT 還是 DOUBLE 作為結(jié)果數(shù)據(jù)類型。如果 p 是從 0 到 24,則數(shù)據(jù)類型變?yōu)?FLOAT()。如果 p 是從 25 到 53,則數(shù)據(jù)類型變?yōu)?DOUBLE() |
DOUBLE(size, d) | 一個正常大小的浮點(diǎn)數(shù)。 size 中指定了總位數(shù)。 d參數(shù)中指定小數(shù)點(diǎn)后的位數(shù) |
雙精度(size, d) | |
DECIMAL(size, d) | 一個精確的定點(diǎn)數(shù)。 size 中指定了總位數(shù)。小數(shù)點(diǎn)后的位數(shù)在 d 參數(shù)中指定。 size 的最大數(shù)為 65。d 的最大數(shù)為 30。size 的默認(rèn)值為 10。< em>d 為 0。 |
DEC(size, d) | 等于 DECIMAL(size,d) |
注意:所有數(shù)字?jǐn)?shù)據(jù)類型都可能有一個額外的選項:UNSIGNED 或 ZEROFILL。如果添加 UNSIGNED 選項,MySQL 不允許該列使用負(fù)值。如果添加 ZEROFILL 選項,MySQL 還會自動將 UNSIGNED 屬性添加到列中。
日期和時間數(shù)據(jù)類型
數(shù)據(jù)類型 | 描述 |
---|---|
DATE | 日期。格式:YYYY-MM-DD。支持的范圍是從 '1000-01-01' 到 '9999-12-31' |
DATETIME(fsp) | 日期和時間組合。格式:YYYY-MM-DD hh:mm:ss。支持的范圍是從"1000-01-01 00:00:00"到"9999-12-31 23:59:59"。 在列定義中添加 DEFAULT 和 ON UPDATE 以獲得自動初始化并更新到當(dāng)前日期和時間 |
TIMESTAMP(fsp) | 時間戳。 TIMESTAMP 值存儲為自 Unix 紀(jì)元 ('1970-01-01 00:00:00' UTC) 以來的秒數(shù)。格式:YYYY-MM-DD hh:mm:ss。支持的范圍是從 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC。 可以使用列定義中的 DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP 指定自動初始化和更新到當(dāng)前日期和時間 |
TIME(fsp) | 一次。格式:hh:mm:ss。支持的范圍是從 '-838:59:59' 到 '838:59:59' |
YEAR | 四位數(shù)格式的年份。允許采用四位數(shù)格式的值:1901 到 2155 和 0000。 MySQL 8.0 不支持兩位數(shù)格式的年份。 |