一、實驗目的
1、掌握視圖的創建、修改和刪除操作
2、掌握規則的創建、綁定、解除和刪除操作
3、掌握索引的創建、修改和刪除操作
二、實驗內容、方法、步驟和實驗結果與分析【結果情況,碰到什麼問題,如何解決的?】
(一)視圖
實驗內容:
1.創建視圖view1,使該視圖中包含HrSystem數據庫中的一個員工的明確信息(視圖中的列名全部使用中文)。
方法:
Use HrSystem
GO
CREATE VIEW view1
AS
SELECT e.Emp_id AS 員工編號,e.Emp_name AS 姓名,e.Sex AS 性別,e.Title AS 職位,e.Wage AS 工資,e.IdCard AS 身份證號,
d.Dep_id AS 部門編號,d.Dep_name AS 部門姓名 FROM Employeese INNER JOIN Departments d
ON e.Dep_id=d.Dep_id
GO
步驟及結果:
分析:使用CREATE VIEW創建視圖,且使用內連接INNERJOIN連接表。
2.顯示第一題創建的視圖view1的所有數據。
方法:
在對象資源管理器中右擊“view1”視圖,在彈出菜單中選擇“編輯前200行”,即可查看該視圖中的數據。
步驟及結果:
分析:視圖實際上是一張虛擬表,物理上並不實際存在,由查詢數據庫表產生,兼有表和查詢的特點。
3.利用第一題創建視圖view1,列出視圖中所有姓李的員工的所有信息。
方法:
Use HrSystem
GO
SELECT * FROMview1 WHERE 姓名 LIKE '李%'
GO
步驟及結果:
分析:視圖兼具表和查詢的特點,故使用模糊查詢即可找到其中姓李的員工的全部信息。
4.使用ALTER VIEW修改第一題創建的視圖view1,使其只包含所有作者的姓名、職務和部門三列(視圖中的列名全部使用中文)。
方法:
Use HrSystem
GO
ALTER VIEW view1
AS
SELECT e.Emp_name AS 姓名,e.Title AS 職位,d.Dep_name AS 部門 FROM Employees eINNER JOIN Departments d
ON e.Dep_id=d.Dep_id
GO
步驟及結果:
分析:使用ALTER VIEW對對視圖進行修改,查詢所需的信息到視圖即可。
5.刪除以上創建的視圖view1。
方法:
Use HrSystem
GO
DROP VIEW view1
GO
步驟及結果:
分析:使用DROP VIEW語句刪除視圖。
(二)規則
以下操作均針對數據庫HrSystem。
1.使用CREATE RULE語句創建規則Sex Rule制定變量@sex的取值只能爲‘男’或‘女’。
方法:
Use HrSystem
GO
CREATE RULE SexRule
AS @Sex IN('男','女')
GO
步驟及結果:
分析:使用CREATE RULE創建規則,此題中將創建的規則指定到變量@Sex中。
2.完成後,在對象資源管理器中展開數據庫HrSystem->“可編程性”->“規則”,確認可以看到規則SexRule。
方法:
在對象資源管理器中展開數據庫HrSystem->“可編程性”->“規則”即可查看
步驟及結果:
分析:創建規則後只是對指定變量有限制,如需使用到特定的地方還得綁定規則。
3.使用存儲過程sp bindrule可以將規則SexRule綁定到表Employees的列Sex上。
方法:
Use HrSystem
GO
EXEC sp_bindrule'SexRule','Employees.Sex'
GO
步驟及結果:
分析:規則創建之後只是對指定變量有限制作用,若要使用則還需對其進行綁定。
4.執行下面的INSERT語句,向表Employees中插人一條記錄。
USE HrSystem
GO
INSERT INTOEmployees (Emp_name, Sex, Title, Wage, IdCard, Dep_id)
VALUES ('小李','無','職員',10000,'110123xxxx',1)
GO
確認是否可以成功執行INSERT語句,爲什麼?
方法:
由於設置員工編號爲主鍵,不予許爲null值,而題目所給代碼中添加一列員工編號爲null值的信息,故不能正常執行,如下圖所示:
所以爲員工編號添加一個值,纔可以正常運行該段代碼,纔可以檢驗“Sex Rule”是否綁定到“Employees.Sex”列上,代碼如下所示:
Use HrSystem
GO
INSERT INTO Employees(Emp_id,Emp_name, Sex, Title, Wage, IdCard, Dep_id)
VALUES (9,'小李','無','職員',10000,'110123xxxx',2)
GO
步驟及結果:
分析:綁定規則後,該列只能按照規則要求來插入信息。
5.使用存儲過程sp_unbindrule取消表Employees的列Sex上綁定的規則。成功後再執行第四步中的INSERT語句,確認是否可以成功執行INSERT語句,爲什麼?
方法:
解除規則綁定:
Use HrSystem
GO
EXEC sp_unbindrule'Employees.Sex'
GO
嘗試插入信息:
Use HrSystem
GO
INSERT INTO Employees(Emp_id,Emp_name,Sex,Title,Wage,IdCard,Dep_id)
VALUES (9,'小李','無','職員',10000,'110123xxxx',1)
GO
步驟及結果:
解除規則綁定:
嘗試插入信息:
分析:在解除綁定規則後,規則不再對該列起限制作用,也使得可能插入一些無意義的信息。
6.使用DROP RULE刪除規則SexRule。完成後,在對象資源管理器中展開數據庫HrSystem->“可編程性”->“規則”,確認是否可以看到規則SexRule。
方法:
Use HrSystem
GO
DROP RULE SexRule
GO
步驟及結果:
分析:使用DROP RULE刪除規則,刪除後則不復存在。
(三)索引
執行以下語句,利用數據庫HrSystem的表Employees產生一個新表emp,該新表包含了表Employees中的所有記錄。
USE HrSystem
SELECT * INTOemp FROM Employees
創建新表結果如下圖所示:
1.在新表emp上建立一個唯一聚集索引,索引名稱爲name_ind, 索引字段爲Emp_name。
方法:
Use HrSystem
GO
CREATE UNIQUE CLUSTERED INDEX [IX_name_ind] ON dbo.emp(Emp_name)
GO
步驟及結果:
分析:創建索引基本語法爲:CREATE[UNIQUE][CLUSTERED|NONCLUSTERED] INDEX 索引名ON{表名|視圖名}(列名[ASC|DESC][,…n]),其中默認爲非聚集索引。
2.使用SQL Server Management Studio查看索引name_ind 的屬性信息。
方法:
在對象資源管理器中展開數據庫HrSystem->表->emp->索引->右擊“索引name_ind”,在彈出菜單選項中選擇屬性,即可查看。
步驟及結果:
分析:索引屬性包含索引表名、索引名稱、索引類型(是否聚集)、唯一性和索引鍵列。
3.使用DROP INDEX語句刪除第1題創建的索引name_ind。
方法:
Use HrSystem
GO
DROP INDEX emp.IX_name_ind
GO
步驟及結果:
分析:使用DROP INDEX語句刪除索引。
三、實驗小結【對自己而言,通過實驗學到的關鍵技術方法】
1、視圖是外觀幾乎和表一樣,它同樣具有命名的字段和數據項,但實際上它並沒有物理存儲結構,只是一張虛擬表,但兼備表和查詢的特點;
2、視圖的特點總結如下:
a、可以只顯示用戶所關心的特定數據,可以屏蔽數據的複雜性,方便用戶使用,簡化數據操作;
b、可以讓不同的用戶以不用的方式看到不同或者相同的數據集;
c、組合區分數據,增加了數據的安全性。
3、規則執行的功能與檢查性約束相同,在創建後只是對指定變量起限制作用,對於表的列則需要綁定後纔可使用,一個列只可以使用一個規則,但可以使用多個檢查性約束;
4、索引的創建有助於提高查詢效率,其分爲聚集非聚集和兩類,它們都可以是唯一的,一個表只能有一個聚集索引,且稱該表爲聚集表。
智者樂水,仁者樂山,幸福之人關注“理工科日記”
獲取原文文檔請關注“理工科日記”,回覆數據庫獲取。