博客主页:花果山~程序猿-CSDN博客
文章分栏:MySQL之旅_花果山~程序猿的博客-CSDN博客
关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长!
目录
一,表的约束
1. default && not null
2. comment(软约束)
3. zerofill
4. 主键
复合键
5.自增长
6、唯一键
7.外键
嗨!收到一张超美的图,愿你每天都能顺心!
一,表的约束
表中将会有一些约束,换句话说就是限制,来规范输入的数据,使其能符合数据库的期望。约束本质上是通过技术手段,插入正确的数据,达到:数据库数据的完成性和可预期性。
mysql常见的约束手段:
1. default && not null
很显然易见,
not null:要求输入方显示传递有效值(不能填null,否则也会报错)。
default:设置的默认值。
首先我们需要认识到的是,not null 与 default 两者并不互斥,有时可以相辅相成,示例如下:
曾经我们之所以可以在不设置default,也能用是因为mysql会对我们创建的表进行优化,一旦我们设置not null 或者 default,mysql就不会优化了。
2. comment(软约束)
列描述:comment,并没有实际意义上的约束,专门用来描述字段,会根据表创建语句保存,用来给程序员或DBA来进行了解。
可以通过 show create table 来进行查看comment的描述
3. zerofill
zerofill是为整数类型进行0填充的标识,目的:为了格式化显示,让行之间不会太乱。
理解,请看下图:
4. 主键
主键:primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键;主键所在的列通常是整数类型。
示例:
有了主键后,我们可对表数据内容进行精准修改,如下:
删除主键 :
alter table table_name drop primary key;
增加主键:
alter table table_name add primary key (列名)
增加主键前提,当然是这个表不存在主键;其次就是这个表中的数据是否满足添加主键的约束条件,否则只能手动删除数据满足约束条件,因此不推荐在插入数据后,再设置主键。
复合键
在创建表的时候,在所有字段之后,使用primary key(主键字段列表)来创建主键,如果有多个字段作为主键,可以使用复合主键,多个列共同作为一个主键。
示例:
mysql> create table tt14(
-> id int unsigned,
-> course char(10) comment '课程代码',
-> score tinyint unsigned default 60 comment '成绩',
-> primary key(id, course) -- id和course为复合主键
-> );
当插入数据与历史出现数据,主键列数据冲突时,则进行拦截。
5.自增长
auto_increment:当对应的字段,不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值+1操作,得到一个新的不同的值。通常和主键搭配使用,作为逻辑主键。
自增长的特点:
- 自增长字段必须是整数
- 一张表最多只能有一个自增长
- 任何一个字段要做自增长,前提是本身是一个索引(key一栏有值)
示例:
6、唯一键
如何理解唯一键区别于主键:通过下面一个例子来理解,
假设一家企业需要统计其员工资料,需要身份证,工号。身份证被选为主键,这个没问题,但从业务方面来看,需求肯定会跟具体详细,每个人都有其自己的工号,不可能出现工号相等的情况,但外一在导入数据时,因为人为因素比如,员工记错或者管理员意外拷贝,没有外部提醒就很难发现,等到再发现时,就会出现数据相同,这就违背数据库的安全。
唯一键的本质和主键差不多,唯一键允许为空,而且可以多个为空,空字段不做唯一性比较(不参与计算)。
关于唯一键和主键的区别:
我们可以简单理解成,主键更多的是标识唯一性的。而唯一键更多的是保证在业务上,不要和别的信息出现重复。
(注:一般而言,我们建议将主键设计成为和当前业务无关的字段,这样,当业务调整的时候,我们可以尽量不会对主键做过大的调整(我们知道重新产生键是有多麻烦!!)。)
7.外键
外键用于定义主表和从表之间的关系:外键约束主要定义在从表上,主表则必须是有主键约束或unique约束。当定义外键后,要求外键列数据必须在主表的主键列存在或为null。
语法:
foreign key (字段名) references 表名 (列名)
这里展示一个对,主表与从表的示例:
从表依赖于主表,先是主表创建:
后创建从表,在从表中,添加外键约束:
OK,表约束条件,我们差不多已经学完了,我们可以自己寻找业务场景
结语
本小节就到这里了,感谢小伙伴的浏览,如果有什么建议,欢迎在评论区评论,如果给小伙伴带来一些收获,请动动你发财的小手点个免费的赞,你的点赞和关注永远是博主创作的动力源泉。