文档库 最新最全的文档下载
当前位置:文档库 › 实验八 索引与数据完整性

实验八 索引与数据完整性

实验八 索引与数据完整性
实验八 索引与数据完整性

实验八索引与数据完整性

实验内容

在已建立的TSGL数据库的基础上,按如下要求对数据库进行操作,保存操作代码和截图要求同前。

1. 用界面方式为读者表的借书证号字段创建聚集索引,为姓名字段创建非聚集索引。

2. 用界面方式删除读者表的所有索引。

3. 用界面方式为借阅表的借书证号+条码号创建复合索引。

4. 用界面方式删除借阅表的复合索引。

5. 用命令方式为图书表的ISBN字段创建聚集索引,为书名、出版社字段分别创建非聚集索引。

6. 用命令方式为借阅表的条码号创建惟一聚集索引。如果输入了重复的键,将忽略该INSERT或UPDATE语句。

7. 用命令方式为读者表的借书数字段创建非聚集索引,要求使用FILLFACTOR子句,填充程序为80%。

8. 用命令方式为读者表、图书表、借阅表重建索引。

9. 用命令方式删除以上所有非聚集索引。

10. 用界面方式修改读者表、图书表、借阅表索引,每个表只保留一个主键约束。

11. 用界面方式修改读者表,增加借书证号字段的CHECK约束。

12. 用界面方式删除借书证号字段的CHECK约束。

13. 用命令方式修改读者表,增加借书数字段的CHECK约束,借书数在0到5本之间。

14. 用命令方式删除读者表中借书数字段的CHECK约束。

15. 用命令方式定义一个用户数据类型telphonenum及规则tel_rule,然后将规则tel_rule 绑定到用户数据类型telphonenum上,最后定义一个读者1表,其电话号码字段的数据类型为telphonenum。

16. 用命令方式修改读者1表,为电话号码字段设置唯一约束。

17. 解除规则对象tel_rule与用户定义类型telphonenum的绑定关系,并删除规则对象tel_rule。

18. 用命令方式修改读者表、图书表和借阅表,其中主表读者表和图书表的借书证号和ISBN为主键,从表借阅表的借书证号为外码与读者表的主键对应,当对主表进行更新和删除操作时,对从表采用级联操作,借阅表的ISBN与图书表的主键对应,当对主表进行更新和删除时,对从表采用NO ACTION方式。

-- 1. 用界面方式为读者表的借书证号字段创建聚集索引,为姓名字段创建非聚集索引。

-- 2. 用界面方式删除读者表的所有索引。

-- 3. 用界面方式为借阅表的借书证号+条码号创建复合索引。

-- 4. 用界面方式删除借阅表的复合索引。

-- 5. 用命令方式为图书表的ISBN字段创建聚集索引,为书名、出版社字段分别创建非聚集索引。

use TSGL203

go

if exists(select name from sys.indexes

where name = N'PX_book203_ISBN' and type = '1')

drop index PX_book203_ISBN

on book203;

go

create unique

clustered

index PX_book203_ISBN

on book203(ISBN ASC)

with( FILLFACTOR = 60,

PAD_INDEX = ON

-- DROP_EXISTING = ON --该语句只有在book203表中存在名为

PX_book203_ISBN 的索引时才可以正确执行

);

SELECT *

FROM sys.indexes

/* 在sys.indexes 系统表中

type = 1 为聚集索引

type = 2 为非聚集索引

*/

SELECT *

FROM sys.objects

/* 在sys.objects 系统表中

type = U 为用户创建对象

type = PK 为用户创建主键约束

type = R 为用户创建规则

type = TR 为用户创建触发器

type = P 为用户创建存储过程

*/

USE TSGL203

GO

IF EXISTS(SELECT name FROM sys.indexes

WHERE name = N'IX_book203_bname_pub')

DROP INDEX book203.IX_book203_bname_pub

GO

CREATE NONCLUSTERED INDEX IX_book203_bname_pub

on book203(bname,pub)

with( FILLFACTOR = 60,

PAD_INDEX = ON

);

/*

PAD_INDEX :指定索引中间级中每个页(节点)保持开发的空间,此关键字必须与FILLFACTOR 子句同时用。

FILLFACTOR 子句:指定一个百分比,表示在索引创建或新生成过程中数据库引擎应使每个索引的叶级别达到的填充程度

*/

-- 6. 用命令方式为借阅表的条码号创建惟一聚集索引。如果输入了重复的键,-- 将忽略该INSERT或UPDATE语句。

USE TSGL203

GO

IF EXISTS(SELECT name FROM sys.indexes WHERE name = N'PX_lend203_barno')

DROP INDEX lend203.PX_lend203_barno

GO

CREATE UNIQUE CLUSTERED INDEX PX_lend203_barno

ON dbo.lend203(barno)

WITH( IGNORE_DUP_KEY = ON

);

/*

DROP INDEX lend203.PK__lend__9BF6F32109DE7BCC

不允许对索引'lend203.PK__lend__9BF6F32109DE7BCC' 显式地使用DROP INDEX。

该索引正用于PRIMARY KEY 约束的强制执行。

*/

--7. 用命令方式为读者表的借书数字段创建非聚集索引,要求使用FILLFACTOR 子句,填充程序为80%。

USE TSGL203

GO

IF EXISTS(SELECT name FROM sys.indexes WHERE name = N'IX_reader203_bornum') DROP INDEX reader203.IX_reader203_bornum

GO

CREATE NONCLUSTERED INDEX IX_reader203_bornum

ON reader203(bornum)

WITH( PAD_INDEX = ON,

FILLFACTOR = 80

);

--8. 用命令方式为读者表、图书表、借阅表重建索引。

ALTER INDEX ALL

ON dbo.reader203

REBUILD;

