1.目的与要求
(1)掌握索引的使用方法; (2)掌握数据完整性的实现方法; 2 实验准备
(1)了解索引的作用于分类; (2)掌握索引的创建方法;
(3)理解数据的完整性的概念与分类; (4)掌握各种数据完整性的实现方法。 3.实验内容 (1)建立索引
①使用CREATE INDEX语句创建索引。
对YGGL数据库的Employees表中的DepartmentID列建立索引。 在查询分析器中输入如下程序并执行:
USE YGGL GO
CREATE INDEX depart_ind
ON Employees(DepartmentID) GO
在Employees表的Name列和Address列上建立复合索引。 CREATE INDEX Ad_ind
ON Employees(Name,Address)
对Departments表上的DepartmentName列建立唯一非聚集索引。 CREATE UNIQUE INEDX Dep_ind ON Departments(DepartmentName) 【思考与练习】
a.索引创建完后在对象资源管理器中查看表中的索引。 b.了解索引的分类情况
c.使用CREATE INDEX语句能创建主题吗?
d.在什么情况下可以看到建立索引的好处? 2使用界面方式创建索引。
使用界面方式在Employees表的PhoneNumber列上创建索引。
启动SQL Server Management Studio,在对象资源管理器中展开数据库YGGL,展开表Employees,右击“索引,选择“新建索引”选项。在新建索引的窗口中填写索引的名称和类型,单击“添加”按钮,在列表框中选择要创建的索引的列,选择完单击“确定”按钮即完成创建工作。 【思考与练习】
a.使用界面方式创建一个复合索引。
b.在Employees表的表设计窗口选择Address列,右击选择“索引/键”菜单项,在新窗口中的Address列创建一个唯一的索引。
c.创建一个数据量很大的新表,查看使用索引和不使用索引的区别。 (2)重建索引。
重建表Employees中的所有索引。
USE YGGL GO
ALTER INDEX ALL ON Employ REBUILD
【思考与练习】重建表Employees中EmployeeID列上的索引。 (3)删除索引。
使用DROP INDEX语句删除表Employees上的索引Depart_ind,计划使用如下SQL语句:
DROP INDEX Depart_ind ON Employees 【思考与练习】
a.使用QROP INDEX一次删除Employees表上的多个索引 b使用界面方式删除Department表上的索引。 (4)数据完整性。
1创建一个表Employees5,只含EmployeesID,Name,Sex和Education列。将Name,设为主键,作为列Name的约束。对EmployeesID列进行UNIQUE约束,并作为表的约束。
CREATE TABLE Employees5 (
EmployeesID char(6)NOT NULL PRIMARY KEY, Sex tinyint Education char(4),
CONSTRAINT UK_id UNIQUE(EmployeesID) )
2删除上例中创建的UNIQUE约束。
ALTER TABLE Employees5 DROPCONSTRAINT UK_id GO
【思考与练习】
a.使用T-SQL命令创建一个新表,使用一个复合列作为主键,作为表的约束,并为其命名。
b.使用语句为表ALTER TABLEEmployees5添加一个新列Address,并为该列定义UNIQUE约束,并了解如何使用图形向导方式删除主键和UNIOQUE约束。 3创建新表student,只考虑“号码”和“性别”两列,性别只能包含男或女。
CREATE TABLE student (号码char(6)NOT NULL 性别char(2) Employees
CHECK(性别 IN(“男”,“女”)) 【思考与练习】
向该表插入数据,“性别”列插入“男”和“女”以外的字符,查看会发生什么情况。
4创建新表Salary2,结构与Salary相同,但Salary2表不可以OutCome列大于Income列。
CREATE TABLE Salary2 (
EmployeesID char(6) NOT NULL Income Float NOT NULL,
OUTCOME FLOAT NOT NULL, CHECK (INCOME>=OUTCOME) )
【思考与练习】
a.向表中插入数据,查看OUTCOME值比INCOME值大是会有什么情况。 b.创建一个表Employees6,只考虑“学号”和“出生日期”两列,出生日期必须晚于1980年1月1日。。
⑤对YGGL数据库中的Employees表进行修改,为其增加“DepartmentID”字段的CHECK约束。
use YGGL go
alter table Employees
add constraint depart check(DepartmentID>=1 and DepartmentID<=5) 【思考与练习】测试CHECK约束的有效性。
⑥创建一个规则对象,用以输入到该规则所绑定的列中的值只能是该规则中列出的值。
create rule list_rule
as @list in('财务部','研发部','人力资源部','销售部') go
exec sp_bindrule 'list_rule','Departments.DepartmentName' go
【思考与练习】
创建一个规则对象,在0~20之间。然后把他绑定知道Employees表的WorkYear字段上。
删除上述建立的规则对象。
⑦创建一个表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 )
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- kqyc.cn 版权所有 赣ICP备2024042808号-2
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务