视图、存储过程、触发器
- 视图
- 1、概念
- 2、使用
- 3、作用
- 备份恢复
- 1、备份
- 2、恢复
- 存储过程
- 1、概念
- 2、使用
- 3、变量
- 4、参数
- 5、常用语句
- 6、函数区别
- 触发器
- 1、概念
- 2、作用
- 3、insert
- 4、update
- 5、delete
视图
1、概念
一种虚拟的表,并不是在数据库中实际存在的,本质就是指行select语句后返回的结果
2、使用
(1)增
CREATE VIEW 视图名称 [(列名列表)] AS 查询语句;
(2)删
DROP VIEW [IF EXISTS] 视图名称;
(3)改
a) 修改视图结构:
ALTER VIEW 视图名称 (列名列表) AS 查询语句;
b) 修改视图数据:
UPDATE 视图名称 SET 列名=值 WHERE 条件;
(4)查
SELECT * FROM 视图名称;
(5)注意:
修改视图数据之后,源表中的数据也会跟着修改
3、作用
(1)简化查询
使用视图的用户不需要关心相应的表结构、关联条件等,视图就是他们想要的结果
(2)安全
使用视图的用户只能访问被允许查询的结果,这样可以限制用户访问一些敏感的信息列
备份恢复
1、备份
(1)远程连接虚拟机,输入命令。
命令格式:mysqldump -u 用户名 -p 待备份数据库名 > sql文件保存的地址
例如:mysqldump -u root -p db5 > /root/db5.sql 需要输入mysql的密码
(2)进入文件保存路径,查看文件是否存在 cat /root/db5.sql
2、恢复
(1)登录mysql mysql -uroot -p
(2)查看所有的数据库 show databases;
(3)删除已经备份的数据库 drop database db5;
(4)创建一个同名的新的数据库 create database db5;
(5)使用这个数据库 use db5;
(6)恢复备份的数据库 source /root/db5.sql;
(7)查看下是否恢复成功 show tables;
存储过程
1、概念
一组为了完成特定功能的sql语句集,存储在数据库中,一次编译永久有效,用户可以通过指定的存储过程的名称来执行它,类似java中的方法,先定义,然后就可以调用的
2、使用
(1)定义
-- 修改分隔符为$
DELIMITER $
-- 标准语法
CREATE PROCEDURE 存储过程名称(参数列表)
BEGIN
SQL 语句列表;
.
.
END$
-- 修改分隔符为分号
DELIMITER ;
(2)调用
CALL 存储过程名称(实际参数);
3、变量
(1)定义
DECLARE 变量名 数据类型 [DEFAULT 默认值];
(2)赋值
a) set设置:SET 变量名 = 变量值;
b) into设置:SELECT 列名 INTO 变量名 FROM 表名 [WHERE 条件];
(3)使用
SELECT 变量名;
4、参数
5、常用语句
(1)if语句:
IF 判断条件1 THEN 执行的sql语句1;
[ELSEIF 判断条件2 THEN 执行的sql语句2;]
…
[ELSE 执行的sql语句n;]
END IF;
(2)while循环:
初始化语句;
WHILE 条件判断语句 DO
循环体语句;
条件控制语句;
END WHILE;
6、函数区别
#创建存储函数
CREATE FUNCTION 函数名称([参数 数据类型])
RETURNS 返回值类型
BEGIN
#执行的sql语句;
RETURN 结果;
END$
#调用函数
SELECT 函数名称(实际参数);
触发器
1、概念
触发器是与特定数据表相关联的存储过程。当相应的数据表被INSERT , DELETE , UPDATE 语句修改时,触发器将自动执行。触发器可以被设置在语句执行之前或之后触发。
特点:灵活,但是不易维护,并且移植性比较差
2、作用
(1)触发器可以检查或修改新数据值,这意味着我们可以利用触发器强制实现数据完整性,比如检查某个百分比数值是否在0-100之间,还可以用来对输入数据进行必要的过滤;
(2)触发器可以将表达式的结果赋值给数据列作为默认值。因此我们可以绕开数据列定义里的默认值必须为常数的限制;
(3)触发器可以在删除或修改数据行之前先检查它的当前内容。利用这种能力可以实现许多功能,比如把对现有数据的修改记载到一个日志里。
3、insert
CREATE TRIGGER 触发器名称 #触发器名称
AFTER #什么时候执行触发器
INSERT #什么动作执行触发器
ON 表名 #关联数据的表名
FOR EACH ROW #触发器要做的事情
BEGIN
#触发器要执行的功能;
..........
END$
4、update
CREATE TRIGGER 触发器名称
AFTER UPDATE
ON 表名
FOR EACH ROW
BEGIN
#触发器要执行的功能;
.......
END$
5、delete
CREATE TRIGGER 触发器名称
AFTER DELETE
ON 表名
FOR EACH ROW
BEGIN
#触发器要执行的功能;
........
END$