SQL Server視圖的講解
在初期的工作中,要做一個(gè)系統(tǒng)登錄驗(yàn)證,翻閱同事做的登錄驗(yàn)證,發(fā)現(xiàn)同事們做用戶名驗(yàn)證時(shí),查的結(jié)果集來自一個(gè)視圖,之前也弄過視圖,但很少去仔細(xì)看過有關(guān)方面的詳細(xì)知識(shí),于是特意百度谷歌了一下,總結(jié)如下知識(shí):
視圖,是基于SQL語句的結(jié)果集的可視化表。從用戶角度來看,一個(gè)視圖是從一個(gè)特定的角度來查看數(shù)據(jù)庫中的數(shù)據(jù)。從數(shù)據(jù)庫系統(tǒng)內(nèi)部來看,一個(gè)視圖是由SELECT語句組成的查詢定義的虛擬表。從數(shù)據(jù)庫系統(tǒng)內(nèi)部來看,視圖是由一張或多張表中的數(shù)據(jù)組成的,從數(shù)據(jù)庫系統(tǒng)外部來看,視圖就如同一張表一樣,對表能夠進(jìn)行的一般操作都可以應(yīng)用于視圖,例如查詢,修改,刪除操作等。
個(gè)人理解是:DB中實(shí)際是不存在這個(gè)表的,這個(gè)表是SQL語句執(zhí)行后生成的臨時(shí)表,這個(gè)表毫無疑問是在系統(tǒng)臨時(shí)表中。我們對這個(gè)表的增刪查改都不會(huì)實(shí)際影響到真實(shí)的數(shù)據(jù)。
這樣做的好處,就拿工作中的實(shí)例來說,用戶登錄驗(yàn)證中煙驗(yàn)證用戶的密碼和用戶名是否一致,假設(shè)存用戶信息表中還含有其他機(jī)密敏感數(shù)據(jù),如果直接查這個(gè)表的話,比如說用select * from 那么這會(huì)導(dǎo)出所有的信息,同時(shí)也有不要的內(nèi)存cpu開銷.所以建立一個(gè)視圖,將需要做驗(yàn)證的字段查出一個(gè)虛擬表,然后在在這個(gè)表中查匹配。這樣就可以隱藏掉機(jī)密信息。當(dāng)然視圖還有其他的用途,詳見百度;
實(shí)際建立:創(chuàng)建一個(gè)視圖
create view LoginCheck as select name ,LogKey from security_user where security_user.normal =1 union select name ,LogKey from security_user where security_user.normal =2
使用視圖:
select LoginCheck.name, LoginCheck.LogKey from LoginCheck
修改一個(gè)視圖:
Alter LoginCheck as select name,LogKey from normal_user
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
sql server中批量插入與更新兩種解決方案分享(存儲(chǔ)過程)
對于sql 來說操作集合類型(一行一行)是比較麻煩的一件事,而一般業(yè)務(wù)邏輯復(fù)雜的系統(tǒng)或項(xiàng)目都會(huì)涉及到集合遍歷的問題,通常一些人就想到用游標(biāo),這里我列出了兩種方案,供大家參考2012-05-05
SQL 判斷給定日期值(或時(shí)間段)所在星期的星期一和星期天的日期
最近報(bào)表要用到一項(xiàng)功能,需要把數(shù)據(jù)源根據(jù)記錄發(fā)生日期所在的星期序列進(jìn)行分組。因此就寫了兩個(gè)相關(guān)SQL Function進(jìn)行調(diào)用。2011-10-10
SQL Server 數(shù)據(jù)庫索引其索引的小技巧
關(guān)于索引的常識(shí):影響到數(shù)據(jù)庫性能的最大因素就是索引。由于該問題的復(fù)雜性,我只可能簡單的談?wù)勥@個(gè)問題,不過關(guān)于這方面的問題,目前有好幾本不錯(cuò)的書籍可供你參閱。我在這里只討論兩種SQL Server索引,即clustered索引和nonclustered索引2012-06-06
delete from 表名與truncate table 表名區(qū)別
delete from 表名與truncate table 表名區(qū)別,選擇適合我們的刪除數(shù)據(jù)庫數(shù)據(jù)的方法2012-10-10
將MS SQL SERVER數(shù)據(jù)庫運(yùn)行在普通用戶(獨(dú)立用戶)狀態(tài)下的設(shè)置方法終結(jié)篇
最近接手了一臺(tái)服務(wù)器,里面安裝了sqlserver,為了安全考慮,我們將sqlserver在普通權(quán)限下運(yùn)行,這樣就不會(huì)因?yàn)閟qlserver的自身安全問題,導(dǎo)致服務(wù)器成為肉雞的危險(xiǎn)。2010-05-05
在sqlserver中如何使用CTE解決復(fù)雜查詢問題
本文給大家介紹使用cte解決復(fù)雜查詢問題,在此代碼中需要注意count函數(shù),它統(tǒng)計(jì)了一個(gè)列,如果該列在某行的值為null,將不會(huì)統(tǒng)計(jì)該行,本文代碼詳解并附有注釋,感興趣的朋友一起看看吧2015-11-11
Sql Server導(dǎo)入mdf和ldf文件的教程詳解
有時(shí)候我們需要導(dǎo)入mdf和ldf文件進(jìn)入SQL SERVER中,本文給大家介紹了Sql Server導(dǎo)入mdf和ldf文件的詳細(xì)教程,文中介紹了導(dǎo)入的兩種方法,通過圖文結(jié)合的方式介紹的非常詳細(xì),需要的朋友可以參考下2024-06-06
動(dòng)態(tài)SQL中返回?cái)?shù)值的實(shí)現(xiàn)代碼
最近在做一個(gè)paypal抓取數(shù)據(jù)的程序,由于所有字段和paypal之間存在對應(yīng)映射的關(guān)系,所以所有的sql語句必須得拼接傳到存儲(chǔ)過程里去執(zhí)行2011-12-12
SQL SERVER 與ACCESS、EXCEL的數(shù)據(jù)轉(zhuǎn)換
SQL SERVER 與ACCESS、EXCEL的數(shù)據(jù)轉(zhuǎn)換...2006-07-07

