SQL Server實戰三:資料庫表完整性約束及索引、視圖的創建、編輯與刪除

来源:https://www.cnblogs.com/fkxxgis/p/18166763
-Advertisement-
Play Games

本文介紹基於Microsoft SQL Server軟體,實現資料庫表完整性約束、索引與視圖的創建、編輯與刪除等操作的方法~ ...


  本文介紹基於Microsoft SQL Server軟體,實現資料庫表完整性約束索引視圖的創建、編輯與刪除等操作的方法。

目錄

  系列文章中示例數據來源於《SQL Server實驗指導(2005版)》一書。依據本系列文章的思想與對操作步驟、代碼的詳細解釋,大家用自己手頭的數據,可以將相關操作與分析過程加以完整重現。

1 互動式為資料庫表S創建PRIMARY KEY約束

(1) 啟動Microsoft SQL Server 2008 R2軟體;

(2) 在“對象資源管理器”窗格中,在“資料庫”處右鍵,在彈出的菜單中選擇“附加”選項;

(3) 選擇需要加以附加的jxsk資料庫物理文件,選擇定位文件夾“G:\sql\chutianjia sql”並選擇對應資料庫jxsk的物理文件並選擇“確定”按鈕,再次選擇“確定”即可;

(4) 選擇“資料庫”→“jxsk”→“表”,右擊併在彈出的菜單中選擇“設計”選項,如下圖;

image

(5) 選擇SNO列,右擊並選擇“設置主鍵”,如下圖;

(6) 保存修改,關閉表設計器;

2 互動式創建資料庫表TEST_SC,創建PRIMARY KEY約束

(1) 在“對象資源管理器”窗格中,在“資料庫”→“jxsk”→“表”處右鍵,在彈出的菜單中選擇“新建表”選項,輸入TEST_SC各列的設置,如下圖;

(2) 同時選擇SNO和CNO列, 右擊並選擇“設置主鍵”,在SNO列和CNO列的行選擇器中各顯示一把鑰匙,表示SNO與CNO是關係TEST_SC的主鍵。此時SNO和CNO列中“允許NULL值”列的對勾消失,表示SNO、CNO都不能取空值,如下圖;

(3) 保存修改,輸入表名TEST_SC,關閉表設計器,重命名後如下圖;

3 T-SQL創建資料庫表T的PRIMARY KEY約束

(1) 在“對象資源管理器”窗格中,在“資料庫”→“jxsk”→“表”→“dbo.T”處右鍵,在彈出的菜單中選擇“設計”選項,如下圖;

(2) 將TNO列“允許NULL值”值設置為非空,保存修改,如下圖;關閉表設計器;

(3) 單擊屏幕上方 “工具欄”菜單中的“新建查詢”按鈕,打開“查詢編輯器”視窗,併在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
ALTER TABLE T
ADD CONSTRAINT PK_TNO PRIMARY KEY(TNO)
GO

(4) 將jxsk設置為當前資料庫,單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

(5) 在“對象資源管理器”窗格中,在“資料庫”→“jxsk”→“表”→“dbo.T”處右鍵,在彈出的菜單中選擇“刷新”選項,選擇“列”與“索引”,可見其所示內容中已存在通過上述方法新建立的聚集類型索引PK_TNO,如下圖;

4 T-SQL創建資料庫表TEST_C,以列約束形式創建PRIMARY KEY約束

(1) 單擊屏幕上方 “工具欄”菜單中的“新建查詢”按鈕,打開“查詢編輯器”視窗,併在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
CREATE TABLE TEST_C(
CNO CHAR(2)CONSTRAINT PK_TEST_C PRIMARY KEY,
CN CHAR(10),
CT TINYINT)
GO

(2) 將jxsk設置為當前資料庫,單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

(3) 在“對象資源管理器”窗格中,在“資料庫”→“jxsk”→“表”→“dbo.TEST_C”處右鍵,在彈出的菜單中選擇“刷新”選項,選擇“列”與“索引”,可見其所示內容中已存在通過上述方法新建立的聚集類型索引PK_ TEST_C,如下圖;

5 T-SQL創建資料庫表TEST_TC,以表約束形式創建PRIMARY KEY約束

(1) 單擊屏幕上方 “工具欄”菜單中的“新建查詢”按鈕,打開“查詢編輯器”視窗,併在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
CREATE TABLE TEST_TC(
TNO CHAR(2),
CNO CHAR(2),
CONSTRAINT PK_TEST_TC PRIMARY KEY(TNO,CNO))
GO