ALTER INDEX ALL

ON dbo.book203

REBUILD;

ALTER INDEX ALL

ON dbo.lend203

REBUILD;

ALTER INDEX ALL

ON dbo.reader203

REORGANIZE

WITH(LOB_COMPACTION = ON);

--9. 用命令方式删除以上所有非聚集索引。

DROP INDEX book203.IX_book203_bname_pub

DROP INDEX reader203.IX_reader203_bornum

GO

SELECT * FROM sys.indexes where type = 2;

--10. 用界面方式修改读者表、图书表、借阅表索引,每个表只保留一个主键约束。ALTER TABLE lend203

ALTER COLUMN lno char(12) not null

GO

ALTER TABLE lend203

ALTER COLUMN bbt date not null

GO

ALTER TABLE lend203

ADD PRIMARY KEY(lno,barno,bbt)

--11. 用界面方式修改读者表,增加借书证号字段的CHECK约束。

--12. 用界面方式删除借书证号字段的CHECK约束。

--13. 用命令方式修改读者表,增加借书数字段的CHECK约束,借书数在0到5本之间。

ALTER TABLE reader203

WITH CHECK ADD CONSTRAINT bornum_constraint

CHECK(bornum>0 AND bornum<=5);

ALTER TABLE reader203

DROP CONSTRAINT bornum_constraint;

--14. 用命令方式删除读者表中借书数字段的CHECK约束。

ALTER TABLE reader203

WITH CHECK ADD CONSTRAINT lno_constraint

CHECK(lno LIKE '[2][0][0][8-9][0-1][1-9][0-1][1-9][1-9][1-9][0-9][1-9]');

GO

ALTER TABLE reader203

DROP CONSTRAINT lno_constraint;

--15. 用命令方式定义一个用户数据类型telphonenum及规则tel_rule,然后将规则tel_rule绑定到

-- 用户数据类型telphonenum上,最后定义一个读者1表,其电话号码字段的数据类型为telphonenum。

CREATE TYPE telephonenum

FROM char(11) NOT NULL;

GO

CREATE RULE tel_rule

AS @range like '[1][3-8][1-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]';

GO

CREATE TABLE reader1(

lno char(12) not null,

name varchar(8),

sex bit,

birdate date not null,

dept varchar(20),

spec varchar(20),

bornum int,

telephone telephonenum

);

GO

EXEC sp_bindrule 'tel_rule','reader1.telephone';

--16. 用命令方式修改读者1表,为电话号码字段设置唯一约束。

ALTER TABLE reader1

ADD CONSTRAINT telephone_constraint

UNIQUE NONCLUSTERED(telephone)

--17. 解除规则对象tel_rule与用户定义类型telphonenum的绑定关系,并删除规则对象tel_rule。

EXEC sp_unbindrule 'reader1.telephone';

--18. 用命令方式修改读者表、图书表和借阅表,其中主表读者表和图书表的借书证号和ISBN为主键,

--从表借阅表的借书证号为外码与读者表的主键对应,当对主表进行更新和删除操作时,

--对从表采用级联操作,借阅表的ISBN与图书表的主键对应,当对主表进行更新和删除时,

--对从表采用NO ACTION方式。

ALTER TABLE lend203

ADD CONSTRAINT lno_cascade

FOREIGN KEY (lno) REFERENCES reader203(lno)

ON UPDA TE CASCADE

ON DELETE CASCADE,

FOREIGN KEY (ISBN) REFERENCES book203(ISBN)

ON UPDA TE NO ACTION

ON DELETE NO ACTION;

--验证

declare @old_lno char(12) = '200807042201'

declare @new_lno char(12) = '200801111111'

--查找原读者表中学号为'200807042201' 学生的信息

select * from reader203 where lno = @old_lno

--查找原借阅表中学号为'200807042201' 学生的信息

select * from lend203 where lno = @old_lno

--将主表(读者表)中学号'200807042201'更新为'200801111111'

update reader203 set lno = @new_lno where lno = @old_lno

--查找读者表中更新后信息

select * from reader203 where lno = @new_lno

--查找借阅表中的信息

select * from lend203 where lno = @new_lno

实验6 数据完整性

一、实验目的 1.掌握Transact-SQL语句(CREATE RULE、DROP RULE)创建和删除规则的方法。 2.掌握系统存储过程sp_bindrule、sp_unbindrule绑定和解除绑定规则的操作方法,以及sp_help、sp_helptext查询规则信息、sp_rename更名规则的方法。 3.掌握Transact-SQL语句(CREATE DEFAULT、DROPDEFAULT)创建和删除默认对象的方法。4.掌握系统存储过程sp_bindefault、sp_unbindefault绑定和解除绑定默认对象的操作方法,以及sp_helptext查询规则信息。 5.掌握SQL Server管理平台和Transact-SQL语句(CREATE TABLE、ALTER TABLE)定义和删除约束的方法,并了解约束的类型。 二、实验内容及步骤 (1)为studentsdb数据库创建一个规则,限制所输入的数据为7位0~9的数字。 ①复制student_info表命名为stu_phone,在stu_phone表中插入一列,列名为“电话号码”。完成以下代码实现该操作。 SELECT * INTO stu_phone FROM student_info ALTER TABLE stu_phone ADD CHAR(7)NULL stu_phone表结构如图1-10所示。 图1-10 stu_phone表结构 ②创建一个规则phone_rule,限制所输入的数据为7位0~9的数字。实现该规则的代码为 CREATE phone_rule AS @phone LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]' ③使用系统存储过程sp_bindrule将phone_rule规则绑定到stu_phone表的“电话号码”列上。实现该操作的代码为 sp_bindrule,'stu_phone.电话号码' ④输入以下代码,进行一次插入操作: INSERT INTO stu_phone(学号,姓名,电话号码) VALUES('0009','王国强','1234yyy') 产生以下出错信息: 消息513,级别16,状态0,第1 行 列的插入或更新与先前的CREATE RULE 语句所指定的规则发生冲突。该语句已终止。冲突发生于 数据库'studentsdb',表'dbo.stu_phone',列'电话号码'。 语句已终止。

