数据库实验指导书(2011) - 图文(6)

2019-09-01 20:27

(4) 要求为属性选择合适的数据类型,定义每个表的主码,是否允许空值和默认值等

列级数据约束。

(5) 在企业管理器中建立学生、课程和选课3个表的主码约束,建立选课表与学生表、

选课表和课程表之间的外码约束。

(6) 通过企业管理器,在学生选课数据库的学生、课程和选课3个表中各输入10条

记录。 2、提高操作实验:

(1) 通过企业管理器实现对学生选课数据库的学生、课程和选课3个表中数据的插入、

删除和修改操作。

(2) 将学生选课数据库、库中的表、索引和约束用SQL表达,并通过查询分析器实现

建库、建表、建立表间联系和建立必要的索引、列级约束和表级约束的操作。

四、思考与总结

((1)指出学生选课数据库的主码、外码和数据约束。

(2)学生选课数据库的选课表中,属性学号、课程号采用数值型,还是采用字符型的,采用哪种类型最好。

(3)为什么要建立索引,建立多少索引合适。 (4)为什么不能随意删除被参照表中的主码。

实验2 数据库的简单查询和连接查询

一、教学目的和要求

(1)掌握SQL Server Query Analyzer(查询分析器)的使用方法。 (2)加深对标准SQL查询语句的理解。

(3)熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。

二、实验内容

(1)简单查询操作,该实验包括投影、选择条件表达,数据排序,使用临时表等; (2)连接查询操作,该实验包括等值连接、自然连接、求笛卡尔积、一般连接、外连接、内连接、左连接、右连接和自身连接等。

三、实验步骤

将查询要求用SQL语句表示;在SQL Server Query Analyzer(查询分析器)输入区中输入SQL语句;设置Query Analyzer(查询分析器)的结果区为Standard Execute(标准执行)或Execute to Grid(网格执行)方式;发布执行命令,并在结果区中查看查询

24

结果。

1、基本操作实验:

(1) 查询计算机系学生的学号和姓名。 (2) 查询选修了数学课的所有学生名单。 (3) 查询年龄小于23岁的女同学的学号和姓名。 (4) 查询所有姓王的学生

(5) 查询全体学生的姓名和出生年份。 (6) 查询选修了课程的学生学号。

(7) 查询每个学生的情况以及他(她)所选修的课程号。 2、提高操作实验:

(1) 查询学生的学号、姓名、选修的课程名及成绩,并按成绩的降序排列。 (2) 查询选修1号课程且成绩在80-90分之间的学生学号和成绩。 (3) 查询选修1号课程且成绩在90分以上的学生学号、姓名及成绩。 (4) 查询每一门课(名称)的间接先行课名称(即先行课的先行课)。 (5) 查询至少选修了1、2号课程的学生姓名。

四、思考与总结

(1) 输入SQL语句时应注意,语句中均使用西文操作符号。 (2) 学会查询结果的几种处理方式。 (3) 如何提高数据查询和连接速度。

(4) 对于常用的查询形式或者查询结果,怎样处理好

实验3 数据库的嵌套查询和组合统计查询

一、教学目的和要求

(1) 进一步掌握SQL Server Query Analyzer的使用方法。 (2) 加深对SQL语言的嵌套查询语句的理解。

(3) 熟练掌握数据查询中分组、统计、计算和组合的操作方法。

二、实验内容

(1)使用IN、比较符、ANY或ALL和EXITS操作符进行嵌套查询操作。 (2)分组查询实验。该实验包括分组条件表达、选择组条件表达的方法。 (3)使用函数查询实验。该实验包括统计函数和分组统计函数的使用方法 (4)组合查询,计算和分组计算实验。

25

三、实验步骤

将查询要求用SQL语句表示;在SQL Server Query Analyzer输入区中输入SQL语句;设置Query Analyzer的结果区为Standard Execute(标准执行)或Execute to Grid(网格执行)方式;发布执行命令,并在结果区中查看查询结果。

1、基本操作实验:

(1) 查询选修了数据库的学生学号和姓名。

(2) 查询1号课程的成绩高于张三的学生学号和成绩。 (3) 查询其他系中年龄小于计算机系年龄最大者的学生。 (4) 查询没有选修2号课程的学生姓名。 (5) 查询选修1号课程的学生最低分。 (6) 统计男女同学的人数。

(7) 求各个课程名称及相应的选课人数 2、提高操作实验:

(1) 检索选修2号课程的学生中成绩最高的学生的学号。 (2) 查询选修了全部课程的学生的姓名。 (3) 查询平均成绩最高的学生学号和姓名。

(4) 查询1号课程成绩高于所有课程总平均成绩的学生姓名。

(5) 查询有3门以上课程是80分以上的学生的学号及(80分以上)的课程数。

四、思考与总结

(1) 输入SQL语句时应注意,语句中均使用西文操作符号。

(2) 在使用SQL语句时,注意语句的层次嵌套关系和括号的配对使用问题。 (3) 子句WHERE<条件>表示元组筛选条件,子句HAVING<条件>表示组选择条件。 (4) 组合查询的字句间不能有语句结束符。

(5) 子句HAVING<条件>必须和GROUP BY<分段字段>子句配合使用。 (6) 试用多种形式表示实验中的查询语句,并进行比较。 (7) 组合查询语句是否可以用其他语句代替,有什么不同。

(8) 使用GROUP BY<分段条件>子句后,语句中的统计函数的运行结果有何不同。

实验4 视图的定义与维护及数据完整性控制

一、教学目的和要求

(1) 使学生掌握视图创建向导的使用方法,加深对视图的理解。

26

(2) 熟练掌握SQL语言定义视图和查询视图。

(3) 加深对数据完整性的理解,掌握使用SQL定义存储过程和触发器。

二、实验内容

(1) 创建、查看、修改和删除视图,基于视图的查询。 (2) 用企业管理器创建触发器,并使用触发器。 (3) 创建存储过程并执行。

三、实验步骤

1、基本操作实验:

(1) 按下列SQL描述的视图定义,创建IS_S1视图。

CREATE VIEW IS_Student

AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept=’IS’;

(2) 在Create Table中定义完整性约束。

① 首先打开查询分析器,在建表的同时定义各种约束,例如: create table s_con (

sno varchar (10) constraint p_s primary key, sname varchar(20) constraint u_s unique,

ssex char(2) constraint c_s check(ssex in ('男','女')),

sdept char(10), constraint f_s foreign key(sdept) references on(department) sage int constraint c1_s check(sage>15 and sage<30) )

② 然后执行如下语句,看看执行效果: insert into s_con values('95001','aa','男','cs',17) select * from s_con

insert into s_con values('95002','bb','男','cs',12)

(3)用企业管理器创建触发器,并在查询分析器中执行一个可以引起触发器执行的语句来使触发器执行,并观察结果。例如,用CREATE TRIGGER T_S ON Student FOR DELETE As 定义了触发器,则执行DELETE Student WHERE<条件>语句。用SQL写出实验操作语句。 2、提高操作实验:

27

(1) 针对IS_S1视图完成下列查询: ① ②

在信息系学生的视图中找出年龄不小于21岁的学生。 查询信息系选修了1号课程的学生。

(2) 使用SQL建立存储过程: ①

创建存储过程

Create procedure p_student Name char(10) As Begin

Select * from student where sname like ‘%’+name+’%’ end

② 执行存储过程

在查询分析器中执行以下语句,查看执行结果 Exec p_student

四、相关知识

1、INSERT触发器的工作过程

可以定义一个无论何时用INSERT语句向表中插入数据时都会执行的触发器。当触发INSERT触发器时,新的数据行就会被插入到触发器表和inserted表中。inserted表是一个逻辑表,它包含了已经插入的数据行的一个副本。inserted表包含了INSERT语句中已记录的插入动作。

inserted表还允许引用由初始化INSERT语句而产生的日志数据。触发器通过检查inserted表来确定是否执行触发器动作或如何执行它。inserted表中的行总是触发器表中一行或多行的副本。日志记录了所有修改数据的动作(INSERT、UPDATE和DELETE语句),但在事务日志中的信息是不可读的。

然而,inserted表允许你引用由INSERT语句引起的日志变化,这样就可以将插入数据与发生的变化进行比较,来验证它们或采取进一步的动作。也可以直接引用插入的数据,而不必将它们存储到变量中。

示例:

CREATE TRIGGER Trigger_stuAge ON student_sql AFTER INSERT AS

IF (SELECT sage FROM inserted) >30 BEGIN

PRINT '学生的年龄不能超过30'

28


数据库实验指导书(2011) - 图文(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《Java6程序设计实践》教程课后答案 - 清华大学出版社

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: