MySQL
常用语句
用户相关\管理相关\数据相关
视图\事件\存储过程\函数\游标\触发器
事务\分区
常用工具
管理优化
锁问题
MySQL日志
异步复制
半同步复制
复制管理
5.7开启并行复制
双主备份
故障问题
索引
时区
mysql_random_data_load 数据生成
表的导出导入
MySQLdump逻辑备份
XtraBackup全备
XtraBackup增备
XtraBackup原表数据恢复
安装MySQL
ProxySQL中间件
Atlas中间件
keepalived安装
MHA安装
MHA恢复
mha复制检查报错及解决过程
集群Cluster安装
维护Cluster
开启审计功能
本文档使用MrDoc发布
返回首页
-
+
视图\事件\存储过程\函数\游标\触发器
2020年4月21日 19:31
admin
#视图 >####创建视图 CREATE [OR REPLACE] VIEW <视图名称> AS <select语句> [WITH [CASCADED|LOCAL] CHECK OPTION] --- #参数说明: WITH CASCADED CHECK OPTION #必须满足所有针对该视图的所有视图的条件才可以更新(默认) WITH LOCAL CHECK OPTION #只要满足本视图的条件就可以更新 --- >####修改视图 ALTER VIEW <视图名称> AS <select语句> [WITH [CASCADED|LOCAL] CHECK OPTION] --- #参数说明: WITH CASCADED CHECK OPTION #必须满足所有针对该视图的所有视图的条件才可以更新(默认) WITH LOCAL CHECK OPTION #只要满足本视图的条件就可以更新 --- >####删除视图 DROP VIEW [IF EXISTS] <视图名称>[,<视图名称2>...] --- >####查看视图 show tables; show table status; show create view <视图名称>; --- #事件 >####EVENT服务 #查看是否开启定时器 SHOW VARIABLES LIKE 'event_scheduler'; #开启关闭EVENT服务(0:关闭 1:开启) SET GLOBAL event_scheduler = 1 >####创建事件 CREATE EVENT IF NOT EXISTS <定时名称> ON SCHEDULE <时间参数> ON COMPLETION <存留参数> <启停参数> COMMENT '<注释>' DO <语句体> --- #时间参数: [AT CURRENT_TIMESTAMP]: '2020-05-20 0:00:00' [EVERY 1 HOUR] 可加: [START '2020-05-20 0:00:00'] [ENDS '2020-06-20 0:00:00'] 以上两种均可加: + INTERVAL 1 HOUR #表示延后一小时,可自定义 --- #存留参数: NOT PRESERVE #默认为此选项,事件到期后自动删除 PRESERVE #事件到期后保留 --- #启停参数: ENABLE #启用此事件 DISABLE #禁用此事件 ---  --- #存储过程 >#####可参考:https://www.runoob.com/w3cnote/mysql-stored-procedure.html >####创建过程 CREATE [DEFINER = { user | CURRENT_USER }] PROCEDURE <过程名称> ([proc_parameter[,...]]) [characteristic ...] <过程体> --- #proc_parameter: [ IN | OUT | INOUT ] param_name type #characteristic: COMMENT 'string' >#####过程范例 > --- >####修改过程 注意:修改<过程体>需要重构存储过程 > --- >####删除过程 DROP PROCEDURE <数据库>.<过程名称> --- >####查看过程 SHOW PROCEDURE STATUS where db='<数据库>'; SHOW CREATE PROCEDURE <数据库>.<过程名称>; --- >####调用过程 CALL <数据库>.<过程名称> --- #函数 >####创建函数 CREATE FUNCTION <函数名称> ([fun_parameter[,...]]) [characteristic ...] <过程体> --- #fun_parameter: 参数名称 参数类型 #characteristic: COMMENT 'string' >#####函数范例 > --- >####修改函数 注意:修改<过程体>需要重构函数 --- >####删除函数 DROP FUNCTION <数据库>.<函数名称> --- >####查看函数 SHOW FUNCTION STATUS where db='<数据库>'; SHOW CREATE FUNCTION <数据库>.<过程名称>; --- >####调用函数 SELECT <数据库>.<过程名称> --- #过程体部分 >#变量 >>####1. 变量定义 >#####局部变量声明一定要放在存储过程体的开始: DECLARE variable_name [,variable_name...] datatype [DEFAULT value]; #其中,datatype 为 MySQL 的数据类型,如: int, float, date,varchar(length) --- 例如: DECLARE l_int int unsigned default 4000000; DECLARE l_numeric number(8,2) DEFAULT 9.95; DECLARE l_date date DEFAULT '1999-12-31'; DECLARE l_datetime datetime DEFAULT '1999-12-31 23:59:59'; DECLARE l_varchar varchar(255) DEFAULT 'This will not be padded'; --- >####2. 变量赋值 SET 变量名 = 表达式值 [,variable_name = expression ...] --- >#####局部变量 mysql > SET y='Goodbye Cruel World'; #mysql局部变量,只能用在begin/end语句块中,比如存储过程中的begin/end语句块。 #其作用域仅限于该语句块。 >#####用户变量 mysql > SET @z=1+2+3; #mysql用户变量,mysql中用户变量不用提前申明,在用的时候直接用“@变量名”使用就可以了。 #其作用域为当前连接。 >#####全局变量 mysql > SET @@x=1; mysql > set global sql_warnings=ON; #mysql全局变量,全局变量影响服务器整体操作,当服务启动时,它将所有全局变量初始化为默认值。要想更改全局变量,必须具有super权限。 #其作用域为server的整个生命周期。 --- >#流程控制 >>##IF IF <条件> then 语句1; ELSEIF <条件> then 语句2; ELSE <条件> then 语句3; END IF; >####IF范例 > --- >>##CASE CASE <变量> WHEN <条件1> THEN 语句1; ELSE 语句2; END CASE; >####CASE范例 > --- >>##WHILE WHILE <条件> DO <循环语句>; END WHILE; >####WHILE范例 > --- >>##REPEAT >####与WHILE相反,满足条件时,退出循环 REPEAT <循环语句> UNTIL <条件> END REPEAT; >####REPEAT范例 > #游标 >####声明游标 DECLARE <游标名称> CURSOR FOR <SQL语句>; DECLARE EXIT HANDLER FOR NOT FOUND CLOSE <游标名称> #若没有数据返回,则关闭游标 >####开启游标 OPEN <游标名称>; >####FETCH游标 FETCH <游标名称> INTO <变量>; >####关闭游标 CLOSE <游标名称>; >#####游标范例  --- #触发器 >####创建触发器 CREATE TRIGGER <触发器名称> AFTER/BEFORE INSERT/UPDATE/DELETE ON <表名> FOR EACH ROW --这句话在mysql是固定的 BEGIN <SQL语句>; END; > --- >####删除触发器 DROP TRIGGER <触发器名称>; --- >####查看触发器 SHOW TRIGGERS;
分享到: