MySQL中表数据的DML操作

61次阅读
没有评论

共计 1779 个字符,预计需要花费 5 分钟才能阅读完成。

这篇文章主要介绍“MySQL 中表数据的 DML 操作”,在日常操作中,相信很多人在 MySQL 中表数据的 DML 操作问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MySQL 中表数据的 DML 操作”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!

(一) DML 语句书写建议
(1). DML 语句不允许出现 @number 方式替代字段名称
不合理的写法:
UPDATE table_name SET @1=NOW() WHERE @2=1;
正确的写法:
UPDATE table_name SET column_name1=NOW() WHERE column_name2=1;
(2). UPDATE OR DELETE 禁用 LIMIT 子句
不合理的写法:
UPDATE table_name SET column_name1=NOW() WHERE column_name2=1 LIMIT 1;
正确的写法:
UPDATE table_name SET column_name1=NOW() WHERE column_name2=1;
(3). INSERT 语句需要写清楚值和字段对应关系
不合理的写法:
INSERT INTO table_name VALUES(NOW(),DATE_ADD(NOW(),INTERVAL +1 DAY));
正确的写法:
INSERT INTO table_name(gmt_create,gmt_modify) VALUES(NOW(),DATE_ADD(NOW(),INTERVAL +1 DAY));
(4). DML 语句少用不确定性函数
常见被大家使用的不确定性函数:UUID()、RAND()、SYSDATE() 等函数,若无特殊用处之外,请以确定性函数替代之。
(二) 大数据量的 DELETE OR UPDATE
可能出于某些原因和运营目的,需要对数据库中的数据进行大量的清理或更改某字段的值,分别举 二个示例:
① 网络专项整治的时期,需要删除大量含某些关键词的内容;
② 给符合某一条件 (例如:等级,在线时长) 的游戏玩家,赠送 100~1000 不等数量的游戏币;
给出的 2 个数据修改需求示例,若是直接根据相关要求去做,一个是需要用到模糊查询,另一个数据更新条件也没有合理索引可用,为此可能造成表对象表级锁被长时间锁住,而且阻塞其他更改类型数据操作服务,所以我们不得不采用更合理的办法,建议如下步骤实施:
① 设计并创建一张表 tmp_pk_data,用于记录将要被修改记录的主键,及需要的相关信息;
② 优先考虑在备库上跑一条 SQL 命令或存储过程的方式,把主键及相关数据写到表 tmp_pk_data 中;
③ 编写一个存储过程,使用游标循环控制获得 tmp_pd_data 的信息,根据主键更新或删除目标表的数据,且建议此操作在备库上完成(注释:必须是双主复制模式,才可在备库上执行);
(三) 定期规律性清理数据的 DELETE
定期规律性数据的清理,优先对目标表的数据操纵方式进行分类:
① 若是日志类型的数据,则完全可以改为借助分区表的方式,比如按日期删除数据的条件,则可以用日期作为数据分区条件,然后增删分区的方式实现数据的清理工作;
② 若是数据的 UPDATE/DELETE/SELECT 操纵条件,与定期清理数据的规则一致或被其包含,则可以考虑使用分区表,然后借助删除分区方式达到数据清理的目标;
③ 若不能使用分区表解决的,则可以考虑参考上章节介绍的“大数据量的 DELETE OR UPDATE”内容;
(四) M- M 架构的大数据量 DML 技巧
定期规律性数据的清理,优先对目标表的数据操纵方式进行分类:
① 若是日志类型的数据,则完全可以改为借助分区表的方式,比如按日期删除数据的条件,则可以用日期作为数据分区条件,然后增删分区的方式实现数据的清理工作;
② 若是数据的 UPDATE/DELETE/SELECT 操纵条件,与定期清理数据的规则一致或被其包含,则可以考虑使用分区表,然后借助删除分区方式达到数据清理的目标;
③ 若不能使用分区表解决的,则可以考虑参考上章节介绍的“大数据量的 DELETE OR UPDATE”内容;

到此,关于“MySQL 中表数据的 DML 操作”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-01发表,共计1779字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)