首页 > 文库大全 > 实用范文 > 其他范文

年整理数据库嵌套查询实验报告[共5篇]

年整理数据库嵌套查询实验报告[共5篇]



第一篇:年整理数据库嵌套查询实验报告

实验三:数据库的嵌套查询实验

实验目的 :

加深对嵌套查询语句的理解。

实验内容:

使用 IN、比较符、ANY 或 ALL 和 EXISTS 操作符进行嵌套查询操作。

实验步骤:

一.使用带 N IN 谓词的子查询

1.查询与’刘晨’在同一个系学习的学生的信息: 比较 select * from student where sdept in

(select sdept from student where sname=“刘晨”)与: select * from student where sdept =

(select sdept from student where sname=“刘晨”)的异同

比较: select * from student where sdept =

(select sdept from student where sname=“刘晨”)and sname <> ‘刘晨’ 与: select S1.* from student S1, student S2 where S1.sdept=S2.sdept and S2.sname=“刘晨”的异同

2.查询选修了课程名为’信息系统’ 的学生的学号和姓名: 比较 select sno, sname from student where sno in(select sno from sc where cno in

(select cno from course where cname=“信息系统”))与: select sno, sname from student where sno in

(select sno from sc, course where sc.cno=course.cno and cname=“信息系统”)

3.查询选修了课程’1’和课程’2’的学生的学号: select sno from student where sno in(select sno from sc where cno=“1”)and sno in(select sno from sc where cno=“2”)

比较: 查询选修了课程’1’或课程’2’的学生的 sno: select sno from sc where cno=“1” or cno=“2”

比较连接查询:

select A.sno from sc A, sc B where A.sno=B.sno and A.cno=“1” and B.cno=“2”

二.使用带比较运算的子查询 4.查询比’刘晨’年龄小的所有学生的信息: select * from student where sage<

(select sage from student where sname=“刘晨”)

三.使用带 Any, All 谓词的子查询 5.查询其他系中比信息系(IS)某一学生年龄小的学生姓名和年龄;select sname, sage from student where sage

(select sage from student where sdept=“IS”)and sdept<>“IS”

6.查询其他系中比信息系(IS)学生年龄都小的学生姓名和年龄: select sname, sage from student where sage “IS”

7.查询与计算机系(CS)系所有学生的年龄均不同的学生学号, 姓名和年龄: select sno,sname,sage from student where sage<>all(select sage from student where sdept=“CS”)

四.使用带 s Exists 谓词的子查询和相关子查询

8.查询与其他所有学生年龄均不同的学生学号, 姓名和年龄: select sno,sname,sage from student A where not exists(select * from student B where A.sage=B.sage and A.sno<>B.sno)

9.查询所有选修了 1 号课程的学生姓名: select sname from student where exists(select * from sc where sno=student.sno and cno=“1”)

10.查询没有选修了 1 号课程的学生姓名: select sname from student where not exists(select * from sc where sno=student.sno and cno=“1”)

11.查询选修了全部课程的学生姓名: SQL Server 中:

select sname from student where not exists(select * from course where not exists(select * from sc where sno=student.sno and cno=course.cno))

11.查询至少选修了学生 95002 选修的全部课程的学生的学号: SQL Server 中: select distinct sno from sc A where not exists

(select * from sc B where sno=“95002”and not exists(select * from sc C where sno=A.sno and cno=B.cno))

12.求没有人选修的课程号 cno 和 cnamecname: select cno,cname from course C where not exists(select * from sc where sc.cno=C.cno)

13*.查询满足条件的(sno,cno)对, 其中该学号的学生没有选修该课程号 cno的课程 SQL Server 中: select sno,cno from student,course where not exists(select * from sc where cno=course.cno and sno=student.sno)

14*.查询每个学生的课程成绩最高的成绩信息(sno,cno,grade): select * from sc A where grade=(select max(grade)from sc where sno=A.sno)

思考: 如何查询所有学生都选修了的课程的课程号 cno? select cno

from sc

group by cno

having count(*)=(select count(*)from student)

第二篇:实验5 数据库的嵌套查询实验

实验五

数据库的嵌套查询实验

1、实验目的

本实验的目的是使学生进一步掌握SQL Server查询分析器的使用方法,加深SQL语言的嵌套查询语句的理解

2、实验时数

2学时