(2) 將jxsk設置為當前資料庫,單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

(3) 在“對象資源管理器”窗格中,在“資料庫”→“jxsk”→“表”→“dbo.TEST_TC”處右鍵,在彈出的菜單中選擇“刷新”選項,選擇“列”與“索引”,可見其所示內容中已存在通過上述方法新建立的聚集類型索引PK_ TEST_TC,如下圖;

6 互動式向資料庫表TEST_TC中CNO與TNO列添加UNIQUE約束

(1) 在“對象資源管理器”窗格中,在“資料庫”→“jxsk”→“表”→“dbo.TC”處右鍵,在彈出的菜單中選擇“設計”選項;

(2) 單擊工具欄“管理索引和鍵”按鈕,選擇“添加”,按要求設置名稱;單擊“列”右端省略號按鈕,單擊第二行第一列下拉按鈕,選擇CNO列,單擊“確定”按鈕;在“類型”處選擇“唯一值”,如下四幅圖;

(3) 關閉對話框;

7 T-SQL為資料庫表C中CN列創建UNIQUE約束

(1) 單擊屏幕上方 “工具欄”菜單中的“新建查詢”按鈕,打開“查詢編輯器”視窗,併在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
ALTER TABLE C
ADD CONSTRAINT UNIQUE_C UNIQUE(CN)
GO

(2) 將jxsk設置為當前資料庫,單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

(3) 在“對象資源管理器”窗格中,在“資料庫”→“jxsk”→“表”→“dbo. C”處右鍵,在彈出的菜單中選擇“刷新”選項,選擇“列”與“索引”,可見其所示內容中已存在通過上述方法新建立的聚集類型索引PK_ TEST_C與非聚集類型索引UNIQUE_C,如下圖;

8 互動式為資料庫表TEST_SC中添加新列ID_SC,設置列屬性IDENTITY

(1) 在“對象資源管理器”窗格中,選擇“資料庫”→“jxsk”→“表”,右擊“dbo.TEST_SC”,在彈出的菜單中選擇“設計”;

(2) 插入新空行,輸入列名ID_SC,數據類型為int,且不許為空;選中此列,在“標識規範”左側的加號圖標處單擊,在打開的列表中選擇“是”,如以下兩幅圖;

(3) 單擊工具欄中的保存按鈕,並將視窗關閉;

9 T-SQL向資料庫表TEST_TC中添加列ID_TC,設置列屬性IDENTITY

(1) 單擊屏幕上方 “工具欄”菜單中的“新建查詢”按鈕,打開“查詢編輯器”視窗,併在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
ALTER TABLE TEST_TC ADD ID_TC INT IDENTITY
GO

(2) 將jxsk設置為當前資料庫,單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

(3) 在“對象資源管理器”窗格中,在“資料庫”→“jxsk”→“表”→“dbo. TEST_TC”處右鍵,在彈出的菜單中選擇“設計”選項,查看屬性視窗中“標識列”的屬性設置,如下圖;

10 互動式刪除資料庫表TEST_SC的主鍵PK_TEST_SC並取消ID_SC列標識屬性

(1) 在“對象資源管理器”窗格中,在“資料庫”→“jxsk”→“表”→“dbo. TEST_TC”處右鍵,在彈出的菜單中選擇“設計”選項,如下圖;

(2) 單擊“標識規範”左側加號圖標,在“(是標識)”右側下拉按鈕打開的下拉列表中選擇“否”;

(3) 選中SNO與CNO列,右擊選擇“刪除主鍵”,如下圖;關閉表設計器;

11 T-SQL刪除資料庫表C中列CN的UNIQUE約束

(1) 單擊屏幕上方 “工具欄”菜單中的“新建查詢”按鈕,打開“查詢編輯器”視窗,併在“查詢編輯器”視窗中輸入以下T-SQL語句,如下圖:

USE jxsk
GO
ALTER TABLE C DROP UNIQUE_C
GO

(2) 將jxsk設置為當前資料庫,單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

(3) 在“對象資源管理器”窗格中,在“資料庫”→“jxsk”→“表”→“dbo.C”處右鍵,在彈出的菜單中選擇“刷新”選項,選擇“列”與“索引”,可見其所示內容中已不存在通過上述方法新建立的非聚集類型索引UNIQUE_C,鍵中也不含該索引,如下圖;

