MySQL中“约束(constraint)”操作语法结构及应用场景:
1.概念
针对表中的数据,进行额外的限制,就称为约束。
2.
约束的分类:
2.1 角度一:从功能上分:
not null
非空约束
unique
唯一性约束
primary key
主键约束
foreign key
外键约束
check
检查约束
default
默认值约束
2.2 角度二:约束的作用范围、声明位置
列级约束 VS 表级约束
2.3 角度三:从约束的作用的列的个数:
单列约束 VS 多列约束
---------------------------------------(分割线)------------------------------------
3.
如何使用约束:
情况一: 在create table
时,与创建表的字段同时执行。
情况二: 在alter table
时,对约束进行操作:添加约束、删除约束。
---------------------------------------(分割线)------------------------------------
4.
not null
: 非空约束
说明: not null
约束只能只用列级约束来定义
我们新建一个emp2表作为研究对象,代码如下:
CREATE TABLE emp2(
id INT NOT NULL, # 列级约束(一次性约束一列)
emp_name VARCHAR(15) NOT NULL, # 列级约束
salary DOUBLE(10,2),
email VARCHAR(26)
);
备注:以上代码中,我们通过 NOT NULL
对 id
和 emp_name
行进了非空约束。此时,表 emp2 的id
列和emp_name
列被声明了非空约束,在添加数据的时候,这两列不能为空。
我们测试一下这里的非空约束:
1.在有约束的情况下,给表格添加数据的正确操作
INSERT INTO emp2(id,emp_name,salary,email)
VALUES(1,'Tom',6000,'Tom@163.com');
我们通过查询语句来查询一下此时的表格数据,查询结果如下:
通过查询结果说明以上的添加操作成功。
++++++++++++++++(分割线)+++++++++++++++++
在有约束的情况下,添加的错误操作类型1(有添加了非空约束的字段被给了空值)(在添加数据的时候定义了被非空约束的相关字段)
INSERT INTO emp2(id,emp_name,salary,email)
VALUES(NULL,'Tom',6000,'Tom@163.com');
++++++++++++++++(分割线)+++++++++++++++++
在有约束的情况下,添加的错误操作类型2(有添加了非空约束的字段被给了空值)(在添加数据的时候没有定义被非空约束的相关字段)
INSERT INTO emp2(id,salary,email)
VALUES(1,6000,'Tom@163.com');
&&&&&&&&&&&&(分割线)&&&&&&&&&&&&&
接下来,我们介绍一下,如何删除非空约束(其实是一种对约束的修改)
举例:将emp2 表中字段id由非空约束 not null 改为可以为空,参考代码如下:
ALTER TABLE emp2
MODIFY id INT NULL;
此时,我们在添加数据的时候,字段 id 对应的数据是可以为空的,例如:
INSERT INTO emp2(id,emp_name,salary,email)
VALUES(NULL,'Tom',6000,'Tom@163.com');
数据顺利添加成功,此时,我们通过查询语句来查询一下此时的表格数据,查询结果如下:
我们看到,此时,表id字段对应的数据出现了一个null,添加成功。
&&&&a