数据库(七)

 

前言

本篇博客学习内容为视图、触发器、事务、存储过程、函数、数据备份及流程控制。

视图

什么是视图?

视图是由一张表或多张表的查询结果构成的一张虚拟表,建立一张视图后会在数据库中保留一个以 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 指定哪些字段要出现在视图中。注意:由于是一张虚拟表,视图中的数据实际来源于其他表,所以在视图中的数据不会出现在硬盘上,也就是只会保存一份数据结构。

使用视图

视图是一张虚拟表,所以使用方式与普通表没有区别。

查看视图

  1. 查看数据结构
mysql> desc view_name;
  1. 查看创建语句
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; 
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信