12 互動式為資料庫表T創建DEFAULT和CHECK約束

(1) 在“對象資源管理器”窗格中,在“資料庫”→“jxsk”→“表”→“dbo.C”處右鍵,在彈出的菜單中選擇“設計”選項;

(2) 單擊選擇SEX列,然後在視窗下麵的“列屬性”框中“預設值或綁定”輸入框中,輸入‘男’,在說明中輸入DE_T_SEX,如下圖;

(3) 單擊工具欄中的“管理CHECK約束”按鈕,打開表T的“CHECK約束”對話框;單擊“添加”按鈕,查看視窗內容變化。對視窗中的各項進行如下設置:在“(名稱)”輸入框中,把預設名改為CHECK_T,將“在創建或重新啟用時檢查現有數據”選項設置為“否”,單擊“表達式”右端的按鈕,打開“CHECK約束表達式”對話框,輸入以下表達式,如以下圖:

(PROF='教授' AND COMM=4000)OR
(PROF='副教授' AND COMM=2000)OR
(PROF='講師' AND COMM=1500)OR
(PROF='助教' AND COMM=1000)

(4) 單擊“確定”→“確定”,如下圖;關閉對話框與設計器;

13 T-SQL為資料庫表S創建CHECK約束

(1) 單擊屏幕上方 “工具欄”菜單中的“新建查詢”按鈕,打開“查詢編輯器”視窗,併在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
ALTER TABLE S WITH CHECK
ADD CONSTRAINT CHECK_AGE CHECK(AGE>=14 AND AGE<=40)
GO

(2) 將jxsk設置為當前資料庫,單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

(3) 在“對象資源管理器”窗格中,在“資料庫”→“jxsk”→“表”→“dbo.S”處右鍵,在彈出的菜單中選擇“刷新”選項,選擇“約束”,可見其所示內容中已存在通過上述方法新建立約束CHECK_AGE,如下圖;

14 T-SQL創建資料庫表TEST_S並包含DEFAULT和CHECK約束

(1) 單擊屏幕上方 “工具欄”菜單中的“新建查詢”按鈕,打開“查詢編輯器”視窗,併在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
CREATE TABLE TEST_S(
SNO CHAR(2) NOT NULL,
SN CHAR(8) NOT NULL,
SEX CHAR(2) NULL CONSTRAINT DEFAULT_SEX DEFAULT '男'
CONSTRAINT CHECK_SEX CHECK(SEX='男' OR SEX='女'),
AGE TINYINT NULL CONSTRAINT DEFAULT_AGE DEFAULT 18,
CONSTRAINT CHECK_S_AGE CHECK(AGE>=14 AND AGE<=40))
GO

(2) 將jxsk設置為當前資料庫,單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

(3) 在“對象資源管理器”窗格中,在“資料庫”→“jxsk”→“表”→“dbo.TEST_S”處右鍵,在彈出的菜單中選擇“刷新”選項,查看“列”和“約束”,如下圖;

15 T-SQL刪除資料庫表T中PROF和COMM間CHECK約束

(1) 單擊屏幕上方 “工具欄”菜單中的“新建查詢”按鈕,打開“查詢編輯器”視窗,併在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
ALTER TABLE T
DROP CONSTRAINT CHECK_T
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

(3) 在“對象資源管理器”窗格中,在“資料庫”→“jxsk”→“表”→“dbo.T”處右鍵,在彈出的菜單中選擇“刷新”選項,選擇“約束”可見其所示內容中不已存在通過上述方法新建立的CHECK約束,如下圖;

16 互動式刪除資料庫表TEST_S中列SEX的DEFAULT約束列和列AGE的CHECK約束

(1) 在“對象資源管理器”窗格中,選擇“資料庫”→“jxsk”→“表”並右擊表TEXT_S,在彈出的菜單中選擇“設計”;

(2) 在表格下方,清除“預設值”中的‘男’,如下圖;打開CHECK約束對話框,在“選定的CHECK約束:”框中選擇CHECK_S_AGE約束;

(3) 單擊“刪除”按鈕,可以看到CHECK_S_AGE約束被刪除,如上方圖;

(4) 關閉表TEST_S“CHECK約束”對話框與表設計器;

17 互動式創建表S與SC間參照關係

