当前位置:   article > 正文

MySQL基础---约束_数据库中如何设置约束范围内的数据

数据库中如何设置约束范围内的数据
mysql约束

数据完整性:

  • 实体完整性:不能存在两条完全一样无法区分的数据
  • 域完整性:年龄范围、性别范围
  • 引用完整性:员工所在部门一定要在部门表中能找到该部门
  • 用户自定义完整性:用户名唯一、密码不能为空等、邮箱指定格式等,用户自定义的一些数据条件

约束是表级的强制规定,是为了保证数据的完整性!

约束就是对字段的一种限制条件

约束分类:

  • 角度1:约束的字段的个数进行区分

    • 单列约束
    • 多列约束
  • 角度2:约束的作用范围或者定义的范围

    • 列级约束:声明时,将此约束指定在对应字段的后面
    • 表级约束:在表中所有字段都声明完之后,在所有字段后面声明的约束
  • 角度3:约束作用和功能上来分

    • not null 非空约束
    • unique 唯一性约束
    • primary key 主键约束
    • foreign key 外键约束
    • check 检查约束
    • default 默认值约束

如何添加约束?

  • CREATE TABLE时添加约束

  • ALTER TABLE 时增加约束、删除约束

如何查看表中的约束?

在这里插入图片描述

NOT NULL非空约束的使用

作用:限制某个字段或者某列值不能为空

关键字:NOT NULL

特点:

  • 默认,所有类型的值都可以是NULL 包括INT FLOAT等数据类型
  • 非空约束只能出现在表对象的列上,只能某个列单独限定非空,不能组合非空
  • 一个表可以有很多列都限定了非空
  • 空字符串‘ ’不等于NULL 0也不等于NULL

添加非空约束:

  • 创建表时添加约束
    在这里插入图片描述
  • 在ALTER 表时添加约束
    在这里插入图片描述
    前提是修改的这个字段不包含有NULL值记录,否则会报错
    在这里插入图片描述
  • 在ALTER表时删除约束
    在这里插入图片描述
UNIQUE 唯一性约束

作用:用来限制某个字段不重复

关键字:UNIQUE

特点:

  • 同一个表可以有多个唯一约束
  • 唯一约束可以是某一个列的值唯一,也可以是多个列组合的值唯一
  • 唯一约束允许列值为空
  • 在创建唯一约束的时候,如果不给唯一约束命名,就默认和列名相同
  • MySQL会给唯一约束的列上默认创建一个唯一索引

添加约束:

  • 创建表时添加约束
    在这里插入图片描述
    其中可以使用表级约束的方式进行添加:

在这里插入图片描述
注意:在插入数据的时候可以多次添加NULL值,是合理的。

在这里插入图片描述

  • ALTER TABLE时添加约束

    • 方式一:
      在这里插入图片描述
    • 方式二:
      在这里插入图片描述
      复合的唯一性约束

字段列表中写的是多个字段名,多个字段名用逗号分隔,表示那么是复合唯一,即多 个字段的组合是唯一的#字段列表中写的是多个字段名,多个字段名用逗号分隔,表示那么是复合唯一,即多 个字段的组合是唯一的

即组合字段中必须全部字段重复才会报错。

  • 添加唯一约束的时候会自动添加索引
  • 删除唯一约束的时候要通过删除索引的方式来删除
  • 删除时需要指定唯一索引名,和唯一约束名一样
show index from 表名称

ALTER TABLE USER
DROP INDEX uk_name_pwd;
  • 1
  • 2
  • 3
  • 4
PRIMARY KEY 主键约束

作用:用来标识表中的一行记录

主键约束相当于非空和唯一约束的组合,主键列不允许重复,也不允许空值。

主键是唯一的,但可以组合,组合主键也是所有重复才重复,但都不允许有空值,一个也不行。

MYSQL的主键名总是PRIMARY,固定的。

创建主键的时候同样也会创建主键索引,用主键查询效率更高。

一般不修改主键的值。

AUTO_INCREMENT 自增列
  • 一个表最多只有一个自增列
  • 需要产生唯一标识或者顺序列才用到
  • 自增列约束的必须是主键列或者唯一约束列
  • 数据类型必须为整型
  • 指定0或者NULL则在原基础上自增,其它值则直接变成指定值

MySQL8.0新特性—自增列的持久化

8.0之前存储在内存之中,重启服务不会保存之前的删除或者其它操作。重启之后从表中可见的数值开始自增

8.0利用重做日志记录操作轨迹,重启之后仍按照重启前最后一次自增值为基础自增

FOREIGN KEY 外键约束

作用主要是为了限制表中某个字段的引用完整性

比如员工表中的部门号,必须要在部门表中找到相应部门才可以

由于外键约束引用的特性,经常区分主表从表,即父表和子表

外键约束大部分特点都和这两个表的相关性有关

比如创建表时必须先创建主表有了参考才能创建子表进行引用,删除时必须先删引用再删参照等等

在这里插入图片描述

约束等级:

  • Cascade :父表更新子表同步更新
  • Set NULL:父表更新,子表变NULL
  • NO action: 父表被引用则不能修改引用列的值
  • 另外两种不常用Restrict、set default

注意:开发中能不用外键和级联就不用,影响查询速度。一般都能通过程序来解决约束。
CHECK 约束和DEFAULT 约束就是指定插入数据格式是否和自己要求的一样,例如邮箱格式、身份证号码长度等,然后就是默认值设置,相对来说较为简单,此处不再赘述。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/778488
推荐阅读
相关标签
  

闽ICP备14008679号