《数据库原理及应用》实验指导书

更新时间:2023-10-04 15:11:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《数据库原理及应用》实验指导书 实验1 数据库模式设计及建立

一、实验目的

掌握数据库模式设计,依据实际要求设计表结构,建立表的关系;比较SQL命令方式和可视化环境管理器方式设计的异同点。 二、实验内容

1. 用sql查询分析器设计学生基本信息表student、课程表course和选课表sc,各表中

字段及数据分别如表1、表2及表3所示。 表1 Student表

学 号 Sno 200215121 200215122 200215123 200515125

表2 Course表 课程号 Cno C1 C2 C3 C4 C5 C6 C7

课程名 Cname 数据库 高等数学 信息系统 操作系统 数据结构 数据处理 PASCAL语言 先行课 Cpno C5 C1 C6 C7 C6 学分 Ccredit 4 2 4 3 4 2 4 姓 名 Sname 李勇 刘晨 王敏 张立 性 别 Ssex 男 女 女 男 年 龄 Sage 20 19 18 19 所 在 系 Sdept 计算机系 计算机系 数学系 信息系 表3 SC表

学 号 Sno 200215121 200215121 200215121 200215122 200215122 200215122

2. 用企业管理器设计学生基本信息表student、课程表course和选课表sc。 三、操作步骤

1. 熟悉 SQL SERVER 的企业管理器和事件探查器 2. 创建学生选课数据库

3. 建立新表的SQL 语句;注意约束条件及表间关系 4. 启动 “查询分析器”。

5. 连接SQL SERVER;选择数据库

6. 在“查询分析器”中输入已编写好的SQL 命令 7. 执行SQL命令 8. 启动企业管理器

9. 在控制台中选择先前建立的数据库

10. 建立学生基本信息表student、课程表course和选课表sc 11. 设定表关系

课程号 Cno C1 C2 C3 C1 C2 C3 成绩 Grade 92 85 88 80 90 80 实验2 数据库的简单查询和连接查询实验

一、实验目的

掌握SQL Server查询分析器的使用方法,加深对SQL和SQL语言的查询语句的理解。熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。 二、实验内容

1. 简单查询操作。该实验包括投影、选择条件表达,数据排序,使用临时表等。

具体完成以下题目,将它们转换为SQL语句表示,在学生选课数据库中实现其数据查询操作。

1) 查询数学系学生的学号和姓名 2) 查询选修了课程的学生学号 提示:

select distinct sno from sc;

3) 查询选修课程号为‘C1’的学生号和成绩,并要求对查询结果按成绩的降序排

列,如果成绩相同按学号的升序排列。

4) 查询选修课程号为‘C1’且成绩在80~90之间的学生学号和成绩,并成绩乘以

0.8输出。

5) 查询数学系或计算机系姓张的学生的信息。6) 查询缺少了成绩的学生的学号和课程号

2. 连接查询操作。该实验包括等值连接、自然连接、内连接、左连接、右连接和自连接等。 1) 查询每个学生的情况以及他所选修的课程 2) 查询学生的学号、姓名、选修的课程及成绩3) 查询选修课程号为‘C1’且成绩在90以上的学生学号、姓名和成绩4) 查询每一门课程的间接先行课(即先行课的先行课)提示:

Select First.Cno, Second.Cpno From Course First, Course Second Where First.Cpno = Second.Cno;

将查询需求用SQL语言表示;在SQL Server查询分析器的输入区中输入Standard Execute(标准执行)并在结果区中查看查询结果;如果结果不正确,求笛卡儿积、一般连接、 Execute to Grid(网格执行)要进行修改,外连接、

SQL查询语句;方式;直到正确为止。

三、实验方法设置查询分析器的结果区为或发布执行命令,

实验3 数据库的嵌套查询实验

一、实验目的

进一步掌握SQL Server查询分析器的使用方法,加深SQL语言的嵌套查询语句的理解。 二、实验内容

在SQL Server查询分析器中使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。

具体完成以下例题。将它们用SQL语句表示,例1 查询选修了高等数学的学号和姓名例2 查询C1课程的成绩高于刘晨的学生学号和成绩提示: select sno, grade from sc

where grade> (select grade from sc,student

where sc.sno=student.sno

and sc.cno='C1'

and student.sname='刘晨and Cno='C1';

例3 查询其他系中比计算机系某一学生年龄小的学生(即年龄小于计算机系年龄最大者的学生)

select * from student

where sage<(select max(sage) from student

where sdept='计算机系'); and sdept<>'计算机系'

例4 查询其他系中比计算机系学生年龄都小的学生select * from student

在学生选课中实现其数据嵌套查询操作。 ')

where sage

where sdept='计算机系') and sdept<>'计算机系';

例5 查询选修了C2课程的学生姓名 select sname from student where exists

(select * from sc

where sno=student.sno

and cno='C1');

例6 查询没有选修C2课程的学生姓名 select sname from student where not exists

(select * from sc

where sno=student.sno

and cno='C1');

例7 查询至少选修了学号为“200215122”的学生所选修全部课程的学生学号和姓名 select sno,sname from student where sno in

(select sno from sc scx where not exists

(select * from sc scy

where scy.sno='200215122' and

本文来源:https://www.bwwdw.com/article/m5ad.html

Top