目录
1.视图
1.1 什么是视图?
- 视图实际上是一张虚拟表,其本身不存储数据。
- 相当于一张表或多张表的数据结果集
- 数据表复杂的情况下,可以把查询结果放在虚拟表中,提升效率
1.2如何创建、更新、删除视图
-
创建
CREATE VIEW view_name AS SELECT column1 FROM table WHERE condition
-
嵌套视图
- 把视图当成table字段即可
-
更新
ALTER VIEW view_name AS SELECT column1, column2 FROM table WHERE condition
- 比上述创建时多一列
-
删除
DROP VIEW view_name
- 其中SQLite不支持视图的修改,只支持只读视图。
1.3 如何使用视图简化SQL操作
- 利用视图完成复杂的连接
- 实际上就是把复杂的连接得到的数据集直接当作视图
- 利用视图对数据进行格式化
- 利用视图与计算字段
1.4 视图和临时表的区别?
- 视图是虚拟表,本身不存储数据,我们一般把视图用于查询
- 临时表是真实存在的数据表,不利于长期存放数据,只为当前连接存在,连接关闭,临时表会自动释放。
2.存储过程
2.1 什么是存储过程
- SQL语句的封装,使用就像使用函数一样,直接调用其名字即可
- 存储过程由SQL语句和流控制语句共同组成
2.2 如何创建一个存储过程
-
创建
CREATE PROCEDURE 存储过程名称(参数列表) BEGIN SQL END
-
删除
DROP PROCEDURE
-
修改
ALTER PROCEDURE
-
DELIMITER
- 在MYSQL中,
;
代表结束,但是我们在存储过程中表示一个语句,使用DELIMITER将结束符定义为其他符号而不是;
- 在MYSQL中,
-
存储过程的三种参数类型
- IN
- OUT
- INOUT
2.3 流控制语句都有哪些,如何使用它们?
- BEGIN END
- DECLARE:声明变量
- SET:为变量赋值
- SELECT INTO:把查询的结果放到变量中
- IF THEN ENDIF
- CASE
- LOOP、LEAVE、ITERATE:LOOP堪称for,LEAVE堪称break,ITERATE看成continue
- WHILE DO...END WHILE:
2.4 各大公司如何看待存储过程?在实际工作中,我们该如何使用存储过程
-
大公司推荐使用存储过程,如微软、IBM,基于以下优点
- 一次编译多次使用;提升SQL执行效率
- 减少开发工作量
- 安全性强,可以设置对用户的使用权限
- 减少网络传输量:多条SQL需要多次连接数据库,而存储过程只需要一次
-
阿里不推荐使用
- 可移植性差,不能跨数据库移植
- 调试困难
- 版本管理困难
- 不适合高并发场景。