(1) 在“對象資源管理器”窗格中,選擇“資料庫”→“jxsk”→“表”並右擊表SC,在彈出的菜單中選擇“設計”;

(2) 單擊 “關係”按鈕,打開“外鍵關係”視窗,單擊“添加”按鈕,查看到關係名是系統給出的預設名:FK_SC_SC。單擊“表和列規範”右端的按鈕,打開“表和列”對話框。在“主鍵表”中,選定主表S,選定欄位SNO。在“外鍵表”中,選定子表SC,選定欄位SNO。單擊“確定”按鈕關閉“表和列”對話框。將“外鍵關係”對話框中的“在創建或重新啟用時檢查現有數據”一項設置為“否”。單擊“INSERT和UPDATE規範”左側的田按鈕,將“更新規則”一項設置為“級聯”,如下圖;

(3) 關閉“外鍵關係”對話框,關閉表設計器,保存對錶SC進行的上述修改。;

(4) 打開數據表S與SC,對照其中學號為S1的記錄;把資料庫表S中的學號S1改為S9,資料庫表S中的內容次序發生改變,如圖所示。單擊SC表視窗,使其成為當前表,查看到SC表中2個學號值是S1的都變為S9,且表SC中的記錄次序也發生了改變,如下圖;

18 T-SQL創建資料庫表T與TC間參照關係

(1) 點擊屏幕上方 “工具欄”菜單中的“新建查詢”按鈕,打開“查詢編輯器”視窗,併在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
ALTER TABLE TC WITH NOCHECK
ADD CONSTRAINT FK_T_TC FOREIGN KEY(TNO)REFERENCES T(TNO)
ON DELETE CASCADE
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句,如下圖;

(3) 在“對象資源管理器”窗格中,在“資料庫”→“jxsk”→“表”→“dbo.TC”處右鍵,在彈出的菜單中選擇“刷新”選項,選擇“鍵”可見其所示內容中已存在通過上述方法新建立的FK_T_TC約束,如下圖;

(4) 打開資料庫表T與TC,使用“刪除”命令把資料庫表T學號值為T1的記錄刪除;單擊資料庫表TC使其成為當前視窗,單擊工具欄中的運行置鈕,查看到TC表中2個學號值是T1的記錄都不存在了,如下圖;

19 創建資料庫jxsk中5個表間關聯關係圖

(1) 在“對象資源管理器”窗格中,選擇“資料庫”→“jxsk”,右擊數據關係圖,打開2個視窗,一個是創建關係圖的視窗;一個是“添加表”視窗,其中列出了jxsk中的所有用戶表,如下圖;

(2) 選擇表C,單擊“添加”按鈕,表C即加入關係圖視窗中。重覆此過程,把表S、SC、T、TC都添加到關係圖視窗中,添加完成後還可調整5個表的相對位置。添加到關係圖中的資料庫表如圖所示;

(3) 在關係圖視窗中,可以看到表T與TC之間已存在一條關係線;單擊並按住表C中的CNO欄位,拖動至表TC中的CNO欄位,鬆開滑鼠左鍵,同時打開“外鍵關係”和“表和列”兩個視窗,觀察視窗中的各項值。單擊“表和列”視窗的“確定”按鈕退出該視窗,然後在“外鍵關係”視窗中,將“在創建或重新啟用時檢查現有數據”一項設置為“否”,單擊“INSERT和UPDATE規範”左側的田按鈕,將“更新規則”和“刪除規則”兩項均設置為“級聯”,單擊確定;重覆步驟,形成五個表之間的關係關聯圖;

(4) 點擊保存按鈕,輸入關係圖名稱;關閉視窗;

(5) 在“對象資源管理器”窗格中,選擇“資料庫”→“jxsk”,選擇數據關係圖,可顯示關係圖;

20 互動式刪除表C與表TC間引用關係

(1) 在“對象資源管理器”窗格中,在“資料庫”→“jxsk”→“表”→“dbo.C”處右鍵,在彈出的菜單中選擇“設計”選項;

(2) 在“選定的關係”框中,選擇名為FK_TC_C的關係,單擊“刪除”按鈕,此關係即被刪除。關閉外鍵關係視窗,關閉表設計器視窗;

21 互動式為表SC創建PRIMARY KEY,在此主鍵自動創建聚簇索引

