日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql数据库入门教程(11):视图讲解大全

發布時間:2024/9/30 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql数据库入门教程(11):视图讲解大全 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.視圖的介紹

含義:虛擬表,和普通表一樣使用
mysql5.1版本出現的新特性,是通過表動態生成的數據

舉例說明什么是視圖:假設一個年級有10個班,上面有領導來啦,說要檢查舞蹈功底,學校為了應付檢查,把每個班會跳舞的女孩子抽出來臨時組成一個舞蹈班,這個班只在領導來啦才存在。這個班就是視圖

案例說明講解:

#案例:查詢姓張的學生名和專業名
以前我們的做法

SELECT stuname,majorname FROM stuinfo s INNER JOIN major m ON s.`majorid`= m.`id` WHERE s.`stuname` LIKE '張%';

現在視圖的做法,把常用的封裝起來

CREATE VIEW v1 AS SELECT stuname,majorname FROM stuinfo s INNER JOIN major m ON s.`majorid`= m.`id`;

查詢時直接輸入

SELECT * FROM v1 WHERE stuname LIKE '張%';

二.視圖的創建

語法:
create view 視圖名
as
查詢語句;

一般是復雜的查詢語句,簡單的用不著

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

USE myemployees;#①創建 CREATE VIEW myv1 ASSELECT 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;#②使用 SELECT * FROM myv1 WHERE last_name LIKE '%a%';

其中涉及到的多表查詢
mysql數據庫入門教程(5):多表操作(連接查詢,子查詢,分頁查詢,聯合查詢)

案例:#2.查詢各部門的平均工資級別

USE myemployees; #①創建視圖查看每個部門的平均工資 #1創建 CREATE VIEW myv2 AS SELECT AVG(salary) ag,department_id FROM employees GROUP BY department_id;#②使用 SELECT myv2.`ag`,g.grade_level FROM myv2 JOIN job_grades g ON myv2.`ag` BETWEEN g.`lowest_sal` AND g.`highest_sal`;

三.視圖的修改

#方式一:
/*
create or replace view 視圖名
as
查詢語句;
*/

如果該視圖存在就修改,如果不存在就創建
案例修改
原始視圖

USE myemployees; #4.查詢平均工資最低的部門名和工資CREATE VIEW myv3 AS SELECT * FROM myv2 ORDER BY ag LIMIT 1;SELECT d.*,m.ag FROM myv3 m JOIN departments d ON m.`department_id`=d.`department_id`;

修改

視圖的修改CREATE OR REPLACE VIEW myv3 AS SELECT AVG(salary),job_id FROM employees GROUP BY job_id;SELECT * FROM myv3

#方式二:
/*
語法:
alter view 視圖名
as
查詢語句;
*/

語法例子

ALTER VIEW myv3 AS SELECT * FROM employees;

四.視圖的刪除

/*
語法:drop view 視圖名,視圖名,…;
*/

DROP VIEW emp_v1,emp_v2,myv3;

五.視圖的查看

DESC 視圖名

DESC myv3;

SHOW CREATE VIEW 視圖名;

SHOW CREATE VIEW myv3;

`

六.視圖的更新

更新 是更新視圖中的數據

案例1 失敗案例
首先 創建一個視圖

USE myemployees;CREATE OR REPLACE VIEW myv1 AS SELECT last_name,email,salary*12*(1+IFNULL(commission_pct,0)) "annual salary" FROM employees;SELECT* FROM myv1;

數據修改、

#1.插入INSERT INTO myv1 VALUES('張飛','zf@qq.com',100000);

案例2 成功案例
把案例1中的年薪去掉
創建視圖

USE myemployees;CREATE OR REPLACE VIEW myv1 AS SELECT last_name,email FROM employees;SELECT * FROM myv1;

插入數據
語法和表格插入一樣

#1.插入INSERT INTO myv1 VALUES('張飛','zf@qq.com');

#2.修改

UPDATE myv1 SET last_name = '張無忌' WHERE last_name='張飛';

#3 刪除

#3.刪除 DELETE FROM myv1 WHERE last_name = '張無忌';

#具備以下特點的視圖不允許更新

#①包含以下關鍵字的sql語句:分組函數、distinct、group by、having、union或者union all

USE myemployees;#①包含以下關鍵字的sql語句:分組函數、distinct、group by、having、union或者union allCREATE OR REPLACE VIEW myv1 AS SELECT MAX(salary) m,department_id FROM employees GROUP BY department_id;SELECT * FROM myv1;#更新 UPDATE myv1 SET m=9000 WHERE department_id=10;

報錯

#②常量視圖 -查詢語句后面是一個常量

CREATE OR REPLACE VIEW myv2 ASSELECT 'john' NAME;SELECT * FROM myv2;#更新 UPDATE myv2 SET NAME='lucy';

#③Select中包含子查詢

USE myemployees; CREATE OR REPLACE VIEW myv3 ASSELECT department_id,(SELECT MAX(salary) FROM employees) 最高工資 FROM departments;#更新 SELECT * FROM myv3; UPDATE myv3 SET 最高工資=100000;

#④join

USE myemployees; CREATE OR REPLACE VIEW myv4 ASSELECT last_name,department_name FROM employees e JOIN departments d ON e.department_id = d.department_id;#更新SELECT * FROM myv4; UPDATE myv4 SET last_name = '張飛' WHERE last_name='Whalen'; INSERT INTO myv4 VALUES('陳真','xxxx');

#⑤from一個不能更新的視圖

CREATE OR REPLACE VIEW myv5 ASSELECT * FROM myv3;#更新SELECT * FROM myv5;UPDATE myv5 SET 最高工資=10000 WHERE department_id=60;

#⑥where子句的子查詢引用了from子句中的表

CREATE OR REPLACE VIEW myv6 ASSELECT last_name,email,salary FROM employees WHERE employee_id IN(SELECT manager_idFROM employeesWHERE manager_id IS NOT NULL );#更新 SELECT * FROM myv6; UPDATE myv6 SET salary=10000 WHERE last_name = 'k_ing';

電氣工程的計算機萌新,寫博文不容易,如果你覺得本文對你有用,請點個贊支持下,謝謝。

總結

以上是生活随笔為你收集整理的mysql数据库入门教程(11):视图讲解大全的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。