MySQL表的完整性约束

文章目录

    • 概览
    • not null
    • unique
    • primary key
    • foreign key

概览

为了规范数据库数据格式。在用户进行插入,修改,删除等操作时。DBMS(Database Management System)自动按照约束条件对数据进行监测,使不符合规范的数据不能进入数据库。以确保数据库中存储的数据正确,有效
约束条件和数据类型的宽度一样,都是可选参数,主要分为以下几种。

not null

当前这一列的内容不能为空,性别
如果没有设置表名这一列内容可有可无

unique

唯一可以有一个空,姓名,身份证号,用户名等

primary key

主键

  • 自动创建索引
  • 唯一 + 非空
  • 加速查询,通过输入主键查询对应的内容非常快
  • 每张表只能有一个主键
    应用: 员工号码,学号,用户名,用户id
    例1:
    unique,primary key实例
    创建一个表
    MySQL表的完整性约束_第1张图片
    MySQL表的完整性约束_第2张图片
    MySQL表的完整性约束_第3张图片
    windows系统怎样设置mysql为严格模式
    MySQL表的完整性约束_第4张图片
    MySQL表的完整性约束_第5张图片
    再重启数据库服务器,退出客户端,再登录客户端。查询数据库模式
    MySQL表的完整性约束_第6张图片
    unique key不能输入重复的值
    MySQL表的完整性约束_第7张图片
    primary key 主键也不能重复
    MySQL表的完整性约束_第8张图片

foreign key

外键,支持外键的存储引擎只有Innodb
不在一个表的键
例:一个公司50000000人,有5个部门,有5个办公室,如果存在一张表上,部门和办公室重复了很多次。非常浪费内存。为了节省空间,可以建两个表,一张表存员工信息,一张表只有5行,存部门信息。员工信息中部门id对应了部门表的id。部门id相对于员工信息表就是他的外键。
MySQL表的完整性约束_第9张图片

完整性约束实例:
如果没有设置主键,那么第一个非空唯一的字段会被设置成主键。
MySQL表的完整性约束_第10张图片
MySQL表的完整性约束_第11张图片
非空 + 唯一 约束不能插入空值
MySQL表的完整性约束_第12张图片
指定主键后,其他非空+唯一约束都不会成为主键。
MySQL表的完整性约束_第13张图片
联合主键:给一个以上的字典设置唯一非空约束
MySQL表的完整性约束_第14张图片
联合唯一
MySQL表的完整性约束_第15张图片
设置默认值实例
设置默认值后,如果该字段没输就是默认值
MySQL表的完整性约束_第16张图片
如果输入了就为输入的值。
MySQL表的完整性约束_第17张图片
设置外键实例
外键,只有另一个表中设置了unique的字段才能作为本表的外键
MySQL表的完整性约束_第18张图片

  • 如果一个表的字段作为外键对另一个表提供服务,那么默认不能直接删除外表中正在使用的数据
    在这里插入图片描述在这里插入图片描述
    MySQL表的完整性约束_第19张图片
  • 外键 on delete cascade连级删除, on update cascade连级更新
    MySQL表的完整性约束_第20张图片
    删父表,子表中对应的记录跟着删
    MySQL表的完整性约束_第21张图片
    更新父表,子表中对应的记录跟着改
    MySQL表的完整性约束_第22张图片

你可能感兴趣的:(数据库)