為什麼需要視圖:
總結:
簡化查詢
避免了代碼的備援
筆迷那了屬性大量重複的sql語句
什麼是視圖:
視圖從代碼上來看是select語句
視圖從邏輯上來看是臨時表
視圖格式
create view 視圖名字
as
—-select前面不能寫begin
select 語句
—-select後面不能寫end
視圖優點:
簡化查詢
增加資料的保密性
視圖的缺點:
增加了資料庫的維護的成本
比如 如果原始表删除了列 而視圖還是原來的 ,運作時就會報錯
視圖隻是簡化了查詢,并沒有加快查詢的速度,這也是視圖使用不足的地方
注意的問題:
建立視圖的select語句必須的為所有的計算列指定别名
-----error
create view v$_a
as
select avg(sal) from emp;
----ok
create view v$_a
as
select avg(sal) as "avg_sal" from emp;
視圖不是實體表,是虛拟表
不建議通過視圖更新視圖所依附的原始表的資料或者結果
總結:通常用視圖來查詢,而不是操作修改原始表
執行個體:求出平均工資最高的部門的編号和部門的平均工資
select *
from (
select deptno,AVG(sal) "avg_sal"
from emp
group by deptno
)"T"
where "T".avg_sal=(
select MAX("E"."avg_sal") from( select deptno,AVG(sal) "avg_sal"
from emp
group by deptno
)"E"
)
等效于下面的
create view v$_emp_1 //建立視圖
as
select deptno,AVG(sal) "avg_sal"
from emp
group by deptno
select *from v$_emp_1
where avg_sal=(select MAX(avg_sal) from v$_emp_1)
select deptno,AVG(sal) “avg_sal”
from emp
group by deptno
用視圖v$_emp_1 來代替