自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

SQL Server視圖操作原理透析

數(shù)據(jù)庫(kù) SQL Server
SQL Server 視圖可以被看作是一個(gè)返回虛擬表的查詢的保存。指導(dǎo)您創(chuàng)建SQL Server視圖并從視圖中SELECT。

為什么使用視圖

視圖是一個(gè)便利的方法,它只給用戶對(duì)一個(gè)表的部分訪問(wèn)權(quán)限。視圖可以限制將返回的記錄以及可用的字段。所以授權(quán)用戶對(duì)這個(gè)視圖的訪問(wèn)權(quán)限而不是這個(gè)表本身來(lái)限制他們的訪問(wèn)權(quán)限。視圖還是一個(gè)用于隱藏復(fù)雜語(yǔ)句和只顯示給終端用戶一個(gè)簡(jiǎn)單的單一表結(jié)果集的便利方法。

創(chuàng)建一個(gè)視圖

SQL Server視圖可以使用TSQL語(yǔ)句來(lái)創(chuàng)建或通過(guò)SQL Server Management Studio圖形化地創(chuàng)建。對(duì)于第一個(gè)例子,我們將使用Management Studio和Adventure Works數(shù)據(jù)庫(kù)(Adventure Works是Microsoft提供的一個(gè)免費(fèi)測(cè)試數(shù)據(jù)庫(kù))。要開(kāi)始,啟動(dòng)Management Studio,擴(kuò)展開(kāi)Databases,擴(kuò)展開(kāi)Adventure Works然后右鍵單擊Views,選擇New View。這將打開(kāi)Add Table對(duì)話框。對(duì)于這個(gè)例子,我們將選擇Person.Contact表。點(diǎn)擊Add然后Close。這將出現(xiàn)如下所示的圖形設(shè)計(jì)器。

SQL Server視圖 
圖1

四個(gè)不同的面板組成了這個(gè)界面。上端的面板是Designer(設(shè)計(jì)器),在它之中可以選擇表和字段。第二個(gè)面板,Criteria(標(biāo)準(zhǔn)),可以用來(lái)過(guò)濾和排序。第三個(gè)面板,SQL,展示由我們的圖形化選擇所創(chuàng)建的TSQL語(yǔ)句。最后一個(gè)面板,Results(結(jié)果),將顯示這個(gè)語(yǔ)句返回的數(shù)據(jù)。

在第一個(gè)例子中,我們將創(chuàng)建一個(gè)所有聯(lián)系人中第一個(gè)名字含有Don的電話列表。在Designer面板中選擇First Name, Last Name和Phone Number字段。Criteria和SQL面板將根據(jù)所做選擇自動(dòng)生成。在Criteria面板中,在First Name行中的過(guò)濾字段中輸入“=Don”。要執(zhí)行和測(cè)試這個(gè)語(yǔ)句,點(diǎn)擊紅色注釋勾選圖標(biāo)。這個(gè)語(yǔ)句將看起來(lái)如下面的圖片所示。

SQL Server視圖 
圖2

#p#

這個(gè)語(yǔ)句可以在上面三個(gè)面板中的任意一個(gè)中進(jìn)行編輯。例如,在SQL面板中,改變WHERE語(yǔ)句為執(zhí)行一個(gè)LIKE并重新執(zhí)行。這將返回133行記錄

  1. SELECT TOP (100) PERCENT FirstName, LastName, Phone   
  2. FROM Person.Contact  
  3. WHERE (FirstName LIKE 'Do%')  

當(dāng)這個(gè)語(yǔ)句完成時(shí),點(diǎn)擊上面菜單條中的保存標(biāo)簽,一個(gè)Chose Name for a View對(duì)話框?qū)⒋蜷_(kāi)。輸入名稱TestView,然后點(diǎn)擊OK。刷新視圖列表,然后新的SQL Server視圖就出現(xiàn)了。右鍵單擊新的視圖將出現(xiàn)一個(gè)對(duì)話框,類似于一個(gè)表對(duì)話框,如下所示。

SQL Server視圖 
圖3

使用TSQL命令創(chuàng)建一個(gè)視圖是非常直接的。它的語(yǔ)法很簡(jiǎn)單:

  1. CREATE VIEW view_name   
  2. AS 
  3. Select_statement  

所以第一個(gè)例子就是:

  1. CREATE VIEW TestView   
  2. AS 
  3. SELECT TOP (100) PERCENT FirstName, LastName, Phone  
  4. FROM Person.Contact  
  5. WHERE (FirstName LIKE 'Do%')  

