1.表与视图的关系
两者处于不同的层次。
表是真实存在的结构,而视图可以认为是虚拟的表。
两者处于不同的层次。
表是真实存在的结构,而视图可以认为是虚拟的表。
2.定义的区别
表 -- 是数据库中的主要结构,它总是表示单个的、特定的集合。每个表至少包含一个字段,即一个主键(primary key),他唯一地标识表的每条记录。
视图 -- 是由来自数据库中的一个或多个表或多个表的字段所组成的一个虚拟的表。实际上它自身不存储任何数据,存储在数据库中的有关视图的唯一信息就是它的结构。
视图 -- 是由来自数据库中的一个或多个表或多个表的字段所组成的一个虚拟的表。实际上它自身不存储任何数据,存储在数据库中的有关视图的唯一信息就是它的结构。
3.实践中检验一下
orcl@ TEST> create view v1 as select * from emp;
视图已创建。
已用时间: 00: 00: 00.00
orcl@ TEST> select * from emp;
orcl@ TEST> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEP
---------- ---------- --------- ---------- -------------- ---------- ---------- -------
7369 SMITH CLERK 7902 17-12月-80 800
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300
7521 WARD SALESMAN 7698 22-2月 -81 1250 500
7566 JONES MANAGER 7839 02-4月 -81 2975
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400
7698 BLAKE MANAGER 7839 01-5月 -81 2850
7782 CLARK MANAGER 7839 09-6月 -81 2450
7788 SCOTT ANALYST 7566 19-4月 -87 3000
7839 KING PRESIDENT 17-11月-81 5000
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0
7876 ADAMS CLERK 7788 23-5月 -87 1100
7900 JAMES CLERK 7698 03-12月-81 950
7902 FORD ANALYST 7566 03-12月-81 3000
---------- ---------- --------- ---------- -------------- ---------- ---------- -------
7369 SMITH CLERK 7902 17-12月-80 800
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300
7521 WARD SALESMAN 7698 22-2月 -81 1250 500
7566 JONES MANAGER 7839 02-4月 -81 2975
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400
7698 BLAKE MANAGER 7839 01-5月 -81 2850
7782 CLARK MANAGER 7839 09-6月 -81 2450
7788 SCOTT ANALYST 7566 19-4月 -87 3000
7839 KING PRESIDENT 17-11月-81 5000
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0
7876 ADAMS CLERK 7788 23-5月 -87 1100
7900 JAMES CLERK 7698 03-12月-81 950
7902 FORD ANALYST 7566 03-12月-81 3000
已选择13行。
已用时间: 00: 00: 00.13
orcl@ TEST> select * from v1;
orcl@ TEST> select * from v1;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEP
---------- ---------- --------- ---------- -------------- ---------- ---------- -------
7369 SMITH CLERK 7902 17-12月-80 800
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300
7521 WARD SALESMAN 7698 22-2月 -81 1250 500
7566 JONES MANAGER 7839 02-4月 -81 2975
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400
7698 BLAKE MANAGER 7839 01-5月 -81 2850
7782 CLARK MANAGER 7839 09-6月 -81 2450
7788 SCOTT ANALYST 7566 19-4月 -87 3000
7839 KING PRESIDENT 17-11月-81 5000
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0
7876 ADAMS CLERK 7788 23-5月 -87 1100
7900 JAMES CLERK 7698 03-12月-81 950
7902 FORD ANALYST 7566 03-12月-81 3000
---------- ---------- --------- ---------- -------------- ---------- ---------- -------
7369 SMITH CLERK 7902 17-12月-80 800
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300
7521 WARD SALESMAN 7698 22-2月 -81 1250 500
7566 JONES MANAGER 7839 02-4月 -81 2975
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400
7698 BLAKE MANAGER 7839 01-5月 -81 2850
7782 CLARK MANAGER 7839 09-6月 -81 2450
7788 SCOTT ANALYST 7566 19-4月 -87 3000
7839 KING PRESIDENT 17-11月-81 5000
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0
7876 ADAMS CLERK 7788 23-5月 -87 1100
7900 JAMES CLERK 7698 03-12月-81 950
7902 FORD ANALYST 7566 03-12月-81 3000
已选择13行。
已用时间: 00: 00: 00.13
orcl@ TEST> roll;
回退已完成。
orcl@ TEST> select * from v1;
orcl@ TEST> roll;
回退已完成。
orcl@ TEST> select * from v1;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEP
---------- ---------- --------- ---------- -------------- ---------- ---------- -------
7369 SMITH CLERK 7902 17-12月-80 800
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300
7521 WARD SALESMAN 7698 22-2月 -81 1250 500
7566 JONES MANAGER 7839 02-4月 -81 2975
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400
7698 BLAKE MANAGER 7839 01-5月 -81 2850
7782 CLARK MANAGER 7839 09-6月 -81 2450
7788 SCOTT ANALYST 7566 19-4月 -87 3000
7839 KING PRESIDENT 17-11月-81 5000
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0
7876 ADAMS CLERK 7788 23-5月 -87 1100
7900 JAMES CLERK 7698 03-12月-81 950
7902 FORD ANALYST 7566 03-12月-81 3000
---------- ---------- --------- ---------- -------------- ---------- ---------- -------
7369 SMITH CLERK 7902 17-12月-80 800
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300
7521 WARD SALESMAN 7698 22-2月 -81 1250 500
7566 JONES MANAGER 7839 02-4月 -81 2975
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400
7698 BLAKE MANAGER 7839 01-5月 -81 2850
7782 CLARK MANAGER 7839 09-6月 -81 2450
7788 SCOTT ANALYST 7566 19-4月 -87 3000
7839 KING PRESIDENT 17-11月-81 5000
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0
7876 ADAMS CLERK 7788 23-5月 -87 1100
7900 JAMES CLERK 7698 03-12月-81 950
7902 FORD ANALYST 7566 03-12月-81 3000
已选择13行。
已用时间: 00: 00: 00.12
orcl@ TEST> delete from v1 where empno=7902;
orcl@ TEST> delete from v1 where empno=7902;
已删除 1 行。
已用时间: 00: 00: 00.01
orcl@ TEST> select * from v1;
orcl@ TEST> select * from v1;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEP
---------- ---------- --------- ---------- -------------- ---------- ---------- -------
7369 SMITH CLERK 7902 17-12月-80 800
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300
7521 WARD SALESMAN 7698 22-2月 -81 1250 500
7566 JONES MANAGER 7839 02-4月 -81 2975
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400
7698 BLAKE MANAGER 7839 01-5月 -81 2850
7782 CLARK MANAGER 7839 09-6月 -81 2450
7788 SCOTT ANALYST 7566 19-4月 -87 3000
7839 KING PRESIDENT 17-11月-81 5000
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0
7876 ADAMS CLERK 7788 23-5月 -87 1100
7900 JAMES CLERK 7698 03-12月-81 950
---------- ---------- --------- ---------- -------------- ---------- ---------- -------
7369 SMITH CLERK 7902 17-12月-80 800
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300
7521 WARD SALESMAN 7698 22-2月 -81 1250 500
7566 JONES MANAGER 7839 02-4月 -81 2975
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400
7698 BLAKE MANAGER 7839 01-5月 -81 2850
7782 CLARK MANAGER 7839 09-6月 -81 2450
7788 SCOTT ANALYST 7566 19-4月 -87 3000
7839 KING PRESIDENT 17-11月-81 5000
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0
7876 ADAMS CLERK 7788 23-5月 -87 1100
7900 JAMES CLERK 7698 03-12月-81 950
已选择12行。
已用时间: 00: 00: 00.13
orcl@ TEST> select * from emp;
orcl@ TEST> select * from emp;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEP
---------- ---------- --------- ---------- -------------- ---------- ---------- -------
7369 SMITH CLERK 7902 17-12月-80 800
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300
7521 WARD SALESMAN 7698 22-2月 -81 1250 500
7566 JONES MANAGER 7839 02-4月 -81 2975
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400
7698 BLAKE MANAGER 7839 01-5月 -81 2850
7782 CLARK MANAGER 7839 09-6月 -81 2450
7788 SCOTT ANALYST 7566 19-4月 -87 3000
7839 KING PRESIDENT 17-11月-81 5000
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0
7876 ADAMS CLERK 7788 23-5月 -87 1100
7900 JAMES CLERK 7698 03-12月-81 950
---------- ---------- --------- ---------- -------------- ---------- ---------- -------
7369 SMITH CLERK 7902 17-12月-80 800
7499 ALLEN SALESMAN 7698 20-2月 -81 1600 300
7521 WARD SALESMAN 7698 22-2月 -81 1250 500
7566 JONES MANAGER 7839 02-4月 -81 2975
7654 MARTIN SALESMAN 7698 28-9月 -81 1250 1400
7698 BLAKE MANAGER 7839 01-5月 -81 2850
7782 CLARK MANAGER 7839 09-6月 -81 2450
7788 SCOTT ANALYST 7566 19-4月 -87 3000
7839 KING PRESIDENT 17-11月-81 5000
7844 TURNER SALESMAN 7698 08-9月 -81 1500 0
7876 ADAMS CLERK 7788 23-5月 -87 1100
7900 JAMES CLERK 7698 03-12月-81 950
已选择12行。
已用时间: 00: 00: 00.12
------------------------从上面的操作可以发现,我们对 视图进行操作,最终仍然反映到表中,同样的道理,我们对表进行操作时,视图也会发生相应的改变,下面我们从执行计划的角度查看,视图是如何操作的---------------------------------------
orcl@ TEST> set autot trace exp
orcl@ TEST> delete from emp where empno=7902;
orcl@ TEST> set autot trace exp
orcl@ TEST> delete from emp where empno=7902;
已删除 1 行。
已用时间: 00: 00: 00.02
执行计划
----------------------------------------------------------
Plan hash value: 161811703
----------------------------------------------------------
Plan hash value: 161811703
---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | DELETE STATEMENT | | 1 | 4 | 3 (0)| 00:00:01 |
| 1 | DELETE | EMP | | | | |
|* 2 | TABLE ACCESS FULL| EMP | 1 | 4 | 3 (0)| 00:00:01 |
---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | DELETE STATEMENT | | 1 | 4 | 3 (0)| 00:00:01 |
| 1 | DELETE | EMP | | | | |
|* 2 | TABLE ACCESS FULL| EMP | 1 | 4 | 3 (0)| 00:00:01 |
---------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
---------------------------------------------------
2 - filter("EMPNO"=7902)
orcl@ TEST> delete from v1 where empno=7902;
已删除0行。
已用时间: 00: 00: 00.02
执行计划
----------------------------------------------------------
Plan hash value: 161811703
----------------------------------------------------------
Plan hash value: 161811703
---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | DELETE STATEMENT | | 1 | 4 | 3 (0)| 00:00:01 |
| 1 | DELETE | EMP | | | | |
|* 2 | TABLE ACCESS FULL| EMP | 1 | 4 | 3 (0)| 00:00:01 |
---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | DELETE STATEMENT | | 1 | 4 | 3 (0)| 00:00:01 |
| 1 | DELETE | EMP | | | | |
|* 2 | TABLE ACCESS FULL| EMP | 1 | 4 | 3 (0)| 00:00:01 |
---------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
---------------------------------------------------
2 - filter("EMPNO"=7902)
-------------------------发现了一个很实质的问题,我们对视图进行delete,执行计划显示的却是 emp表----------------------
-------------------------发现了一个很实质的问题,我们对视图进行delete,执行计划显示的却是 emp表----------------------
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/25623297/viewspace-691810/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/25623297/viewspace-691810/