MySQL修改表结构(五)下

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MySQL修改表结构(五)

三. 维护约束条件


也同样, 像 二.二 部分开始的那样, 先删除 表 yjlCol, 再重新建表 yjlCol, 用最纯净的表来进行演示。


将这个表 yjlCol 删除掉, 再重新创建 yjlCol, 仍然用最开始的那条语句, 只有id,name,sex 三个字段。


  drop table yjlCol; 


删除之后,重新创建表。


create table yjlCol(
     id int(11),
    name varchar(20),
     sex varchar(10)
   );


关于表的维护条件, 主要分为四大类, 一类是 关于主键的, 一类是关于外键的, 一类是关于 非空,默认,自动增长 这样的, 一类是 唯一约束。


下面针对的,都是已经创建好的表,不需要修改字段的。 只需要添加约束的。 如果要修改字段的同时再添加约束, 可以参考 上面的第二段内容,将表的字段维护好之后,再进行维护约束。


三.一 非空,默认,自动增长 约束条件


三.一.一 添加 非空 约束条件


如 name 字段添加 唯一的约束。 用 modify 修改数据类型,后面 添加约束


  alter table yjlCol modify name varchar(10) not null;


20191118152220481.png


三.一.二 删除唯一 约束条件


如 name 字段 删除 唯一约束 用 modify 修改数据类型, 后面不添加约束


  alter table yjlCol modify name varchar(10);


20191118152232533.png


三.二 唯一约束条件


如 name 字段, 添加 唯一约束


三.二.一 添加唯一约束


可以用


  alter table yjlCol modify name varchar(10) unique;


但不建议这么使用。 唯一约束,有专门的方法, 主键也是,外键也是, 均用自己专门的方法。


建议命令使用:


  alter table 表名 add [constraint 唯一约束名] Unique [Key] (列名);


key 可以加也可以不加。


演示:


  alter table yjlCol add unique (name);


20191118152245763.png


三.二.二 删除唯一约束


命令:


  alter table 表名 drop index 列名;


会变成 索引 index


演示:


  alter table yjlCol drop index name;


20191118152252130.png


三.三 主键约束条件


三.三.一 添加单个主键


可以用 上面的语句:


  alter table yjlCol modify id int(11) primary key;


来进行添加主键。


但不建议使用, 建议使用下面的命令:


  alter table 表名  add [constraint 主键约束名] primary key (列名)


演示:


  alter table yjlCol add primary key(id);


20191118152313395.png


三.三.二 删除主键约束


命令:


  alter table 表名 drop primary key;


演示:


  alter table yjlCol drop primary key;


20191118152828218.png


老蝴蝶提示:删除时,如果该主键是自增长的话, 那么需要先按照 三.一 的部分先删除自增长,然后才能 用 三.三.二 的部分 删除主键。


自增长的主键的话,直接删除的报错信息。


20191118152509579.png


应该先删除自动增长, 再删除主键。


  alter table yjlCol modify id int(11);
  alter table yjlCol drop primary key;


20191118152517768.png


三.三.三 添加 复合主键约束


命令:


  alter table 表名  add constraint 主键约束名  primary key (列名1,列名2);


如 给 yjlCol 中 id,name 添加联合主键。


 alter table yjlCol add constraint PK_YJLCOL primary key(id,name);


20191118152454921.png


三.三.四 删除 联合主键


用 上面 的 三.三.二 语句时:


  alter table yjlCol drop primary key;


是可以正常 删除 联合主键的。


三.四 外键 Foreign Key


还是用 上一章节的 dept 表。 有id 和name 两个属性。


20191118152553811.png


在 yjlCol 表里面添加一个 deptId 的字段, Int(11) 类型, 放置在最后。


  alter table yjlCol add deptId int(11);


20191118152558901.png


三.四.一 添加外键


命令:


  alter table 子表名  add constraint 外键名  foreign key(子表字段) references 父表名(字段);


演示:


  alter table yjlCol add constraint FK_YJLCOL_deptId foreign key(deptId) references dept(id);


20191118152602425.png


三.四.二 删除外键


命令:


  alter table 子表名  drop foreign key 外键名


演示:


  alter table yjlCol drop foreign key FK_YJLCOL_deptId;


20191118152612832.png


一.四.四 (删除有外键关联的主表)


1 .user 表的 外键信息是: 外键名称是 fk_user_deptId


20191118165218119.png


2 . 删除 user 表里面的外键信息


  alter table user drop foreign key fk_user_deptId;


20191118165343164.png


3 .然后再删除主表 dept, 可以正常的进行删除了。


  drop table dept;


2019111816543037.png


关于表的操作,基本上就这么多。 谢谢!!!

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
5月前
|
Oracle 关系型数据库 MySQL
MySQL复制表结构create table as与like的区别
MySQL复制表结构create table as与like的区别
|
6月前
|
存储 SQL 关系型数据库
表结构的操作【MySQL】
表结构的操作【MySQL】
52 0
|
2月前
|
存储 关系型数据库 MySQL
MySQL技能完整学习列表5、数据库操作——1、创建数据库和表——2、修改表结构(ALTER TABLE)
MySQL技能完整学习列表5、数据库操作——1、创建数据库和表——2、修改表结构(ALTER TABLE)
183 0
|
7月前
|
SQL 关系型数据库 MySQL
MySQL数据库---库基本操作 以及 表结构的操作(DDL)
MySQL数据库---库基本操作 以及 表结构的操作(DDL)
86 3
|
4月前
|
存储 关系型数据库 MySQL
MySQL不同版本下表结构和数据存储总结
MySQL不同版本下表结构和数据存储总结
66 0
|
4月前
|
SQL 存储 关系型数据库
MySQL下使用SQL命令进行表结构与数据复制实践
MySQL下使用SQL命令进行表结构与数据复制实践
61 0
|
11月前
|
SQL 关系型数据库 MySQL
MySQL-在线处理大表数据 & 在线修改大表的表结构
MySQL-在线处理大表数据 & 在线修改大表的表结构
170 0
|
9月前
|
SQL 数据可视化 关系型数据库
使用SQL-front导出MySQL表结构为excel或word文档
使用SQL-front导出MySQL表结构为excel或word文档
164 0
|
9月前
|
关系型数据库 MySQL 索引
Mysql复制表结构与表数据
Mysql复制表结构与表数据
120 0
|
10月前
|
存储 缓存 关系型数据库
高性能 MySQL(五):设计表结构时,如何选择数据类型会更高效?
MySQL 支持的数据类型有很多,在设计表结构时,选择正确的数据类型可以获得更高的性能。如果你还不知道如何选择,那么希望这篇文章能帮到你。
153 0
高性能 MySQL(五):设计表结构时,如何选择数据类型会更高效?