约束条件
约束条件是在表和字段上强制执行的数据检验规则,
它是为了防止不规范的数据进入数据库,
在我们对数据执行插入、修改、删除等一系列操作的时候,
数据库管理系统会自动按照指定的约束条件对数据进行监测,
它主要是对空值和重复值的检测,来保证数据存储的完整性和准确性。
按照约束的不同功能,MySQL中常用的约束条件有以下六种。
1.主键约束
主键是表中非空不重复的字段,它可以唯一的标识表中的一条记录。
作为主键的字段取值不能为空,也不可以重复,并且一张表中只能有一个主键,
但是构成主键的字段可以是一个也可以有多个。
也就是说主键只能有一个,但是一个主键可以由多个字段构成,
当多个字段的取值完全一样的情况下才会违反主键约束。
①添加主键约束的方法1:
creat table <表名> (
<字段名1> <字段类型1> primary key,
<字段名2> <字段类型2>,
……
<字段名n> <字段类型n>
);
示例:
create table employee(
e_id int primary key,
e_name varchar(5),
e_sex varchar(5),
e_age int,
d_id int
);
②添加主键约束的方法2:
create table <表名>(
<字段名1> <字段类型1>,
<字段名2> <字段类型2>,
......
<字段名n> <字段类型n>,
[constraint 主键约束名] primary key(字段名1[,字段名2,...字段名n])
);
示例:
create table employee(
e_name varchar(5),
e_sex varchar(5),
e_age int,
d_id int,
primary key(e_name,e_sex)
);
③删除主键约束的方法:
alter table <表名> drop primary key;
示例:
alter table employee drop primary key;
2.唯一约束
唯一约束要求指定字段的数据取值不能重复,可以是空值,但是空值也只能出现一次。
①添加唯一约束的方法1:
creat table <表名> (
<字段名1> <字段类型1> unique,
<字段名2> <字段类型2>,
……
<字段名n> <字段类型n>
);
示例:
create table employee(
e_id int,
e_name varchar(5) unique,
e_sex varchar(5),
e_age int,
d_id int
);
②添加唯一约束的方法2:
creat table <表名> (
<字段名1> <字段类型1>,
<字段名2> <字段类型2>,
……
<字段名n> <字段类型n>,
[constraint 唯一约束名] unique (字段名1[,字段名2...字段名n])
);
示例:
create table employee(
e_id int,
e_name varchar(5),
e_sex varchar(5),
e_age int,
d_id int,
unique (e_name,e_sex)
);
③删除唯一约束的方法:
alter table <表名> drop index <唯一约束名>;
如果单个字段没有指定唯一约束名,则默认的唯一约束名为字段名。
如果是多个字段组合为唯一约束时候,默认的唯一约束名为第一个字段的名称。
如果指定了约束名,则删除的时候写约束名。
示例:
alter table employee drop index e_name;
3.自动增长约束
自动增长约束是要求指定字段的数据取值自动增长,默认是从1开始,
每增加一条记录,这个字段的取值就会加1,
所以它只适用数值型和日期时间型字段,并且要配合主键一起使用。
①添加字段增长约束的方法:
creat table <表名> (
<字段名1> <字段类型1> primary key auto_increment,
<字段名2> <字段类型2>,
……
<字段名n> <字段类型n>
);
示例:
create table employee(
e_id int primary key auto_increment,
e_name varchar(5),
e_sex varchar(5),
e_age int,
d_id int
);
②删除自动增长约束的方法:
alter table <表名> modify <字段名> <字段类型>;
示例:
alter table employee modify e_id int;
4.非空约束
非空约束是要求指定字段的取值不能为空值。
①非空约束的方法:
creat table <表名> (
<字段名1> <字段类型1> not null,
<字段名2> <字段类型2>,
……
<字段名n> <字段类型n>
);
示例:
create table employee(
e_id int,
e_name varchar(5) not null,
e_sex varchar(5),
e_age int,
d_id int
);
②删除非空约束的方法:
alter table <表名> modify <字段名> <字段类型> [null];
示例:
alter table employee modify e_name int;
5.默认约束
默认约束是指在插入新记录的时候,如果没有为指定字段赋值,
数据库管理系统会自动为这个字段赋值为默认约束设定的值。
①添加默认约束的方法:
creat table <表名> (
<字段名1> <字段类型1> default value,
<字段名2> <字段类型2>,
……
<字段名n> <字段类型n>
);
示例:
create table employee(
e_id int,
e_name varchar(5),
e_sex varchar(5),
e_age int default 0,
d_id int
);
②删除默认约束的方法:
alter table <表名> modify <字段名> <字段类型>;
示例:
alter table employee modify e_age int;
6.外键约束
外键约束是指一个表中的字段取值依赖于另一个表中字段的值。
主键所在的表叫主表,外键所在的表叫从表。
每一个外键值必须与主表中的主键值相对应。
①添加外键约束的方法:
creat table <表名> (
<字段名1> <字段类型1>,
<字段名2> <字段类型2>,
……
<字段名n> <字段类型n>,
[constraint 外键约束名] foreign key(字段名) references <主表>(主键字段)
);
示例:
-- 创建一个主表
create table department(
d_id int primary key,
d_name varchar(5),
d_num int);
-- 创建从表的同时添加外键
create table employee(
e_id int primary key,
e_name varchar(5),
e_sex varchar(5),
e_age int,
d_id int,
foreign key(d_id) references department(d_id)
);
②删除外键约束的方法:
alter table <表名> drop foreign key <外键约束名>;
先删除从表再删除主表。
先删除外键约束,再删除表。
示例:
alter table employee drop foreign key fk_d_id;
7.小结
约束条件 特点
主键约束(PRIMARY KEY) 非空不重复
非空约束(NOT NULL) 不能为空
唯一约束(UNIQUE) 不能重复
自增字段(AUTO_INCREMENT) 自动增长
默认约束(DEFAULT) 默认值
外键约束(FOREIGN KEY) 与主键相对应








暂无数据