在創(chuàng)建一個(gè)SQL Server視圖時(shí),在SELECT中使用的大多數(shù)普通命令都可以使用,例如JOINS和Aliases。這意味著我們使用了一個(gè)非常麻煩的語(yǔ)句,將它保存為一個(gè)視圖,然后只使用它所返回的更簡(jiǎn)單的表,從而隱藏原來(lái)語(yǔ)句的復(fù)雜性。在創(chuàng)建視圖時(shí)有一些命令不能使用。關(guān)鍵字INTO不能像任何對(duì)臨時(shí)表的參照一樣使用。此外,ORDER BY不能使用。(在從GUI創(chuàng)建視圖時(shí),它將讓你指定一個(gè)ORDER BY,但是它不會(huì)被保存。)所有的Ordering都需要在視圖之外的SELECT語(yǔ)句中完成。

從視圖中SELECT

右鍵單擊新的視圖并選擇“SELECT top 1000 rows”。下面的語(yǔ)句將被創(chuàng)建,它的結(jié)果將被返回。

  1.  /****** Script for SelectTopNRows command from SSMS ******/   
  2. SELECT TOP 1000 [FirstName]  
  3. ,[LastName]  
  4. ,[Phone]  
  5. FROM [AdventureWorks].[dbo].[TestView] 

注意看下從一個(gè)視圖獲得選擇結(jié)果的語(yǔ)法和從一個(gè)表選擇項(xiàng)目的語(yǔ)句是多么一致。這是使用視圖的一個(gè)好處。所有的常用表命令例如GROUP BY和ORDER BY在從一個(gè)視圖進(jìn)行選擇時(shí)都可用。例如,下一個(gè)語(yǔ)句是典型的GROUP和COUNT,不過(guò)是基于新創(chuàng)建的視圖而不是一個(gè)表。

SELECT FirstName, COUNT(FirstName) as NbrOfNames   
  1. FROM TestView  
  2. GROUP BY FirstName  
  3. ORDER BY FirstName 

SQL Server視圖
圖4

從視圖UPDATE就像我們可以更新一個(gè)表中的數(shù)據(jù)一樣,視圖也可以被更新?;谏弦粋€(gè)例子,這個(gè)語(yǔ)句可以被修改為一個(gè)UPDATE,如下所示:

  1. UPDATE TestView   
  2. SET FirstName = 'Test' 
  3. WHERE FirstName = 'Douglas' AND LastName = 'Baldwin' 

只要原來(lái)的創(chuàng)建視圖的語(yǔ)句沒(méi)有使用分組命令例如GROUP BY或Distinct,那么這個(gè)視圖就是可更新的。此外,獲取的字段,例如那些使用函數(shù)AVG和SUM創(chuàng)建的字段是不能使用的。

要使用Management Studio從一個(gè)視圖進(jìn)行更新,在Object Explorer中右鍵單擊這個(gè)視圖并選擇“Edit Top 200 Rows”。這將打開(kāi)一個(gè)可編輯的網(wǎng)格,就像使用表時(shí)一樣。

SQL Server視圖 
圖5

總結(jié)

使用SQL Server的好處包括限制用戶訪問(wèn)底層數(shù)據(jù)的權(quán)限,以及隱藏復(fù)雜語(yǔ)句以便可以使用簡(jiǎn)單的結(jié)果集。創(chuàng)建SQL Server視圖的語(yǔ)法很簡(jiǎn)單,而且?guī)缀跛械某S肨SQL命令都可用。如果數(shù)據(jù)要通過(guò)一個(gè)視圖更新或刪除,那么在創(chuàng)建這個(gè)視圖時(shí)不能使用聚合和分組語(yǔ)句。

【編輯推薦】

  1. SQL Server 2008中的創(chuàng)建格式化日期(1)
  2. 在T-SQL中使用臨時(shí)表的注意事項(xiàng)
  3. T-SQL實(shí)用例句
  4. SQL Server 2005中的T-SQL
  5. SQL Server 2005:數(shù)據(jù)類型最大值
責(zé)任編輯:冰荷 來(lái)源: ctocio
相關(guān)推薦

2011-04-02 17:21:29

sql server視圖

2010-09-13 11:09:34

SQL SERVER分

2010-07-14 10:11:30

SQL Server系

2010-06-28 13:27:33

SQL Server視

2010-09-27 09:54:26

Sql Server視

2010-07-19 16:36:13

SQL Server視

2010-11-12 11:19:19

SQL Server視

2010-11-11 17:20:51

SQL Server創(chuàng)

2010-07-19 09:31:53

SQL Server系

2010-11-11 16:59:59

SQL Server視

2010-07-12 10:34:58

SQL Server視

2010-10-21 15:07:09

SQL Server系

2010-11-11 17:15:13

SQL Server視

2010-07-07 13:18:13

SQL Server視

2009-03-20 09:49:00

負(fù)載均衡CDN網(wǎng)站架構(gòu)

2010-09-13 17:03:34

sql server觸

2010-06-30 16:58:24

SQL Server分

2010-07-16 10:48:24

MS SQL Serv

2010-07-15 15:42:38

2010-10-21 14:21:15

SQL Server視
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)