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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(select sno from sc scx where not exists
(select * from sc scy where scy.sno='200215122' and
not exists (select *
from sc scz where scz.sno=scx.sno and
scz.sno=scy.sno))); 三、实验方法
实验 2 数据库的简单查询和连接查询实验
一、实验目的 掌握 SQL Server 查询分析器的使用方法,加深对 SQL 和 SQL 语言的查询语句的理解。
熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。 二、实验内容
1. 简单查询操作。该实验包括投影、选择条件表达,数据排序,使用临时表等。 具体完成以下题目,将它们转换为 SQL 语句表示,在学生选课数据库中实现其数 据查询操作。 1) 查询数学系学生的学号和姓名 2) 查询选修了课程的学生学号 提示: select distinct sno from sc; 3) 查询选修课程号为‘C1’的学生号和成绩,并要求对查询结果按成绩的降序排 列,如果成绩相同按学号的升序排列。 4) 查询选修课程号为‘C1’且成绩在 80~90 之间的学生学号和成绩,并成绩乘以 0.8 输出。 5) 查询数学系或计算机系姓张的学生的信息。 6) 查询缺少了成绩的学生的学号和课程号
实验 4 数据库的集合查询和统计查询实验
一、实验目的 熟练掌握 SQL Server 查询分析器的使用方法,加深 SQL 语言查询语句的理解。熟练掌
握数据查询中的分组、统计、计算和集合的操作方法。 二、相关知识 (1) 分组和 SQL 函数查询
SQL 函数是综合信息的统计函数,包括计数、求最大值、最小值、平均值、和值等, 较详细的 SQL 函数及功能见第三章 3.6 节(SQL 查询用的函数)。SQL 函数可作为列标识符 出现在 SELECT 子句的目标列或 HAVING 子句的条件中。在 SQL 查询语句中,如果有 GROUP BY 分组子句,则语句中的函数为分组统计函数;如果没有 GROUP BY 分组子句, 则语句中的函数为全部结果集的统计函数。
《数据库原理及应用》实验指导书
实验 1 数据库模式设计及建立
一、实验目的
掌握数据库模式设计,依据实际要求设计表结构,建立表的关系;比较 SQL 命令方式
和可视化环境管理器方式设计的异同点。
二、实验内容
1. 用 sql 查询分析器设计学生基本信息表 student、课程表 course 和选课表 sc,各表中 字段及数据分别如表 1、表 2 及表 3 所示。
课程号 Cno C1 C2 C3 C1 C2 C3
成绩 Grade 92 85 88 80 90 80
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. 设定表关系
实验 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 查询其他系中比计算机系某一学生年龄小的学生(即年龄小于计算机系年龄最大
实验 5 数据库的更新实验
一、实验目的 熟练掌握使用 SQL 和通过 SQL Server 企业管理器向数据库输入数据、修改数据和删除
数据的操作。 二、相关知识
SQL Server 提供了很多方法更新表中数据。以插入记录为例,可以使用 INSERT 语句、 VALUES 子句将特定值集合插入一行;可以使用数据库接口 API(ADO、OLE DB、ODBC 和 DB-Library)中的函数进行数据插入等。本实验主要掌握 INSERT、UPDATE 和 DELETE 语句的基本用法。
将查询需求用 SQL 语言表示:在 SQL Server 查询分析器的输入区中输入 SQL 查询语句: 设置查询分析器的结果区为 Standard Execute(标准执行)或 Execute to Grid(网格执行)方 式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确 为止。
本实验的主要内容是: a) 分组查询实验。该实验包括分组条件表达、选择组条件表达的方法。 b) 使用函数查询的实验。该实验包括统计函数和分组统计函数的使用方法。 c) 集合查询实验。该实验并操作 UNION、交操作 INTERSECT 和差操作 MINUS 的
实现方法。 具体完成以下例题,将它们用 SQL 语句表示,在学生选课中实现其数据查询操作。 例 1 查询学生的总人数 例 2 查询选修了课程的学生人数 例 3 查询课程和选修了该课程的学生人数 例 4 查询选修超过 3 门课的学生学号 提示: select sno, count(cno) as 选修门数 from sc group by sno having count(cno)>=3; 例 5 查询计算机系的学生及年龄不大于 19 岁的学生 提示:UNION 例 6 查询计算机系的学生与年龄不大于 19 岁的学生的交集 例 7 查询计算机系的学生与年龄不大于 19 岁的学生的差集 例 8 查询选修课程‘C1’的学生集合与选修课程‘C2’的学生集合的交集 提示: select sno from sc
where cno='C1' and sno in (select sno from sc where cno='C2');
例 9 查询选修课程‘C1’的学生集合与选修课程‘C2’的学生集合的差集 提示: select sno from sc where cno='C1' and sno not in
者的学生) select * from student where sage<(select max(sage) from student where sdept='计算机系'); and sdept<>'计算机系' 例 4 查询其他系中比计算机系学生年龄都小的学生 select * from student
表 1 Student 表
学号
姓名
性别
年龄
所在系
Snoபைடு நூலகம்
Sname
Ssex
Sage
Sdept
200215121
李勇