3、实验内容

本实验的主要内容是:在SQL Server查询分析器中使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。

具体完成以下例题。将它们用SQL语句表示,在学生数据库中实现其数据嵌套查询操作。

1、查询选修了高等数学的学生学号和姓名 select Sno,Sname from Student where Sno in(select Sno from SC,Course where SC.Cno=Course.Cno and Cname='数学')

2、查询1号课程的成绩高于刘晨的1号课程成绩的学生学号和成绩 select SC.Sno,Grade from SC,Student where Cno='1' and SC.Sno=Student.Sno and Grade>all(select Grade from SC,Student where SC.Sno=Student.Sno and Sname='刘晨')

3、查询其他系中比cs系某一学生年龄小的学生(即年龄小于计算机系年龄最大者的学生)select * from Student where Sdept!='cs' and Sage

4、查询其他系中比cs系所有学生年龄都小的学生 select * from Student where Sdept!='cs' and Sage

5、查询选修了2号课程的学生姓名 select Sname from Student where Sno in(select Student.Sno from SC,Student where SC.Sno=Student.Sno and Cno='2')

6、查询没有选修2号课程的学生姓名 elect Sname from Student where exists(select SC.Sno from SC,Student where Cno!='2' group by SC.Sno)

7、查询选修了全部课程的学生姓名 Select * from SC where Cno=all(select Cno from Course)

8、求至少选修了学号为“00215122”的学生所选修全部课程的学生学号和姓名 select Sno,Sname from Student where Sno in(select Student.Sno from Student,SC where Student.Sno=SC.Sno and Cno=any(select Cno from SC where Sno='00215122'))

4、实验方法

将查询需求用SQL语言表示:在SQL Server查询分析器的输入区中输入SQL查询语句:设置查询分析器的结果区为Standard Execute(标准执行)或Execute to Grid(网格执行)方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。

5、实验心得体会

本次实验还是进行查询操作,只是在第四次试验的基础上加入了嵌套,嵌套查询是在我们以后进行软件开发涉及数据库常用的查询操作,通过实验有助于我们对嵌套查询的理解,对我们熟练的使用SQL查询语句进行查询操作有很大帮助。

第三篇:Access数据库应用技术实验报告查询(精选)

数据库应用技术实验报告

查询

名: 学

号: 班

级: 指导教师:

****年**月**日1 实验目的

掌握选择查询、参数查询、交叉表查询、操作查询、SQL查询的创建。实验总体要求

根据题目选择合适的方法创建查询,可以使用查询向导、查询设计视图和SQL命令。实验步骤可以粘贴查询设计视图截图,也可粘贴SQL命令。实验内容

1、创建查询CX1,查找有超期图书的读者的借书证号、姓名、图书编号、图书名称,借阅日期,超期天数(以当前时间为准,借书时间超过90天为超期)。

2、创建查询CX2,统计每个出版社出版的图书的数量、图书的平均定价。

3、创建查询CX3,查找定价低于图书平均定价的图书的图书编号、图书名称、作者、出版社、定价。

4、创建更新查询CX4,将“图书书目表”的“是否借出”字段根据“借阅登记表”中读者的借阅情况填入正确的值。

5、创建生成表查询CX5,查找从未有读者借阅的图书的图书编号、图书名称、作者、出版社,生成的表名为“未借出过图书”。

6、为“借书证表”增加一字段,字段名为性别、文本型、字段大小为1。创建查询CX6,根据身份证号的第17位输入性别字段的值。(第17位偶数是女,奇数为男)

7、创建交叉表查询CX7,根据输入的出版社参数值,显示该出版社每种类别的图书的数量。(出版社为行标题,类别号为列标题)

8、创建查询CX8,查找借出次数最多的图书的编号、图书名称、作者、出版社。

9、创建查询CX9,将借出次数最多的图书的编号、图书名称、作者、出版社追加到“未借出过图书”表中。实验步骤

1、CX1的SQL命令为:

SELECT 借书证表.借书证号, 借书证表.姓名, 图书书目表.图书编号, 图书书目表.图书名称, 借阅登记表.借阅日期, Date()-[借阅日期] AS 超期天数

FROM 图书书目表 INNER JOIN(借书证表 INNER JOIN 借阅登记表 ON 借书证表.借书证号 = 借阅登记表.借书证号)ON 图书书目表.图书编号 = 借阅登记表.图书编号

