Mysql触发器|视图|定时器|存储过程

#1.存储过程

-- #1.先声明存储过程
-- #1.1 重新设置分隔符 避免;(分号)对mysql语句造成影响
DELIMITER $$
-- #1.2 如果存在,移除原有的存储过程
DROP PROCEDURE IF EXISTS pro_test $$
-- #1.3 创建一个名为pro_test()的存储过程,带括号()
CREATE PROCEDURE pro_test()
BEGIN 
-- 	#1.4 SQL语句列表,每个语句间用;隔开
--  #1.5 牛皮,可以多result返回
	SELECT * FROM user_local;
	SELECT user_id,username FROM user_local;
-- #1.x 使用新的分隔符结束创建存储过程
END $$
-- 	#1.6 重新设置回分隔符;(分号)
DELIMITER ;


--  #2.调用存储过程,带括号()
CALL pro_test()

-- 显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等
show procedure status


-- 显示某一个MySQL存储过程的详细信息,不带括号
show create procedure pro_test
#1.2MYSql存储过程的作用

1、使用了存过程,很多相似性的删除,更新,新增等操作就变得轻松了,并且以后也便于管理!
2、存储过程因为SQL语句已经预编绎过了,因此运行的速度比较快。
3、存储过程可以接受参数、输出参数、返回单个或多个结果集以及返回值。可以向程序返回错误原因。
4、存储过程运行比较稳定,不会有太多的错误。只要一次成功,以后都会按这个程序运行。
5、存储过程主要是在服务器上运行,减少对客户机的压力。
6、存储过程可以包含程序流、逻辑以及对数据库的查询。同时可以实体封装和隐藏了数据逻辑。
7、存储过程可以在单个存储过程中执行一系列SQL语句。
8、存储过程可以从自己的存储过程内引用其它存储过程,这可以简化一系列复杂语句。

#2.视图

#1.如果这个视图存在就drop掉,移除掉
DROP VIEW IF EXISTS view_new_test

#2.创建一个试图名为:view_new_test AS 后面是一个结果集,把复杂的连表查询封装成一个试图,方便使用
CREATE VIEW view_new_test  AS
SELECT
	wsp.activity_id AS activityId,
	wsa.pro_id AS productId,
	wsp.pro_code AS productCode,
	wsp.pro_name AS productName,
	su.USER_ID AS userId,
	su.USER_NAME AS author,
	wsp.pro_master_unit_school_name AS schoolName,
	wsp.pro_master_unit_teacher AS instructor,
	wsp.group_code AS groupCode,
	( CASE wsp.group_code WHEN 'GROUP_NUM_ONE' THEN '小学组' WHEN 'GROUP_NUM_TWO' THEN '中学组' WHEN 'GROUP_NUM_THREE' THEN '大学组' ELSE 'error' END ) AS groupCodeName,
	( CASE wsp.pro_type_code WHEN 'ACTIVITY_TYPE_VIDEO' THEN '视频' WHEN 'ACTIVITY_TYPE_IMAGE' THEN '图文' WHEN 'ACTIVITY_TYPE_TEXT' THEN '纯文本' ELSE 'error' END ) AS proTypeCode,
	wsp.pro_content AS proContent,
	wsp.pro_remark AS proRemark,
	wsp.creation_date AS creationDate,
	wsa.current_audit_status AS currentAuditStatus,
	wsa.pro_recommend_status AS proRecommendStatus,
	wsa.pro_first_audit_status AS proFirstAuditStatus,
	wsa.pro_second_audit_status AS proSecondAuditStatus,
	wsa.pro_end_audit_status AS proEndAuditStatus
	FROM wxyg_sys_product wsp
	INNER JOIN wxyg_sys_audit wsa ON wsp.id = wsa.pro_id
	INNER JOIN sys_user su ON su.USER_ID = wsp.pro_master_id
	
-- 	#3.像查表一样取查视图,后面也可以添加各种sql查询条件,过滤,分组等等
	SELECT * from view_new_test 
-- 	WHERE activity_id = ?
	
-- 	#4.也会展示视图的列表信息
	show TABLES;
#2.1视图作用

1.提高了重用性,就像一个函数.
2.数据库重构,却不影响程序的运行.
3.提高了安全性能。可以对不同的用户,设定不同的视图.
4.让数据更加清晰。想要什么样的数据,就创建什么样的视图.

#3.触发器

-- #1.重新定义分割符
DELIMITER $$
-- #2.如果这个触发器存在就移除/删除
DROP TRIGGER IF EXISTS `del_trig`$$
-- #3.创建触发器,名为‘del_trig’ 在从表‘user_local’移除数据之前(BEFORE) / (之后)AFTER
-- FOR each ROW 行级触发器 
-- BEGIN ... END 之间就是触发器将会执行的sql内容,insert/update/delete
CREATE TRIGGER del_trig BEFORE DELETE on `user_local` FOR each ROW 
BEGIN 
	INSERT INTO `user` VALUES('12','name1',12,'address001');
	INSERT INTO `user` VALUES('32','name2',23,'address012');
-- #3.x 结束
END $$
-- #4.重置分隔符为分号(;)
DELIMITER ;
#3.2触发器作用

1.在某条特定的数据被删除时,修改其他表的数据内容
2.在数据insert/update/delete的同时主动触发修改相对应的影响
3.在mysql数据库内部悄悄的保证数据的完整/一致性
4.对dba(数据库管理员)要求高,可以减少程序代码

#4.定时器

未完待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值