mysql表约束基础 【default | 主键 | 外键 | 唯一键】

 博客主页:花果山~程序猿-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,表约束条件,我们差不多已经学完了,我们可以自己寻找业务场景 

结语

   本小节就到这里了,感谢小伙伴的浏览,如果有什么建议,欢迎在评论区评论,如果给小伙伴带来一些收获,请动动你发财的小手点个免费的赞,你的点赞和关注永远是博主创作的动力源泉。

  • 25
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值