视图、多表视图

需求:
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版权协议,转载请附上原文出处链接和本声明。