既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
文章目录
Mysql表的约束
mysql为上面要有约束?
约束本质是MySQL通过限制用户操作的方式,来维护数据本身的权限的一套方案
本质上MySQL是一套数据存储解决方案,处理解决基本的数据存储功能之外,还要尽可能保证数据的安全性,减少数据误操作
mysql如何约束?
约束也是一套整体的约束方案
约束的体现,不仅仅可以体现在数据库层面,在我们进行用户业务逻辑编码的时候,我们其实也可以添加约束(判断),不满足就不让往数据库插入
数据库层面上,编码层面上也是可以提现的
空属性
null(默认的)和not null(不为空)
数据库默认字段为空,但是实际开发中,尽可能保证字段不为空,因为数据为空不能参与运算
查看空字段
select null;
案例
//设置名称和班级不为空
create table if not existts mycalss
(
class_name varchar(20) not null,
class_room varchar(20) not null
);
此时我们要是有一个不进行设置则会报错,只有两个都不为空的时候才不会报错
默认值default
某种数据会经常性的出现某一个具体的值,可以在一开始就指定好,在开始时使用默认值
例:
create table t1(age tinyint unsigned default 0);
//age一栏默认设置为0
![(img-2hTFcF04-1650333078958)]](https://img-blog.csdnimg.cn/22ca24a09d694895bc460e52ca8691c5.png)
上面当我们在次插入要是不指定age的值那么就会自动填充为0
not null和default可以同时存在,此时会自动添加default设定的默认值
建议not null和default只设置一个
有默认值就设置default
没有默认值只是不想让它为空就设置not null
列描述comment
comment,没有实际意义,用来描述字段,相当于注释
create table t16(name varchar(20)not null comment '名字',
age tinyint unsigned default 18 comment '用户年龄');
zerofill
设定属性的宽度,如果宽度小于设定的宽度,自动填充0,需要注意的是,这只是显示的结果,只是一种格式化输出
create table if not exists t10(
a int(10) int unsigned default,
b int(10) int unsigned default
);
alter table t10 change a int(10) unsigned zerofill;
![(img-PiY5kUtI-1650333078959)]](https://img-blog.csdnimg.cn/0ceb7fa1e6d74aab8edaa946bf4144b6.png)
主键primary key
主键:primary key用来唯一的约束该字段的数据,不能重复,不能为空,一张表中只能用一个主键
案例
create table t18(id int unsigned primary key comment '学生的学号,作为主键',name varchar(10) not null comment '学生姓名')engine=InnoDB default charset=utf8;
insert into t18 values(1,'孙悟空');
insert into t18 values(1,'猪八戒');
//这时候主键冲突,出错
//要是设置了default,则第一次可以插入,后面就不行了
设置指定列是主键之后,默认不能为空,如果设置了default,默认插入的时候是可以出现空的,但是不推荐(只能使用一次)
主键的删除
alter table t18 drop primary key;
添加主键
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
外链图片转存中…(img-ULaRLx3V-1715680697045)]
[外链图片转存中…(img-jlujR6Fu-1715680697045)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新