視圖基礎(chǔ)操作
?專(zhuān)欄內(nèi)容:
- postgresql使用入門(mén)基礎(chǔ)
- 手寫(xiě)數(shù)據(jù)庫(kù)toadb
- 并發(fā)編程
個(gè)人主頁(yè):我的主頁(yè)
管理社區(qū):開(kāi)源數(shù)據(jù)庫(kù)
座右銘:天行健,君子以自強(qiáng)不息;地勢(shì)坤,君子以厚德載物.
概述
數(shù)據(jù)庫(kù)視圖是一個(gè)虛擬的表,它基于一個(gè)或多個(gè)實(shí)際表的查詢(xún)結(jié)果。視圖并不實(shí)際存儲(chǔ)數(shù)據(jù),而是通過(guò)查詢(xún)語(yǔ)句動(dòng)態(tài)地生成數(shù)據(jù)。視圖的內(nèi)容由查詢(xún)定義,包含一系列帶有名稱(chēng)的列和行數(shù)據(jù)。從用戶(hù)角度來(lái)看,視圖是從一個(gè)特定的角度來(lái)查看數(shù)據(jù)庫(kù)中的數(shù)據(jù)。從數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)部來(lái)看,視圖是由SELECT語(yǔ)句組成的查詢(xún)定義的虛擬表。
本文主要介紹視圖的創(chuàng)建與刪除,而視圖的查詢(xún)與普通表是一樣的,當(dāng)然一般不能修改視圖的數(shù)據(jù)。
View 創(chuàng)建
準(zhǔn)備數(shù)據(jù)
視圖是一張?zhí)摂M的表,在創(chuàng)建視圖之前先有實(shí)際的數(shù)據(jù)表。那么在開(kāi)始之前我們先創(chuàng)建一張數(shù)據(jù)表,并且插入一些數(shù)據(jù)。
CREATE TABLE employee (
eid int primary key,
ename VARCHAR(50) NOT NULL,
birth_date DATE,
position VARCHAR(100),
department VARCHAR(100) ,
email VARCHAR(100) ,
phone_number VARCHAR(20),
hire_date date ,
address varchar,
emergency_contact VARCHAR(100)
);
-- 插入數(shù)據(jù)
insert into employee values(1,'lihua','2010-10-1','jiangsu','sales department','abc','123','2015-4-22','jiangsu','34'),(2,'zhanglei','2000-10-1','jiangsu','software department','df','444','2015-1-22','jiangsu','65645');
創(chuàng)建了一張員工信息表,這在公司中很常見(jiàn),要找某個(gè)員工的信息,可以查看公司員工通訊錄就可以了。
所有員工都可以看到通訊錄的全部信息嗎? 答案是否定的,知道真相后很扎心吧!
這是怎么實(shí)現(xiàn)的呢?其中一種方法就是通過(guò)視圖來(lái)實(shí)現(xiàn)。
創(chuàng)建視圖
下面創(chuàng)建兩個(gè)視圖,一是管理員角色可以看到的數(shù)據(jù);一是普通員工看到的數(shù)據(jù)的視圖;
創(chuàng)建視圖的語(yǔ)法如下:
CREATE VIEW vw_name
AS
query_sql;
其中vw_name
是用戶(hù)定義的視圖名稱(chēng),query_sql
是定義視圖數(shù)據(jù)的查詢(xún)語(yǔ)句。
那么管理員的視圖創(chuàng)建如下:
postgres=# create view vw_admin as SELECT * from employee ;
CREATE VIEW
普通員工的視圖創(chuàng)建如下:
create view vw_common as SELECT eid,ename,department from vw_admin ;
CREATE VIEW
這里的vw_common
視圖是基于上一個(gè)視圖的數(shù)據(jù)再進(jìn)行過(guò)濾,存在級(jí)聯(lián)關(guān)系。
View 查詢(xún)
視圖的查詢(xún)方法與普通表沒(méi)有區(qū)別。
當(dāng)?shù)顷懲ㄓ嶄浵到y(tǒng)時(shí),角色就已經(jīng)確定,系統(tǒng)就會(huì)根據(jù)角色的不同,調(diào)用不同的視圖,下面看看兩個(gè)視圖的差異吧。
postgres=# select * from vw_admin ;
eid | ename | birth_date | position | department | email | phone_number | hire_date | address | emergency_contact
-----+----------+------------+----------+---------------------+-------+--------------+------------+---------+-------------------
1 | lihua | 2010-10-01 | jiangsu | sales department | abc | 123 | 2015-04-22 | jiangsu | 34
2 | zhanglei | 2000-10-01 | jiangsu | software department | df | 444 | 2015-01-22 | jiangsu | 65645
(2 rows)
postgres=# select * from vw_common ;
eid | ename | department
-----+----------+---------------------
1 | lihua | sales department
2 | zhanglei | software department
(2 rows)
View 刪除
不用的視圖可以使用drop view
命令進(jìn)行刪除,當(dāng)有依賴(lài)時(shí)也可以追加cascade
進(jìn)行級(jí)聯(lián)刪除。
postgres=# drop view vw_admin cascade;
NOTICE: drop cascades to view vw_common
DROP VIEW
當(dāng)我們級(jí)聯(lián)刪除vw_admin
視圖時(shí),與它關(guān)聯(lián)的視圖vw_common
也被刪除了。
總結(jié)
視圖應(yīng)用非常廣泛,它有下面分享一下它的作用和重要性。
作用
- 簡(jiǎn)化數(shù)據(jù)訪(fǎng)問(wèn):視圖可以將多個(gè)表的數(shù)據(jù)組合在一起,使得用戶(hù)可以通過(guò)一個(gè)視圖來(lái)訪(fǎng)問(wèn)多個(gè)表的數(shù)據(jù),從而簡(jiǎn)化了數(shù)據(jù)訪(fǎng)問(wèn)的過(guò)程。這有助于用戶(hù)更容易地理解和操作數(shù)據(jù)。
- 數(shù)據(jù)安全性:視圖可以限制用戶(hù)對(duì)底層表的訪(fǎng)問(wèn)權(quán)限,只允許用戶(hù)訪(fǎng)問(wèn)視圖中的數(shù)據(jù)。通過(guò)視圖,可以限制用戶(hù)訪(fǎng)問(wèn)數(shù)據(jù)的權(quán)限,只允許用戶(hù)訪(fǎng)問(wèn)特定字段或滿(mǎn)足特定條件的記錄,從而防止用戶(hù)訪(fǎng)問(wèn)敏感數(shù)據(jù)或意外修改數(shù)據(jù),提高了數(shù)據(jù)的安全性。
- 數(shù)據(jù)邏輯獨(dú)立性:視圖可以隱藏底層表的結(jié)構(gòu),使得用戶(hù)只需要關(guān)注視圖的結(jié)構(gòu),而不需要關(guān)注底層表的結(jié)構(gòu)。這有助于用戶(hù)更容易地理解和使用數(shù)據(jù),同時(shí)也提高了數(shù)據(jù)的邏輯獨(dú)立性。當(dāng)?shù)讓颖淼慕Y(jié)構(gòu)發(fā)生變化時(shí),只要視圖定義沒(méi)有改變,用戶(hù)訪(fǎng)問(wèn)數(shù)據(jù)的方式就不會(huì)受到影響。
- 數(shù)據(jù)一致性:視圖通過(guò)將多個(gè)表的數(shù)據(jù)組合在一起,有助于保證數(shù)據(jù)的一致性,避免了數(shù)據(jù)冗余和不一致的問(wèn)題。
- 性能優(yōu)化:視圖可以對(duì)底層表進(jìn)行優(yōu)化,例如對(duì)表進(jìn)行聚合、過(guò)濾、排序等操作,從而提高了查詢(xún)的性能。
重要性
數(shù)據(jù)庫(kù)視圖在數(shù)據(jù)庫(kù)設(shè)計(jì)和應(yīng)用中具有重要性,主要體現(xiàn)在以下幾個(gè)方面:
- 靈活性:視圖可以根據(jù)不同的需求和場(chǎng)景進(jìn)行定義,提供了靈活的數(shù)據(jù)訪(fǎng)問(wèn)方式。
- 安全性保障:通過(guò)視圖,可以實(shí)現(xiàn)對(duì)數(shù)據(jù)的訪(fǎng)問(wèn)控制,保護(hù)敏感數(shù)據(jù)不被非法訪(fǎng)問(wèn)或修改。
- 簡(jiǎn)化復(fù)雜操作:視圖可以封裝復(fù)雜的查詢(xún)邏輯,使得用戶(hù)可以更簡(jiǎn)單地訪(fǎng)問(wèn)和操作數(shù)據(jù)。
- 數(shù)據(jù)抽象:視圖提供了一種抽象的數(shù)據(jù)表示方式,使得用戶(hù)可以更專(zhuān)注于業(yè)務(wù)邏輯的實(shí)現(xiàn),而不需要過(guò)多關(guān)注底層數(shù)據(jù)的細(xì)節(jié)。
結(jié)尾
非常感謝大家的支持,在瀏覽的同時(shí)別忘了留下您寶貴的評(píng)論,如果覺(jué)得值得鼓勵(lì),請(qǐng)點(diǎn)贊,收藏,我會(huì)更加努力!
作者郵箱:study@senllang.onaliyun.com
如有錯(cuò)誤或者疏漏歡迎指出,互相學(xué)習(xí)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-859603.html
注:未經(jīng)同意,不得轉(zhuǎn)載!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-859603.html
到了這里,關(guān)于【postgresql初級(jí)使用】視圖的基礎(chǔ)操作,管理員與普通員工看到不同的數(shù)據(jù),視圖的作用與重要性介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!