MySQL学习8:表的约束

一.约束

1.整体概述

  • 数据的完整性
  • 实体完整性(两条数据不能完全相同)
  • 域完整型(年龄必须大于0)
  • 引用完整性(员工在部门,部门表中必须有该部门)
  • 用户自定义完整性(用户名唯一,密码不为空)

2.什么是约束

  • 约束就是对表中字段的限制

3.约束的分类

①字段个数

  • 单列
  • 多列

②约束范围

  • 列级
  • 表级

③约束作用

  • not null
  • unique
  • primary key
  • foreign key
  • check
  • default

④添加约束的两种方式

  • 创建表时添加:create table
  • 修改表时添加:alter table modify

二.具体字段名

1.not null:不允许为空

  • 只能是单列限制

2.unique:某个值不能重复

①列级约束(约束字段不能想通过)

②表级约束(同时约束几个字段不能都相同)

③删除约束

  • 添加唯一性约束的列会有唯一索引
  • 删除唯一性约束的列也需删除唯一索引
  • 唯一索引名和唯一约束名相同
  • 删除:alter table _ drop index _

3.主键约束:primary key(非空且唯一)

①要求

  • 唯一标识表的一条记录(非空唯一)
  • 可有复合主键(列不允许出现空值)
  • 主键索引会自动配置名称为primary

②设置

  • 主键约束可以用列级也可以用表级
  • 表级约束没必要起名字,因为主键索引名肯定是primary

③主键的增加和删除

  • alter table _ add primary key(id)
  • alter table drop primary key(不会删除主键约束)

④自增列 auto_increment

  • 一个表中只有一个自增列,类型满足整型
  • 添加自增列 create table _ id INT primary key auto_increment
  • 添加流程:显式向主键字段添加0或null时,会自动递增加上原来数值
    指明不存在的值,可以赋值成功,并且之后会在该基础上增加
  • 修改:alter table _ modify id INT auto_increment
    删除:alter table _ modify id INT auto_increment
  • 5.7中内存中维护一个变量,删除四再添加从5中,服务器重启获取4再添加4
    8.0中持久化值,删除4总会加5,会将此时的变量传到日志中

4.外键约束 (foreign key)

①查看约束

  • from imformation_schema.table_contraints where table name =‘’

②要求

  • 从表字段关联主表字段,主表中字段是primary key,从表中字段是foreign key
  • 删除时只能先删除从表,再删除主表
  • 外键名可自己声明,外键索引是普通索引
  • 删除约束后,也许删除索引

③表级约束

  • alter table _ add contrainst _ foreigh key(id) reference _()

④约束等级

  • cascade 父表删除 子表同步删除
  • set null 父表删除 子表设置null
  • no action 子表有记录,父表不允许操作

⑤设置时的建议

  • foreign key(id) references dept(id) on update cascade on delect set null

⑥删除外键约束

  • alter tablel _ drop foreign key()
  • alter table _ drop index

⑦开发场景(不使用外键)

  • 外键约束开销慢,更新风暴
  • 需要在应用层检查逻辑一致性

5.check约束(检查值得范围)

  • 5.7不支持check约束
  • 举例使用:salary decimal(10,2) check(salary>2000) 8.0支持check约束

6.default约束(默认值约束)

  • salary decimal(10,2) default 2000 不给salary设置值,则后面默认值2000
  • 通常设置default 0,防止null值得出现,因为null值出现,专门比较方法不好比较效率不高

7.重要:非空,默认,主键,默认值约束重要

  • 主键唯一不需要起别名,其他的可用constraint起别名
  • 更改约束: alter table books modify id INT primary key 可以更改其他约束
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值