1.视图

概念

视图是一个虚表,它是在表或者其他视图的基础上,使用SELECT语句来定义的。查询视图等效于查询定义他的那条语句,只是视图将细节隐藏了

定义语句

1.基本定义
CREATE VIEW view_nm AS SELECT —- FROM —-;
2.定义别名
CREATE VIEW view_nm(name1,name2…) AS SELECT xxxx,xxxx FROM xxxx;

2.存储程序

复合语句

以BEGIN开始,END结尾,中间可以包含任意数量的语句,语句之间用分号进行分割。

示例

  1. CREATE PROCEDURE greetings()
  2. BEGIN
  3. DECLARE user CHAR(77) CHARACTER SET utf8;
  4. SET user = (SELECT CURRENT_USER());
  5. IF INSTR(user,'@') >0 THEN
  6. SET user = SUBSTRING_INDEX(user,'@',1);
  7. END IF;
  8. IF user = '' THEN
  9. SET user='earthling';
  10. END IF;
  11. SELECT CONCAT ('Greetings,',user,'!') AS greeting;
  12. END;
--使用delimiter 重新定义mysql分隔符(分隔符不一定为单个字符)
delimiter $
CREATE PROCEDURE show_times()
BEGIN
    SELECT CURRENT_TIMESTAMP AS 'Local Time';
  SELECT UTC_TIMESTAMP AS 'UTC Ttime';
END $

delimiter;
CALL show_times();

存储函数和存储过程

存储函数常用于表达式中,他会执行计算并返回一个值,像COS()这样的内建函数
存储过程是使用CALL语句来调用的独立操作,不能用在表达式中
存储过程的使用情况:
1.只需要运算来实现某些效果或动作,不需要返回值。
2.运算结果需要多个结果集。

示例

CREATE FUNCTION func_name ([param_list])
    RETURNS type
  routine_stmt
CREATE PROCEDUCE proc_name([param_list])
    routine_stmt

存储函数

--查询某一年出生总统的人数的函数
delimiter $
CREATE FUNCTION count_born_in_year(p_year INT)
RETURNS INT
READS SQL DATA
BEGIN
RETURN (SELECT COUNT(*) FROM president WHERE YEAR(birth)=p_year);
END$
delimiter ;

--调用方法
SELECT count_born_in_year(1999);

存储过程

--查询某一年出生总统的人数的存储过程
delimiter $
CREATE PROCEDURE show_born_in_year(p_year INT)
BEGIN
SELECT first_name,last_name,birth,death 
FROM president 
WHERE YEAR(birth)=p_year;
END$
delimiter ;

--使用方法
CALL count_born_in_year(1999);

存储过程和存储函数的区别

1.存储过程中没有RETURNS子句和任何RETURN语句

权限管理

创建存储过程和存储函数必须拥有数据库的 CREATE ROUTIME权限,如果当前用户没有权限,数据库将自动

触发器

image.png

事件

image.png
image.png

禁用和激活
ALTER EVENT XXXX DISABLE;
ALTER EVENT XXXX ENABLE;