欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL表的约束

程序员文章站 2022-05-06 23:37:41
...

为了保证数据的合法性,也可以说是数据的正确性,需要在属性上加一些约束,在表的角度下属性就是一个列的属性。

1. 空属性

在一个表中,有些属性是不能为空的,如一个学生信息表中,学生姓名、学号等不能为空。
空属性有两个值:null(默认的)和not null(不为空)
在前面创建表时,属性都是默认空的,因此我们插入数据时,没有添加数据的列都是空的,如:
MySQL表的约束
但是我们应该尽可能保证字段不为空,因为数据为空没办法参与运算。
于是在创建表的时候,不能为空的列我们就要加入not null这个属性。
MySQL表的约束

2. 默认值

默认值:如果没有给该列数据,则会自动填充,通常是某个列经常性的出现某个具体的值,可以在一开始就指定好,这就是默认值。注意下图方框的插入形式
MySQL表的约束

3. zerofill

通过字面意思就是,填充0 的意思,没错,当给数据类型的时候,是规定了长度的,如char(10),也就是 10 个长度的宽度,但是只给了 5 个长度的,于是会填充 5 个 0。如:
MySQL表的约束

4. 主键

primary key用来唯一的约束该字段里面的数据,不能重复,不能为空,一张表中最多只能有一个主键,主键所在的列通常是整数类型。主键也可以有复合主键,复合主键就是多个属性组合成的主键。
主键的创建方式有三种:

  1. 在创建表的时候,创建主键。
  2. 创建表之后,添加主键。
  3. 语句的最后添加复合主键。

MySQL表的约束MySQL表的约束主键对应的字段中不能重复,一旦重复,操作失败。
MySQL表的约束
删除主键

alter table 表名 drop primary key;

5. 唯一键

由于一个表中只能有一个主键,但是可能会有很多不能重复的属性,这里会不会有这样一个疑问?把重复的属性弄成复合主键,注意==复合主键:(‘曹孟德’, 10)(‘曹操’, 20)==是不同的主键,也就是说只要组合不同,就是不同的主键。
因此一键就可以解决表中有多个字段需要唯一性约束的问题。
唯一键的本质和主键差不多,唯一键允许为空,而且可以多个为空,空字段不做唯一性比较。
MySQL表的约束

6. 外键

外键用于定义主表和从表之间的关系:外键是主表的主键,外键在从表中是一个属性,其实就是一个键把两个表联系起来了。
如:
先创建一个班级的主表:
MySQL表的约束然后是学生的从表:
MySQL表的约束插入数据时,如果主表没有对应的实例,则会插入失败,如:班级的表中没有30班,但从表向30班插入时,会失败。
MySQL表的约束

7. 自增长

这个就是一般用在编号上,让其自己增长。
MySQL表的约束插入数据:
MySQL表的约束