这是命令行操作MySQL数据库系列博客的第十一篇,今天这篇博客记录如何《调整列的完整性约束》。(调整 主键、外键、非空、唯一、自增长和默认值约束)
一、 主键PK、外键FK和 唯一键UK
查询键的别名:show index 或 keys from 表名;
1. 新增(键的别名是自定义的)
alter table 表名 add constraint 键的别名 键(字段名);
键:主键、外键、唯一键
例:
首先创建两张表用于插入主键和唯一键。
新增主键:
alter table s1 add constraint pk_id PRIMARY KEY(id);
新增唯一键:
alter table s2 add constraint uk_id UNIQUE(id);
查看:
貌似主键不可以自定义名字呀!
新增外键: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;
3.修改
按照上述步骤 先执行 删除 然后再 新增 即可!
原因:
修改需要花费特多的时间,假如数据越多,则花费时间越多,倒不如先执行删除然后再新增,效果特高。
二、修改默认值、自增长和非空
使用如下语法重新定义列即可:alter table 表名 modify 列名 类定义;
例:
以s3表为例修改和删除
- 设置字段id为自增长
alter table s3 modify id int AUTO_INCREMENT;
- 设置默认值和非空
alter table s3 modify name varchar(32) NOT NULL DEFAULT '无名字';
- 取消默认值和非空
alter table s3 modify name varchar(32);
其实就跟创建表时定义字段差不多,类似。
总结:
这个的话,目前博主还是新手,没怎么用到过,也需这再项目中真的会有用吧,为表的字段添加外键和删除外键还没搞会,以后有需要用到了,再来研究再补上吧。(貌似调整列的完整性约束也挺有用的(●’◡’●))