mysql能支持多少数据类型_MySQL支持的数据类型

数值类型整数类型字节最小值最大值tinyint1有符号-128

无符号0有符号127

无符号255

smallint2有符号$-2^{15}$

无符号0有符号$2^{15} - 1$

无符号$2^{16} - 1$

mediumint3有符号$-2^{23}$

无符号0有符号$2^{23} - 1$

无符号$2^{24} - 1$

int、integer4有符号$-2^{31}$

无符号0有符号$2^{31} - 1$

无符号$2^{32} - 1$

bigint8有符号$-2^{63}$

无符号0有符号$2^{63} - 1$

无符号$2^{64} - 1$

整数类型可以在类型名称后面的小括号内指定宽度,例如int(11),默认宽度是int(11)

zerofill关键字表示用“0”填充,也就是如果整数还没达到位宽,就用0填充前面的位宽,例如类型为int(5)存储一个数字1,则在数据库是存储00001,默认不启用,如要启用,可以在创建字段时声明,如下1CREATE TABLE t (id int(11) zerofill);

虽然指定了位宽,但是如果超过了位宽,数据库不会截断数据,而是存入正确的数据。浮点数类型字节最小值最大值float4$pm1.175494351E-38$$pm3.402823466E+38$

double8$pm2.2250738585072014E-308$$pm1.7976931348623157E+38$定点数类型字节描述DEC(M, D)

DECIMAL(M, D)M + 2最大取值范围与double相同,给定DECIMAL的有效取值范围由M和D决定

以上的浮点数和定点数都可以表示小数,但定点数在MySQL内部以字符串的形式存放,比浮点数精确。

浮点数和定点数都可以用类型名称后加“(M, D)”的方式来表示,M称为精度,为有效数字,D为标度,为小数的位宽,DECIMAL不指定精度时,默认的整数位为10,默认的小数位为0,所以要用它存小数必须指定精度。而浮点数默认会按照实际的精度(由实际的硬件和操作系统决定)。位类型字节最小值最大值BIT(M)1~8BIT(1)BIT(64)

对于BIT(位)类型,用于存放位字段值,BIT(M)可以用来存放多位二进制数,M范围从1~64,如果不写则默认为1位。对于位字段,直接使用 SELECT命令将不会看到结果,可以用bin()(显示为二进制格式)或者hex()(显示为十六进制格式)函数进行读取。

日期时间类型日期和时间类型字节最小值最大值DATE41000-01-019999-12-31

DATETIME81000-01-01 00:00:009999-12-31 23:59:59

TIMESTAMP4197001010800012038年的某个时刻

TIME3-838:59:59838:59:59

YEAR119012155如果要用来表示年月日,通常用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)MM为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”1CREATE 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类型列中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值