前言
本篇博客学习内容为视图、触发器、事务、存储过程、函数、数据备份及流程控制。
视图
什么是视图?
视图是由一张表或多张表的查询结果构成的一张虚拟表,建立一张视图后会在数据库中保留一个以 frm 后缀结尾的文件,只保留了数据结果,所有的数据都来自 sql 语句。
为什么使用视图?
在进行多表查询的时候,sql 语句会非常非常长,比如
select t1.student_id from (select student_id,num from score where course_id = (select cid from course where cname = '物理')) as t1 join(select student_id,num from score where course_id = (select cid from course where cname = '生物')) as t2 on t1.student_id = t2.student_id where t1.num > t2.num;看是不是很长,这还只是三表查询,如果遇到更加复杂的表结构肯定会更长,不过那样的话对表的维护困难也加大了。如果每次都编写需要得到相同数据的 sql 语句会是一件很麻烦的事,可以把经常需要查询的 sql 语句转变为视图就可以避免重复写 sql 语句的问题。
视图除了可以减少 sql 语句的编写次数,还可以使用不同的视图来展示不同数据的访问,那么给某些用户设置权限不就可以了吗?注意,设置的权限要么只能看某张表的全部数据,要么只能看某张表中的某个 column 的数据,也就是列数据,列数据只是保存了字段名,比如说我要查看我的当月工资,是需要查看一行数据的,这样权限就帮不了忙了。(当然可以加 where 条件,在这里是介绍视图)
使用方法
创建视图
mysql> create [or replace] view 视图名 [(column_list)] as select_statement;加上 or replace 时如果已经存在相同视图则替换原有视图,column_list 指定哪些字段要出现在视图中。注意:由于是一张虚拟表,视图中的数据实际来源于其他表,所以在视图中的数据不会出现在硬盘上,也就是只会保存一份数据结构。
使用视图
视图是一张虚拟表,所以使用方式与普通表没有区别。
查看视图
- 查看数据结构
 
mysql> desc view_name;- 查看创建语句
 
mysql> show create view view_name;修改视图
mysql> alter view_name select_statement;删除视图
mysql> drop view view_name;具体使用
案例一:简化多表 sql 语句
# 准备数据 mysql> create database db02 charset utf8; mysql> use db02; mysql> create table student(        s_id int(3),        name varchar(20),        math float,        chinese float); mysql> insert into student values(1,'tom',80,70),(2,'jack',80,80),(3,'rose',60,75); mysql> create table stu_info(        s_id int(3),        class varchar(50),        addr varchar(100)); mysql> insert into stu_info values(1,'二班','安徽'),(2,'二班','湖南'),(3,'三班','黑龙江'); # 创建视图包含编号、学生姓名、班级 mysql> create view stu_v (编号,姓名,班级) as select student.s_id,student.name,stu_info.class from student,stu_info where student.s_id = stu_info.s_id; 
                        
                        
                    