官术网_书友最值得收藏!

5.3 通過視圖操作數據

由于視圖是一張虛表,對視圖的更新最終實際上是轉換成對視圖的基本表的更新,因此可以通過更新視圖的方式實現對表中數據的更新。視圖的更新操作包括插入、修改和刪除數據,可以使用SQL Server Management Studio或T-SQL在SQL Server 2016中修改基礎表的數據。

5.3.1 在視圖中插入數據記錄

在通過視圖插入數據時,必須保證未顯示的列有值,該值可以是默認值或NULL值。假設在table1上創建了一個視圖,table1有c1、c2和c3三列,視圖創建在c1和c2上。那么,通過視圖對table1插入數據時,必須保證c3有值(可以是默認值或NULL值),否則不能向視圖中插入行。

具體來說,在視圖中插入數據記錄,其實質是向構成視圖的基本表中插入數據,具體操作步驟如下:

步驟01 在【對象資源管理器】中展開包含視圖的數據庫,然后展開【視圖】。

步驟02 右擊該視圖,然后選擇【編輯前200行】菜單項。

步驟03 可能需要在SQL窗格中修改SELECT語句以返回要修改的行。

步驟04 在【結果】窗格中,向下滾動到行的結尾并插入新值。若視圖引用多個基表,則不能插入行,如圖5.11所示。

圖5.11 插入數據記錄

5.3.2 在視圖中修改數據記錄

與在視圖中插入數據的操作類似,在視圖中修改數據記錄的實質也是針對基本表的操作,其具體操作步驟如下:

步驟01 在【對象資源管理器】中展開包含視圖的數據庫,然后展開【視圖】。

步驟02 右擊該視圖,然后選擇【編輯前200行】。

步驟03 可能需要在SQL窗格中修改SELECT語句以返回要修改的行。

步驟04 在【結果】窗格中找到要更改的行,若要更改一個或多個列中的數據,修改列中的數據即可,如圖5.12所示。

圖5.12 修改數據記錄

5.3.3 在視圖中刪除數據記錄

通過視圖也可以從表中刪除行,該視圖不必顯示底層表中的所有列。此處需要注意的是,該視圖的數據必須來源于一個單表,即視圖的SELECT語句必須只引用單個表,也就是刪除目標基本表只能是單表,其具體操作步驟如下:

步驟01 在【對象資源管理器】中展開包含視圖的數據庫,然后展開【視圖】。

步驟02 右擊該視圖,然后選擇【編輯前200行】。

步驟03 可能需要在SQL窗格中修改SELECT語句以返回要修改的行。

步驟04 在【結果】窗格中找到要刪除的行,右擊該行,然后選擇【刪除】命令。若視圖引用多個基表,則不能刪除行,只能更新屬于單個基表的列,如圖5.13所示。

圖5.13 刪除數據記錄

視圖的刪除與普通關系表的刪除是有一些區別的,刪除基本表是不存在關聯的。此外,刪除視圖與刪除基本表最大的不同點是刪除視圖僅僅是刪除了視圖的組織結構,用戶以后不能再用這個視圖來進行操作,但組成視圖內容的數據并沒有被刪除,仍然保存在原來的關系表中。同時,其處理方式與關系表的相應處理方式類似。

主站蜘蛛池模板: 沙坪坝区| 泌阳县| 民乐县| 江孜县| 会宁县| 建水县| 疏附县| 寻乌县| 潍坊市| 博湖县| 贵德县| 凤台县| 大邑县| 阜南县| 隆子县| 闽侯县| 乐清市| 伊宁县| 仙居县| 集贤县| 册亨县| 建始县| 邵阳县| 科技| 双辽市| 新巴尔虎右旗| 双牌县| 台北县| 阿图什市| 栖霞市| 溧水县| 吉木乃县| 保亭| 莎车县| 夏津县| 荃湾区| 中山市| 舒兰市| 凤台县| 安泽县| 万山特区|