WHERE(((Date()-[借阅日期])>90)AND((借阅登记表.归还日期)Is Null));

CX1的查询结果为:

2、CX2的设计视图为:

CX2的查询结果为: SQL:SELECT 图书书目表.出版社,count(图书书目表.出版社)as 数量,avg(图书书目表.定价)as平均定………………………….roup by 图书书目表.出版社;

3、CX3的SQL命令为:

CX3的查询结果为:

4、CX4的SQL命令为:

UPDATE 图书书目表 SET 是否借出 = 1 WHERE………………………….图书书目表.图书编号=借阅登记表.图书编号 and 借阅登记表.归还日期 is null);CX4的查询结果为:

5、CX5的SQL命令为:

SELECT 图书编号, 图书名称, 作者, 出版社 INTO 未借出过图书

………………………….from 借阅登记表 where 图书书目表.图书编号=借阅登记表.图书编号);CX5的查询结果为:

6、CX6的SQL命令为:

UPDATE 借书证表 SET 性别 = Mid(身份证号,17,1);CX6的查询结果为:

7、CX7的SQL命令为:

TRANSFORM Count(图书书目表.图书编号)AS 图书编号之计数 SELECT ………………………….目表.图书编号)AS [总计 图书编号] FROM 图书书目表

GROUP BY 图书书目表.出版社

PIVOT 图书书目表.类别号;CX7的查询结果为:

8、CX8的SQL命令为:

SELECT 图书编号, 图书名称, 作者, 出版社 FROM 图书书目表 WHERE 图书编号=(SELECT TOP 1 图书编号

………………………….ORDER BY Count(图书编号)DESC);CX8的查询结果为:

9、CX9的SQL命令为:

INSERT INTO 未借出过图书(图书编号, 图书名称, 作者, 出版社)SELECT 图书编号, 图书名称, 作者, 出版社 ………………………….SELECT TOP 1 图书编号 FROM 借阅登记表

GROUP BY 借阅登记表.图书编号 ORDER BY Count(图书编号)DESC 5);CX9的查询结果为:

5评语和得分

第四篇:数据库实验报告

实验报告

1.实验内容与实验性质

实验内容:数据库实例设计

实验性质:专业基础综合设计性实验

2.实验目的与要求

实验目的:深化“数据库设计”一章的课堂教学,借助数据库实例设计过程,掌握数据库设计中需求分析的实现方法、数据库概念结构设计、数据库逻辑结构设计及优化过程、数据库物理设计与数据库运行和维护过程。

实验要求:按数据库原理与技术课程实验指导(数据库设计部分).doc完成实验任务,演示成果和递交设计报告与实验报告。

1.数据库概念结构设计,画ER图

2.数据库逻辑结构设计,关系模式设计与优化。

3.SQL Server关系数据库的建立,包括数据安全性与完整性设计及模拟数据的输入。

4.自行设计和定义应用视图并输出结果。

5.数据库试运行与数据查询界面设计。

3.实验设备

装有Microsoft SQL Server、Office2000的计算机1人/台

4.实验时数6学时

5.注意事项

按课堂要求进行个人上机操作练习为主,同组可互相交流。

6.实验过程与结果(包括E-R模型与描述、逻辑结构设计与物理设计描述与有关的界面、用户视图定义及其结果、查询界面等内容)

7.实验总结与体会

附件:各次实验规定提交的结果文件。

请同学们将需要提交的实验报告、实验结果文件按“数据库原理与技术+班级+姓名”的形

式打包成一个压缩文件于第10周星期五前交到z-yhongstu@163.com信箱。

第五篇:数据库实验报告

南华大学

计算机科学与技术学院

实验报告

(2013 ~2014 学

第二学期)

课程名称 实验名称

数据库原理与技术

姓名 张涛 学号 20124350230

专业 软件工程

班级 02班

地点

教师 刘征海 实验1 认识DBMS 一.实验题目

认识DBMS 二.实验要求

1.利用管理工具创建数据库、表和表间关系。

实验目的和注意事项 基本操作,进一步理解数 据库、表、表间关系的概念。

注意事项:创建数据库和数据表时应认真,如果出现错误,应相应地修改结构或删除。三.实验代码(内容)

(1)利用SQL Server Management Studio 创建数据库,名称为【学生选课

