mysql笔记(11)-约束的添加、修改和删除

本文将简单介绍几种常见的约束类型,以及添加/修改/删除约束的方式

一、约束类型

在MySQL中,有如下几种约束:
(1) NOT NULL:指示某列不能存储空值
(2) UNIQUE:保证某列的每行必须有唯一的值
(3) PRIMARY KEY:指示某一列为表的主码,是非空且唯一
(4) CHECK:保证列中的值符合指定的条件
(5) DEFAULT:规定没有给列赋值时的默认值
(6) FORIGN KEY:保证列中的数据必须来源于另一个表的某一列(参照完整性)

二、添加约束

1、建表时添加约束

例如 在新建instructor表时
设置ID为主码,name有非空约束,dept_name有默认值
并设置检查约束salary>0

create table instructor{
ID varchar(5) PRIMARY KEY,
name varchar(20) NOT NULL,
dept_name varchar(20) DEFAULT 'Physcis',
salary decimal(8,2),
CHECK(salary>0)
};
2、表结构已存在时添加约束

有2种写法:
(1)仅为某一列添加约束

//添加NOT NULL约束:用第(2)种写法

//添加UNIQUE约束
alter table table_name
add UNIQUE(column_name);

//添加PRIMARY KEY约束  
alter table table_name
add PRIMARY KEY(column_name);

//添加DEFAULT约束
alter table table_name
add CHECK(指定条件);

//添加DEFAULT约束
alter table table_name
alter column_name set DEFAULT 'xxx';

(2)更改(重写)某一列的数据类型、约束类型(推荐)

alter table table_name
modify column column_name data_type constraint;

三、修改约束

上述提到的alter+modify的写法 同样可以用于修改约束类型
例如 在instructor表中 修改dept_name的默认值为'Music'

alter table instructor
modify column dept_name varchar(20) DEFAULT 'Music';

四、删除约束

//删除NOT NULL约束:用alter+modify

//删除PRIMARY KEY
alter table table_name
drop PRIMARY KEY;

//删除DEFAULT约束
alter table table_name
alter column_name drop DEFAULT;

当需要删除UNIQUE或CHECK约束时
我们需要查看建表语句 show create table table_name \G
来获取约束的别名
例如 已知在student表中
对 tot_credit列有CHECK约束 (tot_cred>=0)
11-1.png
如上图所示,这个CHECK约束的别名为'student_chk_1'
接下来就可以删除这个约束了

alter table student
drop CHECK student_chk_1;

我们可以用类似的方式 来删除UNIQUE约束

alter table table_name
drop index constraint_name;

猜你喜欢

转载自www.cnblogs.com/baebae996/p/12919391.html