Mysql约束
1、作用
约束定义为确保数据完整性必须遵循的规则。
约束可以在创建表的过程中创建,也可以稍后再添加。
在创建表后添加约束时,它将检查现有数据以确定其是否违背该约束。
如果现有数据违背了将添加的约束,那么将不会向指定列施加该约束。
2、约束的类型
MySQL 支持可对表中的列定义的以下约束:
1) 主键约束
2) 唯一约束
3) 外键约束
3、主键约束
对一列或一组列定义,这些列的值唯一地标识表中的所有行。
这些列称为主键列。
主键列不能包含 NULL 值,因为它用于唯一地标识表中的行。
语法:
CREATE TABLE table_name
(
<column definition 1>,
<column definition 2>,
............
<constraint_definition>);
<constraint_definition>=
[CONSTRAINT constraint_name] PRIMARY KEY (<column_name> [{,
<column_name>}...]))
实例:
新建一个表格名为emp1,列名分别为id,name,age,address这四个,将id设置为主键
create table emp1
(
id int,
name varchar(20),
age int,
address varchar(30),
Constraint Key_ID primary key(id)
);
或者
create table emp1
(
id int primary key,
name varchar(20),
age int,
address varchar(30)
);
注:代码1版本中【 Constraint Key_ID primary key(id) 】就是设置id列成主键的标准代码,Constraint是约束的固定格式,Key_ID是设置的约束的名字,可随便取,Primary key 就是唯一约束的关键词,(id)就代表将id列设置为唯一
可以通过这个按钮看到emp1的id已经是主键了,有一个钥匙标记,或者通过desc命令查看结构
4、唯一约束
用于强制非主键列的唯一性=。
与主键约束类似,但是它在唯一约束所定义的列中允许 NULL 值。
可以在表上创建多个唯一约束。
语法:
CREATE TABLE table_name
(
<column_definition_1>,
<column_definition_2>,
.........
<constraint_definition>
<constraint_definition>=
[CONSTRAINT constraint_name] UNIQUE (<column_name>
[{,
<column_name>}...]))
实例:
设计表emp2,列和之前的一样加一列电话号码,因为我们知道电话phone是唯一的,设计id为主键,设计电话phone唯一
create table emp2
(
id int,
name varchar(20),
age int,
address varchar(30),
phone int,
Constraint Key_ID primary key(id),
Constraint Unique_Phone UNIQUE(phone)
);
或者
create table emp2
(
id int Primary Key,
name varchar(20),
age int,
address varchar(30),
phone int UNIQUE
);
注:代码1版本中【 Constraint Unique_Phone UNIQUE(phone) 】就是设置phone列成唯一性的代码,Constraint是约束的固定格式,Unique_Phone是设置的约束的名字,可随便取,UNIQUE就是唯一约束的关键词,(phone)就代表将phone列设置为唯一。
5、外键约束(后续详细介绍)
消除当一个表中的数据依赖于另一个表中的数据时两个表中的不一致。
表中的外键总是引用其他表中的主键列。
包含引用为其他表中外键的主键的表称为主表或被引用表。
包含引用其他表中主键的外键的表称为事务表或引用表。