数据库数据类型和约束

数据类型

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));

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值