20
计算机系
200215122
刘晨

200215123
王敏

19
计算机系
18
数学系
200515125
张立

19
信息系
表 2 Course 表 课程号 Cno C1 C2 C3 C4 C5 C6 C7
1. 插入操作,其语句的一般格式为 INSERT INTO table_or_view [(colum_list)]
VALUES (date_values); 此语句是使 date_values 作为一行数据记录插入已命名的表或视图 table_or_view 中。 Column_list 是由逗号分隔的 table_or_view 的列名列表,用来指定为其提供数据的列。如果 没有指定 column_list,表或视图中的所有列都将接收数据。 如果 column_list 没有为表或视图中的所有列命名,将在列表中没有命名的任何列中插 入一个 NULL 值(或者在默认情况下为这些列定义的默认值)。在列的列表中没有指定的所 有列都必须允许 NULL 值或者指定的默认值。否则 SQL Server 将返回一个错误。 2. 修改操作语句的一般格式为
表 4 基本的 SQL 函数
函数
功能
AVG(<数值表达式>) 求与字段相关的数值表达式的平均值
SUM(<数值表达式>) 求与字段相关的数值表达式的和值
MIN(<字段表达式>) 求字段表达式的最小值
MAX(<字段表达式>) 求字段表达式的最大值
COUNT(*|<字段>) 求记录行数(*),或求不是 NULL 的字段的行数
例 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
where sage<all (select sage from student where sdept='计算机系')
and sdept<>'计算机系'; 例 5 查询选修了 C2 课程的学生姓名 select sname from student where exists
(select * from sc where sno=student.sno and cno='C1');
(2) 集合查询 每一个 SELECT 语句都能获得一条或一组元组。若要把多个 SELECT 语句的结果合并
为一个结果,可用集合来完成。集合操作主要包括并操作 UNION、交操作 INTERSECT 和 差操作 MINUS。
标准 SQL 语言中提供了并操作 UNION,没有直接提供交操作 INTERSECT 和差操作 MINUS,但可以用其他方法来实现,具体实现方法依查询不同而不同。 三、实验内容
课程名 Cname 数据库 高等数学 信息系统 操作系统 数据结构 数据处理 PASCAL 语言
先行课 Cpno
C5
C1 C6 C7
C6
学分 Ccredit
4 2 4 3 4 2 4
表 3 SC 表 学号 Sno 200215121 200215121 200215121 200215122 200215122 200215122
2. 连接查询操作。该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、 内连接、左连接、右连接和自连接等。 1) 查询每个学生的情况以及他所选修的课程 2) 查询学生的学号、姓名、选修的课程及成绩 3) 查询选修课程号为‘C1’且成绩在 90 以上的学生学号、姓名和成绩 4) 查询每一门课程的间接先行课(即先行课的先行课) 提示: Select First.Cno, Second.Cpno From Course First, Course Second Where First.Cpno = Second.Cno;
(select sno from sc where cno='C2');
四、实验步骤 将查询需求用 SQL 语言表示:在 SQL Server 查询分析器的输入区中输入 SQL 查询语句:
设置查询分析器的结果区为 Standard Execute(标准执行)或 Execute to Grid(网格执行)方 式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确 为止。
三、实验方法 将查询需求用 SQL 语言表示;在 SQL Server 查询分析器的输入区中输入 SQL 查询语句;
设置查询分析器的结果区为 Standard Execute(标准执行)或 Execute to Grid(网格执行)方式; 发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。
相关文档
最新文档