YYXXXX】。其中YY为专业代号,计算机为JS,软件工程为RJ,网络为WL,数媒为

SM;XXXX为各位同学的学号中的最后四位 实验目的:熟悉SQL Server Management Studio

(2)在【学生选课YYXXXX】中建立数据表,表的定义如下所示。

学生YYXXXX(学号,姓名,性别,出生日期,院系名称,备注);

课程YYXXXX(课程号,课程名,先行课,学分); 选修YYXXXX(学号,课程号,分数)。

要求定义每张表的主码,为属性选择合适的数据类型,决定是否允许为空,为【性别】和【学分】属性定义默认值。

(3)定义表之间的关系。

(4)分别为表录入几行数据记录,同时练习数据的修改和删除操作

2.利用SQL 语句创建数据库、表和表间关系 实验目的和注意事项

实验目的:熟悉创建数据库和数据表的SQL 语句。

注意事项:输入SQL 语句时应注意,语句中均使用西文操作符号。

实验内容

在SQL Server Management Studio 中新建查询,实现以下操作。(1)用SQL 语句创建数据库,名称为“StudentCourseYYXXXX”。其中YYXXXX 为各位同学的学号中的最后四位。

(2)用SQL 语句创建StudentCourseYYXXXX 中的3 张表,同时指定主码、外 码、默认值等。

(3)直接在表数据窗口中录入表数据记录。

实验 2 交互式 SQL(1)

一、数据库单表查询 实验目的和注意事项

实验目的:掌握单表查询SELECT、FROM、WHERE 的用法,特别要掌握比较运 算符、逻辑运算符的使用。注意事项:子句WHERE<条件>表示元组筛选条件;子句HAVING<条件>表示元

组选择条件;子句HAVING<条件>必须和GROUP BY 子句配合使用;注意输入SQL语句时均应使用西文操作符号。实验内容

(1)创建查询窗口,设置查询环境。(2)单表查询 实验步骤

(1)选择要查询的数据库,右击【新建查询】,或者选择系统菜单中的【文

件】|【新建】|【使用当前连接查询】命令,或者单击标准工具栏中的【新建查

询】按钮,即可新建一个查询窗口。如果查询数据库不是StudentCourseYYXXXX,则可在可用数据库下拉列表中进行选择,或用USE 语句调用。

(2)在查询窗口中输入SELECT 查询语句,对StudentCourseYYXXXX 数据库 进行查询操作。

① 查询计算机系全体学生的信息

② 查询姓“李”的学生的学号和姓名。

③ 查询课程表中先行课为空的课程名。

④ 查询考试成绩有不及格的学生的学号。

⑤ 求选修了C1 课程或C2 课程的学生的学号及成绩。

⑥ 查询全体计算机系学生的姓名及其年龄。

⑦ 查询计算机系在1986-1987 年之间出生的学生的姓名。

⑧ 查询姓“李”的前两个学生的学号和姓名。

⑨ 查询选修了两门以上课程的学生学号与课程数。

⑩ 查询选修课程数大于等于2 的学生的学号、平均成绩和选课门数,并按平均成绩降序排列。

二、数据库多表连接查询 实验目的和注意事项

实验目的:理解多表查询的概念;掌握多表查询的SELECT、FROM、WHERE、JOIN子句的用法,特别要求比较内连接、外连接的结果。

注意事项:内连接、左外连接和右外连接的含义及表达方法;注意输入SQL 语 句时均应使用西文操作符号。实验内容

(1)创建查询窗口,设置查询环境。(2)多表复杂查询。实验步骤

新建查询窗口,选择StudentCourseYYXXXX 为当前数据库,输入如下SELECT 查询语句并执行,对数据库进行多表连接查询操作。(1)查询选修了【数据库原理】的计算机系的学生学号和姓名。

(2)查询每一门课的间接先行课(即先行课的先行课)。

(3)查询学生的学号、姓名、选修课程的名称和成绩。

(4)查询选修了课程的学生姓名。

(5)查询所有学生的信息和所选修的课程。

(6)查询已被选修的课程的情况和所有课程的名字。

(7)列出学生所有可能的选修情况。

(8)查找计算机系的学生选修课程数大于2 的学生的姓名、平均成绩和选课 门数,并按平均成绩降序排列。

