因为MySQL能够将复杂的数据库管理任务自动完成,比如持续更新数据库后台,以及应用程序开发中所需的任何其他任务。MySQL中的流程控制是通过SQL语句进行的,其中包括IF,ELSE,WHILE,CASE和异常处理等语句。IF和ELSE语... 存储过程在MySQL中有相当广泛的应用,可以应用在报表查询、数据倒入等复杂的数据库查询操作中。最后,MySQL还提供了触发器,可以让用户在实现某些应用程序行为时自动执行的SQL语句,比如在更新某表的某行后自动执行的...
# 前言MySQL 的原生备份工具 mysqldump 是特别常用的备份工具,它具有如下优点:1. 工具使用并不复杂,命令简单。2. 将数据生成 SQL语句,方便在不同数据库平台之间做数据迁移3. 对于 innodb 表可以在线备份。本... 在此期间无法执行 DDL 语句。8. 同时备份触发器,视图等。## 不使用 --master_data 和 --single-transaction照例我们打开 general log 观察输出```2022-03-16T10:23:18.900771Z 36 Init DB mysql...
# 前言MySQL 的原生备份工具 mysqldump 是特别常用的备份工具,它具有如下优点:1. 工具使用并不复杂,命令简单。2. 将数据生成 SQL语句,方便在不同数据库平台之间做数据迁移3. 对于 innodb 表可以在线备份。本... 在此期间无法执行 DDL 语句。8. 同时备份触发器,视图等。## 不使用 --master_data 和 --single-transaction照例我们打开 general log 观察输出````undefined2022-03-16T10:23:18.900771Z 36 Init DB ...
# 前言在 MySQL 中,timestamp 采用 4 字节进行存储,取值范围是 '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC [1]。如果时间来到 2038 年,而官方没有采取行动,那么 MySQL 将无法正常使用。# 问题复现查看 MySQL PID```shell(base) [root@ip-10-0-0-22 logs]# pidof mysqld8763```查看版本并运行些 SQL 语句```sqlmysql> select version();+------------+| version() |+------------+| 5.7.19-log |+...
# 前言在 MySQL 中,timestamp 采用 4 字节进行存储,取值范围是 '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC [1]。如果时间来到 2038 年,而官方没有采取行动,那么 MySQL 将无法正常使用。# 问题复现查看 MySQL PID```shell(base) [root@ip-10-0-0-22 logs]# pidof mysqld8763```查看版本并运行些 SQL 语句```sqlmysql> select version();+------------+| version() |+------------+| 5.7.19-log |+...
编辑和删除触发器。 删除触发器后将无法恢复,需谨慎操作。 创建触发器登录云数据库 MySQL 版数据交互台。 在数据交互台页面的可视化操作区域,将鼠标指向触发器后,选择 ... < 创建触发器。 在创建触发器@{数据库... 触发的语句晚于监视数据的增删改操作,无法影响前面的增删改操作。 AFTER:在记录操作前触发,是先触发再完成数据的增删改,触发语句早于监视数据的增删改操作,您可以判断增删改后将发生的操作,随即按需进行干扰。 ...
允许对存储在远程MySQL服务器上的数据执行SELECT和INSERT查询。语法 SQL mysql('host:port', 'database', 'table', 'user', 'password'[, replace_query, 'on_duplicate_clause']);参数 host:port — MySQL服务器地址. database — 远程数据库名称. table — 远程表名称. user — MySQL用户. password — 用户密码. replace_query — 将INSERT INTO查询转换为REPLACE INTO的标志。0 - 查询被执行为 INSERT INTO。 1 - 查询被执行...
编辑和删除触发器。 删除触发器后将无法恢复,需谨慎操作。 创建触发器登录云数据库 veDB MySQL 版数据交互台。 在数据交互台页面的可视化操作区域,将鼠标指向触发器后,选择 ... < 创建触发器。 在创建触发器@{... 触发的语句晚于监视数据的增删改操作,无法影响前面的增删改操作。 AFTER:在记录操作前触发,是先触发再完成数据的增删改,触发语句早于监视数据的增删改操作,您可以判断增删改后将发生的操作,随即按需进行干扰。 ...
# 问题描述 MySQL 5.7 的 SQL Modes 对 SQL 的检查更加严格和规范,会出现一些 SQL 兼容性问题。 # 问题分析 具体常见的问题包含以下几个方面:## 1.SQL查询的字段不包含在GROUP BY 语句中(ONLY_FULL_GROUP_BY)如果**SELECT**的字段与**GROUP BY**的字段不匹配,那么就会报错如下: ```MySQL [dbtest]> select min(update_time),name,id from tb_author group by name;ERROR 1055 (42000): Expression #3 of SELEC...
# 问题描述MySQL 5.7 的 SQL Modes 对 SQL 的检查更加严格和规范,会出现一些 SQL 兼容性问题。# 问题分析具体常见的问题包含以下几个方面:## 1.SQL查询的字段不包含在GROUP BY 语句中(ONLY_FULL_GROUP_BY)如果**SELECT**的字段与**GROUP BY**的字段不匹配,那么就会报错如下:````undefinedMySQL [dbtest]> select min(update_time),name,id from tb_author group by name;ERROR 1055 (42000): Expression #3 of SELECT li...
# 前言MySQL 中的优化器是基于成本的优化器(CBO),所谓基于成本,代表着运行目标 SQL 语句需要消耗的 CPU,扫描行数,IO 等,这些信息是基于统计信息来获得的。如果统计信息不准确,优化器很可能选择那些不够优化,甚至是错误的执行计划。对于统计信息的搜集方式有两种:1. 非持久化统计信息2. 持久化统计信息# 非持久化统计信息所谓的非持久化统计信息,指的是统计信息没有持久化到磁盘上,如果数据库重启,统计信息将全部丢失。设...
# 问题描述如何避免在 UPDATE 或者 DELETE 的时候,忘记加 WHERE 条件,导致对数据库的全表数据进行误操作。# 问题分析开启 MySQL 系统变量 sql_safe_updates ,可以捕获没有使用索引,没有使用 WHERE 语句,LIMIT 语句导致的大量的更新或者删除的的操作。# 场景模拟1. 开启会话级别的 sql_safe_updates```sqlMySQL [sbtest]> show variables like 'sql_safe_updates';+------------------+-------+| Variable_name | V...
# 前言在某些特定的问题排查场景下,或者需要复现问题,我们可能需要开启general log 来查看 MySQL 实时运行的 SQL 语句,以此来缩小问题的范围。general log 会记录所有的SQL语句,无论语句是否正确执行或者是由于语法错误而终止执行。同时开启 general log 在实例负载比较大的情况下了能会对服务器性能产生影响,这里推荐一个好用的工具,它基于 MySQL 协议的抓包工具,实时抓取 MySQL Server 端的请求,并格式化输出。# 工具安装...