目录
一、数据类型分类

二、数值类型
1、int

用tinyint示例
创建一个表,test_db,只增加一个字段num,类型为tinyint;
在MySQL中,定义属性时,默认属性类型放在后面,比如num tinyint;
tinyint范围是-128~127,那么给这个表的num插入数据时,不能插入超过这个范围的数据;

这里tinyint后面括号中的内容不是字节数;


tinyint可以是无符号的,范围是0~255,定义为num tinyint unsigned ;


MySQL中的数据不像C/C++中的数据,就算范围超过还可以截断或者隐式类型转换,MySQL中的数据类型本身是一种约束,要求使用者插入正确的数据,也就是说MySQL中的数据库中的数据是可预期的、完整的。
2、bit字节类型
基本语法 :bit(M),M的范围是1~64,表示指定bit这个类型的字节数,若是不写M,默认是1;

bit(1),表示只有一个字节空间,若是多了就报错:

同时发现,select的时候,id对应的位置没有显示出具体插入的值,这是因为bit字节类型的数据显示的时候按照ascll码对应的字符显示,在ascll码表中0~31和127表示的字符是控制字符,不会显示;
将bit字段修改为10,插入大于31的值,select之后就能显示了

3、小数类型
float
语法:名称 float(n,m) [unsigned] ;其中n表示这个数据数值位位数,m表示小数个数即精度。
float(4,2)表示的数据范围位-99.99~99.99;当小数位数超过2位时,会进行四舍五入,四舍五入之后数据位数超过4,则插入数据出错;

float类型当数据过长时会发生精度错误;
decimal
基本和float一样,但是decimal表示精度更加准确;

如果希望小数精度更高,则使用decimal
4、字符串类型
char
语法:char(L),L是固定存储长度,单位是字符,最长值为255;这里的字符就是生活意义中的字符,也就是说汉字也相当于一个字符;并且在mysql中utf8标准,一个字符相当于3个字节;

varchar
语法:varchar(L),和char相似;但是还有一重身份:可变长度字符串,最大长度是65535个字节,也就是21845个字符。
这里的可变长度指的是,插入的数据在不超过L最大限制的情况下占几个字符就开几个字符的空间;
varchar长度可以指定为0~21845之间的值,但是会有1~3个字节记录数据大小,所以有效字节数为65532,即varchar(L),L最大为21844;
其中1~3个字节具体是1、2还是3取决于真实数据的长度,要是不是很长就用1个字节来标识,很长就用3个字节。

char和varchar比较

日期和时间类型
- date :日期 'yyyy-mm-dd' ,占用三字节
- datetime 时间日期格式 'yyyy-mm-dd HH:ii:ss' 表示范围从 1000 到 9999 ,占用八字节
- timestamp :时间戳,从1970年开始的 yyyy-mm-dd HH:ii:ss 格式和 datetime 完全一致,占用四字节
时间戳不需要插入修改,再更新其他数据之后,timestamp会自动更新为当前时间戳;


更新date时间,timestamp自动更新:

enum和set

插入或者查找时,enum可以用下标,下标从1开始;


set查找时不能用下标,但是可以用数字:('打篮球','打桌球','游泳','打游戏')对应0000,从低位开始,打篮球对应最右边的0,也就是说1(0001)表示'打篮球',7(0111)表示'打篮球','打桌球','游泳'

这种查找要把数字写全,否则找不到,比如这里写1,虽然有人喜欢打篮球,但是这个人不止喜欢打篮球,那么不写全就找不到

同样的,就算使用字符查找也并不能找全

这个找到的是只喜欢打桌球的人。
要是想找到所有喜欢打桌球的人要使用find_in_set;

792

被折叠的 条评论
为什么被折叠?



