热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql5.7ddl原子_MySQLTableMySQL5.7版本DDL整理

主键索引维护1、新增主键索引##可以使用ALGORITHMINPLACELOCKNONE方式,操作期间允许读写。ALTERTABLEtb001ADDPRIMARYKE

主键索引维护

1、新增主键索引

## 可以使用ALGORITHM=INPLACE+LOCK=NONE方式,操作期间允许读写。

ALTER TABLE tb001

ADD PRIMARY KEY (ID),

ALGORITHM = INPLACE;

Query OK, 0 rows affected (22.13 sec)

Records: 0 Duplicates: 0 Warnings: 0

2、官网称如果创建主键索引时需要隐式转换列为NOT NULL则不能使用INPLACE方式(ALGORITHM=INPLACE is not permitted under certain conditions if columns have to be converted to NOT NULL)。

但在MySQL 5.7.19版本中测试发现在允许为NULL的列上创建主键,采用REBUILD INPLACE方式的Online DDL,操作期间允许表并发读写。

2、删除主键索引

## 只能使用ALGORITHM=COPY+LOCK=SHARED方式,操作期间允许读不允许写。

ALTER TABLE tb001

DROP PRIMARY KEY,

ALGORITHM = INPLACE;

ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Dropping a primary key is not allowed without also adding a new primary key. Try ALGORITHM=COPY.

ALTER TABLE tb001

DROP PRIMARY KEY,

ALGORITHM=COPY;

Query OK, 800001 rows affected (20.01 sec)

Records: 800001 Duplicates: 0 Warnings: 0

3、删除并新增主键索引

## 可以使用ALGORITHM=INPLACE+LOCK=NONE方式,操作期间允许读写。

ALTER TABLE TB001

DROP PRIMARY KEY,

ADD PRIMARY KEY(C1),

ALGORITHM=INPLACE,

LOCK=NONE;

Query OK, 0 rows affected (22.57 sec)

Records: 0 Duplicates: 0 Warnings: 0

4、修改主键列类型

## 只能使用ALGORITHM=COPY+LOCK=SHARED方式,操作期间允许读不允许写。

ALTER TABLE TB001

CHANGE C1 C1 BIGINT NOT NULL,

ALGORITHM=INPLACE, LOCK=NONE;

ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.

ALTER TABLE TB001

CHANGE C1 C1 BIGINT NOT NULL,

ALGORITHM=COPY, LOCK=NONE;

ERROR 1846 (0A000): LOCK=NONE is not supported. Reason: COPY algorithm requires a lock. Try LOCK=SHARED.

ALTER TABLE TB001

CHANGE C1 C1 BIGINT NOT NULL,

ALGORITHM=COPY, LOCK=SHARED;

Query OK, 799998 rows affected (20.49 sec)

Records: 799998 Duplicates: 0 Warnings: 0

二级索引维护

1、新增二级索引

## 可以使用ALGORITHM=INPLACE+LOCK=NONE方式,操作期间允许读写。

ALTER TABLE TB001 ADD INDEX IDX_C1(C1);

Query OK, 0 rows affected (10.53 sec)

Records: 0 Duplicates: 0 Warnings: 0

2、删除二级索引

## 仅需元数据修改操作,操作时间极短。

ALTER TABLE TB001 DROP INDEX IDX_C1;

Query OK, 0 rows affected (0.13 sec)

Records: 0 Duplicates: 0 Warnings: 0

3、修改二级索引名

## 仅需元数据修改操作,操作时间极短。

ALTER TABLE TB001

RENAME INDEX IDX_C1 TO IDX_C1_NEW,

ALGORITHM=INPLACE, LOCK=NONE;

Query OK, 0 rows affected (0.09 sec)

Records: 0 Duplicates: 0 Warnings: 0

4、修改二级索引列类型

## 只能使用ALGORITHM=COPY+LOCK=SHARED方式,操作期间允许读不允许写。

ALTER TABLE TB001 CHANGE C1 C1 INT;

Query OK, 800000 rows affected (25.03 sec)

Records: 800000 Duplicates: 0 Warnings: 0

ALTER TABLE TB001

CHANGE C1 C1 BIGINT,

ALGORITHM = INPLACE;

ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.

自增属性修改

1、修改普通主键列为自增主键列

## 只能使用ALGORITHM=COPY+LOCK=SHARED方式,操作期间允许读不允许写。

ALTER TABLE TB001 MODIFY ID BIGINT AUTO_INCREMENT;

Query OK, 800000 rows affected (26.15 sec)

Records: 800000 Duplicates: 0 Warnings: 0

2、修改自增主键列为普通主键列

## 只能使用ALGORITHM=COPY+LOCK=SHARED方式,操作期间允许读不允许写。

ALTER TABLE TB001 MODIFY ID BIGINT NOT NULL;

Query OK, 800000 rows affected (28.27 sec)

Records: 800000 Duplicates: 0 Warnings: 0

3、修改表自增开始值

## 仅需要修改元数据信息,操作时间极短。

ALTER TABLE TB001 AUTO_INCREMENT=800020;

Query OK, 0 rows affected (0.07 sec)

Records: 0 Duplicates: 0 Warnings: 0

列属性修改

1、新增列

## 可以使用ALGORITHM=INPLACE+LOCK=NONE方式,操作期间允许读写。

## 无论是新增可为NULL的列还是NOT NULL的列

ALTER TABLE TB001