8实验八 数据库的完整性

实验八实现数据完整性一、实验目的 (1)实现数据完整性的概念及实施数据完整性的重要性。 (2)掌握数据完整性的分类。 (3)掌握完整性约束的添加、删除方法。 (4)掌握通用默认值的创建、实施与删除方法。 (5)掌握规则的创建、实施与删除方法。 (6)掌握级联删除、级联修改方法。 二、实验内容 1、完整性约束的添加、删除 (1)通过SQL Server Management Studio实施约束 a.为表Student的Birth字段创建检查约束,使输入的生日日期小于系统日期。 ①、选择Student表,右击→设计,打开Student表 ②、选择Birth一行,右击→CHECK约束,打开界面如下图所示 ③、单击“添加” ④、在表达式中写入:Entrance_date

b.为表Student的Sdept字段,设置默认值约束,默认值取’计算机系’。选择Sdept一行,在其列属性中修改其默认值 c.为Student表的Sname字段添加唯一性约束。 选择Sname一行,右击→索引/键 出现如下界面:

单击“添加”,在类型中选择“唯一键”,在列中选择“Sname”,名称自定义 最后单击“关闭”退出

d.将SC表的Sno,cno字段设置外键约束,约束名自已取,并允许级联删除与级联更新。(此要求在SQL Server2008R2中无法做出)若已存在外键约束,请先删除。 ①、选中Sno,右击→单击“关系”,出现如下信息,可见已存在外键约束 选中键,点击删除,完成约束删除 ②、添加约束: 选中Sno,右击,选择“关系”,出现如下信息,

SQL-Serve实验5-索引和视图-

SQL-Serve实验5-索引和视图-

实验5 索引和视图 1.实验目的 (1)掌握使用SQL Server管理平台和Transact-SQL语句CREATE INDEX创建索引的方法。 (2)掌握使用SQL Server管理平台查看索引的方法。(3)掌握使用SQL Server管理平台和Transact-SQL语句DROP INDEX删除索引的方法。 (4)掌握使用SQL Server管理平台和Transact-SQL语句CREATE VIEW创建视图的用法。 (5)了解索引和视图更名的系统存储过程sp_rename的用法。 (6)掌握使用Transact-SQL语句ALTER VIEW修改视图的方法。 (7)了解删除视图的Transact-SQL语句DROP VIEW的用法。 2.实验内容及步骤 (1)分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的student_info表和curriculum表创建主键索引。 使用SQL Server管理平台:

a. b. c. d.

e. 使用Transact-SQL语句: (2)使用SQL Server管理平台按curriculum表的课程编号列创建唯一性索引。

(3)分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的grade表的“分数”字段创建一个非聚集索引,命名为grade_index。 使用SQL Server管理平台: 使用SQL语句: use studentsdb go create index grade_index on grade (分数) (4)为studentsdb数据库的grade表的“学号”和“课程编号”字段创建一个复合唯一索引,命名为grade_id_c_ind。 create index grade_id_c_ind on grade (学号,课程编号)

实验室数据完整性

实验室数据完整性 CFDA飞检通告中药企缺陷汇总 近几年对于制药企业人都不陌生的一个名称就是数据完整性,然而它不是现在才有的,只是曾经GMP检查的一个盲区。 实验室由于其涉及的数据信息量大,首当其冲成为数据完整性的重灾区。 从国家局发布的飞行检查数据显示自2015年12月1日计算机化系统生效以来,12家问题企业涉及实验室数据完整性缺陷的有6家,占总数的50%,而自2016年发布的5家问题企业有4家涉及。涉及实验室数据完整性缺陷容主要有以下几方面: 1)电子数据完全性不足:例如多人共用登录密码,无权限受控,缺审计追踪、修改数据、实验数据未进行备份等功能; 2)修改系统时间; 3)检验记录涉嫌造假,仪器使用日志不真实,涉嫌一图多用; 4)记录不规不完整等。

CFDA飞行检查实验室数据完整性缺陷汇总: 一、健朗药业有限责任公司 2015.12.23 实验室数据完整性缺陷容: 奥拉西坦成品原始检验记录中采用红外光谱仪鉴别时,选择性的采用仪器保存的工作对照品图谱比对作为检验结果进行判定; 检验用高效液相色谱仪、气相色谱仪,多人共用登录密码,无权限受控,缺审计追踪等功能,不能确保图谱、数据的完整性。 https://www.wendangku.net/doc/f79982989.html,/WS01/CL1681/139041.html 二、省辉南三和制药 2015.12.28 实验室数据完整性缺陷容: 检验记录涉嫌造假,仪器使用日志不真实。在该企业液相工作站打印出的精制冠心片药粉液相色谱图,批号为20130301、20140501、20140801、20140802、20150901样品液相色谱图高度一致,涉嫌一图多用的数据完整性问题。

实验5 索引和视图

数据库技术与应用 实验报告 实验名称:实验五:索引和视图 系(科):信息系电子信息工程 班级: 180932 学号: 18093207 姓名:陶赛年 完成时间: 2012-4-28 南京师范大学中北学院

