日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

MySQL—视图(一)

發布時間:2025/3/21 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL—视图(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、視圖的概念

視圖(view)是一個從單張或多張基礎數據表或其他視圖中構建出來的虛擬表同基礎表一樣,視圖中也包含了一系列帶有名稱的列和行數據,但是數據庫中只是存放視圖的定義,也就是動態檢索數據的查詢語句,而并不存放視圖中的數據,這些數據依舊存放于構建視圖的基礎表中,只有當用戶使用視圖時才去數據庫請求相對應的數據,即視圖中的數據是在引用視圖時動態生成的。因此視圖中的數據依賴于構建視圖的基礎表,如果基本表中的數據發生了變化,視圖中相應的數據也會跟著改變。

PS:視圖本質上就是:一個查詢語句,是一個虛擬的表,不存在的表,你查看視圖,其實就是查看視圖對應的sql語句

二、視圖的好處

簡化用戶操作:視圖可以使用戶將注意力集中在所關心地數據上,而不需要關心數據表的結構、與其他表的關聯條件以及查詢條件等。

對機密數據提供安全保護:有了視圖,就可以在設計數據庫應用系統時,對不同的用戶定義不同的視圖,避免機密數據(如,敏感字段“salary”)出現在不應該看到這些數據的用戶視圖上。這樣視圖就自動提供了對機密數據的安全保護功能

三、SQL展示

1、創建/替換單表視圖

create or replace view 視圖名稱 as:創建視圖

create or replace view myview1_1 as select empno,ename,job,comm,deptno from emp where deptno=10 with check option;

查看視圖
select * from 視圖名稱:查看視圖

select * from myview1_1

在視圖中插入數據

insert into myview1_1 (empno,ename,job,comm,deptno) values (7778,'love','MANAGER',1212,10)

運行后:插入成功

insert into myview1_1 (empno,ename,job,comm,deptno) values (7779,'love1','MANAGER',1212,20)

運行后:1369 - CHECK OPTION failed ‘mytestdb.myview1_1’
只能插入部門為10的同事,插入其他的部門同事會報錯

insert into myview1_1 (empno,ename,job,comm,deptno,sal) values (7779,'love1','MANAGER',1212,20,5000)

運行后:1054 - Unknown column ‘sal’ in ‘field list’
插入視圖中不存在的字段信息,也會報錯

2、創建/替換多表視圖

create or replace view myview2 as select e.empno,e.ename,e.sal,d.deptno,d.dname from emp e inner join dept d on e.deptno=d.deptno where sal>2000

多表視圖:

查看多表視圖

select * from myview2_1

3、創建統計視圖

create or replace view myview3_1 as select e.empno,e.ename,avg(sal),min(sal),max(sal) from emp e inner join dept d on e.deptno=d.deptno group by e.deptno

統計視圖為:

4、創建基于視圖的視圖

create or replace view myview4_1 as select * from myview2_1 where deptno=10

myview2_1視圖為:

myview4_1視圖為:

總結

以上是生活随笔為你收集整理的MySQL—视图(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

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