HTML上傳檔案支援大檔案上傳,下載解決方案
阿新 • • 發佈:2021-07-14
什麼是檢視
mysql5.1版本出現的新特性,本身是一個虛擬表,它的資料來自於表,通過執行時動態生成。
好處:
- 簡化sql語句
- 提高了sql的重用性
- 保護基表的資料,提高了安全性
使用
建立
create view 檢視名
as
查詢語句;
修改
//方式一:
create or replace view 檢視名
as
查詢語句;
//方式二:
alter view 檢視名
as
查詢語句
刪除
drop view 檢視1,檢視2,...;
檢視
desc 檢視名;
show create view 檢視名;
注意
不是所有的檢視都可以做DML操作。有下列內容之一,檢視不能做DML操作:
①select子句中包含distinct
②select子句中包含組函式
③select語句中包含group by子句
④select語句中包含order by子句
⑤select語句中包含union 、union all等集合運算子
⑥where子句中包含相關子查詢
⑦from子句中包含多個表
⑧如果檢視中有計算列,則不能更新
⑨如果基表中有某個具有非空約束的列未出現在檢視定義中,則不能做insert操作
檢視一般用於查詢的,而不是更新,所以具備以下特點的檢視都不允許更新
①包含分組函式、group by、distinct、having、union、
②join
③常量檢視
④where後的子查詢用到了from中的表
⑤用到了不可更新的檢視
檢視和表的對比
關鍵字 | 是否佔用物理空間 | 使用 |
---|---|---|
檢視view | 佔用較小,只儲存sql邏輯 | 一般用於查詢 |
表table | 儲存實際的資料 | 增刪改查 |
案例
一、建立檢視emp_v1,要求查詢電話號碼以‘011’開頭的員工姓名和工資、郵箱
CREATE OR REPLACE VIEW emp_v1
AS
SELECT last_name,salary,email
FROM employees
WHERE phone_number LIKE '011%';
二、建立檢視emp_v2,要求查詢部門的最高工資高於12000的部門資訊
CREATE OR REPLACE VIEW emp_v2 AS SELECT MAX(salary) mx_dep,department_id FROM employees GROUP BY department_id HAVING MAX(salary)>12000; SELECT d.*,m.mx_dep FROM departments d JOIN emp_v2 m ON m.department_id = d.department_id;