ADD C2 INT NOT NULL DEFAULT 99999,

ALGORITHM=INPLACE, LOCK=NONE;

Query OK, 0 rows affected (33.05 sec)

Records: 0 Duplicates: 0 Warnings: 0

2、删除列

## 可以使用ALGORITHM=INPLACE+LOCK=NONE方式,操作期间允许读写。

ALTER TABLE TB001

DROP COLUMN C5,

ALGORITHM=INPLACE, LOCK=NONE;

Query OK, 0 rows affected (33.57 sec)

Records: 0 Duplicates: 0 Warnings: 0

3、修改列数据类型(INT至BIGINT)

## 只能使用ALGORITHM=COPY+LOCK=SHARED方式,操作期间允许读不允许写。

ALTER TABLE TB001

CHANGE C5 C5 BIGINT NULL,

ALGORITHM=INPLACE, LOCK=NONE;

ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.

ALTER TABLE TB001

CHANGE C5 C5 BIGINT NULL,

ALGORITHM=COPY, LOCK=SHARED;

Query OK, 0 rows affected (29.63 sec)

Records: 0 Duplicates: 0 Warnings: 0

4、修改列类型显示长度(INT(10)至INT(8)或INT(8)至INT(10))

## 无论使用CHANGE命令还是MODIFY命令,都是修改元数据,操作时间极短。

ALTER TABLE tb001

MODIFY C2 INT(8),

ALGORITHM=INPLACE, LOCK=NONE;

Query OK, 0 rows affected (0.05 sec)

Records: 0 Duplicates: 0 Warnings: 0

ALTER TABLE tb001

CHANGE C2 C2 INT(8) DEFAULT NULL,

ALGORITHM=INPLACE, LOCK=NONE;

Query OK, 0 rows affected (0.05 sec)

Records: 0 Duplicates: 0 Warnings: 0

5、修改列类型扩展存储长度(VARCHAR(300)至VARCHAR(500))

## 无论使用CHANGE命令还是MODIFY命令,都是修改元数据,操作时间极短。

ALTER TABLE tb001

CHANGE C3 C3 varchar(500) DEFAULT NULL,

ALGORITHM=INPLACE, LOCK=NONE;

Query OK, 0 rows affected (0.14 sec)

Records: 0 Duplicates: 0 Warnings: 0

ALTER TABLE tb001

MODIFY COLUMN C3 VARCHAR(500),

ALGORITHM=INPLACE, LOCK=NONE;

Query OK, 0 rows affected (0.14 sec)

Records: 0 Duplicates: 0 Warnings: 0

6、修改列类型扩展存储长度(VARCHAR(10)至VARCHAR(100))

## 只能使用ALGORITHM=COPY+LOCK=SHARED方式,操作期间允许读不允许写。

ALTER TABLE tb001

MODIFY COLUMN C3 VARCHAR(100),

ALGORITHM=INPLACE, LOCK=NONE;

ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.

ALTER TABLE tb001

MODIFY COLUMN C3 VARCHAR(100),

ALGORITHM=COPY, LOCK=SHARED;

Query OK, 0 rows affected (33.57 sec)

Records: 0 Duplicates: 0 Warnings: 0

7、修改列类型收缩存储长度(VARCHAR(500)至VARCHAR(300))

## 只能使用ALGORITHM=COPY+LOCK=SHARED方式,操作期间允许读不允许写。

ALTER TABLE tb001

CHANGE C3 C3 VARCHAR(300) DEFAULT NULL,

ALGORITHM=INPLACE, LOCK=NONE;

ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.

ALTER TABLE tb001

MODIFY COLUMN C3 VARCHAR(300),

ALGORITHM=INPLACE, LOCK=NONE;

ERROR 1846 (0A000): ALGORITHM=INPLACE is not supported. Reason: Cannot change column type INPLACE. Try ALGORITHM=COPY.

ALTER TABLE tb001

MODIFY COLUMN C3 VARCHAR(300),

ALGORITHM=COPY, LOCK=SHARED;

Query OK, 800009 rows affected (27.28 sec)

Records: 800009 Duplicates: 0 Warnings: 0

8、修改修改列注释

## 仅需修改元数据,操作时间极短

ALTER TABLE tb001

MODIFY COLUMN C3` varchar(300) DEFAULT NULL COMMENT '测试1';

Query OK, 0 rows affected (0.04 sec)

Records: 0 Duplicates: 0 Warnings: 0

ALTER TABLE tb001

CHANGE C3 C3 varchar(300) DEFAULT NULL COMMENT '测试2';

Query OK, 0 rows affected (0.05 sec)

Records: 0 Duplicates: 0 Warnings: 0



推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Commit1ced2a7433ea8937a1b260ea65d708f32ca7c95eintroduceda+Clonetraitboundtom ... [详细]
  • IB 物理真题解析:比潜热、理想气体的应用
    本文是对2017年IB物理试卷paper 2中一道涉及比潜热、理想气体和功率的大题进行解析。题目涉及液氧蒸发成氧气的过程,讲解了液氧和氧气分子的结构以及蒸发后分子之间的作用力变化。同时,文章也给出了解题技巧,建议根据得分点的数量来合理分配答题时间。最后,文章提供了答案解析,标注了每个得分点的位置。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 在springmvc框架中,前台ajax调用方法,对图片批量下载,如何弹出提示保存位置选框?Controller方法 ... [详细]
author-avatar
陈跃西vs_298
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有