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 ) 
);

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

外键约束的闭环问题

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

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/HBUT_WANGWEI/article/details/127095988