约束条件

约束条件是在表和字段上强制执行的数据检验规则,

它是为了防止不规范的数据进入数据库,

在我们对数据执行插入、修改、删除等一系列操作的时候,

数据库管理系统会自动按照指定的约束条件对数据进行监测,

它主要是对空值和重复值的检测,来保证数据存储的完整性和准确性。

按照约束的不同功能,MySQL中常用的约束条件有以下六种。

1.主键约束

主键是表中非空不重复的字段,它可以唯一的标识表中的一条记录。

作为主键的字段取值不能为空,也不可以重复,并且一张表中只能有一个主键,

但是构成主键的字段可以是一个也可以有多个。

也就是说主键只能有一个,但是一个主键可以由多个字段构成,

当多个字段的取值完全一样的情况下才会违反主键约束。

①添加主键约束的方法1:

creat table (
 primary key,
 ,
……
);

示例:

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 (
 ,
 ,
......
 ,
[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 (
 unique,
 ,
……
);

示例:

create table employee(
e_id int,
e_name varchar(5) unique,
e_sex varchar(5),
e_age int,
d_id int
);

②添加唯一约束的方法2:

creat table (
 ,
 ,
……
 ,
[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 (
 primary key auto_increment,
 ,
……
);

示例:

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 (
 not null,
 ,
……
);

示例:

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 (
 default value,
 ,
……
);

示例:

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 (
 ,
 ,
……
 ,
[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) 与主键相对应