MySQL--数据类型
视频链接
一.整型:
tinyint:一个字节由于增加了负数,实际范围为:-128~127
smallint:系统采用两个字节来保存的整型,-2^15-2^15-1
meiumint:系统采用三个字节来保存的整型
int:系统采用四个字节来保存的整型
bigint:系统采用八个字节来保存的整型
如果只需要正数,就使用无符号正数 加入unsigned关键字
alter table my_int add int_6 tinyint unsigned first;
此时,tinyint表示范围是:0-255/2^16-1
zerofill 使得数据按照规定的位数来显示,不够的位数用0填充
alter table my_int add int_6 tinyint unsigned zerofile first;
此时,如果是1 会显示为001
alter table my_int add int_6 tinyint unsigned zerofile first;(这个为4位)
此时,1会显示为0001
二.小数类型
浮点型
存储时用指数的方式来储存,所以表示数据量大,但是数据精度不是很高
如果丢失,会按照四舍五入方式来保存
float:单精度类型,可以表示10^38,系统提供4个字节来存储数据,只能保证大概7左右的精度
使用方法:
Float,表示不指定小数位数
Float(M,D),表示整数8位,小数2位共10位
浮点数可以用科学计数法表示:10e5 表示100000
double:双精度类型,可以表示10^308,系统提供,精度也只有15位左右,使用方式同上
定点数
能够保证数据精确的小数(小数部分超出长度会四舍五入,整数部分会精确)
decimal,系统会自动个根据存储数据来分配存储空间,大概每9个数就会分配4个字节来保存,同时小数和整数部分会分开存储
Decimal(M,D),M表示总长度最大值不能超过65,D表示小数的长度最大不能超过30
三.时间
date YYYY-mm-dd
time HH:ii:ss 本质是用来表示时间区间,能表示的范围比较大,也可以是负数
【数字 HH:ii:ss-->数字*24+HH:ii:ss】eg:'5 12:12:12'->'132:12:12'
datetime YYYY-mm-dd HH:ii:ss 0值为0000-00-00 00:00:00
timestamp YYYY-mm-dd HH:ii:ss 默认不能为空,默认值为当前时间,当对应记录数据被更新时,会自动更新为当前时间
Years YYYY 1900-2155 有两种插入方式:0-99 【69以下对应20xx,70以上包括70会变成19xx】 和四位数年份
四.字符串类型
char:定长,系统会分配空间,char(L),L字符数,0-255【查询效率比varchar高 】
varchar:变长,根据实际存储的数据来确定长度 varchar(L)L:0-65535,每个数据生成后,会在之后,增加1-2个字节【0-127,一个字节,>127用两个字节来保存长度】
text:文本类型,存储字符文本【blob存储二进制文本,但是一般不会用来存储文本本身而是存储文本链接】
是加上系统中有四种text
tinytext:2^8+1
text:2^16+2
mediumtext:2^24+3
longtext:四个字节,字符数2^32+4
注意:
1.选择储存文本的时候,系统会自动根据存储长度选择合适的文本
2.超过255个字符是,用text不要用varchar
enum:枚举类型,选定确定的几个字段
语法:
enum(数值1,数值2……)
系统提供1-2个字节保存枚举数据0-255用一个字节,255-65535用两个字节,所以最多有65535个,字段上所存的值是每个元素的下标,从1开始。【mysql会自动进行 类型转换,=-*/会自动判断,字符串为0】所以可以用数字来进行插入
插入数据必须是设定范围
set:将多个数据选项同时保存的数据类型,将制定发项按照对应的二进制位进行控制:1表示被选中,0表示未被选中
语法:set(值1,值2……)
1个字节,set只能有8个选项
2个字节,set只能有16个选项
……以此类推
set可以同时插入多个:
insert into 表名 values(‘值1,值2’)这样就插入多个
set和enum一样存储到数据库中仍然是数字
数据如果被选中,对应的数据就为1,否则为0