一、实验目的 1.学会使用SQL Server管理平台和Transact-SQL语句CREATE INDEX创建索引。 2.学会使用SQL Server管理平台查看索引。 3.学会使用SQL Server管理平台和Transact-SQL语句DROP INDEX删除索引。 4.掌握使用SQL Server管理平台、向导等创建、管理和删除全文索引,并使用全文索引查询信息的方法。 5. 掌握使用SQL Server管理平台和Transact-SQL语句CREATE VIEW创建视图的用法。 6.掌握系统存储过程sp_rename的用法。 7.掌握使用Transact-SQL语句ALTER VIEW修改视图的方法。 二、实验准备 1.了解聚集索引和非聚集索引的概念。 2.了解使用Transact-SQL语句CREATE INDEX创建索引的语法。 3.了解使用SQL Server管理平台创建索引的步骤。 4.了解Transact-SQL语句DROP INDEX删除索引的用法。 5.了解创建视图的Transact-SQL语句CREATE VIEW的语法格式及用法。 6.了解修改视图的Transact-SQL语句ALTER VIEW的语法格式。 7.了解视图更名的系统存储过程sp_rename的用法。 8.了解删除视图的Transact-SQL语句DROP VIEW的用法。 三、实验内容 1.分别使用SQL Server管理平台和Transact-SQL语句为studentsdb数据库的《学生表》和《课程表》创建主键索引。 (1) 使用SQL Server管理平台为studentsdb数据库的《学生表》和《课程表》创建主键索引。

实验8 数据完整性实验

实验8 数据完整性实验 1.实验目的 本实验的目的是通过实验使学生加深对数据完整性的理解,学会创建和使用触发器。2.实验时数4学时 [相关知识] SQL Server实现数据完整性的具体方法有4种:约束、缺省、规则和触发器。其中约束和缺省在实验一中已接触过。本实验重点学会创建和使用触发器。 触发器是实施复杂完整性的特殊类型的存储类型。触发器不需要专门语句调用,当对它所保护数据进行修改时自动激活,以防止对数据进行不正确,未授权或不一致的修改。 创建触发器的语法为: CREA TE TRIGGER <触发器> ON <表名> [WITH ENCRYPTION] FOR {[DELETE][,][INSERT][,][UPDA TE]} [WITH APPEND] [NOT FOR REPLICA TION] AS 其中: 1)WITH ENCRYPTION 为加密选项。 2)DELETE 选项为创建DELETE 触发器。DELETE触发器的作用是当对表执行DELETE操作时触发器被激活,并从指定表中删除元组,同时将删除的元组放入一 个特殊的逻辑表(delete表)中。触发器的动作可以检查delete表中的数据,以确 定下一步该如何处理。 3)INSERT选项为创建INSERT触发器。INSERT触发器在对指定表中执行插入数据操作时激活,激活后将插入表中的数据拷贝并送入一个特殊的逻辑表(inserted 表) 中,触发器会根据INSERT表中的值决定如何处理。 4)UPDA TE选项为创建UPDA TE触发器。UPDA TE触发器仅在对指定表中进行更新数据操作时激活。UPDA TE触发器激活后把将要被更新的原数据移入delete表中再 将要被更新后的新数据的备份送入insert表中,UPDA TE触发器对delete和inserted 表进行检查,并决定如何处理。 5)NOT FOR REPLICA TION 选项说明当一个复制过程在修改一个触发器表时,与该表相关联的触发器不能被执行。 一个触发器只适用于一个表,每个表最多只能有三个触发器,它们分别是INSERT、UPDA TE和DELETE触发器。触发器仅在实施数据完整性和处理业务规则时使用。 3.实验内容 本实验的内容为: 使用SQL设计触发器,通过SQL Server企业管理器定义它们。 具体完成下面例题:利用触发器来保证学生选课库中选课表的参照完整性,以维护其外码与参照表中的主码一致。 CREA TE TRIGGER SC_inserted ON 选课 FOR INSERT

创建数据库表与索引实验

实验2:创建数据库表与索引 ----表的创建与管理 1.实验目的: 掌握表和索引的建立方法及表结构的修改方法,了解表关系建立的条件和作用,并实践数据库管理系统提供的数据完整性功能,加深对数据完整性的理解。要求建立表、修改表结构、建立索引、进行数据完整性描述。 2.实验要求: ⑴在已经建立的数据库中创建表 运用Microsoft SQL Server2000企业管理器和Transact-SQL语句两种方法建立“课程信息表”、“教学任务表”、“教师档案表”、“学生档案表”、“学生选课表”、“学生成绩表”。 ⑵了解表与表之间的逻辑依赖关系 学会在Microsoft SQL Server2000企业管理器中,创建表之间的关联关系,通过外键的拖曳建立表的基本依赖关系,从而直白的表达整个数据库的表间联系,但是,注意:过程中,主键与外键对应的源数据表。 ⑶修改表结构 将学生档案表“”字段的数据类型修改为varchar(8)。为学生成绩表增减一个新的字段——“总成绩”,类型为real,默认是空值。学生成绩表“平时成绩”字段的取值为小于100的正数。 ⑷建立索引

运用Transact—SQL语句建立以下索引: ◆在学生档案表的“”字段上建立普通升序索引; ◆在学生档案表的“学号”字段上建立唯一索引; ◆在学生档案表的“学号”字段上建立聚集索引; ◆在学生档案表的“学号”(升序)、“”(升序)和“籍贯”(升序)三个字段上建立一个普通索引; ◆运用SQL企业管理器在学生档案表中的“籍贯”字段上创建普通升序索引。 3.实验环境与实验器材:计算机,网络环境,投影设备。 实验相关软件:Window xp、SQL Server 2000。 4.实验容与步骤 使用企业管理器和Transact-SQL语句创建“课程信息表”、“教学任务表”、“教师档案表”、“学生档案表”、“学生选课表”、“学生成绩表”6表,6表的具体设计容:“课程信息表”包括课程名称、课程类别、学分和学时等;“教师档案表”和“学生档案表”记录了教师和学生的基本情况;“教学任务表”包括课程ID、任课教师ID、学期和年度;“学生选课表”给出了学生与课程之间的关系;“学生成绩表”则给出了学生成绩的计算方法。 4.1 在“教学管理”数据库中使用Transact-SQL命令创建表 使用Transact-SQL命令创建“学生档案表”,包含字段“学号”、“”、“性别”、“出生日期”、“籍贯”、“专业”、“班级”。 第1步:从“开始”菜单中打开“查询分析器”,连接进入“查询”窗口。

