(
二 〇 一 五 年 五 月练习目的
1.掌握索引的使用方法;
2.掌握数据完整性的实现方法。
练习内容
1.建立索引;
2.重建索引;
3.删除索引;
4.数据完整性。
练习程序及结果
1.建立索引
(1)使用CREATE INDEX语句创建索引
对YGGL数据库的Employees表中的DepartmentID列建立索引
USE YGGL
GO
CREATE INDEX depart_ind
ON Employees(DepartmentID)
GO
在Employees表的Name列和Address列上建立复合索引
USE YGGL
GO
CREATE INDEX AD_ind
ON Employees(Name,Address)
GO
对Department表上的DepartmentName列建立唯一非聚集索引
USE YGGL
GO
CREATE UNIQUE INDEX Dep_ind
ON Department(DepartmentName)
GO
(2)使用界面方式创建索引
2.重建索引
重建Employees中的所有索引
USE YGGL
GO
ALTER INDEX ALL
ON Employees REBUILD
3.删除索引
使用DROP INDEX 语句删除表中Employees上索引depart_ind
USE YGGL
GO
DROP INDEX depart_ind ON Employees
4.数据完整性
(1)创建一个表Employees5,只含EmployeeID、Name、Sex和Education列。将Name设为主键,作为列Name的约束。对EmployeeID列进行UNIQUE约束,并作为表的约束
USE YGGL
GO
CREATE TABLE Employees5
(
EmployeeID char(6) NOT NULL,
Name char(10) NOT NULL PRIMARY KEY,
Sex tinyint,
Education char(4)
CONSTRAINT UK_id UNIQUE(EmployeeID)
)
(2)删除上例中创建的UNIQUE约束
USE YGGL
GO
ALTER TABLE Employees5
DROP UK_id
GO
(3)创建新表student,只考虑“号码”和“性别”两列,性别只能包含男或女
USE YGGL
GO
CREATE TABLE student
(
号码 char(6) NOT NULL,
性别 char(2) NOT NULL
CHECK(性别IN ('男','女'))
)
GO
USE YGGL
GO
CREATE TABLE Salary2
(
EmployeeID char(6) NOT NULL,
InCome float NOT NULL,
OutCome float NOT NULL,
CHECK(InCome>=OutCome)
)
GO
(5)对YGGL数据库中Employees表进行修改,为其增加“DepartmentID”字段的CHECK约束
USE YGGL
GO
ALTER TABLE Employees
ADD CONSTRAINT depart CHECK(DepartmentID>=1 AND DepartmentID<=5)
GO
(6)创建一个规则对象,用以限制输入到该规则所绑定的列中的值只能是该规则中列出的值
USE YGGL
GO
CREATE RULE list_rule
AS @list IN ('财务部','研发部','人力资源部','销售部')
GO
EXEC sp_bindrule 'list_rule','Department.DepartmentName'
GO
USE YGGL
GO
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