• MYSQL介绍——数据库约束与范式


    字段约束

    数据库的范式:

    1. 第一范式:原子性(这是数据库的基本要求,不满足这一点就不是关系型数据库)
      数据表的每一列都是不可分割的基本数据项,同一列中不能有多个值,也不能存在重复的属性。
      在这里插入图片描述

    2. 第二范式:唯一性
      数据表中的每条记录都必须是唯一的,为了实现区分,通常要为表加上一个列来存储唯一标识,这个唯一属性列被称为主键列。
      在这里插入图片描述

    3. 第三范式:关联性
      每列都与主键有直接关系,不存在传递依赖。
      依照第三范式,数据可以拆分到不同的数据表中,彼此保持关联
      在这里插入图片描述

    在这里插入图片描述

    字段约束

    Mysql中的字段约束一共有四种
    在这里插入图片描述
    唯一约束:要求字段值唯一,但是对空字段值不约束,也就是可能存在多个为空的数据。

    主键约束

    • 主键约束要求字段的值在全表必须唯一,且不能为空值。
    • 建议逐渐一定要使用数字类型,因为数字的检索速度非常快
    • 如果主键是数字类型,还可以设置自增长
      在这里插入图片描述
      AUTO_INCREMENT:表示自增长

    非空约束

    • 非空约束要求字段不能为NULL值
    • NULL值是没有值,而不是""空字符串
      在这里插入图片描述
    NOT NULL DEFAULT FALSE
    

    这句话是说如果没给值则给一个默认值false;

    唯一约束

    • 唯一约束要求如果字段值不为NULL,那么它必须全表唯一
      在这里插入图片描述

    给出一个使用示例:

    
    CREATE TABLE t_teacher(
    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(20) NOT NULL,
    tel CHAR(11) NOT NULL UNIQUE,
    married BOOLEAN NOT NULL DEFAULT FALSE
    );
    

    外键约束

    • 外键约束是用来保证关联数据的逻辑关系
    • 外键约束是定义在子表上的

    在这里插入图片描述
    创建父表:

    
    CREATE TABLE t_dept ( deptno INT UNSIGNED PRIMARY KEY, dname VARCHAR ( 20 ) NOT NULL UNIQUE, tel CHAR ( 4 ) UNIQUE );
    

    创建子表,添加约束

    CREATE TABLE t_emp (
    	empno INT UNSIGNED PRIMARY KEY,
    	ename VARCHAR ( 20 ) NOT NULL,
    	sex ENUM ( "男", "女" ) NOT NULL,
    	deptno INT UNSIGNED NOT NULL,
    	hiredate DATE NOT NULL,
    FOREIGN KEY ( deptno ) REFERENCES t_dept ( deptno ) 
    );
    

    此时如果字表中存在使用父表字段,则附表无法直接删除这一个被使用的数据。
    如图:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    外键约束的闭环问题

    • 如果形成外键闭环,我们就无法删除任何一张表的记录

    在这里插入图片描述

  • 相关阅读:
    【定义】三角形行列式和对角行列式
    `Algorithm-Solution` `AcWing` 4726. 寻找数字
    第十三届蓝桥杯C++B组国赛C题——卡牌 (AC)
    手把手怎么把照片修复高清,p图小白也能轻松上手
    linuxcnc分支machinekit
    机器学习 | 简单但是能提升模型效果的特征标准化方法(RobustScaler、MinMaxScaler、StandardScaler 比较和解析)
    一次跨域问题的记录
    线性表:数组、链表、栈、队列
    Elasticsearch全文搜索引擎
    VVC中图块划分结果在图像上显示(中间有一段没写完)
  • 原文地址:https://blog.csdn.net/HBUT_WANGWEI/article/details/127095988