数据类型
1、整数 int(m)和bigint(m),bigint等效于java中的long,m代表显示长度,需要结合zerofill关键字使用,数值 长度不足时补0;
create table t3(name varchar(10),age int(10) zerofill);
insert into t3 values ('Tom',18);
select * from t3;
2、浮点数:double(m,d) m代表总长度,d代表小数长度
sal double(5,3); 23.345
3、
字符串 char(m):固定长度, m=10 保存'abc',此时所占长度为10,执行效率略高,如果保存的数据的长度是固定值 使用char,最大长度255
varchar(m):可变长度,m=10 保存'abc' 此时所占长度为3,更节省空间,最大长度65535,但是建议保存 255以下的长度
text(m):可变长度,最大65535,建议保存255-65535 总结:固定长度时使用char,可变长度低于255用varchar,高于255用text
4、
日期 date:只能保存年月日 time:只能保存时分秒 datetime:保存年月日时分秒,默认值为null,最大值9999-12-31
timestamp(时间戳):保存年月日时分秒,距离1970年1月1日的毫秒数,默认值为当前系统时间,最大值 2038-1月-19日
create table t_date(t1 date,t2 time,t3 datetime,t4 timestamp);
insert into t_date values('2022-3-23',null,null,null);
select * from t_date;
insert into t_date values(null,'9:13:30','2010-8-10',null);
数学相关函数
floor(num) 向下取整 select floor(3.84); 值为3
round(num) 四舍五入 select round(23.8); 值为24
round(mum,m) 四舍五入 m代表小数位 select round(23.869,2); 23.87
truncate(mum,m) 非四舍五入 m代表小数位 select truncate(23.869,2);23.86
rand() 随机数 获取0-1的随机数 select rand();
获取0-5的随机数 3-8 select floor(rand()6)+3;
获取8-10的随机数 0-2 12-20 select floor(rand()3)+8;
约束
什么是约束:约束给表字段添加限制条件
非空约束 not null
字段值不能为null
create table t1(id int,age int not null);
insert into t1 values(1,20);
insert into t2 values(2,null);//报错
主键约束
1、什么是主键:表示数据唯一性的字段为主键
2、什么是约束:约束就是创建表时给字段添加的限制条件
3、主键约束:限制主键的值 唯一且非空
使用:
create table t1(id int primary key,name varchar(10));
insert into t1 values(1,'aaa');
insert into t1 values(1,'bbb');//插入数据重复 报错
//报以下错误:Duplicate entry '1' for key 'PRIMARY'
insert into t1 values(null,'ccc');//主键值不能为空
//报以下错误:Column 'id' cannot be null
主键约束+自增 auto_increment
设置主键之后,主键值唯一且非空,如果程序员去维护这个主键值的话浪费时间精力,
自增是让表格自己维护主键值,插入数据时不需要考虑主键值为多少。
自增的规则:从历史最大值基础+1
如何使用:
create table t2(id int primary key auto_increment,name varchar(10));
insert into t2 values (null,'aaa');//1
select *from t2;
insert into t2 values (null,'bbb');//2
insert into t2 values (10,'ccc');//10
insert into t2 values (null,'bbb');//11
delete from t2 where id>10;//把11删掉了
insert into t2 values (null,'ddd');//12
唯一约束 unique
字段值不能重复
create table t2 (id int,age int unique);
insert into t2 values(1,20);
insert into t2 values(2,20);//报错
默认约束 default
当字段的值不赋值的时候,默认约束的内容生效
create table t(id int,age int default 10);
检查约束 check
mysql语法支持 ,不报错,但是没效果
create table t_check(id int,age int check (age>10));
外键约束
作用:
外键值可以为null,可以重复,但是不能删除不存在的值
外键指向的表 ,不能先删除
外键指向的数据不能先删除,如果需要删除,先删除外键约束,或者删除外键的数据(断开关联关系)
constraint 外键约束名 foreign key (外键字段) references 表名(主键)
如何使用外键
创建部门表
create table dept (id int primary key auto_increment,name varchar(10));
创建员工表
create table emp(id int primary key auto_incerment,name varchar(10),
deptid int ,constraint fkdept forign key(deptid) references dept(id));