实验四 索引和视图参考答案

索引 --为表student中SName属性建立惟一索引 create unique index snameindex on student(SName) --为teacher中的tname属性建立惟一聚集索引。 由于sqlserver2005在主键和具有unique约束的属性上自动建立了索引,且在主键上自动建立了聚集索引,因此必须移除主键(或其它聚集索引),然后才能在tname上建立聚集索引create unique clustered index tnameindex on teacher(tname) 移除主键

然后还原Tno为teacher表的主键 --利用系统存储过程sp_helpindex查看表student上的所有索引。

exec sp_helpindex student --利用系统存储过程sp_rename将表student上的索引改名。 exec sp_helpindex student exec sp_rename 'student.snameindex','snameindex2' --删除表student中的惟一索引。(注意,sqlserver2005在主键和具有unique约束的属性上自动建立了索引,要删除这些索引,必须先取消这些属性的主键或unique性质(通过修改表),才能删除索引,不能直接删除索引) drop index student.snameindex2 --视图 --建立视图teacherview1(无check option选项),只显示教师表中姓张的教师的教师编号、教师姓名、所在系。 create view teacherview1 as select Tno, TName, DepID from teacher where TName like '张%' --建立视图teacherview2(带check option选项),只显示教师表中姓张的教师的教师编号、教师姓名、所在系。 create view teacherview2 as select Tno, TName, DepID from teacher where TName like '张%' with check option --建立视图teacherview3(带encryption选项),只显示教师表中姓张的教师的教师编号、教师姓名、所在系。 create view teacherview3 with encryption as select Tno, TName, DepID from teacher where TName like '张%' --分别向teacherview2、teacherview1中插入记录(’866’,’杨志’,3),体会with check option选项的作用。 insert into teacherview1 values('866','杨志',3) insert into teacherview2 values('867','王五',3)

数据库实验 索引的创建与使用

实验三:索引的创建与使用 一、实验目的: 1、理解索引的概念和索引的作用。 2、掌握创建索引的方法。 3、学会使用索引。 4、了解聚簇索引和非聚簇索引。 二、实验要求:(必做) 硬件:Intel Pentium 120或以上级别的CPU,大于16MB的内存。 软件:Windows 95/98/2000操作系统,关系数据库管理系统SQL SERVER 2000。 学时:2学时 三、实验内容: 1、用create index在学生表student的学号sno上建立聚簇索引。 2、在学生表student中,为姓名sname建立非聚簇索引。 3、在课程表的课程号Cno上建立唯一索引。 4、在选课表的学号sno、成绩Grade上建立复合索引,要求学号为升序,学号相同时 成绩为降序。 5、用drop删除学生表student的索引。 数据库设计与管理实验报告

实验名称评分 实验日期年月日指导教师 姓名专业班级学号 一、实验目的 二、实验步骤及结果 1、用create index在学生表student的学号sno上建立聚簇索引。 create clustered index stusno on student(sno); 2、在学生表student中,为姓名sname建立非聚簇索引。 create index stusname on student(sname); 3、在课程表的课程号Cno上建立唯一索引。 create unique index coucno on course(cno); 4、在选课表的学号sno、成绩Grade上建立复合索引,要求学号为升序,学号相同时成绩为降序。

实验三 索引和视图

实验三索引和视图 一、实验目的 1.掌握利用SSMS和T—SQL语句创建和删除索引的两种方法。 2.掌握利用SSMS和T—SQL语句创建、查询、更新及删除视图的方法。 ssex char(3)constraint ssex_ch check (ssex in('男','女')), sage int not null constraint sage_ch check (sage between 15 and 30), sdept char(10))

values('C02','数据结构','C05',2) insert into course values('C03','数据库','C02',2) insert into course

values('C04','DB_设计','C03',3) insert into course values('C05','C++',null,3) insert into course values('C06','网络原理','C07',3) create table sc(sno char(5)not null, cno char(5)not null, grade int constraint grade_ch check(grade between 0 and 100), primary key(sno,cno),

constraint fk_sno foreign key (sno)references student(sno), constraint fk_cno foreign key (cno)references course(cno)) insert into sc values('S01','C01',92) insert into sc values('S01','C03',84) insert into sc values('S02','C01',90) insert into sc values('S02','C02',94) insert into sc values('S02','C03',82) insert into sc values('S03','C01',72) insert into sc values('S03','C02',90) insert into sc values('S04','C03',75) 2.索引的建立、删除 ①用SSMS的方式为Student表按Sno(学号)升序建唯一索引

数据库实验-数据库索引、视图与触发器

石家庄经济学院 实验报告 学院: 信息工程学院 专业: 网络工程 信息工程学院计算机实验中心制

