SQL Server 数据库实验报告

发布于:2025-04-07 ⋅ 阅读:(32) ⋅ 点赞:(0)
​​​​​​​

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  
)  


网站公告

今日签到

点亮在社区的每一天
去签到