变量声明
服务器系统变量
通过
@@
来调用系统变量# 列出mysql所有系统变量 SHOW VARIABLES SELECT @@date_format
用户变量
通过
@
来调用用户变量# 输出变量yesterday SELECT @yesterday # 对变量yesterday进行赋值 SET @yesterday=subdate(CURRENT_DATE, 1); # 日期的格式化 SET @yesterday=DATE_FORMAT(@yesterday, "%Y/%m/%d"); # 小数的格式化 SET @amount=0.4; SET @amount=CAST(@amount as DECIMAL(15, 3)); SELECT @amount
局部变量
- 不需要
@
前缀 - 需要事先进行变量类型的声明和初始化
- 不需要
存储过程
简单地认为是SQL
中的函数
声明一个存储过程
创建存储过程
- 每一句语句结束之后都要添加分号
;
CREATE PROCEDURE stat_store_perf(days INT) BEGIN DECLARE t_date VARCHAR(255); set t_date = DATE_FORMAT(subdate(CURRENT_DATE, days), '%Y-%m-%d'); SELECT count(*) as 店铺数, FORMAT(AVG(amount), 2) as 平均业绩, SUM(amount) as 总业绩, MAX(amount) as 最大业绩, MIN(amount) as 最小业绩, department as 部门 FROM store_perf WHERE sta_date=t_date GROUP BY department; END
- 每一句语句结束之后都要添加分号
调用存储过程
CALL stat_store_perf(1)
删除存储过程
DROP PROCEDURE stat_store_perf
触发器
和存储过程一样, 都是嵌入到mysql
中的一段程序, 区别就是存储过程需要显式调用, 而触发器式根据对表的相关操作自动激活执行.
创建触发器
CREATE TRIGGER 触发器名 BEFORE[AFTER] [INSERT, UPDATE, DELETE] CREATE TRIGGER check_department BEFORE INSERT ON store_perf FOR each row BEGIN IF new.department not in ("男装事业部", "女装事业部") THEN SET new.department 'unknow'; END IF; END
触发器的应用
多用来检查字段
查看触发器
建议通过客户端删除
SHOW TRIGGERS FROM store_perf
删除触发器
建议通过客户端删除
DROP TRIGGERS check_department
Comment here is closed