1.索引的建立和删除操作 2.视图的创建、修改、更新和查询操作 二实验目的 1.掌握数据库索引建立与删除操作,掌握数据库索引的分类,并了解建立数据库索引的意义、作用。 2.掌握视图的创建和查询操作,理解视图的使用,理解实图在数据库安全性中的作用。 三实验内容 1.索引的建立和删除操作 (1)在S表中,建立按照sno升序的惟一性索引snoIDX。 (2)在SC表中,建立按照学号升序和课程号降序的唯一性索引scIDX。 (3)在S表中,按照生日建立一个非聚簇索引birthdayIDX。 (4)在C表中,建立一个按照课程名升序的聚簇索引cnameIDX。 (5)删除索引cnameIDX。 2.视图的创建、修改、更新和查询操作 (1)建立一个关于所有女生信息的视图S_GIRL。 (2)将各系学生人数,平均年龄定义为视图V_NUM_A VG (3)建立一个视图反映学生所选课程的总学分情况TOTAL_CREDIT。 (4)建立一个所有学生课程成绩的视图S_GRADE,包括基本学生信息,课程信息和成绩。 (5)在视图S_GRADE基础之上,建立一个两门课以上成绩不及格的学生情况视图FAIL_GRADE。 (6)建立一个至少选修了4门课及4门课以上的学生信息的视图SC_FOUR。 (7)修改视图S_GIRL,要求只显示1997年以前出生的女生信息。 (8)在视图FAIL_GRADE查询不及格超过2门课的学生信息。 (9)删除视图S_GRADE。 (10)通过视图S_GIRL,将“王丹”的名字修改为“汪丹”,并查询结果。 (11)通过视图S_GIRL,新增一个学生信息(“刘兰兰”,“女”,“计算机学院”,1996-8-8),并查询 结果。 (12)通过视图S_GIRL,删除1995年出生的女生信息,并查询结果。 (13)通过视图S_GRADE,将“汪丹”的名字修改为“王丹”,是否可以实现,请说明原因。 (14)通过视图COMPUTE_A VG_GRADE,将“4121090301”学生的平均分改为90分,是否可以实 现,请说明原因。 四实验要求 1.要求掌握索引的类型,以及创建索引时的注意事项,例如每个表只能创建一个聚集索引,可以创建非聚集索引最多为249个,等等。 2.理解创建视图的目的和意义。掌握创建视图时需要考虑的原则:只能在当前数据库中创建视图、

视图与索引作业

视图与索引作业 -标准化文件发布号:(9456-EUATWK-MWUB-WUNN-INNUL-DDQTY-KII

第一部分 创建如下表:并向每张表中添加5条数据 学生表t_student(f_no,f_name,f_sex,f_department) 课程表(f_id,f_name) 成绩表(f_no,f_subjectid,f_score) 作业: 1、对成绩表的课程编号创建非簇索引 2、对学生表的姓名和年龄创建非簇索引 3、对学生表的学号创建唯一索引 4、创建视图统计成绩表中任何一门课程及没有及格的信息 5、创建视图查询男生的平均成绩 6、对课程表的课程编号和分数创建非簇索引 7、将上题中的非簇索引删除 8、创建视图查询C#课程不及格的女生信息 9、创建视图统计男女生的平均分信息 10、简述索引的作用和种类 11、简述视图的作用 第二部分 使用northwind数据库完成: 1)在northwind库中(products和suppliers表中)查找每个商品对应的供 应商名称建立视图my_view,并通过该视图查询数据。 2)在视图my_view中,将companyname为以tokyo开头的改为ToKyo.使 用修改表数据的UPDATE语句。 3)使用DROP VIEW语句将视图my_view删除。 4)使用Northwind数据库,在Suppliers表的Country列和city列上创建一 个名为Country_index的非聚集索引。 5)删除Country_index索引。 6)在Suppliers表的Country列和city列上创建一个名为Country_index的 非聚集索引。请确保索引页留有50%的空白空间,并且删除具有相同 名称的现有索引 7)使用CREATE VIEW语句,基于employees表创建一个名为EmpHierarchy 的视图。视图应包含有上级领导的雇员的雇员ID、名、姓及其上级的 姓

实验4 数据的完整性

实验3-4 数据的完整性 一、实验目的: 1. CHECK约束。 2. PRIMARY KEY 约束。 3. UNIQUE约束。 4. FOREIGN KEY 约束 5. DEFAULT约束 6. 数据库关系图的使用。 二、实验内容: 1. 创建使用CHECK约束的表 2. 为表添加PRIMARY KEY 约束、UNIQUE约束、DEFAULT约 束。 3. 创建数据库关系图,建立PRIMARY KEY 约束、FOREIGN KEY 约束。 三、实验步骤: 分别使用SQL Server Management Studio和Transact SQL两种方式完成下列操作: 1. 创建员工表,要求如下: 身份编号,char(10) NOT NULL:第一位必须是英文字 母、第二位必须是数字1或2、后八位则必须是介于0~9 的数字。 工作编号,char(6) NOT NULL:以字符串T1C开头,后三 位则必须是介于0~9的数字。 姓名nvarchar(20) NOT NULL: 性别,char(1) NOT NULL,必须是字母M或F。 出生日期 NOT NULL,必须年满18岁。 电话号码,满足下列格式之一: 区号可以是3位或4位,用括号括起来。 区号是4位,电话号码必须是6位,且前3位与后3位 以“-”隔开。 区号是3位,电话号码必须是7位或8位;7位则前3位 与后4位以“-”隔开,如(025)452-8789;8位则前8 位与后4位以“-”隔开,(010)6435-8789。 地址nvarchar(60) NOT NULL

血型 varchar (3) NOT NULL ,必须是A 、B 、AB 、O 、RH+、RH-之一 起薪 money NOT NULL , 1500~10 000目前薪水money NOT NULL ,1500~20 000目前薪水大于或等于起薪。 2.创建员工表字段名数据类型说明员工编号 int 主键,聚集索引,not null ,自动增长,种子10,步长10身份证编号char(18)not null ,唯一约束技能鉴定编号char(6)not null ,唯一约束姓名nvarchar(16)姓名+电话号码,唯一约束 姓名+移动电话,唯一约束 电话号码char(11)移动电话int 3. 创建三个表: 学生表 字段名数据类型说明学号char(6)主键姓名varchar(20) 性别bit 出生日期smalldatetime 大于18岁籍贯 nvarchar(60) 课程表 字段名 数据类型说明课程编号 char(4) 主键

实验五 实体参照完整性以及索引的建立和使用

实验五指导 5.1 实体完整性 1)在数据库School中建立表Stu_Union,进行主键约束,在没有违反实体完整性的前提下插入并更新一条记录 use School create table Stu_Union( Sno char(8)not null unique, Sname char(8), Ssex char(1), Sage int, constraint PK_Stu_Union primary key(Sno) ) insert Stu_Union values('456','小二','M','22') update Stu_Union set Sno=''WHERE Sage='22' update Stu_Union set Sno='789'where Sname='小二' select*from Stu_Union 2)演示违反实体完整性的插入操作 use School insert Stu_Union values('789','小三','M','23') 3)演示违反实体完整性的更新操作 use School update Stu_Union set Sno=NULL where Sno='789' 4)演示事务的处理,包括事务的建立,处理以及出错时的事务回滚,演示事务处理和批处理的区别。 提示:SQL2005相关语句为 BEGIN TRAN ROLLBACK TRAN COMMIT TRAN