(1) 用表設計器打開表SC;打開“索引/鍵”對話框。在SC表設計器中,選擇“索引/鍵”選項,打開“索引/鍵”對話框,如下圖示;此時視窗中內容為空,說明表SC中沒有創建任何索引。單擊“關閉”按鈕,返回表設計器;

(2) 同時選中列SNO和列CNO,單擊工具欄中的按鈕,即在SNO和CNO上創建了主鍵,如圖所示。

(3) 在SC表設計器中,右擊,選擇“索引/鍵”選項,打開“索引/鍵”對話框,查看列表中的信息:索引“列”是SNO(ASC)和CNO(ASC),當前的索引“名稱”為PK_SC_1,“創建為聚集的”為“是”。此索引即是創建主鍵時,系統自動生成的聚簇索引。

(4) 關閉表設計器視窗;

22 T-SQL創建資料庫表T在TNO列上按降序創建聚簇索引IND_TNO

(1) 點擊屏幕上方 “工具欄”菜單中的“新建查詢”按鈕,打開“查詢編輯器”視窗,併在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
CREATE CLUSTERED INDEX IND_TNO ON T(TNO DESC)
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句。

(3) 在表設計器中,選擇“索引/鍵”選項,打開“索引/鍵”對話框,可看到IND_TNO;

23 互動式為表T在TN列上按升序和在AGE列上按降序創建非聚簇索引IND_TN_AGE

(1) 用表設計器打開資料庫 jxsk 中的資料庫表T。打卡創建“索引/鍵”對話框。在T表設計器中,右擊,選擇“索引/鍵”選項,打開“索引/鍵”對話框,如圖所示。

(2) 單擊“添加”扭鈕,觀察“索引/鍵”對話框中各項的變化。在右側列表中,單擊“列”行中的一個單元格,再單擊該行右端的按鈕,打開“索引列”對話框,按照圖所示進行設置。設置完成後單擊“確定”按鈕返回“索引/鍵”對話框。設置索引名稱並保存;

24 T-SQL創建資料庫表C在CN列上按升序創建聚簇索引IND_CN

(1) 點擊屏幕上方 “工具欄”菜單中的“新建查詢”按鈕,打開“查詢編輯器”視窗,併在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
CREATE UNIQUE INDEX IND_CN ON C(CN)
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句。

25 互動式刪除C索引IND_CN

(1) 用表設計器打開表SC;打開“索引/鍵”對話框。在SC表設計器中,選擇“索引/鍵”選項,打開“索引/鍵”對話框;

(2) 單擊刪除按鈕,保存修改並關閉視窗;

26 T-SQL刪除索引IND_TN_AGE

(1) 點擊屏幕上方 “工具欄”菜單中的“新建查詢”按鈕,打開“查詢編輯器”視窗,併在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
DROP INDEX T.IND_TN_AGE
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句。

27 互動式創建視圖

(1) 在“對象資源管理器”中,展開資料庫jxsk,右擊“視圖”,在打開的快捷菜單中選擇“新建視圖”選項,如圖所示,即可打開一個“添加表”對話框;

(2) 添加基本表。在“添加表”對話框中選擇表S,單擊“添加”按鈕,如圖所示,選擇“關閉”按鈕,關閉“添加表”對話框,返回創建視圖視窗,可看到創建視圖視窗中增加了表S,如圖所示。

(3) 在表S中,分別選中欄位SNO、SN、SEX、DEPT左側的覆選框,表示選中這些欄位,將它們加入視圖中,觀察下麵窗格中的變化,如圖所示。

(4) 單擊視圖設計器工具欄中的1按鈕,執行視圖定義。視窗下麵的表格數據即為視圖的內容。單擊工具欄中的口按鈕,打開對話框,輸入視圖名稱View_S,如圖所示。單擊“確定”按鈕即可保存;

(5) 關閉“創建視圖視窗”,在“對象資源管理器”中,單擊資料庫jxsk中的“視圖”節點,右視窗“摘要”中的View_S即是剛創建的視圖,另一個為系統視圖文件夾,如下圖所示;

28 互動式創建成績視圖VIEW_SCORETABLE

(1) 在“對象資源管理器”中,展開資料庫jxsk,右擊“視圖”,在打開的快捷菜單中選擇“新建視圖”選項,打開“添加表”視窗;

