1. 基本概念

约束: 对表中的数据进行限定, 保证数据的正确性、有效性和完整性;

约束名称 关键字 描述
主键 primary key 唯一,且非空,
默认 default 如果这一列没有值,则使用设置的默认值 ; 一般情况下给创建时间字段赋予默认值 now()函数
非空 not null 这一列必须有值
唯一 unique 这一列不能有重复的值
外键 foreign 主表中的主键列, 副表中的外键列

2. 四个约束分类 //— 创建约束的时候指定约束名称

①主键约束: ==primary key==

1.概念
主键属性往往就能够唯一的代表这一行数据 主键不能为null
— 主键约束 所有约束中最严格的约束 每张表有且仅可以有一个主键
— 因为主键具有逻辑意义 它能够唯一的代表一个人
2.创建表时添加主键约束:image.png
3.创建玩表后,添加主键(不是很常用)
==alter table 表名 modify 字段名称 主键;==image.png
4.删除主键约束的正确姿势image.png
删除主键约束:alter table 表名 drop primary key

5. 主键自动增长「auto_increment」

  • 概念: 如果表中的某一个字段是数值类型的, 使用auto_increment可以来实现值的自动增长;
  • 在创建表中, 添加主键约束, 可以设置主键自增image.png
  • 建完表之后添加主键的自增长image.png
  • 删除主键的自增长image.png

    ②非空约束 ==not null==

    1.概念

    —非空约束 要求这个属性值 必须不能存空值 否则数据库报错
    —在建表时 不可为null的属性后加上 not null

    2.创建表的时候添加非空约束image.png

    3.创建表完后,添加非空约束image.png

    4.去掉非空约束

    alter table 表名 modify name varchar(100) null

    ③唯一约束 ==unique key== 不可重复

    1.概念: 设置某一列的值不能重复

    2.在创建表的时候可以添加唯一约束 image.pngimage.png

    3.在表创建完成之后添加唯一约束image.png

    4.删除唯一约束image.png

④外键约束 需要两张有关系的表

  • 让表于表产生关系,从而保证数据的正确性。
  • 外键约束 需要两张有关系的表 比如: 学生表 和 班级表

1.在创建表时,可以添加外键image.png
constraint 约束名称 foreign key(被约束的列的名称)references 产生关联的表(产生关联的属性)
2. 创建表之后,添加外键image.png
3.删除外键image.png
使用示例:

  • 创建一个员工表, 包括(id, name, age, dep_name, dep_location)字段;image.png
  • 缺点:
    1. - 数据冗余
    2. - 后期会出现增删改的问题
  • 解决办法拆分成两部分, 这里涉有了数据库设计的范式. 后面讲;
    • 拆分表
      • 部门表, department
      • 员工表, employee
  • 部门表, 主表.image.png
  • 员工表, 从表image.png
  • 问题: 解决办法:
    1. - 在员工表中可以添加部门表中没有的部门id. 实际开发当中不应该出现此种问题.
    2. - employee中的dep_id中的数据只能是department表中的已经存在的id值;
    3. - 必须让两张表产生某种关系才可以.
    4. - 请使用==外键约束==
  • 使用外键约束
    • 删除掉员工表: drop table employee;
    • 在创建从表employee的时候添加外键约束. image.png