視圖

  • 含義:虛擬的表,和普通表同樣使用。是經過普通表動態生成的數據。只保存sql邏輯,不保存查詢結果。
  • 應用場景:
  1. 多個地方用到一樣的查詢結果
  2. 該查詢結果使用的sql語句較複雜

1、視圖的建立

語法:sql

create view 視圖名
as
查詢語句

例1:查詢姓名中包含a字符的員工名、部門名和工種信息安全

1.建立
create view myv1
as
select last_name,department_name,job_title
from employees e
join departments d on e.department_id = d.department_id
join jobs j on j.job_id = e.job_id;

2.使用
select * from myv2 where last_name like '%a%;'

2、視圖的好處

  1. 重用sql語句
  2. 簡化複雜的sql操做,沒必要知道它的查詢細節
  3. 保護數據,提升安全性

3、視圖的修改

方式一:函數

create or replace view 視圖名
as
查詢語句

方式二:code

alter view 視圖名
as 
查詢語句

4、視圖的刪除

語法:
drop view 視圖名,視圖名,...;it

5、視圖的查看

  1. desc 視圖名;
  2. show create view 視圖名;

6、視圖的更新

視圖的更新與表的更新相同,但對其進行的修改至關於在原表上進行修改
具有如下特色的視圖不容許更新:io

  1. 包含如下關鍵字的sql語句:分組函數、distinct、group by、having、union或者union all
  2. 常量視圖
  3. select中包含子查詢
  4. join:能夠修改但不能插入
  5. from一個不能更新的視圖
  6. where子句的子查詢引用了from子句中的表

視圖和表的比較

  1. 視圖不實際佔用物理空間(只保存了sql邏輯),表佔用實際物理空間
  2. 視圖通常不修改
相關文章
相關標籤/搜索