
一、主键约束
要求:
主键约束要求字段的值在全表必须唯一,而且不能为 null 值;
建议主键一定要使用数字类型,因为数字的简述速度会非常的快;
如果主键是数字类型,还可以设置自动增长;
例如:
CREATE TABLE t_teacher(id INT PRIMARY KEY AUTO_INCREMENT,...);
二、非空约束
要求:
非空约束要求字段的值不能为NULL值;
NULL值是没有数据的意思,而不是空字符串;
CREATE TABLE t_teacher(id INT PRIMARY KEY AUTO_INCREMENT,name VARCHAR(200) NOT NULL,married BOOLEAN NOT NULL DEFAULT FALSE # 设置一个默认值false);
其中
boolean类型会被映射成TINYINT这个数据类型,则 false 则为 0,true 为 1 。
三、唯一约束
要求:
- 唯一约束要求字段值如果不为
NULL,那么在全表必须唯一。
例如:
CREATE TABLE t_teacher(...tel CHAR(11) NOT NULL UNIQUE # 加上关键字 UNIQUE 即可);
四、外键约束
要求:
外键约束用来保证关联数据的逻辑关系。
对于有父子关系的两张表而言,子表中需要有外键约束的定义;
例如:
父表 - 部门表
CREATE TABLE t_dept(deptno INT UNSIGNED PRIMARY KEY,dname VARCHAR(20) NOT NULL UNIQUE,tel CHAR(4));
子表 - 员工表
外键约束的定义是写在子表上的
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)# FOREIGN KEY + 外键字段的名称 + REFERENCES + 父表(父表中进行关联的字段));
注意:
使用外键约束可能会造成的闭环问题,即如果多张表如果形成了外键闭环的话,我们将无法删除任何一张表的记录。