(2) 在“添加表”視窗中,選擇表C和表SC,單擊“添加”令,可看到創建視圖視窗上部分窗格中增加了表C和表SC,並查看下麵SQL窗格中語句的變化。以此類推,在“視圖”選項卡中添加視圖View_S。單擊“關閉”按鈕,關閉“添加表”視窗,返回創建視圖視窗;

(3) 在視圖View_S中,選中欄位SN左側的覆選框,表示選中欄位SN。以此類推,在表C中選擇CN,在表SC中選擇SCORE,如圖所示; 選中視圖View_S中的SNO並將其拖曳到表SC中的SNO,查看下麵SQL窗格中語句的變化;同樣選中表SC中的CNO並拖曳到表C中的CNO,查看下麵SQL窗格中語句的變化;

(4) 單擊視圖設計器工具欄中按鈕,執行視圖定義。視窗下麵的表格數據即是視圖的內容,如圖所示;

(5) 單擊工具欄中的口按鈕,打開對話框,輸入視圖名稱View_SCORETABLE,單擊“確定”按鈕;

(6) 關閉“創建視圖視窗”。查看資料庫中的視圖信息。在“對象資源管理器”中,展開資料庫jxsk中的“視圖”節點, View_SCORETABLE即是剛創建的視圖,如上方圖所示;

29 T-SQL創建課程表視圖VIEW_CTABLE

(1) 擊屏幕上方 “工具欄”菜單中的“新建查詢”按鈕,打開“查詢編輯器”視窗,併在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
CREATE VIEW VIEW_CTABLE
AS SELECT TN,CN FROM T,C,TC
WHERE T.TNO=TC.TNO AND C.CNO=TC.CNO
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句;

(3) 在“對象資源管理器”中,展開資料庫jxsk中的“視圖”節點, View_SCORETABLE即是剛創建的視圖;

30 互動式刪除視圖欄位

(1) 在“對象資源管理器”中,展開資料庫jxsk中的“視圖”節點。右擊View_S,在快捷菜單中選擇“修改”選項,打開設計視圖視窗,如圖所示。在此視窗中可查看視窗中各部分內容的關係;

(2) 在資料庫表S中,取消選中SNO左端的覆選框,即取消此項選擇,然後查看視窗下部分列表和SQL語句的變化;

(3) 執行操作。單擊視圖設計器工具欄中的事按鈕,執行對視圖定義進行改變的操作。視窗下部分表格中顯示的是刪除SNO後視圖中的數據,如圖所示。保存後關閉視圖設計器視窗。

31 T-SQL為視圖ViewCTABLE增加一個課時欄位Cttinyint

(1) 單擊屏幕上方 “工具欄”菜單中的“新建查詢”按鈕,打開“查詢編輯器”視窗,併在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
ALTER VIEW VIEW_CTABLE
AS SELECT TN,CN,CT FROM T,C,TC
WHERE T.TNO=TC.TNO AND C.CNO=TC.CNO
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句。

(3) 在“對象資源管理器”中,展開資料庫jxsk中的“視圖”節點,在右窗格的“摘要”中,右擊視圖View_CTABLE,在打開的快捷菜單中選擇“打開視圖”項,打開視圖ViewCTABLE的數據視窗,顯示出修改後的視圖數據,如圖所示;

32 互動式修改視圖數據以實現修改資料庫表數據

(1) 分別打開視圖View S和資料庫表S的內容,如圖所示,可見兩個表中“李奇”記錄的各欄位數據相同;

(2) 在視圖View_S中,把“李奇”的系名DEPT“外語”改為“電腦”。單擊薄按鈕,執行進行這個改變的操作,如圖所示。單擊表S視窗,使其成為當前視窗,查看到“李奇”的DEPT欄位值仍然是“外語”,單擊按鈕霸,再查看“李奇”的DEPT欄位值與當前的視圖View_S中的改變一致,如下圖所示。

33 對視圖執行INSERT語句

(1) 單擊屏幕上方 “工具欄”菜單中的“新建查詢”按鈕,打開“查詢編輯器”視窗,併在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
INSERT INTO VIEW_S VALUES('S8','古明','男','自動化')
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,顯示執行失敗。這是因為,視圖View_S來源於基本表S,但卻不包含基本表S的主鍵SNO,主鍵的性質是不許取空值。當向視圖中插入一行新數據時,因沒有SNO欄位值,所以,從視圖到基本表映射插入此行數據時,表S中的SNO欄位值自動取空值,這是主鍵所不允許的,故執行失敗。

