Ⅰ、介绍:
视图是一个虚拟表,其内容有查询定义,同真实的表一样,视图包含一系列带有名称的行和列数据,但是视图并不再数据库中一存储的数据值集形式存在。行和列的数据来自由定义视图的查询所引用的表,并且咋引用视图时动态生成;
㈠、案例:
①、如果要显示各个雇员的名字和他所在部门的名称,必须用两张表;但是现在只想用一张表就能完成;
②、假设管理员创建了一个用户,小红,但是希望小红只能够查询sal小于1000的雇员信息;
㈡、视图与表的区别:
①、表需要占用磁盘空间,视图不需要;
②、视图不能添加索引;
③、使用视图可以简化复杂查询;
④、视图有利于提高安全性;
Ⅱ、创建视图:
create view viewName as select语句 【with read only】;
--用system给scott用户授权;
--创建视图:把emp表的sal<1000的雇员映射到一张视图中;
Ⅲ、创建或修改视图:
create or replace view 视图名 as select语句 【with read only】;
【with read only】:表示视图只能读取而不能更改;
Ⅳ、删除视图;
drop view 视图名;
视图是一个虚拟表,其内容有查询定义,同真实的表一样,视图包含一系列带有名称的行和列数据,但是视图并不再数据库中一存储的数据值集形式存在。行和列的数据来自由定义视图的查询所引用的表,并且咋引用视图时动态生成;
㈠、案例:
①、如果要显示各个雇员的名字和他所在部门的名称,必须用两张表;但是现在只想用一张表就能完成;
②、假设管理员创建了一个用户,小红,但是希望小红只能够查询sal小于1000的雇员信息;
㈡、视图与表的区别:
①、表需要占用磁盘空间,视图不需要;
②、视图不能添加索引;
③、使用视图可以简化复杂查询;
④、视图有利于提高安全性;
Ⅱ、创建视图:
create view viewName as select语句 【with read only】;
--用system给scott用户授权;
SQL> grant create view to scott;
Grant succeeded.
--创建视图:把emp表的sal<1000的雇员映射到一张视图中;
SQL> conn scott/Spongcer123
Connected.
SQL> create view myview as select * from emp where sal < 1000;
View created.
Ⅲ、创建或修改视图:
create or replace view 视图名 as select语句 【with read only】;
【with read only】:表示视图只能读取而不能更改;
SQL> create or replace view myview as select empno , ename,dname from emp , dept where emp.deptno=dept.deptno;
View created.
SQL> select * from myview;
EMPNO ENAME DNAME
---------- ---------- --------------
7782 CLARK ACCOUNTING
7839 KING ACCOUNTING
7934 MILLER ACCOUNTING
7566 JONES RESEARCH
7902 FORD RESEARCH
7876 ADAMS RESEARCH
7369 SMITH RESEARCH
7788 SCOTT RESEARCH
7521 WARD SALES
7844 TURNER SALES
7499 ALLEN SALES
EMPNO ENAME DNAME
---------- ---------- --------------
7900 JAMES SALES
7698 BLAKE SALES
7654 MARTIN SALES
14 rows selected.
Ⅳ、删除视图;
drop view 视图名;
SQL> drop view myview;
View dropped.