可以这样演示:新建一个包含两条语句的事务,使第一条成功而第二条失败,然后查看整个事务是否回滚。 重要提示:SQL默认只回滚出错的语句,要回滚整个事务,需要预先执行以下语句:SET XACT_ABORT ON 事务的建立 use School set xact_abort on begin transaction t1 insert into Stu_Union values('001','张三','M','22') insert into Stu_Union values('002','李四','F','24') insert into Stu_Union values('003','李四','F','24') select*from Stu_Union commit transaction t1 处理以及出错时的回滚 use School set xact_abort on begin transaction t2 insert into Stu_Union values('004','王五','M','23') select*from Stu_Union insert into Stu_Union values('789','钱六','F','21') commit transaction t2 use School select*from Stu_Union

数据库原理实验报告实验四视图与索引

数据库原理实验报告实验 四视图与索引 The Standardization Office was revised on the afternoon of December 13, 2020

一、实验内容、步骤以及结果 1.在Student数据库中,利用图形用户界面,创建一个选修了“数据库原理”课程并且是1996年出生的学生的视图,视图中包括学号,性别,成绩三个信息。(5分) 2.用两种不同的SQL语句创建第五版教材第三章第9题中要求的视图(视图名:V_SPJ)(10分,每种方法5分)。 --第一种方法 CREATE VIEW V_SPJ AS SELECT sno,pno,qty FROM SPJ WHERE jno=( SELECT jno FROM J WHERE jname ='三建' ); GO --删除建好的视图 DROP VIEW V_SPJ; GO --第二种方法 CREATE VIEW V_SPJ AS

SELECT sno,pno,qty FROM SPJ,J WHERE=AND='三建'; 3.用SQL语句完成第五版教材第三章第11题中的视图查询(10分,每小题5分)。 11.请为三建工程项目建立一个供应情况的视图,包括供应商代码(SNO)、 零件代码(PNO)、供应数量(QTY)。 针对该视图VSP完成下列查询: (1)找出三建工程项目使用的各种零件代码及其数量。 (2)找出供应商S1的供应情况。

4.用SQL语句完成视图的数据更新。(15分,每题5分) (1)给视图V_SPJ中增加一条数据。 提示: -SPJ表中JNO允许为空时,数据可以插入基本表,此时JNO为NULL,由于JNO为NULL,所以视图中没有该条数据。 -SPJ表中JNO不能为空时,可以使用instead of触发器实现。 (2)修改视图V_SPJ中的任意一条数据的供应数量。

实验六 数据完整性

实验六数据完整性 学号:6103114095 姓名:王祥真班级:计科143 1.实验目的 (1)掌握SQL Server管理平台和Transact-SQL语句(CREATE RULE、DROP RULE)创建和删除规则的方法。 (2)掌握系统存储过程sp_bindrule、sp_unbindrule绑定和解除绑定规则的操作方法,以及sp_helptext查询规则信息、sp_rename更名规则的方法。 (3)掌握SQL Server管理平台和Transact-SQL语句(CREATE DEFAULT、DROP DEFAULT)创建和删除默认对象的方法。 (4)掌握系统存储过程sp_bindefault、sp_unbindefault绑定和解除绑定默认对象的操作方法,以及sp_helptext查询默认对象信息。 (5)掌握SQL Server管理平台和Transact-SQL语句(CREATE TABLE、ALTER TABLE)定义和删除约束的方法,并了解约束的类型。 2.实验内容 (1)为xskc数据库中student表的创建一个规则stu_nj_rule,限制“年级”列所输入的数据为2位0~9的数字。 (2)创建一个规则stusex_rule,将其绑定到student_info表的“性别”列上,保证输入的性别值只能是“男”或“女”。 (3)使用系统存储过程sp_help查询stusex_rule规则列表,使用sp_helptext查询stusex_rule 规则的文本,使用sp_rename将stusex_rule规则更名为stu_s_rule。 删除stu_nj_rule规则。

实验8(1周)

实验JDBC进阶(2) 一、相关知识点 1、JDBC基本概念 2、视图、索引 二、实验目的: 理解视图和索引的概念,并通过视图设计简化程序设计,通过索引设计优化查询性能 三、实验内容: 1、设计读者视图view_reader,并修改readerManager类中相关代码。 第一步:通过查询分析器建立读者视图,要求视图中包含读者类别名称; 第二步:改造ReaderManager类,将其中的连接查询用视图代替。 第三步:运行图书管理系统,进行各个功能的测试(读者类别管理、读者管理)【实验结果与分析】 A、写出视图创建代码。 create view view_reader as select readerid,readerName,r.readerTypeId,r.lendBookLimitted,createDate,creatorUserId,stopDate,s topUserId,rt.readerTypeName,r.removeDate from BeanReader r,BeanReaderType rt where r.readerTypeId=rt.readerTypeId B、给出改造后ReaderManager类的各个方法的代码。 String sql="select *" + " from view_reader where removeDate is null " + " and removeDate is null "; String sql="select *" + " from view_reader where readerid=?";

