三、约束

一、约束类型

• 非空约束(not null)

• 唯一性约束(unique)

• 主键约束(primary key) PK

• 外键约束(foreign key) FK

• 检查约束(目前 MySQL 不支持、Oracle 支持)

二、创建表时添加约束

2.1查询表中的约束信息

SHOW KEYS FROM 表名

2.2示例一

创建 departments 表包含 department_id 该列为主键且自动增长,department_name 列不允许重复,location_id 列不允含有空值。

1 create table departments(
2 department_id int primary key auto_increment,
3 department_name varchar(30) unique,
4 location_id int not null);

2.3示例二

创建 employees 表包含 employees_id 该列为主键且自动增长,last_name 列不允许含有 空值,email 列不允许有重复不允许含有空值,dept_id 为外键参照 departments 表的主键。

create table employees(
employees_id int primary key auto_increment,
last_n ame varchar(30) not null,
email varchar(40) not null unique,
dept_id int,
constrain temp_fk foreign key(dept_id) references departments(department_id));

三、修改表实现约束的添加与删除

3.1主键约束

3.1.1 添加主键约束

ALTER TABLE 表名 ADD PRIMARY KEY(列名)

示例 :

将 emp 表中的 employee_id 修改为主键且自动增长

添加主键:alter table emp add primary key(employee_id);

添加自动增长:alter table emp modify employee_id int auto_increment;

3.1.2 删除主键约束

ALTER TABLE 表名 DROP PRIMARY KEY

注意:删除主键时,如果主键列具备自动增长能力,需要先去掉自动增长,然后在删除 主键。

示例:

删除 employee_id 的主键约束。

去掉自动增长: alter table emp modify employee_id int;

删除主键:alter table emp drop primary key;

3.2非空约束

3.2.1 添加非空约束

ALTER TABLE 表名 MODIFY 列名 类型 NOT NULL

示例 :

向 emp 表中的 salary 添加非空约束。

alter table emp modify salary float(8,2) not null;

3.2.2 删除非空约束

ALTER TABLE 表名 MODIFY 列名 类型 NULL

示例 :

删除 salary 的非空约束。

alter table emp modify salary float(8,2) null;

3.3唯一约束

3.3.1 添加唯一约束

ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名)

示例:

向 emp 表中的 name 添加唯一约束。

alter table emp add constraint emp_uk unique(name);

3.3.2 删除唯一约束

ALTER TABLE 表名 DROP KEY 约束名

示例:

删除 name 的唯一约束。

alter table emp drop key emp_uk;

3.4外键约束

3.4.1 添加外键约束

ALTER TABLE 表 名 ADD CONSTRAINT 约 束 名 FOREIGN KEY( 列 名 ) REFERENCES 参照的表名(参照的列名)

示例一:

修改 emp 表,添加 dept_id 列。

alter table emp add column dept_id int; 6.3.4.1.2

示例二:

向 emp 表中的 dept_id 列添加外键约束。

alter table emp add constraint e_fk foreign key(dept_id) references departments(department_id);

3.4.2 删除外键约束

删除外键:

ALTER TABLE 表名 DROP FOREIGN KEY 约束名

删除外键索引(索引名与约束名相同):

ALTER TABLE 表名 DROP INDEX 索引名

示例:

删除 dept_id 的外键约束。

删除外键:alter table emp drop foreign key e_fk;

删除索引:alter table emp drop index e_fk;

原文地址:https://www.cnblogs.com/qiaoxin11/p/12794577.html