<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
檢視(view)是一個虛擬表,非真實存在,其本質是根據SQL語句獲取動態的資料集,併為其命名,使用者使用時只需使用檢視名稱即可獲取結果集,並可以將其當作表來使用。 資料庫中只存放了檢視的定義,而並沒有存放檢視中的資料。這些資料存放在原來的表中。 使用檢視查詢資料時,資料庫系統會從原來的表中取出對應的資料。因此,檢視中的資料是依賴於原來的表中的資料的。一旦表中的資料發生改變,顯示在檢視中的資料也會發生改變。
簡化程式碼,可以把重複使用的查詢封裝成檢視重複使用,同時可以使複雜的查詢易於理解和使用。
安全原因,如果一張表中有很多資料,很多資訊不希望讓所有人看到,此時可以使用檢視視,如:
社會保險基金錶,可以用檢視只顯示姓名,地址,而不顯示社會保險號和工資數等,可以對不同的使用者,設定不同的檢視。
create [or replace] [algorithm = {undefined | merge | temptable}] view view_name [(column_list)] as select_statement [with [cascaded | local] check option] 引數說明: (1)algorithm:可選項,表示檢視選擇的演演算法。 (2)view_name :表示要建立的檢視名稱。 (3)column_list:可選項,指定檢視中各個屬性的名詞,預設情況下與SELECT語句中的查詢的屬性相同。 (4)select_statement :表示一個完整的查詢語句,將查詢記錄匯入檢視中。 (5)[with [cascaded | local] check option]:可選項,表示更新檢視時要保證在該檢視的許可權範圍之內。
建立 資料庫mydb6_view,然後在該資料庫下執行sql指令碼view_data.sql 匯入資料
create database mydb6_view;
create or replace view view1_emp as select ename,job from emp; -- 檢視表和檢視 show full tables;
修改檢視是指修改資料庫中已存在的表的定義。當基本表的某些欄位發生改變時,可以通過修改視
圖來保持檢視和基本表之間一致。MySQL中通過CREATE OR REPLACE VIEW語句和ALTER VIEW語句來修改檢視。
alter view 檢視名 as select語句
alter view view1_emp as select a.deptno,a.dname,a.loc,b.ename,b.sal from dept a, emp b where a.deptno = b.deptno;
某些檢視是可更新的。也就是說,可以在UPDATE、DELETE或INSERT等語句中使用它們,以更
新基表的內容。對於可更新的檢視,在檢視中的行和基表中的行之間必須具有一對一的關係。如果
檢視包含下述結構中的任何一種,那麼它就是不可更新的: 聚合函數(SUM(), MIN(), MAX(),
COUNT()等) DISTINCT GROUP BY HAVING UNION或UNION ALL 位於選擇列表中的子查詢
JOIN FROM子句中的不可更新檢視 WHERE子句中的子查詢,參照FROM子句中的表。 僅參照文
字值(在該情況下,沒有要更新的基本表)
檢視中雖然可以更新資料,但是有很多的限制。一般情況下,最好將檢視作為查詢資料的虛擬表,
而不要通過檢視更新資料。因為,使用檢視更新資料時,如果沒有全面考慮在檢視中更新資料的限
制,就可能會造成資料更新失敗。
-- ---------更新檢視------- create or replace view view1_emp as select ename,job from emp; update view1_emp set ename = '周瑜' where ename = '魯肅'; -- 可以修改 insert into view1_emp values('孫權','文員'); -- 不可以插入 -- ----------檢視包含聚合函數不可更新-------------- create or replace view view2_emp as select count(*) cnt from emp; insert into view2_emp values(100); update view2_emp set cnt = 100;
-- ----------檢視包含distinct不可更新--------- create or replace view view3_emp as select distinct job from emp; insert into view3_emp values('財務'); -- ----------檢視包含goup by 、having不可更新------------------ create or replace view view4_emp as select deptno ,count(*) cnt from emp group by deptno having cnt > 2; insert into view4_emp values(30,100);
-- ----------------檢視包含union或者union all不可更新---------------- create or replace view view5_emp as select empno,ename from emp where empno <= 1005 union select empno,ename from emp where empno > 1005; insert into view5_emp values(1015,'韋小寶'); -- -------------------檢視包含子查詢不可更新-------------------- create or replace view view6_emp as select empno,ename,sal from emp where sal = (select max(sal) from emp); insert into view6_emp values(1015,'韋小寶',30000);
-- ----------------------檢視包含join不可更新----------------- create or replace view view7_emp as select dname,ename,sal from emp a join dept b on a.deptno = b.deptno; insert into view7_emp(dname,ename,sal) values('行政部','韋小寶',30000); -- --------------------檢視包含常數文字值不可更新------------------- create or replace view view8_emp as select '行政部' dname,'楊過' ename; insert into view8_emp values('行政部','韋小寶');
重新命名檢視
-- rename table 檢視名 to 新檢視名; rename table view1_emp to my_view1
刪除檢視
-- drop view 檢視名[,檢視名…]; drop view if exists view_student;
刪除檢視時,只能刪除檢視的定義,不會刪除資料。
-- 1:查詢部門平均薪水最高的部門名稱 select dname from dept a ,(select deptno,avg(sal) from emp group by deptno order by avg(sal) desc limit 1) b where a.deptno = b.deptno; -- 2:查詢員工比所屬領導薪資高的部門名、員工名、員工領導編號 select * from dept x, (select a.ename aname ,a.sal asal,b.ename bname,b.sal bsal,a.deptno from emp a, emp b where a.mgr = b.empno and a.sal > b.sal) y where x.deptno = y.deptno;
-- 3:查詢工資等級為4級,2000年以後入職的工作地點為北京的員工編號、姓名和工資,並查詢出薪資在前三名的員工資訊 create view xxx as SELECT e.empno,e.ename,e.sal,e.hiredate FROM emp e,dept d,salgrade s WHERE (e.sal BETWEEN losal AND hisal) AND s.GRADE = 4 AND year(e.hiredate) > '2000' AND d.loc = '北京'; select * from ( select *, dense_rank() over(order by sal desc ) rn from xxx ) t where t.rn <=3;
到此這篇關於MySQL的檢視的文章就介紹到這了,更多相關MySQL檢視內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45