1.1?實驗題目:索引和數據完整性的使用
1.2?實驗目的:
(1)掌握SQL Server的資源管理器界面應用;
(2)掌握索引的使用;
(3)掌握數據完整性的使用。
1.3?實驗準備
(1)了解SQL Server的索引基本語法;
(2)了解SQL Server的數據完整性。
1.4?實驗內容
1.4.1?建立索引
(1)使用CREATE INDEX語句創建索引
①對數據庫中的Employees表中的DepartmentID建立索引。
USE?Hao??
GO??
CREATE?INDEX?depart_ind??
ON?Employees(DepartmentID)??
GO??
②在Employees表的Name列和Address列上建立復合索引。
CREATE?INDEX?Ad_ind??
ON?Employees(Name,?Address)?
③對Departments表上的DepartmentName列建立唯一非聚集索引。
CREATE?UNIQUE?INDEX?Dep_ind???
ON?Departments(DepartmentName)??
1.4.2?重建索引
重建表Employees中的所有索引。
USE?Hao??
GO??
ALTER?INDEX?ALL??
ON?Employees?REBUILD?
1.4.3?刪除索引
使用DROP INDEX語句刪除表Employees表上的多個索引。
DROP?INDEX?depart_ind?ON?Employees??
1.4.4?完整性
(1)創建一個表Employees5,只含EmployeeID、Name、Sex和Education列。將Name設為主鍵,作為列Name的約束。對EmployeeID列進行UNIQUE約束,并作為表的約束。
CREATE?TABLE?Employees5??
(??EmployeesID???????char(6)?NOT?NULL,??Name??????????????char(10)?NOT?NULL?PRIMARY?KEY,??Sex?tinyint,??Education?????????char(4),??CONSTRAINT?UK_id?UNIQUE(EmployeesID)??
)??
(2)刪除上例中創建的UNIQUE約束。
ALTER?TABLE?Employees5??
DROP?CONSTRAINT?UK_id??
GO?
(3)創建新表student,只考慮“號碼”“性別”兩列,性別只能包含男或女。
CREATE?TABLE?student_1??
(??號碼????????char(6)??????NOT?NULL,??性別????????char(2)??????NOT?NULL??CHECK(性別?IN('男','女'))???
)??
(4)創建新表Salary2,結構與Salary相同,但Salary2表不允許OutCone列大雨Income列。
CREATE?TABLE?Salary2??
(??EmployeeID?char(6)?NOT?NULL,??Income?float?NOT?NULL,??OutCome?float?NOT?NULL,??CHECK(Income>=OutCome)??
)
(5)對數據庫中的Employees表進行修改,為其增加“DepartmentID”字段的CHECK約束。
USE?Hao??
GO??
ALTER?TABLE?Employees??
ADD?CONSTRAINT?depart?CHECK(DepartmentID>=1?AND?DepartmentID<=5)??
(6)創建一個規則對象,用以限制輸入到該規則所綁定列中的值只能是該規則中列出的值。
CREATE?RULE?list_rule_1??
AS?@list?IN('財務部','研發部','人力資源部','銷售部')??
GO??
EXEC?sp_bindrule'list_rule_1','Departments.DepartmentName'??
GO??
(7)創建一個表Salary3,要求所有Salary3表上EmployeeID列的值都要出現在Salary表中,利用參照完整性約束實現,要求當刪除或修改Salary表上的EmployeeID列時,Salary3表中的EmployeeID值也會隨之變化。
CREATE?TABLE?Salary3??
(??EmployeeID?char(6)?NOT?NULL?PRIMARY?KEY,??InCome?float?NOT?NULL,??OutCome?float(8)?NOT?NULL,??FOREIGN?KEY(EmployeeID)??REFERENCES?Salary(EmployeeID)??ON?UPDATE?CASCADE??ON?DELETE?CASCADE??
)??