MySQL修改表结构(五)下

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 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


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

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
2月前
|
存储 关系型数据库 MySQL
使用命令行cmd查询MySQL表结构信息技巧分享。
掌握了这些命令和技巧,您就能快速并有效地从命令行中查询MySQL表的结构信息,进而支持数据库维护、架构审查和优化等工作。
255 9
|
存储 关系型数据库 MySQL
深入解析MySQL数据存储机制:从表结构到物理存储
深入解析MySQL数据存储机制:从表结构到物理存储
1405 1
|
关系型数据库 MySQL 数据库
MySQL 复制A的表结构和数据到表B
在MySQL中复制表A至表B可通过不同方法实现。一种是先用`CREATE TABLE B LIKE A;`复制结构,再用`INSERT INTO B SELECT * FROM A;`填充数据。另一种更简便的方法是直接使用`CREATE TABLE B AS SELECT * FROM A;`一次性完成结构和数据的复制。还有一种高级方法是通过`SHOW CREATE TABLE A;`获取表A的创建语句,手动调整后创建表B,如有需要再用`INSERT INTO ... SELECT`复制数据。注意权限问题、跨数据库复制时需指定数据库名,以及大表复制时可能影响性能。
748 1
|
SQL 关系型数据库 MySQL
Mysql:如何自定义导出表结构
通过以上方法,你可以灵活地自定义导出MySQL中的表结构,以满足不同的需求和场景。在进行操作的时候要注意权限问题以及路径问题,确保MySQL用户有权限写入指定的文件路径。在执行导出任务之前,还应确保你对数据库及其内容有足够的了解,以避免不必要的数据丢失或损坏。
306 1
|
SQL 关系型数据库 MySQL
实时计算 Flink版产品使用问题之要将MySQL同步到Doris,并设置整库同步,只变更库名、表名和表结构都不变,该如何设置
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
存储 关系型数据库 MySQL
Mysql表结构同步存储过程(适用于模版表)
Mysql表结构同步存储过程(适用于模版表)
135 0
|
SQL 关系型数据库 MySQL
mysqldiff - Golang 针对 MySQL 数据库表结构的差异 SQL 工具
Golang 针对 MySQL 数据库表结构的差异 SQL 工具。https://github.com/camry/mysqldiff
186 7
|
存储 SQL 关系型数据库
【MySQL进阶之路 | 基础篇】基本的SELECT语句及DESC显示表结构
【MySQL进阶之路 | 基础篇】基本的SELECT语句及DESC显示表结构
|
SQL 存储 关系型数据库
【MySQL-6】DDL的表结构的数据类型盘点&案例演示
【MySQL-6】DDL的表结构的数据类型盘点&案例演示
|
存储 关系型数据库 MySQL
【MySQL技术内幕】3.3-套接字文件、pid文件和表结构定义文件
【MySQL技术内幕】3.3-套接字文件、pid文件和表结构定义文件
152 0

推荐镜像

更多