第一篇:年整理数据库嵌套查询实验报告
实验三:数据库的嵌套查询实验
实验目的 :
加深对嵌套查询语句的理解。
实验内容:
使用 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 语句,要求理解默认值约束、空值约束在插入时所起的作用。注意插入,修改,新建表,删除语句的写法,并且掌握把原表中的数据转存到新表中的语句写法。