1. 基本概念
约束: 对表中的数据进行限定, 保证数据的正确性、有效性和完整性;
约束名称 | 关键字 | 描述 |
---|---|---|
主键 | primary key | 唯一,且非空, |
默认 | default | 如果这一列没有值,则使用设置的默认值 ; 一般情况下给创建时间字段赋予默认值 now()函数 |
非空 | not null | 这一列必须有值 |
唯一 | unique | 这一列不能有重复的值 |
外键 | foreign | 主表中的主键列, 副表中的外键列 |
2. 四个约束分类 //— 创建约束的时候指定约束名称
①主键约束: ==primary key==
1.概念
主键属性往往就能够唯一的代表这一行数据 主键不能为null
— 主键约束 所有约束中最严格的约束 每张表有且仅可以有一个主键
— 因为主键具有逻辑意义 它能够唯一的代表一个人
2.创建表时添加主键约束:
3.创建玩表后,添加主键(不是很常用)
==alter table 表名 modify 字段名称 主键;==
4.删除主键约束的正确姿势
删除主键约束:alter table 表名 drop primary key
5. 主键自动增长「auto_increment」
- 概念: 如果表中的某一个字段是数值类型的, 使用auto_increment可以来实现值的自动增长;
- 在创建表中, 添加主键约束, 可以设置主键自增
- 建完表之后添加主键的自增长
- 删除主键的自增长
②非空约束 ==not null==
1.概念
—非空约束 要求这个属性值 必须不能存空值 否则数据库报错
—在建表时 不可为null的属性后加上 not null2.创建表的时候添加非空约束
3.创建表完后,添加非空约束
4.去掉非空约束
alter table 表名 modify name varchar(100) null③唯一约束 ==unique key== 不可重复
1.概念: 设置某一列的值不能重复
2.在创建表的时候可以添加唯一约束
3.在表创建完成之后添加唯一约束
4.删除唯一约束
④外键约束 需要两张有关系的表
- 让表于表产生关系,从而保证数据的正确性。
- 外键约束 需要两张有关系的表 比如: 学生表 和 班级表
1.在创建表时,可以添加外键
constraint 约束名称 foreign key(被约束的列的名称)references 产生关联的表(产生关联的属性)
2. 创建表之后,添加外键
3.删除外键
使用示例:
- 创建一个员工表, 包括(id, name, age, dep_name, dep_location)字段;
- 缺点:
- 数据冗余
- 后期会出现增删改的问题
- 解决办法拆分成两部分, 这里涉有了数据库设计的范式. 后面讲;
- 拆分表
- 部门表, department
- 员工表, employee
- 拆分表
- 部门表, 主表.
- 员工表, 从表
- 问题: 解决办法:
- 在员工表中可以添加部门表中没有的部门id. 实际开发当中不应该出现此种问题.
- employee中的dep_id中的数据只能是department表中的已经存在的id值;
- 必须让两张表产生某种关系才可以.
- 请使用==外键约束==
- 使用外键约束
- 删除掉员工表: drop table employee;
- 在创建从表employee的时候添加外键约束.