一、數(shù)值類型
以下數(shù)據(jù)類型為 MySQL 5.0 后的版本所具有。
1.整數(shù)類型
| 整數(shù)類型 | 字節(jié) |
|---|---|
| TINYINT | 1 |
| SMALLINT | 2 |
| MEDIUMINT | 3 |
| INT、INTEGER | 4 |
| BIGINT | 8 |
MySQL 支持在類型名稱后指定顯示寬度,如 INT(3) 表示當(dāng)寬度小于3位時(shí)在數(shù)字前填滿。屬性 ZEROFILL 表示用 0 填滿。
當(dāng)插入寬度大于指定寬度,對(duì)插入數(shù)據(jù)沒有任何影響。
屬性 UNSIGNED 表示無符號(hào)
屬性 AUTO_INCREMENT 表示自增,只能用于整數(shù)類型。并且使用該屬性的列,必須定義為 NOT NULL,并且是 PRIMARY KEY 或者 UNIQUE。
CREATE TABLE tb_name (ID INT AUTO_INCREMENT NOT NULL PRIMARY KEY);
CREATE TABLE tb_name (ID INT AUTO_INCREMENT NOT NULL, PRIMARY KEY(ID));
CREATE TABLE tb_name (ID INT AUTO_INCREMENT NOT NULL UNIQUE);
CREATE TABLE tb_name (ID INT AUTO_INCREMENT NOT NULL, UNIQUE(ID));
2.浮點(diǎn)數(shù)類型
| 浮點(diǎn)數(shù)類型 | 字節(jié) |
|---|---|
| FLOAT | 4 |
| DOUBLE | 8 |
浮點(diǎn)數(shù)后指定 (M,D) 不是標(biāo)準(zhǔn)用法。
浮點(diǎn)數(shù)類型后可以指定 (M,D)。M 是精度,整數(shù)位+小數(shù)位。 D 是標(biāo)度,小數(shù)位。
如果指定精度和標(biāo)度,會(huì)自動(dòng)四舍五入后的結(jié)果插入。
如果不指定精度時(shí),會(huì)按照實(shí)際的精度顯示,由實(shí)際的硬件和操作系統(tǒng)決定。
3.定點(diǎn)數(shù)類型
| 定點(diǎn)數(shù)類型 | 字節(jié) |
|---|---|
| DEC(M,D)、DECIMAL(M,D) | M+2 |
如果指定精度和標(biāo)度,超出了精度和標(biāo)度值系統(tǒng)會(huì)報(bào)錯(cuò)。
如果沒有指定精度和標(biāo)度,會(huì)按照默認(rèn) DECIMAL(10,0) 來操作。
4.位類型
| 位類型 | 字節(jié) |
|---|---|
| BIT(M) | 1~8 |
位類型直接用 SELECT 命令無法直接顯示,可以使用 bin() 或者 hex() 函數(shù)進(jìn)行讀取。
超出位類型的位數(shù),將報(bào)錯(cuò)無法插入。
二、日期時(shí)間類型
| 日期和時(shí)間類型 | 字節(jié) |
|---|---|
| DATE | 4 |
| DATETIME | 8 |
| TIMESTAMP | 4 |
| TIME | 3 |
| YEAR | 1 |
三、字符串類型
| 字符串類型 | 字節(jié) |
|---|---|
| CHAR(M) | M |
| VARCHAR(M) | M+1 |
| TINYBLOB | 長度+1 |
| BLOB | 長度+2 |
| MEDIUMBLOL | 長度+3 |
| LONGBLOB | 長度+4 |
| TINYTEXT | 長度+1 |
| TEXT | 長度+2 |
| MEDIUMTEXT | 長度+3 |
| LONGTEXT | 長度+4 |
| VARBINARY(M) | 長度+1 |
| BINARY(M) | M |
1.CHAR 和 VARCHAR
CHAR 和 VARCHAR 都用于存儲(chǔ)比較短的字符串。
不同點(diǎn):
CHAR 長度固定, VARCHAR 為可變長度字符串。
CHAR 刪除插入字符串尾部的空格, VARCHAR 保留這些空格。
2.BINARY 和 VARBINARY
BINARY 和 VARBINARY 用于存儲(chǔ)二進(jìn)制字符串。
- 當(dāng)插入字符串沒有達(dá)到定義長度 M 時(shí),會(huì)在值的最后填充“0x00”以達(dá)到指定字段的長度。
3.ENUM
ENUM 成為美劇類型。
- 1~255個(gè)成員,占1個(gè)字節(jié)
- 256~65535個(gè)成員,占2個(gè)字節(jié)
創(chuàng)建 gender 字段為枚舉類型,成員為 M 和 F:
CREATE TABLE tb_name (gender ENUM('M','F'));
枚舉類型是忽略大小寫的
如果插入的值不在枚舉范圍內(nèi),不會(huì)報(bào)錯(cuò),自動(dòng)插入枚舉的第一個(gè)值。
4.SET
SET 可以包含 0~64 個(gè)成員,成員個(gè)數(shù)不同,存儲(chǔ)空間不同。
- 1~8個(gè)成員,占1個(gè)字節(jié)
- 9~16個(gè)成員,占2個(gè)字節(jié)
- 17~24個(gè)成員,占3個(gè)字節(jié)
- 25~32個(gè)成員,占4個(gè)字節(jié)
- 33~64個(gè)成員,占8個(gè)字節(jié)
創(chuàng)建 col 字段為集合類型,成員為 a b c d
CREATE TABLE tb_name (col SET('a','b','c','d'));
插入元素
INSERT INTO tb_name VALUES('a,b'),('a,c');