MySQL支持的数据类型
2018-02-08 23:17
309 查看
数值类型
整数类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
tinyint | 1 | 有符号-128 无符号0 | 有符号127 无符号255 |
smallint | 2 | 有符号−215−215 无符号0 | 有符号215−1215−1 无符号216−1216−1 |
mediumint | 3 | 有符号−223−223 无符号0 | 有符号223−1223−1 无符号224−1224−1 |
int、integer | 4 | 有符号−231−231 无符号0 | 有符号231−1231−1 无符号232−1232−1 |
bigint | 8 | 有符号−263−263 无符号0 | 有符号263−1263−1 无符号264−1264−1 |
int(11),默认宽度是
int(11)
zerofill关键字表示用“0”填充,也就是如果整数还没达到位宽,就用0填充前面的位宽,例如类型为
int(5)存储一个数字1,则在数据库是存储
00001,默认不启用,如要启用,可以在创建字段时声明,如下
CREATE TABLE t (id int(11) zerofill);
虽然指定了位宽,但是如果超过了位宽,数据库不会截断数据,而是存入正确的数据。
浮点数类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
float | 4 | ±1.175494351E−38±1.175494351E−38 | ±3.402823466E+38±3.402823466E+38 |
double | 8 | ±2.2250738585072014E−308±2.2250738585072014E−308 | ±1.7976931348623157E+38±1.7976931348623157E+38 |
定点数类型 | 字节 | 描述 |
---|---|---|
DEC(M, D) DECIMAL(M, D) | M + 2 | 最大取值范围与double相同,给定DECIMAL的有效取值范围由M和D决定 |
浮点数和定点数都可以用类型名称后加“(M, D)”的方式来表示,M称为精度,为有效数字,D为标度,为小数的位宽,
DECIMAL不指定精度时,默认的整数位为10,默认的小数位为0,所以要用它存小数必须指定精度。而浮点数默认会按照实际的精度(由实际的硬件和操作系统决定)。
位类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
BIT(M) | 1~8 | BIT(1) | BIT(64) |
SELECT命令将不会看到结果,可以用
bin()(显示为二进制格式)或者
hex()(显示为十六进制格式)函数进行读取。
日期时间类型
日期和时间类型 | 字节 | 最小值 | 最大值 |
---|---|---|---|
DATE | 4 | 1000-01-01 | 9999-12-31 |
DATETIME | 8 | 1000-01-01 00:00:00 | 9999-12-31 23:59:59 |
TIMESTAMP | 4 | 19700101080001 | 2038年的某个时刻 |
TIME | 3 | -838:59:59 | 838:59:59 |
YEAR | 1 | 1901 | 2155 |
DATE来表示
- 如果要用来表示年月日时分秒,通常用
DATETIME表示
- 如果只用来表示时分秒,通常用
TIME来表示
- 如果需要经常插入或者更新日期为当前系统时间,则通常使用
TIMESTAMP来表示TIMESTAMP值返回后显示为
yyyy-mn-DDHH:MM:SS格式的字符串,显示宽度固定为19个字符。
- 如果只是表示年份,可以用
YEAR来表示,它比
DATE占用更少的空间,YEAR有2位或4位格式的年。默认是4位格式。在4位格式中,允许的值是1901~2155和00000在2位格式中,允许的值是70~69,表示从1970~2069年,MYSQL以YYYY格式显示YEAR值(从5.5.27开始,2位格式的year已经不被支持)。
其中
TIMESTAMP有一个重要特点,就是和时区相关。当插入日期时,会先转换为本地时区后存放;而从数据库里面取出时,也同样需要将日期转换为本地时区后显示。而
DATETIME则不会。
字符串类型
字符串类型 | 字节 | 描述及存储需求 |
---|---|---|
CHAR(M) | M | M为0~255之间的整数 |
VARCHAR(M) | M为0~65535之间的整数,值的长度+1个字节 | |
TINYBLOB | 允许长度0~255字节,值的长度+1个字节 | |
BLOB | 允许长度0~65535字节,值的长度+2个字节 | |
MEDIUMBLOB | 允许长度0~167772150字节,值的长度+3个字节 | |
LONGBLOB | 允许长度0~4294967295字节,值的长度+4个字节 | |
TINYTIEX | 允许长度0~255字节,值的长度+2个字节 | |
TEXT | 允许长度0~65535字节,值的长度+2个字节 | |
MEDIUMTEXT | 允许长度0~16772150字节,值的长度+3个字节 | |
LONGTEXT | 允许长度0~4294967295字节,值的长度+4个字节 | |
VARBINARY(M) | 允许长度0~M个字节的变长字节字符串,值的长度+1个字节 | |
BINARY(M) | M | 允许长度0~M个字节的定长字节字符串 |
CHAR和VARCHAR类型
CHAR和
VARCHAR很类似,都用来保存 MySQL中较短的字符串。二者的主要区别在于存储方式的不同
CHAR列的长度固定为创建表时声明的长度,长度可以为从0~255的任何值
VARCHAR列中的值为可变长字符串,长度可以指定为0~255( MySQL5.0.3版本以前)或者65535( MySQL5.0.3版本以后)之间的值。
在检索的时候
CHAR列删除了尾部的空格
VARCHAR保留这些空格
BINARY和VARBINARY类型
BINARY和·
VARBINARY类似于
CHAR和·
VARCHAR,只不过存储的是二进制字符串。
例如存入字符’a’,会自动先在值后面填充
0x00再存储到数据库。
ENUM类型
它的值范围需要在创建表时通过枚举方式显式指定,对1~255个成员的枚举需要1个字节存储;对于255~65535个成员,需要2个字节存储。最多允许65535个成员。创建表,gender为枚举类型,成员只有“M”和“F”
CREATE TABLE t (gender ENUM('M', 'F'));
上列的
gender只会接收’M’和’F’或者NULL,ENUM类型忽略大小写。另外,ENUM类型只允许从值集合中选取单个值。
SET类型
SET和
ENUM类型非常类似,也是一个字符串对象,里面可以包含0~64个成员。
根据成员的不同,存储上也有所不同
1-8成员的集合,占1个字节
9-16成员的集合,占2个字节
17-24成员的集合,占3个字节
25-32成员的集合,占4个字节
33-64成员的集合,占8个字节
SET类型可以从允许值集合中选择任意1个或多个元素进行组合,所以对于输入的值只要是在允许值的组合范围内,都可以正确地注入到SET类型的列中。对于超出允许值范围的值将不允许注入到SET类型列中。
参考书籍:《深入浅出MySQL》
相关文章推荐
- 如何查看MySQL支持的数据类型?
- Mysql支持的数据类型(总结)
- MySQL所支持的数据类型与表字段约束类型的学习教程
- Mysql支持的数据类型
- MySQL支持的数据类型,数值类型
- MySQL支持的数据类型
- MYSQL中支持的数据类型及取值范围
- Mysql支持的数据类型
- MySQL支持的数据类型
- Mysql支持的数据类型(总结)
- Mysql支持的数据类型有哪些?
- Mysql支持的数据类型
- mysql支持的数据类型及其测试
- Mysql支持的数据类型
- MySQL - 3 - 支持的数据类型
- mysql基础:4、mysql支持的数据类型
- MYSQL支持的数据类型一览(4.0版本以上)
- MYSQL支持的数据类型——字符串类型
- Mysql支持的数据类型
- MYSQL中支持的数据类型及取值范围