需求:
emp表的列信息很多,有些信息是个人重要信息,如果我们希望某个用户只能查询emp表的某些信息,有什么办法?
视图
1.视图时根据基表(可以是多个表)来创建的,视图时虚拟的表
2.视图也有列,数据来自基本表
3.视图与基表的修改会相互影响
CREATE VIEW emp_view
AS
SELECT empno,ename,job,deptno FROM emp;
ALTER VIEW emp_view AS SELECT empno,ename,job
SHOW CREATE VIEW emp_view
DROP VIEW emp_view
SELECT * FROM emp_view
细节
1.创建视图后,到数据库去看,对应视图只有一个视图结构文件(emp_view.frm)
2.视图与基表的修改会相互影响
3.视图中可以使用视图
视图实践
1.安全。一些数据表有重要信息,不能让用户随便看。
2.性能。关系数据库的数据常常会分别存储,使用外键建立这些表之间的关系,此时查询数据库通常会用到 JOIN 左连接右连接。如果建立一个视图,将相关的表和字段组合在一起,就可以避免 JOIN 查询数据。
3.灵活。如果系统中有一张旧的表,由于设计问题,即将被舍弃。然而,很多应用都基于这张表,不易修改。这时可以新建视图,将视图中的数据映射到新的表,这就可以少做很多的改动,也达到了升级数据库表的目的。
多表视图
SELECT empno,ename,dname,grade
FROM emp,dept,salgrade
WHERE emp.deptno=dept.deptno AND
sal >= losal AND sal <= hisal
DROP VIEW my_temp
CREATE VIEW my_temp
AS
SELECT empno,ename,dname,grade
FROM emp,dept,salgrade
WHERE emp.deptno=dept.deptno AND
sal >= losal AND sal <= hisal
DESC my_temp
SELECT * FROM my_temp
版权声明:本文为qq_45893570原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。