Mysql修改字段为默认空
Mysql修改字段为默认空
数据库字段定义尽量不要为默认空,但是为了满足产品需求和减少开发量,所以直接将字段改为默认空。但是一样的修改SQL修改同一张表的两个Not Null字段其中一个1秒内完成;另外一个执行了1分钟都没有执行完。鉴于执行时间太慢和最近升级了数据库版本为8.0,所以中止执行,创建测试表验证SQL是否有问题。
DML
ALTER TABLE test_table_define MODIFY COLUMN type_name tinyint(1) DEFAULT NULL COMMENT 'Not Null Alter Null Test';
test_table_define:表名;type_name:字段名。
表创建结构
CREATE TABLE test_table_define (id int(11) NOT NULL AUTO_INCREMENT,type_name tinyint(4) DEFAULT 1 COMMENT 'Not Null Alter Null Test',remark_ varchar(255) DEFAULT NULL,PRIMARY KEY (id)
)
ENGINE = INNODB,
CHARACTER SET utf8,
COLLATE utf8_general_ci,
COMMENT = '测试表定义问题';
新增两条数据
INSERT INTO test_table_define (remark_) VALUES
('测试字段默认非空,用SQL改为默认空!'),
('测试字段默认非空,用SQL改为默认空!');
执行
- Mysql版本5.7.18执行:正常,SQL.sql: DML succeeded [0.015s]
- Mysql版本8.0.23执行:正常,SQL.sql: DML succeeded [0.459s]
修改后表结构
CREATE TABLE test_table_define (id int NOT NULL AUTO_INCREMENT,type_name tinyint DEFAULT NULL COMMENT 'Not Null Alter Null Test',remark_ varchar(255) DEFAULT NULL,PRIMARY KEY (id)
)
ENGINE = INNODB,
CHARACTER SET utf8,
COLLATE utf8_general_ci,
COMMENT = '测试表定义问题';
结论
所以,DML脚本是正确,版本升级之后没有其他帖子说的增加了限制不允许Not Null改为Null。
找了一张表数据333105修改两个字段默认空,执行相同的DML脚本结果分别是:SQL.sql: DML succeeded [0.459s],SQL.sql: DML succeeded [51.836s]。所以是数据量影响了DML执行时间。
后续
MODIFY COLUMN底层做了什么事情,那么慢?
同一张表数据量都是333105,都是MODIFY,为什么一个字段只需0.4S,另一个却需要51.836S?
Mysql修改字段为默认空相关推荐
- MySQL修改字段的默认值和空值
MySQL修改字段的默认值和空值 一.修改字段默认值 修改: ALTER TABLE 表名 ALTER COLUMN 字段名 SET DEFAULT 默认值 删除: ALTER TABLE 表名 AL ...
- mysql修改字段null为空字符串
修改字段null为空字符串 UPDATE zxt_user_exam SET type = ( CASE WHEN IFNULL( type, '' ) = '' THEN '' ELSE type ...
- mysql修改字段是否非空
SQL语句: ALTER TABLE 表名 MODIFY column 字段名 字段类型 是否非空; 例如: ALTER TABLE t_user MODIFY column user_id VARC ...
- mysql修改字段的默认值
若本身存在默认值,则先删除 alter table表名alter column字段名drop default; 然后设置默认值(若本身不存在则可以直接设定) alter table表名 alter c ...
- mysql如何修改字段允许为空
mysql如何修改字段允许为空 修改字段允许为空 alter table 表名 modify 字段名 字段类型 null; 例: alter table employees MODIFY first_ ...
- mysql修改字段类型语句
mysql中字段为TEXT类型的内容怎么修改? 可以把字段类型改成MEDIUMTEXT(最多存放16777215个字符)或者LONGTEXT(最多存放4294967295个字符). MySQLsupp ...
- mysql修改字段为现在时间_mysql如何修改字段自动生成时间
mysql修改字段自动生成时间的方法:1.添加CreateTime设置默认时间:2.修改CreateTime设置默认时间:3.添加UpdateTime设置默认时间. 本教程操作环境:windows7系 ...
- mysql 修改字段值语句_mysql修改字段语句
--------------------------------------------------------- Ta 只分享的内容开始 ------------------------------ ...
- Mysql修改字段类型
修改字段类型.字段名.字段注释.类型长度.字段默认值 mysql修改字段类型: --能修改字段类型.类型长度.默认值.注释 --对某字段进行修改 ALTER TABLE 表名 MODIFY ...
最新文章
- AcornCharts
- oracle 12c多租户下的日常操作变化
- 【原创】Aspose.Words组件介绍及使用—基本介绍与DOM概述
- 多线程:多线程优缺点、应用场景
- 使用高级视频质量工具 AVQT 评估视频 | WWDC 演讲实录
- 有效事件: 可取代数十种设计模式
- 第十五期:详解Java集合框架,让你全面掌握!
- python实例解析_python中super的用法实例解析
- FMPlayer组件说明
- java 图片转成base64编码_java语言中如何将一个图片转换为base64编码的数据呢?
- 致未来要跟我领小红本的男人
- ZooKeeper 会话的秘密 快偷偷过来瞧一瞧!!!
- 下载蓝盒插件_chrome迅雷下载插件-迅雷下载支持插件下载 v3.1官方版--pc6下载站...
- 姿态估计1-07:FSA-Net(头部姿态估算)-源码无死角讲解(2)-网络框架整体结构分析
- python爬虫简单入门级,小白讲说
- 西安邮电大学第五届ACM-ICPC校赛(同步赛)
- 计算机中的cad是什么意思是,cad是什么意思 cad是什么软件
- FPGA编程,verilog实现简易电梯控制系统,某大学数电实验课设
- 【面试篇】牛客网面试总结
- 如果想入手软路由我推荐友善官方出品的NanoPi-R2S和NanoPi-R5S