MySQL
常用语句
用户相关\管理相关\数据相关
视图\事件\存储过程\函数\游标\触发器
事务\分区
常用工具
管理优化
锁问题
MySQL日志
异步复制
半同步复制
复制管理
5.7开启并行复制
双主备份
故障问题
索引
时区
表的导出导入
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 #禁用此事件 --- ![](/media//202004/2020-04-22141233962719.png) --- #存储过程 >#####可参考: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' >#####过程范例 >![](/media//202004/2020-04-22111515595234.png) --- >####修改过程 注意:修改<过程体>需要重构存储过程 >![](/media//202004/2020-04-22114612511941.png) --- >####删除过程 DROP PROCEDURE <数据库>.<过程名称> --- >####查看过程 SHOW PROCEDURE STATUS where db='<数据库>'; SHOW CREATE PROCEDURE <数据库>.<过程名称>; --- >####调用过程 CALL <数据库>.<过程名称> --- #函数 >####创建函数 CREATE FUNCTION <函数名称> ([fun_parameter[,...]]) [characteristic ...] <过程体> --- #fun_parameter: 参数名称 参数类型 #characteristic: COMMENT 'string' >#####函数范例 >![](/media//202004/2020-04-22115819547867.png) --- >####修改函数 注意:修改<过程体>需要重构函数 --- >####删除函数 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范例 >![](/media//202004/2020-04-22135548547935.png) --- >>##CASE CASE <变量> WHEN <条件1> THEN 语句1; ELSE 语句2; END CASE; >####CASE范例 >![](/media//202004/2020-04-22140227638598.png) --- >>##WHILE WHILE <条件> DO <循环语句>; END WHILE; >####WHILE范例 >![](/media//202004/2020-04-22140634206813.png) --- >>##REPEAT >####与WHILE相反,满足条件时,退出循环 REPEAT <循环语句> UNTIL <条件> END REPEAT; >####REPEAT范例 >![](/media//202004/2020-04-22141050467215.png) #游标 >####声明游标 DECLARE <游标名称> CURSOR FOR <SQL语句>; DECLARE EXIT HANDLER FOR NOT FOUND CLOSE <游标名称> #若没有数据返回,则关闭游标 >####开启游标 OPEN <游标名称>; >####FETCH游标 FETCH <游标名称> INTO <变量>; >####关闭游标 CLOSE <游标名称>; >#####游标范例 ![](/media//202004/2020-04-23150127946146.png) --- #触发器 >####创建触发器 CREATE TRIGGER <触发器名称> AFTER/BEFORE INSERT/UPDATE/DELETE ON <表名> FOR EACH ROW --这句话在mysql是固定的 BEGIN <SQL语句>; END; >![](/media//202004/2020-04-22182553620305.png) --- >####删除触发器 DROP TRIGGER <触发器名称>; --- >####查看触发器 SHOW TRIGGERS;
分享到: