这是命令行操作MySQL数据库系列博客的第十一篇,今天这篇博客记录如何《调整列的完整性约束》。(调整 主键、外键、非空、唯一、自增长和默认值约束)


一、 主键PK、外键FK和 唯一键UK

查询键的别名show index 或 keys from 表名;

1. 新增(键的别名是自定义的)

alter table 表名 add constraint 键的别名 键(字段名); 键:主键、外键、唯一键

例:

首先创建两张表用于插入主键和唯一键。

mysql 创建两个字段唯一主键_mysql 创建两个字段唯一主键


新增主键:

alter table s1 add constraint pk_id PRIMARY KEY(id);

新增唯一键:

alter table s2 add constraint uk_id UNIQUE(id);

mysql 创建两个字段唯一主键_mysql 创建两个字段唯一主键_02

查看:

貌似主键不可以自定义名字呀!

mysql 创建两个字段唯一主键_mysql 创建两个字段唯一主键_03

新增外键:
ALTER TABLE 表名2 ADD CONSTRAINT 外键别名 FOREIGN KEY(字段) REFERENCES 表名1(字段);

例: 给s2表的id字段设置外键,对应s1表的id字段

ALTER TABLE s2 ADD CONSTRAINT FK_S1ID FOREIGN KEY(id) REFERENCES s1(id);

外键可以自定义名字!

2. 删除

删除主键:alter table 表名 drop PRIMARY KEY; 删除外键和唯一键:alter table 表名 drop index 键的别名

例:
删除主键:

alter table s1 drop PRIMARY KEY;

删除唯一键:

alter table s2 drop index uk_id;

mysql 创建两个字段唯一主键_mysql_04

3.修改

按照上述步骤 先执行 删除 然后再 新增 即可!

原因:
修改需要花费特多的时间,假如数据越多,则花费时间越多,倒不如先执行删除然后再新增,效果特高。


二、修改默认值、自增长和非空

使用如下语法重新定义列即可:
alter table 表名 modify 列名 类定义;

例:

以s3表为例修改和删除

mysql 创建两个字段唯一主键_外键_05

  1. 设置字段id为自增长
alter table s3 modify id int AUTO_INCREMENT;

mysql 创建两个字段唯一主键_外键_06

  1. 设置默认值和非空
alter table s3 modify name varchar(32) NOT NULL DEFAULT '无名字';

mysql 创建两个字段唯一主键_外键_07

  1. 取消默认值和非空
alter table s3 modify name varchar(32);

mysql 创建两个字段唯一主键_mysql 创建两个字段唯一主键_08

其实就跟创建表时定义字段差不多,类似。


总结:
这个的话,目前博主还是新手,没怎么用到过,也需这再项目中真的会有用吧,为表的字段添加外键和删除外键还没搞会,以后有需要用到了,再来研究再补上吧。(貌似调整列的完整性约束也挺有用的(●’◡’●))