服务器系统变量
通过@@
来调用系统变量
# 列出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)
BEGINDECLARE 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_dateGROUP 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
BEGINIF new.department not in ("男装事业部", "女装事业部") THENSET new.department 'unknow';END IF;
END
触发器的应用
多用来检查字段
查看触发器
建议通过客户端删除
SHOW TRIGGERS FROM store_perf
删除触发器
建议通过客户端删除
DROP TRIGGERS check_department