视图
视图是一个虚拟表,其内容由查询定义,与真实的表一样,视图包含列,其数据来自对应的真实表(基表)
视图的基本原理:
视图的基本使用:
创建视图:
create view 视图名 as select语句
sqlCREATE VIEW emp_view AS SELECT empno, ename, job, deptno FROM emp;
empno, ename, job, deptno
为获取基表中对应的字段使用多张表来创建一个视图:
sql-- 先使用三表联合查询,得到结果 -- 再将得到的结果,构建视图 CREATE VIEW emp_view AS SELECT empno, ename, dname, grade FROM emp, dept, salgrade WHERE emp.deptno = dept.deptno AND (sal BETWEEN losal AND hisal)
修改视图:
alter view 视图名 as select语句
查看视图的结构:
DESC 视图名
查看视图的内容:
SELECT * FROM 视图名
显示使用哪个指令来创建视图的:
show create view 视图名
删除视图:
drop view 视图名
注意事项:
- 创建视图后,到数据库中查看,对应视图只有一个视图结构的文件(形式:视图名.frm)
- 视图的数据变化会影响到基表,同理,基表的数据变化也会影响到视图
- 视图中可以在使用视图,数据仍然来自基表
视图的最佳实践:
- 安全:一些数据表有着重要的信息,有些字段是保密的,不能让用户直接看到,这时可以创建一个视图,在视图中只保留一部分的字段。这样,用户就可以查询到自己需要的字段,同时,不能看到保密的字段
- 性能:关系数据库的数据常常会分表存储,使用外键建立这些表的连接,这时数据库查询通常会用到
JOIN
连接。这样做不但麻烦,效率也相对低,如果建立一个视图,将相关的表和字段组合在一起,可以避免使用JOIN
查询数据 - 灵活:如果系统中有一种旧表,这张表由于设计的问题,即将被废弃。然而,很多应用都是基于这张表,不易修改。这时可以建立一张视图,视图中的数据直接映射到这张新建的表,这样,就可以少做很多改动,也达到了升级数据表的目的