十一、MySQL视图学习笔记(详解)
生活随笔
收集整理的這篇文章主要介紹了
十一、MySQL视图学习笔记(详解)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
視圖
含義:理解成一張?zhí)摂M的表,和普通表一樣使用
mysql5.1版本出現(xiàn)的新特性,是通過(guò)表動(dòng)態(tài)生成的數(shù)據(jù)
比如:舞蹈班和普通班級(jí)的對(duì)比
視圖和表的區(qū)別:
| 視圖 | create view | 增刪改查,只是一般不能增刪改 | 不占用,僅僅保存的是sql邏輯 |
| 表 | create table | 增刪改查 | 占用 |
視圖的好處:
1、sql語(yǔ)句提高重用性,效率高 2、和表實(shí)現(xiàn)了分離,提高了安全性視圖的創(chuàng)建
語(yǔ)法: CREATE VIEW 視圖名 AS 查詢語(yǔ)句;視圖的增刪改查
1、查看視圖的數(shù)據(jù) ★SELECT * FROM my_v4; SELECT * FROM my_v1 WHERE last_name='Partners';2、插入視圖的數(shù)據(jù) INSERT INTO my_v4(last_name,department_id) VALUES('虛竹',90);3、修改視圖的數(shù)據(jù)UPDATE my_v4 SET last_name ='夢(mèng)姑' WHERE last_name='虛竹';4、刪除視圖的數(shù)據(jù) DELETE FROM my_v4;某些視圖不能更新
包含以下關(guān)鍵字的sql語(yǔ)句:分組函數(shù)、distinct、group by、having、union或者union all 常量視圖 Select中包含子查詢 join from一個(gè)不能更新的視圖 where子句的子查詢引用了from子句中的表視圖邏輯的更新
#方式一: CREATE OR REPLACE VIEW test_v7 AS SELECT last_name FROM employees WHERE employee_id>100;方式二: ALTER VIEW test_v7 AS SELECT employee_id FROM employees;SELECT * FROM test_v7;視圖的刪除
DROP VIEW test_v1,test_v2,test_v3;視圖結(jié)構(gòu)的查看
DESC test_v7; SHOW CREATE VIEW test_v7;一、創(chuàng)建視圖
語(yǔ)法:
create view 視圖名
as
查詢語(yǔ)句;
二、視圖的修改
方式一:
語(yǔ)法:
create or replace view 視圖名
as
查詢語(yǔ)句;
方式二:
語(yǔ)法:
alter view 視圖名
as
查詢語(yǔ)句;
三、刪除視圖
語(yǔ)法:drop view 視圖名,視圖名,…;
#三、刪除視圖/*語(yǔ)法:drop view 視圖名,視圖名,...; */DROP VIEW emp_v1,emp_v2,myv3;四、查看視圖
#四、查看視圖DESC myv3;SHOW CREATE VIEW myv3;五、視圖的更新
#五、視圖的更新CREATE OR REPLACE VIEW myv1 AS SELECT last_name,email,salary*12*(1+IFNULL(commission_pct,0)) "annual salary" FROM employees;CREATE OR REPLACE VIEW myv1 AS SELECT last_name,email FROM employees;SELECT * FROM myv1; SELECT * FROM employees; #1.插入INSERT INTO myv1 VALUES('張飛','zf@qq.com');#2.修改 UPDATE myv1 SET last_name = '張無(wú)忌' WHERE last_name='張飛';#3.刪除 DELETE FROM myv1 WHERE last_name = '張無(wú)忌';#具備以下特點(diǎn)的視圖不允許更新#①包含以下關(guān)鍵字的sql語(yǔ)句:分組函數(shù)、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中包含子查詢CREATE OR REPLACE VIEW myv3 ASSELECT department_id,(SELECT MAX(salary) FROM employees) 最高工資 FROM departments;#更新 SELECT * FROM myv3; UPDATE myv3 SET 最高工資=100000;#④join 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一個(gè)不能更新的視圖 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';總結(jié)
以上是生活随笔為你收集整理的十一、MySQL视图学习笔记(详解)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 六、Web服务器——FilterList
- 下一篇: 七、MySQL DDL数据定义语言 学习