本文更新于2019-06-19,使用MySQL 5.7,操作系统为Deepin 15.4。
数值类型
整数类型
type[(m)] [UNSIGNED] [ZEROFILL] [AUTO_INCREMENT]
| 类型 | 字节 | 最小值 | 最大值 |
|---|---|---|---|
| TINYINT | 1 | 有符号-128,无符号0 | 有符号127,无符号255 |
| SMALLINT | 2 | 有符号-32768,无符号0 | 有符号32767,无符号65535 |
| MEDIUMINT | 3 | 有符号-8388608,无符号0 | 有符号8388607,无符号16772150 |
| INT/INTERGER | 4 | 有符号-2147483648,无符号0 | 有符号2147483647,无符号4294967295 |
| BIGINT | 8 | 有符号-9223372036854775808,无符号0 | 有符号9223372036854775807,无符号18446744073709551615 |
m用于指定显示宽度。上面列出的属性为整数类型特有。ZEROFILL表示位数不够显示宽度时在前补0,且自动添加UNSIGNED属性。AUTO_INCREMENT从1开始,一个表只能有一个AUTO_INCREMENT的列,且必须为NOT NULL,并且必须为PRIMARY KEY或UNIQUE。AUTO_INCREMENT的列如插入0或NULL,则插入自动增长后的值。
定点数类型
定点数实际是以字符串形式存放。
DECIMAL[(m, d)]
| 类型 | 字节 | 最小精确度 | 最大精确度 |
|---|---|---|---|
| DECIMAL | m+2 | 由m、d决定,不能超过±2.2250738585072014E-308 | 由m、d决定,不能超过±1.7976931348623157E+308 |
m表示精度(有效位数),d表示标度(小数位数),默认为(10, 0)。
浮点数类型
type[(m, d)]
| 类型 | 字节 | 最小精确度 | 最大精确度 |
|---|---|---|---|
| FLOAT | 4 | ±1.175494351E-38 | ±3.402823466E+38 |
| DECIMAL | 8 | ±2.2250738585072014E-308 | ±1.7976931348623157E+308 |
其使用类似DECIMAL,但(m, d)是非标准用法,不建议使用。
位类型
BIT(m)
| 类型 | 字节 | 最少位数 | 最多位数 |
|---|---|---|---|
| BIT | 1~8 | 1 | 64 |
m取值从1至64,默认为1。插入时,会将数值转换成二进制,查询时直接SELECT会看不到结果,需使用BIN(value)或HEX(value)函数。
日期时间类型
| 类型 | 字节 | 最小值 | 最大值 |
|---|---|---|---|
| YEAR | 1 | 1901 | 2155 |
| TIME | 3 | -838:59:59 | 838:59:59 |
| DATE | 4 | 1000-01-01 | 9999-12-31 |
| TIMESTAMP | 4 | 1970-01-01 00:00:00 | 2038-01-19 03:14:07 |
| DATETIME | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
如需查看TIMESTAMP时间戳数值,则需对其进行"+0"数值运算。表中只能有一列TIMESTAMP默认值为CURRENT_TIMESTAMP,该列在插入或更新时都会自动设置为当前时间。TIMESTAMP与时区有关,DATETIME只与插入时的时区有关。
插入日期时间的格式有多种,下面以DATETIME为例:
- 'YYYY-MM-DD HH:MM:SS':允许不严格的间隔,即任何标点符都可当作日期间隔('-')或时间间隔(':')。若包含日期间隔,月和日可取一位;若包含时间间隔,时分秒均可取一位。
- 'YYYYMMDDHHMMSS'
- YYYYMMDDHHMMSS
对于DATETIME,时分秒可从后往前省略,省略值设置为0。
字符串类型
| 类型 | 字节 | 值最小长度 | 值最大长度 |
|---|---|---|---|
| CHAR(m) | m个字符字节数 | 0 | m字符(不能超过255字节) |
| VARCHAR(m) | 值字节数+1 | 0 | m字符(不能超过65535字节) |
| BINARY(m) | m | 0 | m字节(不能超过255) |
| VARBINARY(m) | 值字节数+1 | 0 | m字节(不能超过65535) |
| TIINYBLOB | 值字节数+1 | 0 | 255字节 |
| BLOB | 值字节数+2 | 0 | 65535字节 |
| MEDIUMBLOB | 值字节数+3 | 0 | 167772150字节 |
| LONGBLOB | 值字节数+4 | 0 | 4294967295字节 |
| TINYTEXT | 值字节数+1 | 0 | 255字节 |
| TEXT | 值字节数+2 | 0 | 65535字节 |
| MEDIUMTEXT | 值字节数+3 | 0 | 167772150字节 |
| LONGTEXT | 值字节数+4 | 0 | 4294967295字节 |
CHAR使用空格填充,BINARY使用