34 修改視圖定義後進行插入操作

(1) 單擊屏幕上方 “工具欄”菜單中的“新建查詢”按鈕,打開“查詢編輯器”視窗,併在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
ALTER VIEW VIEW_S
AS SELECT SNO,SN,SEX,DEPT FROM S
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句。

(3) 在“對象資源管理器”中,分別打開視圖View_S和資料庫表S的數據視窗,兩個視窗中的數據的對應行列完全相同;

(4) 單擊屏幕上方 “工具欄”菜單中的“新建查詢”按鈕,打開“查詢編輯器”視窗,併在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
INSERT INTO VIEW_S VALUES('S8','古明','男','自動化')
GO

(5) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句。

(6) 打開視圖View_S和資料庫表S的數據視窗,如圖所示,“古明”的記錄已插入到視圖中。再單擊表S視窗中的按鈕,更新當前表內容,如圖所示,“古明”的記錄也已插入資料庫表S中;分別關閉視圖和資料庫表的視窗;

35 T-SQL對視圖進行DELETE操作並查看數據變化

(1) 在“對象資源管理器”中,分別打開視圖View_S和資料庫表S的數據視窗,兩個視窗中的內容是一致的,都存在學號是S8的學生記錄;

(2) 單擊屏幕上方 “工具欄”菜單中的“新建查詢”按鈕,打開“查詢編輯器”視窗,併在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
DELETE VIEW_S WHERE SNO='S8'
GO

(3) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句。

(4) 單擊View_S視圖視窗選項卡,然後單擊按鈕,更新當前視圖內容,如圖所示,學號是S8的學生記錄已經不存在。再單擊表S視窗選項卡和按鈕,更新當前表內容,如圖所示,學號是S8的學生記錄也已經不存在。分別關閉視圖和資料庫表的視窗;

36 互動式刪除視圖

(1) 在“對象資源管理器”中,單擊資料庫jxsk中的視圖節點,右窗格“摘要”中的內容即為資料庫jxsk中的視圖內容。

(2) 在右窗格中,右擊視圖View_S,在打開的快捷菜單中選擇“刪除”選項,打開“刪除對象”對話框。

(3) 查看“要刪除的對象”列表,單擊要刪除的視圖View_S左側的覆選框,單擊“確定”按鈕,視圖View_S即被刪除。

(4) 在“對象資源管理器”中,刷新資料庫jxsk中的“視圖”節點,可看到視圖View_S已經不存在;

37 T-SQL刪除視圖

(1) 單擊屏幕上方 “工具欄”菜單中的“新建查詢”按鈕,打開“查詢編輯器”視窗,併在“查詢編輯器”視窗中輸入以下T-SQL語句:

USE jxsk
GO
DROP VIEW VIEW_CTABLE
GO

