文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL表数据的DML操作

2024-04-02 19:55

关注

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

从过往MySQL数据库生产环境的维护工作中,总结的一些小经验和知识,未必有多深奥,但是对我们消除隐患,确保MySQL数据库生产环境四个9的作用非常有效之一的手段,运维人员要非常注意细节,尽量减低故障发生的概率。
  (一) 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()等函数,若无特殊用处之外,请以确定性函数替代之。
  推荐阅读的技术文章:曾用于内部培训的PPT内容:MySQL开发规范与实用技术交流
  (二) 大数据量的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操作”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