mysql如何删除主码约束_mysql笔记(11)-约束的添加、修改和删除

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

一、约束类型

在MySQL中,有如下几种约束:

(1) NOT NULL:指示某列不能存储空值

(2) UNIQUE:保证某列的每行必须有唯一的值

(3) PRIMARY KEY:指示某一列为表的主码,是非空且唯一的

(4) CHECK:保证列中的值符合指定的条件

(5) DEFAULT:规定没有给列赋值时的默认值

(6) FOREIGN 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)

797eacea986afa7093df77f23761e1ce.png

如上图所示,这个CHECK约束的别名为'student_chk_1'

接下来就可以删除这个约束了

alter table student

drop CHECK student_chk_1;

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

alter table table_name

drop index constraint_name;

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页