实验 3 交互式 SQL(2)数据库嵌套查询和组合查询 实验目的和注意事项

实验目的:掌握查询中嵌套查询和组合查询的操作方法,进一步加深对 SELECT 语句的理解。

注意事项:子句的使用;注意语句的层次嵌套关系和括号的配对使用问题;

注意输入SQL 语句时均应使用西文操作符号。实验内容(1)创建查询窗口,设置查询环境。(2)分组查询。(3)统计查询。(4)嵌套查询。实验步骤

新建查询窗口,选择StudentCourseYYXXXX 为当前数据库,输入如下SELECT 查询语句并执行,对数据库进行嵌套查询和组合查询操作。

(1)统计选修了【数据库原理】课程的学生人数。

(2)查询没有选修【数据库原理】课程的学生信息。

(3)查询其他系中比计算机系学生年龄都小的学生。

(4)查询被0602001 学生或0602002 学生所选修的课程的课程号(用UNION 组合查询与IN 条件查询两种方法实现)。

(5)查询0602001 学生和0602002 学生同时选修的课程的课程号(用

INTERSECT 组合查询与EXISTS 嵌套子查询两种方法实现)。

(6)查询被0602001 学生选修,但没有被0602002 学生所选修的课程的课程

号(用EXCEPT 组合查询与NOT EXISTS 嵌套子查询两种方法实现)。

实验 4 交互式 SQL(3)数据的更新 实验目的和注意事项

实验目的:熟悉插入、修改和删除SQL 语句的用法。注意事项:对于INSERT 语句,要求理解默认值约束、空值约束在插入时所 起的作用。实验内容

(1)使用INSERT 语句在数据库的表中插入几行记录。(2)使用UPDATA 语句修改某个数据。(3)使用DELETE 语句删除某行记录。实验步骤

(1)新建查询窗口,选择StudentCourseYYXXXX 为当前数据库。

(2)在已建立StudentCourseYYXXXX 数据库和StudentsYYXXXX、CoursesYYXXXX、SCYYXXXX 3 个表的基础上,向StudentCourseYYXXXX数据库中 的表更新数据。

① 向表StudentsYYXXXX 中插入(0601001,赵林, 男,1985-09-08,计算机)的记录。

② 向SCYYXXXX 表中添加一个学生的选课记录,学号为0601001,所选的课

程号为C2。SC表中有Sno、Cno、Grade 这3 个列。这里只知道学号和课程号,不知道成绩值。

③ 向表StudentsYYXXXX 中插入(0601002,张修雨,default)记录,该记录 的数据中default 表示默认值‘男’,其他数据表示空值。

④ 用CREATE 语句建立表StudentBAK1YYXXXX,包含(与Students 的Sno、Sname、Sdept 相同)3 个字段,然后用INSERT SELECT 语句实现向

StudentBAK1YYXXXX 添加StudentsYYXXXX 表中的计算机系学生的学号、姓名、所在系的信息。

⑤ 用 SELECT...INTO 语句实现把StudentsYYXXXX 表中1986 年后(包含

1986 年)出生的学生的学号、姓名存储到一个新表StudentBAK2YYXXXX。

⑥ 将姓名为【赵林】的同学的所在系改为【机电系】,爱好改为【足球】。

⑦ 将选修了课程名为【数据库原理】的学生成绩加5 分。⑧ 将StudentCourseYYXXXX

数据库的StudentBAK1YYXXXX 表中所有姓赵的 同学删除。

⑨ 删除计算机系选修成绩不及格的学生选修记录。⑩ 将除。StudentCourseYYXXXX

数据库的StudentBAK2YYXXXX 表中的所有行删

四.实验总结

实验一要注意创建数据库和数据表时应认真,如果出现错误,应相应地修改结构或删除。输入SQL 语句时应注意,语句中均使用西文操作符号;实验二应注意注意group和having以及where的搭配使用的情况;实验三注意注意输入SQL 语句时均应使用西文操作符号,子句的使用,注意语句的层次嵌套关系和括号的配对使用问题;实验四注意输入SQL 语句时均应使用西文操作符号,对于INSERT 语句,要求理解默认值约束、空值约束在插入时所起的作用。注意插入,修改,新建表,删除语句的写法,并且掌握把原表中的数据转存到新表中的语句写法。

相关内容

热门阅读

最新更新

随机推荐