1、#整型数据类型
tinyint 1个字节 有符号(-128 ~ 127) 无符号(unsigned) (0~255) 小整型值 int 4个字节 有符号(-21亿 ~ 21亿 左右) 无符号(0~42亿左右) 大整型值 create table t1(id int , sex tinyint); insert into t1 values(4000000000,127); error insert into t1 values(2000000000,127); 加上nusigned 表示有符号的数 create table t1(id nusigned int , sex nusigned tinyint);
2、#浮点型数据
float(255,30) 单精度 255总长度 30小数位 ,单精度就是保留小数位 少 5位 double(255,30) 双精度 保留小数位多,16位 decimal(65,30) 金钱类型,使用字符串的形式保存小数 """存在四舍五入""" create table t2(f1 float(5,2) , f2 double(5,2) , f3 decimal(5,2)); 说明:代码意思总长度5(包含了小数位在内) 小数位2
insert into t2 values(1.666666666666666666666666666,1.666666666666666666666666666,1.666666666666666666666666666);
存进去的值,回查到 都是1.67 """float 小数位默认保留5位,double小数位默认保留16位,decimal 默认保留整数位,存在四舍五入""" create table t3(f1 float , f2 double , f3 decimal); insert into t3 values(1.666666666666666666666666666,1.666666666666666666666666666,1.666666666666666666666666666);
存进去的值,回查到 1.66667 1.6666666666666666 2
# float(5,2) 5=>代表总长度(整数+小数) 2=> 小数长度,保留2位 总长度和小数位,要么都不写,要么都要写。 create table t6(f1 float(5,2)); insert into t4 values(12.34567); insert into t5 values(1234.34567);
3、# 字符串 char(字符长度) varchar(字符串) text
char(11) 定长:固定开辟11个字符长度的空间(手机号,身份证号), 开辟空间的速度上说: char更快 varchar(11) 变长:最多创建字符长度为11的空间(小广告,评论) 开辟空间的速度上说: 相较于char稍慢,用多少开多少,不超过限定值。 text 文本类型,针对于文章,小说 create table t7(c char(11) , v varchar(11) , t text); 说明,这里是字符的长度 insert into t7 values("11111","盛占涛祖玛套大保健你你","倚天屠龙宝刀,掉率0.00001"); select concat(c,":",v,":",t) from t7; 说明,参训出来的结果进行拼接返回。
# concat 拼接
select concat(参数1,参数2,参数3 ... ) 把所有的参数拼接在一起

4、# 枚举 和 集合
enum 枚举 : 从列出来的数据当中选一个(性别) set 集合 : 从列出来的数据中选多个(自动去重) create table t8( id int , name char(10), money float(6,2) , sex enum("man","woman"), hobby set("beat_doudou","smoke","drink","tang_head") )
# 正常写法 insert into t8(id,name,money,sex,hobby) values(1,"张三",9.66666,"woman","smoke,tang_head"); # 自动去重 insert into t8(id,name,money,sex,hobby) values(1,"张三",9.66666,"woman","beat_doudou,beat_doudou,beat_doudou,beat_doudou"); 打豆豆会被自动去重,只会存1个打豆豆
5、#时间数据类型
date YYYY-MM-DD 年月日 (结婚纪念日,节假日) time HH:MM:SS 时分秒 (体育竞赛) year YYYY 年份值 (历史,1882年娃哈哈矿泉水,红酒) datetime YYYY-MM-DD HH:MM:SS 年月日 时分秒 (登录时间,下单时间)
举例子
create table t5(d date , t time , y year , dt datetime); insert into t5 values("2020-06-17","09:15:30","2020","2020-06-17 09:15:30"); 可以全部写now,自动截取 insert into t5 values(now(),now(),now(),now());
时间戳介绍
timestamp YYYYMMDDHHMMSS (时间戳) 自动更新时间(不需要手动写入,修改数据时候,自动更新,记录最后一次修改的时间)该类型不准为空,程序自己会往里面加时间
create table t6(dt datetime , ts timestamp); insert into t6 values(null,null);系统自己插入自己的时间 insert into t6 values(20200617092430,20200617092430); insert into t6 values(20990617092430,20990617092430); error timestamp 不能超过2038年某一天
约束 : 对编辑的数据进行类型限制,不满足约束条件的直接报错
unsigned 无符号 not null 不为空 default 设置默认值 unique 唯一约束,数据唯一不能重复 primary key 主键,标记数据的唯一特征(唯一且不为空的数据) auto_increment 自增加一(一般配合主键使用 或者 unique进行自增) zerofill 0填充(配合int类型使用) , int(6) , 位数不够位,拿0来补充 foreign key 外键,把多张表通过一个关联字段,联合在一起
# unsigned 无符号 create table t7(id int unsigned); insert into t7 values(66); insert into t7 values(-66); error # not null 不为空 create table t8(id int not null , name varchar(255)); insert into t8 values(1,"小琳琳"); insert into t8 values(null,"小琳琳"); error id 不传 insert into t8(name) values("小琳琳"); error 指定一个name参数,缺少id # default 设置默认值 create table t9(id int not null , name varchar(255) default "王振"); insert into t9 values(1,null); null也是一个值 insert into t9(id) values(1); 只传id 不传值,就会默认成 "王振"
# unique 唯一约束,数据唯一不能重复
索引
在MySQL中,布尔类型等价于TINYINT
int整形数据12345
char 固定数据类型指定 1个2个 200个
varchar(200) 变成数据类型 有多少占用多少,推荐使用这个
datetime 时间数据类型
not unll 不能为空