(2) 單擊 “工具欄”中的“執行(x)”按鈕,即可執行上述T-SQL語句。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 哈嘍大家好,我是鹹魚。(博客網址: https://xxxsalted.github.io/) 在搭建了博客並換了主題之後,發現有許多細節方面的東西還需要完善和定製化一下,比如說行距和引用的樣式我不是很喜歡,以及沒有評論功能。 於是決定自己動手,說乾就乾。 PS:下文的修改操作僅限於博客主題(Kli ...
  • Everything is a file 是一個經典的概念。Linux系統將所有的東西都看作是文件,包括將硬體設備、進程、網路連接等均抽象為文件。 ...
  • 一:kvm工具棧 kvm主要的工具棧,從大的類別可以分為libvirt和qemu這2大類,其中libvirt中分為virtual machine manager和virsh ,virtual machine manager中的virt-manager是基於圖形化界面的管理,其他的都是可以在命令直接使 ...
  • 痞子衡嵌入式半月刊: 第 98 期 這裡分享嵌入式領域有用有趣的項目/工具以及一些熱點新聞,農曆年分二十四節氣,希望在每個交節之日準時發佈一期。 本期刊是開源項目(GitHub: JayHeng/pzh-mcu-bi-weekly),歡迎提交 issue,投稿或推薦你知道的嵌入式那些事兒。 上期回顧 ...
  • 目錄Linux學習大綱命令提示符命令的格式路徑的分類文件的分類目錄的結構一些快捷鍵 Linux學習大綱 命令提示符 通常情況下,我們使用Linux都是在命令行環境下, 所以學習 Linux 的第一步需要瞭解 Linux 的命令提示符。 Linux命令提示符通常由用戶名、主機名和當前工作目錄組成。 [ ...
  • 1、下載必備安裝包 make、gcc(debian中可用build-essential包)、bc、linux-headers-$(uname -r)、dkms sudo apt install build-essential bc sudo apt install linux-headers-$(u ...
  • 目錄一、什麼是MongoDB的副本集二、副本集的架構三、副本集的成員四、部署副本集1、節點劃分2、安裝MongoDB2.1、下載解壓安裝包3、創建主節點3.1、創建存儲數據和日誌的目錄3.2、新建配置文件3.3、啟動節點服務4、創建副本節點4.1、創建存儲數據和日誌的目錄4.2、新建配置文件4.3、 ...
  • 0、首先確認是否安裝過MySQL yum list installed | grep mysql rpm -qa | grep mysql 若果有安裝,需要先刪除舊版本。yum remove mysql 一、通過官網下載tar壓縮包(或者直接下載RPM安裝包) 1.打開MySQL官網下載地址,選擇適 ...
一周排行
    -Advertisement-
    Play Games
  • .Net8.0 Blazor Hybird 桌面端 (WPF/Winform) 實測可以完整運行在 win7sp1/win10/win11. 如果用其他工具打包,還可以運行在mac/linux下, 傳送門BlazorHybrid 發佈為無依賴包方式 安裝 WebView2Runtime 1.57 M ...
  • 目錄前言PostgreSql安裝測試額外Nuget安裝Person.cs模擬運行Navicate連postgresql解決方案Garnet為什麼要選擇Garnet而不是RedisRedis不再開源Windows版的Redis是由微軟維護的Windows Redis版本老舊,後續可能不再更新Garne ...
  • C#TMS系統代碼-聯表報表學習 領導被裁了之後很快就有人上任了,幾乎是無縫銜接,很難讓我不想到這早就決定好了。我的職責沒有任何變化。感受下來這個系統封裝程度很高,我只要會調用方法就行。這個系統交付之後不會有太多問題,更多應該是做小需求,有大的開發任務應該也是第二期的事,嗯?怎麼感覺我變成運維了?而 ...
  • 我在隨筆《EAV模型(實體-屬性-值)的設計和低代碼的處理方案(1)》中介紹了一些基本的EAV模型設計知識和基於Winform場景下低代碼(或者說無代碼)的一些實現思路,在本篇隨筆中,我們來分析一下這種針對通用業務,且只需定義就能構建業務模塊存儲和界面的解決方案,其中的數據查詢處理的操作。 ...
  • 對某個遠程伺服器啟用和設置NTP服務(Windows系統) 打開註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer 將 Enabled 的值設置為 1,這將啟用NTP伺服器功 ...
  • title: Django信號與擴展:深入理解與實踐 date: 2024/5/15 22:40:52 updated: 2024/5/15 22:40:52 categories: 後端開發 tags: Django 信號 松耦合 觀察者 擴展 安全 性能 第一部分:Django信號基礎 Djan ...
  • 使用xadmin2遇到的問題&解決 環境配置: 使用的模塊版本: 關聯的包 Django 3.2.15 mysqlclient 2.2.4 xadmin 2.0.1 django-crispy-forms >= 1.6.0 django-import-export >= 0.5.1 django-r ...
  • 今天我打算整點兒不一樣的內容,通過之前學習的TransformerMap和LazyMap鏈,想搞點不一樣的,所以我關註了另外一條鏈DefaultedMap鏈,主要調用鏈為: 調用鏈詳細描述: ObjectInputStream.readObject() DefaultedMap.readObject ...
  • 後端應用級開發者該如何擁抱 AI GC?就是在這樣的一個大的浪潮下,我們的傳統的應用級開發者。我們該如何選擇職業或者是如何去快速轉型,跟上這樣的一個行業的一個浪潮? 0 AI金字塔模型 越往上它的整個難度就是職業機會也好,或者說是整個的這個運作也好,它的難度會越大,然後越往下機會就會越多,所以這是一 ...
  • @Autowired是Spring框架提供的註解,@Resource是Java EE 5規範提供的註解。 @Autowired預設按照類型自動裝配,而@Resource預設按照名稱自動裝配。 @Autowired支持@Qualifier註解來指定裝配哪一個具有相同類型的bean,而@Resourc... ...