2、设计图书视图view_book,并修改BookManager类中相关代码。 第一步:通过查询分析器建立图书视图,要求视图中包含出版社名称;

实验室数据完整性考试试卷

“实验室数据完整性”培训考试试卷 (SMP-ZK-005-00检验记录与检验报告管理规程、SMP-ZK-001-00检验工作管理规程) 姓名: 岗位: 分数: 一、填空题(每空 分,共 分) 、数据完整性是指数据的 和 ,用于描述存储的所有数据值均处于 的状态。 、在实验的同时记录 及结果,不应事后抄到记录上,不得用 、圆珠笔记录,应用黑色签字笔记录;记录要 、 、 、无缺页损角,字迹 ,色调一致;要采用 计量单位,数据应按测量仪器的 记录,发现观测失误应注明;记录填写的任何更改都应当遵循以下原则:在错误的地方画一条横线并使原有信息仍 ,书写正确信息后签注 和 。 、如检验设备具备打印的功能,应当尽可能采用检验设备 的记录、 和曲线图等。自动打印的记录、图谱和曲线图上应标明产品或样品的 、 和记录设备的信息,操作人还应签注 和日期。设备的信息至少包括设备的名称及其唯一的 以便追溯所用设备。 、检验所有的 必须保存。原则上不得使用 ,如果不可避免,可复印并在复印件上签注姓名和日期。 、对于某些数据如环境监测数据、制药用水的 ,宜对数据进行 并保存趋势分析报告以便了解体系的整体状况。 、检验应当有 ,规定所用方法、仪器和设备,

其内容应当与经 的检验方法一致。 、检验应当有 的记录并应当 ,确保结果与记录一致。所有计算均应当严格核对。 、应当对实验室容量分析用 、试剂、试液、对照品以及 进行 。 、质量控制实验室应当建立 的操作规程。任何检验结果超标都必须按照操作规程进行 ,并有相应的记录。 、产品检验记录的贮存期限为 ;特殊药品检验记录保存至贮存有效期后 。原辅料、包装材料检验记录应贮存到 产品有效期后一年。 二、简答题(每题 分,共 分) 、检验记录应当包括哪些内容? 答:

视图和索引(数据库实验4)

. . . 数据库基础与实践实验报告实验四视图和索引 班级:惠普测试142 学号:1408090213 :闫伟明 日期:2016-11-13

1 实验目的: 1)掌握SQL进行视图创建的方法; 2)掌握SQL进行视图更新的方法,理解视图更新受限的原因; 3)掌握SQL进行索引创建及删除的方法。 2 实验平台: 操作系统:Windows xp。 实验环境:SQL Server 2000以上版本。 3 实验容与步骤 利用实验一创建的sch_id数据库完成下列实验容。 1.定义视图V_TCS(定义时不加with check option),存放全部计算机系老师的信息。 视图定义代码: CREATE VIEW V_TCS AS SELECT tno,tn,sex,age,prof,sal,comm,T.dno FROM T,D WHERE T.dno=D.dno AND D.dn='计算机' 视图查询语句与查询结果截图: SELECT*FROM V_TCS 2.定义视图V_sal,存放全体教师的教师号,教师,教师酬金(工资+岗位津贴),职称信息。视图定义代码: CREATE VIEW V_sal AS

SELECT tno教师号,tn教师,sal+comm教师酬金,prof支撑信息 FROM T 视图查询语句与查询结果截图: SELECT*FROM V_sal 3.向V_TCS中插入一条计算机专业教师的新记录,并查询V_TCS视图的全部记录。视图更新代码: INSERT INTO V_TCS SELECT'T10','良瑗','女',20,'讲师',6000,8000,D.dno FROM D WHERE D.dn='计算机'

数据完整性实验

实验五:数据完整性实验 一、实验目的: 掌握使用SQL中的PRIMARY KEY、CHECK、FOREIGN KEY……REFERENCES、NOT NULL、UNIQUE等关键字是现实体完整性、参照完整性及用户定义完整性约束定义。二、实验步骤: (一)验证分析部分 1、利用SQL查询分析器用PRIMARY KEY子句保证实体完整性。 在查询分析器窗体下键入如下命令: CREATE TABLE Student( sno CHAR(5)NOT NULL UNIQUE, sname CHAR(8), ssex CHAR(1), sage INT, sdept CHAR(20), CONSTRAINT PK_Student PRIMARY KEY(sno)); UPDATE Student SET sno=’‘WHERE sdept=’CS’; UPDATE Student SET sno=’200215121‘WHERE sname=’王敏’; 运行并观察结果。 2、利用SQL查询分析器用FOREIGN KEY……REFERENCES子句保证实体完整性。 在查询分析器窗体下键入如下命令: (1)先删除原来SC表中关于Sno的外键,再将SC的Sno外键修改为: alter TABLE SC add CONSTRAINT FK_Sno FOREIGN KEY(sno) REFERENCES Student(sno) ON update CASCADE; 然后执行以下语句 Update Student SET sno=’200215128‘WHERE sno=’200215121’; (2)先删除原来SC表中关于Sno的外键,再将SC的Sno外键修改为: alter TABLE SC add CONSTRAINT FK_Sno FOREIGN KEY(sno) REFERENCES Student(sno) ON delete CASCADE; 然后执行以下语句 delete from student WHERE sno=’200215122’;

相关文档