1.定义:
视图是从若干基本表和(或)其他视图构造出来的表。
在创建一个视图时,只是存放的视图的定义,也即是动态检索数据的查询语句,而并不存放视图对应的数据
在用户使用视图时才去求相对应的数据。所以视图被称作“虚表”
2.作用:可以限制对数据的访问,可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。
可以使复杂的查询变的简单。在编写查询后,可以方便地重用它而不必知道他的基本查询细节。
提供了对相同数据的不同显示
创建视图
CREATE [OR REPLACE] VIEW view
[(alias[, alias]...)]
AS subquery
[WITH READ ONLY];
3.查询视图
select * from viewname
不需要再写完全的Select查询语句,
4.删除视图
Drop view viewname;
删掉视图不会导致数据丢失,因为视图是基于数据库表的一个查询
5.总结
视图是一个虚拟表,对应一条SELECT语句,可将它的输出看作一个表
视图不存储数据
改变基本表的数据,也会反应到基于该表的视图上
视图可以基于基本表的若干行,若干列
视图可以基于一个表、多个表,甚至是基于其他的视图
使用视图可以提高数据访问的安全性,只显示指定的行列数据
使用视图可以降低查询的难度,定制数据显示
可以对视图进行CRUD操作,实际上是对基本表的CRUD操作
如果视图对应多个表,一般不允许添加操作,可以通过触发器解决
使用with read only定义只读视图
小例子:
--视图的作用1.可以隐藏某些字段 2.简化复杂SQL查询操作
--【创建视图】
CREATE OR REPLACE VIEW VIEW_STUDENT AS (SELECT * FROM STUDENT);
CREATE OR REPLACE VIEW VIEW_STUDENT AS (SELECT SNO,SNAME,SEX FROM STUDENT);
--查询视图
SELECT * FROM VIEW_STUDENT;
--删除视图
DROP VIEW VIEW_STUDENT;
--添加操作
INSERT INTO VIEW_STUDENT VALUES(1011,'ZHAOLIU','女');
--修改操作
UPDATE VIEW_STUDENT SET SNAME='HELLO' WHERE SNO = 1011;
--删除操作
DELETE FROM VIEW_STUDENT WHERE SNO = 1011;
--设置成只读视图
CREATE OR REPLACE VIEW VIEW_STUDENT AS (SELECT SNO,SNAME,SEX FROM STUDENT) WITH READ ONLY;
--授予创建视图权限
GRANT CREATE VIEW TO scott;