mysql如何删除主码约束_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)

797eacea986afa7093df77f23761e1ce.png

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

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

alter table student

drop CHECK student_chk_1;

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

alter table table_name

drop index constraint_name;

原文:https://www.cnblogs.com/baebae996/p/12919391.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`ALTER` 语句可以用于修改已有表的结构,包括添加修改删除列,修改表名、添加删除约束等。 以下是一些常见的 `ALTER` 语句用法: 1. 添加新列: ```sql ALTER TABLE table_name ADD column_name datatype; ``` 其中 `table_name` 是要修改的表名,`column_name` 是要添加的新列名,`datatype` 是新列的数据类型。 2. 修改列: ```sql ALTER TABLE table_name ALTER COLUMN column_name datatype; ``` 其中 `table_name` 是要修改的表名,`column_name` 是要修改的列名,`datatype` 是要修改的数据类型。 3. 删除列: ```sql ALTER TABLE table_name DROP COLUMN column_name; ``` 其中 `table_name` 是要修改的表名,`column_name` 是要删除的列名。 4. 修改表名: ```sql ALTER TABLE table_name RENAME TO new_table_name; ``` 其中 `table_name` 是要修改的表名,`new_table_name` 是新的表名。 5. 添加约束: ```sql ALTER TABLE table_name ADD CONSTRAINT constraint_name constraint_type (column_name); ``` 其中 `table_name` 是要添加约束的表名,`constraint_name` 是约束的名称,`constraint_type` 是约束的类型,可以是 `PRIMARY KEY`、`UNIQUE`、`FOREIGN KEY` 等,`column_name` 是要添加约束的列名。 6. 删除约束: ```sql ALTER TABLE table_name DROP CONSTRAINT constraint_name; ``` 其中 `table_name` 是要删除约束的表名,`constraint_name` 是要删除约束名称。 注意,不同的数据库管理系统可能会有稍微不同的语法和用法,以上示例仅供参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值