南通大学 数据库 实验四 嵌套查询
实验三:数据库的嵌套查询
**大学实验报告
学院:专业:班级:
S.Sno=SC.sno and o=o ))
--(8)求至少选修了学号为“200215124“的学生所选修的全部课程的学生学号和姓名。
select Sno,Sname
from Student as S
where not EXISTS(select * from SC as SC1 where SC1.Sno='200215124' and not EXISTS (select * from SC as SC2 where SC2.Sno=S.sno and o=o ))
建立表:
实
验
数
据
查询一:查询二:查询三:查询四:
查询五:查询六:查询七:查询八:
实验总结1.嵌套查询:一个select-from-where语句称为一个查询块。
将一个查询块嵌套在另
一个查询块的where字句或having短语的条件中的查询。
2.嵌套查询可以在数据库中,建立图标后可以依据查询的条件很快的定位到自己所需
的数据,在很短的时间内把其查找出来。
注:各学院可根据教学需要对以上栏木进行增减。
表格内容可根据内容扩充。
实验四 SQL连接嵌套的查询命令
课程名称:数据库原理实验名称:连接、嵌套查询
实验开设学期:日期:
班级:姓名:同组人:
指导教师评定:签名:
一、实验目的
1)熟悉和掌握对数据表中数据的查询操作和SQL命令的使用,学会灵活熟练的使用SQL 语句的各种形式;
2)加深理解关系运算的各种操作(尤其关系的连接和嵌套运算)。
二、实验仪器
486及以上微机,Windows95/97/98操作系统,安装了SQL SERVER。
三、实验内容
分别用企业管理器和查询分析器,在表S,C,SC上完成以下查询:
1)查询选修了“数据库”的学生学号和姓名。
2)求每门课程的平均成绩,并显示课程名及平均成绩。
3)查询没有选修任何课程的学生姓名、所在院系。
4)求每个学生的选课门数及姓名。
5)查询选修了1号课程且分数在70分以上的学生学号,姓名、课程名、课程成绩。
6)查询每个学生及其选修课程的情况。
7)查询计算机系学生和女学生信息的差集。
8)查询“数据库”课程的选课人数和总成绩。
9)查询其他系中比信息系某一学生年龄小的学生姓名和年龄。
10)查询没有选修"汇编语言"的学生姓名。
四、实验结论
1)熟悉了SQL SERVER 工作环境;
2)灵活使用SQL语言命令对表中数据进行连接嵌套查询;。
数据库查询嵌套查询
数据查询
1 单表查询 2 连接查询 3 嵌套查询 4 集合查询 5 Select语句的一般形式
26
4 集合查询
SELECT语句的查询结果是元组的集合,所 以多个SELECT语句的结果可进行集合操作
集合操作种类
并 操 作 (UNION) ; 交 操 作 (INTERSECT) ; 差 操 作(EXCEPT)
解题思路:
● 用逻辑蕴函表达:查询学号为x的学生,对所有的课程y, 只要200215122学生选修了课程y,则x也选修了y。
● 形式化表示: 用P表示谓词 “学生95002选修了课程y” 用q表示谓词 “学生x选修了课程y” 则上述查询为: (y) p q
23
带有EXISTS谓词的子查询(续)
添加数据( INSERT INTO) 修改数据(UPDATE ) 删除数据(DELETE )
3.7.1 添加数据
用Enterprise Manager添加数据
不能应付数据的大量添加
首先处理子查询,找出IS系中所有学生的年龄,构成一 个集合(20,19),然后处理父查询,找所有不是IS系且 年龄小于20 或 19的学生
9
带有ANY或ALL谓词的子查询(续)
方法二:用集函数 SELECT Sname,Sage FROM Student WHERE Sage <
(SELECT MIN(Sage) FROM Student WHERE Sdept= ' IS ') AND Sdept <>' IS ’;
[HAVING <条件表达式>]] [ORDER BY <列名2> [ASC|DESC]
[,<列名2’> [ASC|DESC] ] … ];
嵌套查询实验报告
#### 一、实验目的通过本次实验,加深对嵌套查询语句的理解,掌握嵌套查询的语法和应用,提高SQL查询能力。
#### 二、实验环境1. 操作系统:Windows 102. 数据库管理系统:MySQL 8.03. 实验数据表:Toys、Category、Shopper等#### 三、实验内容本次实验主要涉及以下内容:1. 带谓词IN的子查询2. 带存在量词的子查询3. 使用比较运算符的子查询4. 使用限量谓词的子查询5. 综合运用所学知识实现查询#### 四、实验步骤及结果1. 带谓词IN的子查询实验内容:根据玩具品牌统计每种品牌的平均单价,输出其中平均单价最高的品牌ID以及平均单价。
SQL代码:```sqlSELECT cBrandid, AVG(mToyrate) AS avg_priceFROM ToysGROUP BY cBrandidHAVING AVG(mToyrate) = (SELECT MAX(avg_price)FROM (SELECT cBrandid, AVG(mToyrate) AS avg_priceFROM ToysGROUP BY cBrandid) AS subquery);```查询结果:输出平均单价最高的品牌ID以及平均单价。
2. 带存在量词的子查询实验内容:检索每一类(类别用cCategoryId表示)玩具里价格最高的玩具的名称(vToyname)。
SQL代码:```sqlSELECT vToynameFROM Toys AS t1WHERE mToyrate = (SELECT MAX(mToyrate)FROM Toys AS t2WHERE ategoryId = ategoryId);```查询结果:输出每一类玩具中价格最高的玩具名称。
3. 使用比较运算符的子查询实验内容:检索单价(mToyRate)最高的玩具的类别(类别为Category表)名称。
实验4 多表查询-连接查询和嵌套查询
实验4 多表查询-连接查询和嵌套查询一、目的和要求(1)掌握简单的多表连接查询,了解多表查询的目的。
(2)掌握嵌套查询的用法。
(3)掌握带有IN谓词、ANY、SOME、ALL谓词、EXISTS谓词实现嵌套查询的区别。
(4)理解嵌套查询时,=和IN的区别。
(5)掌握外连接的使用方法和目的。
(6)理解嵌套查询和连接查询的区别和效率。
(7)掌握利用AS给表重新命名的方法和目的。
二、背景知识同实验3。
三、实验内容要求在查询分析器窗口中选择XSGL数据库为当前数据库,且使用SQL语句练习多表查询、嵌套查询。
四、实验步骤1.查询学号为‘20022037’的同学的每门课的成绩,输出格式为:学号,课程名,课程成绩。
SELECT SNO AS 学号, CNAME AS 课程名 ,GRADE AS 课程成绩FROM sc,courseWHERE O=O AND SNO='20022037'2.查询每个学生的每门课程的成绩,要求输出学号,课程名,成绩。
SELECT SNO,CNAME,GRADEFROM sc, courseWHERE O=O3.查询每个学生的每门课程的成绩,要求输出学号,姓名,课程名,成绩。
SELECT student.SNO,SNAME,CNAME,GRADEFROM sc, course,studentWHERE O=O AND student.SNO=sc.SNO4.查询选修了'线性代数'课程的学生学号、姓名。
SELECT student.SNO,SNAMEFROM sc,course,studentWHERE sc.SNO=student.SNO AND O=O AND AME='线性代数'5.查询'线性代数'的所有授课班级的平均成绩,并列出授课班号、教师名、平均成绩,且按平均成绩排序。
SELECT O,course.TNAME,AVG(GRADE) AS 平均成绩FROM sc,courseWHERE O=O AND CNAME='线性代数'GROUP BY O,course.TNAMEORDER BY AVG(GRADE)6.使用多表连接方法,查询和学号为‘20000156’的同学同年同月同日出生的所有学生的学号、姓名、生日。
(2018版)数据库原理实验4指导书
一实验题目:统计查询和组合查询二实验目的:加深对统计查询的理解,熟练使用聚簇函数三实验内容及要求:(从下面10个题目中选一个)题目一:学生(学号,年龄,性别,系名)课程(课号,课名,学分,学时)选课(学号,课号,成绩)根据上面基本表的信息完成下列查询。
1 查询选修了数据库原理的学生的人数和平均成绩。
2 查询选修3门课以上的学生姓名。
3列出人数超过1000人的系名。
4 查询所有课程都及格的学生姓名。
题目二:图书(书号,书名,价格,出版社)读者(卡号,姓名,年龄,所属单位)借阅(书号,卡号,借阅日期)根据上面基本表的信息完成下列查询。
1 查询书号为tp0103被借阅次数。
2 查询工作单位在计算机系的读者姓名和借阅次数。
3 查阅年龄50以上借阅次数2次以下的读者信息。
4 查询从来没被借阅的图书信息。
题目三:商品(编号,品名,进价,库存,售价,厂商编号)顾客(卡号,姓名,电话,积分)厂商(编号,厂址,名称、电话)销售(顾客卡号,商品编号,数量,日期)根据上面基本表的信息完成下列查询。
1 查询积分最高的顾客姓名2 查询销售数量1000以上的商品的厂商电话。
3 查询生产商品5种以上的厂商信息。
4 查询没有顾客买的商品信息。
题目四:图书(书号,书名,作者编号,价格,出版社编号)作者(编号,姓名,电话)出版社(编号,出版社名称,地址)根据上面基本表的信息完成下列查询。
1 统计各出版社出版图书的数量。
2 列出多人合著的图书书号和价格。
3 列出高教出版社出版的最贵图书信息。
4 列出所有图书都是30元以上的出版社名称。
题目五:零件(编号,名称,颜色,生产车间号)车间(编号,名称,人数,主任)产品(编号,名称,车间编号)使用(产品编号,使用零件编号,个数)根据上面基本表的信息完成下列查询。
1 列出各种颜色零件的个数。
2 查询生产产品3种以上的车间名称。
3 查询使用2种红色零件的产品信息。
4 查询没有被任何产品使用的零件信息。
数据库2010实验参考答案
数据库系统概论实验一、实验内容:数据操纵1.表的复杂查询:连接查询、嵌套查询、使用各种逻辑运算符的查询、查询结果的并、交、差操作等。
2.集函数的使用及分组子句、排序子句的使用。
3.视图的创建及使用。
4.表的复杂的更新操作:多记录插入、带有自查询的删除和修改。
二、实验前准备工作根据实验内容和所创建的数据库准备一组实验数据。
三、具体实验内容本实验分为必作题和自拟题。
1.使用学生——课程——选课数据库的同学完成以下必做题1)查询信息系和计算机系的学生,并按学生所在系和学号排序。
select Sno,Snamefrom Studentwhere Sdept in('CS','IS')order by Sdept,Sno;或者:select*from student where Sdept='CS'or Sdept='IS'order by Sdept,Sno2)查询与李勇在同一个系且年龄最小的学生姓名及年龄。
select Sname,Sagefrom Studentwhere Sdept =(select Sdeptfrom Studentwhere Sname='李勇')and Sage=(select min(Sage)from Studentwhere Sdept =(select Sdeptfrom Studentwhere Sname='李勇'))或者:select sname,sage from student where Sdept in(select Sdept from student where Sname='李勇')and Sage<=all(Select Sage from student where Sdept=(select Sdept from student where Sname='李勇'))3)查询课程名中包含“设计”的课程名。
实验四 3110305129 潘聪
1.把全部蓝色零件的颜色改为红色;
updatepsetp.color='蓝'wherep.color='红';
select*fromp;
2.将S5供应给J1的零件P3改为由S1供应,请作必要的修改;
updatespjsetsno='s1'wheresno='s5'andpno='p3'andjno='j1';
2找出供应商S2的供应情况;
select*froms_swheresno='s2';
2.创建一个学生成绩统计视图,包括学号,姓名,选课门数,平均分,最高分。(没有选课的学生不参加统计)。
createviews_g(sno,sname,sum,avg,max)
as
selectstudent.sno,sname,count(cno),avg(grade),max(grade)from
select*fromspj;
3.从供应商关系中删除S3的记录,并从供应情况关系中删除相应的记录。
deletefromspjwheresno='s3';
deletefromswheresno='s3'
select*froms;
select*fromspj;
4.删除所有信息系(CS)同学的信息。
deletefromstudentwheresdept='cs';
createviews_s(sno,pno,qty)asselectsno,pno,qtyfromspj,jwherej.jno=spj.jnoandj.jname='一汽'
数据库连接查询嵌套查询实验报告
注:交作业使用,请修改一、实验目的:熟悉连接查询,嵌套查询等的应用。
二、实验内容:完成老师word文档中的题目。
三、实验步骤在上机操作之前,首先要熟悉课本内容和例子。
17、查询所有学生的Sname、Cname和Grade列。
(连接查询)select student.sname,ame,sc.grade from student,course,scwhere student.sno=sc.sno and o=o此题因为需要查询的三个信息在不同的表里,所以要找到三个表所具有的共同列,经观察发现student.sno=sc.sno和o=o18、查询所有选修“计算机导论”课程的同学的成绩。
(连接查询,嵌套查询)select grade from sc where cno=(select cno from course where cname='计算机导论') select grade from sc ,course where o=o and ame='计算机导论'首先是嵌套查询,在子查询中首先在course表中找到计算机导论的课程号,然后在sc表中找到该学号的成绩,第二种方法是连接查询,同样,连接查询是要找到表中相同的列,但是此题中还要多一个条件,因为我们只想知道计算机导论的成绩。
19、查询和“李军”同性别的同学Sname. (自身连接查询,嵌套查询)select x.sname from student x,student y where x.ssex=y.ssex and y.sname='李军' select sname from student where ssex=(select ssex from student where sname='李军') 其实自身连接和普通的连接没有什么区别,只是在自身连接后把一个表取两个不同的名字,然后后面的就跟普通的连接查询一样了,不过需要注意的是因为两个不同的名字表其实是一个表,所以列的前面要加上表的名字,而且不要弄乱了。
数据库实验4 及答案
实验报告课程名称数据库系统原理专业班级姓名学号电气与信息学院和谐勤奋求是创新实验教学考核和成绩评定办法1.课内实验考核成绩,严格按照该课程教学大纲中明确规定的比重执行。
实验成绩不合格者,不能参加课程考试,待补做合格后方能参加考试。
2.单独设立的实验课考核按百分制评分,考核内容应包括基本理论、实验原理和实验。
3.实验考核内容包括:1)实验预习;2)实验过程(包括实验操作、实验记录和实验态度、表现);3)实验报告;权重分别为0.2 、0.4 、0.4;原则上根据上述三个方面进行综合评定。
学生未取得1)和2)项成绩时,第3)项成绩无效。
4.实验指导教师应严格按照考核内容分项给出评定成绩,并及时批改实验报告,给出综合成绩,反馈实验中出现的问题。
实验成绩在教师手册中有记载。
实验报告主要内容一.实验目的二.实验仪器及设备三.实验原理四.实验步骤五.实验记录及原始记录六.数据处理及结论七.实验体会(可选项)注:1. 为了节省纸张,保护环境,便于保管实验报告,统一采用A4纸,实验报告建议双面打印(正文采用宋体五号字)或手写,右侧装订。
2. 实验类别指验证、演示、综合、设计、创新(研究)、操作六种类型实验。
3. 验证性实验:是指为了使学生巩固课程基本理论知识而开设的强调演示和证明,注重实验结果(事实、概念或理论)的实验。
4. 综合性实验:是指实验内容涉及本课程的综合知识或本课程相关的课程知识的实验。
5. 设计性实验:是指给定实验目的、要求和实验条件,由学生自行设计实验方案并加以实现的实验。
实验题目 数据定义、操纵实验室 电信机房 实验时间2011 年 4 月 日实验类别 验证同组人数 1成 绩指导教师签字:一. 实验目的:掌握数据库、表、索引的创建、修改、删除,以及单表查询。
二. 实验内容:1.设有一数据库GradeManager(成绩管理),包括四个表:学生表(Student ),课程表(Course )、班级表(Class )以及成绩表(Grade )。
实验三、嵌套查询与数据更新实验完成
实验三、嵌套查询与数据更新实验一、实验目的与要求1、掌握多表查询:嵌套查询的使用。
2、掌握INSERT、UPDATE和DELETE语句的一般格式与使用方法。
二、实验平台1、操作系统:Windows XP或Windows 20032、数据库管理系统:SQL Server 2005三、实验内容实验前,先附加“教务管理系统”,在“教务管理系统”的数据库中进行一下查询:嵌套查询1、在“教务管理系统”数据库中,根据相关表的内容,查询平均成绩大于70的课程信息、select*from dbo.课程信息where课程编号in(select课程编号from选课表groupby课程编号having avg(成绩)>70)2、从“教务管理系统”数据库中,查询人数超过45人所在班级中的学生的学号、姓名和班级名称。
select学号,姓名,班级名称,人数from学生信息,班级信息where班级名称in(select班级名称from dbo.班级信息where人数>=45)3、在“教务管理系统”数据库中,查询学生姓名为“朱文娟”所在班级的学生信息,要求返回学生的学号、姓名、性别、班级编号、班级名称和年级信息select学号,姓名,性别,班级名称,班级信息.班级编号,班级信息.年级from学生信息,班级信息where学生信息.班级编号=班级信息.班级编号anddbo.学生信息.班级编号in(select班级编号from dbo.学生信息where姓名='朱文娟')4、在“教务管理系统”数据库中,查询出所有非计算机系的学生信息,并显示出这些学生的考试成绩,再按成绩进行降序排列显示,要求返回学生的学号、姓名、班级编号、课程编号和成绩信息。
select班级名称,选课表.学号,姓名,性别,班级信息.班级编号,班级信息.年级,成绩from学生信息,班级信息,选课表where班级名称in(select班级名称from dbo.班级信息where班级名称notlike'%%计算机%%')orderby成绩desc5、找出每个学生超过他自己选修课程平均成绩的课程名称,显示姓名和对应的课程名称select学生信息.学号,姓名,课程名称from选课表,课程信息,学生信息where成绩>any(select avg(成绩)from选课表)数据更新(一)添加教务信息1、在2003年级中创建一个新班级,编号为20031340000200、班级名称为“环境与科学”、班级人数为60、班主任为“张浩”。
《数据库原理及应用》教案14:理解嵌套查询、集合查询
三、新授内容及时间分配
1.嵌套子查询的查询方法。(40分钟)
嵌套子查询的执行过程
嵌套子查询的书写
灵活掌握什么时候用嵌套
2.相关子查询(15分钟)
了解相关子查询的执行过程。
相关子查询与嵌套(不相关)子查询执行过程的区别
3.集合查询(5分钟)
了解即可。
4.数据查询复习(5分钟)
此处结合具体题目与学生一起分析、思考,练习多表连接查询与嵌套查询的命令格式区别,找出其异同点。
3.掌握集合查询的查询方法。
教学重点
1.嵌套子查询的查询方法。
2.集合查询的查询方法。
教学难点
1.嵌套子查询
教学活动及主要环节
学生活动
一、复习(5分钟)
1、提问
内连接查询
自连接查询
2、作业、实验总结
作业实验中出现的问题讲解
二、创设意境,导入新课(5分钟)
导入:要实现查询“查询与刘晨在同一个班学习的学生信息”,怎么做?
四、课堂小结(5分钟)
1.嵌套子查询。
2.集合查询
五、作业
复习本次课所学内容
六、预习
数据更新
列举学生所做题目及过程等内容:
学生所做题目主要是课本相关例题,让学生先能看懂这些题目,明白SELECT命令的功能及书写方法,然后再自己动手去写命令。
嵌套子查询教学活动及主要环节学生活动一复习5分钟1提问内连接查询自连接查询2作业实验总结作业实验中出现的问题讲解二创设意境导入新课5分钟导入
课程名称
数据库原理及应用
课次
14
任务、项目、课题名称
理解嵌套查询、集合查询
课时
2学时
教学内容
1.嵌套查询
实验四:嵌套查询
实验四、数据库的嵌套查询实验电子工业出版社1.实验目的使学生进一步掌握SQL Server查询分析器的使用方法,学会利用Transact-SQL语言表达嵌套查询语句,理解相关的SQL语句。
2. 实验内容用Transact-SQL表达嵌套查询操作,包括使用IN、比较符、ANY或ALL和EXISTS 等操作符,通过SQL Server查询分析器输入、分析并显示正确结果。
3. 实验要求在学生选课库中,用T-SQL嵌套查询语句表示并通过查询分析器实现下列操作:1)求选修了高等数学的学生学号和姓名。
2)求C1课程的成绩高于张三的学生学号和成绩。
3)求其他系中比计算机系某一学生年龄小的学生。
4)求其他系中比计算机系学生年龄都小的学生。
5)求选修了C2课程的学生姓名。
6)求没有选修C2课程的学生姓名。
7)查询选修了全部课程的学生的姓名。
8)求至少选修了学号为“S2”的学生所选修的全部课程的学生学号和姓名。
4. 实验前准备(1)准备测试数据(2)写出查询Transact-SQL语句,对照学生-选课库中的测试数据找出查询结果。
实验四详细数据…5. 实验步骤和方法(1)检查测试记录打开企业管理器,查看数据库表中的相关记录;如果与测试记录不符,执行数据输入操作,使与测试记录一致。
(2)打开查询分析器,输入SQL 并查看结果①选数据库对象③击分析键和执行键②输入SQL代码④查看结果网格页面6. 实验报告要求(1)写出实验目的、实验内容、实验结果和主要实验步骤。
(2)写出实验操作的Transact-SQL查询语句、实验结果。
(3)写出实验中出现的问题、注意事项和解决方法。
(4)写出体会和提高。
7. 注意事项(1)输入SQL语句时应注意,语句中除中文属性和字符串外,均使用西文操作符号,包括“= 、+、( ) 和,”等。
(2)语句的层次嵌套关系和括号的配对使用本节结束,谢谢。
实验四嵌套查询
实验四嵌套查询1.实验目的使学生进一步掌握SQL Server查询分析器的使用方法,加深Transact-SQL语言的嵌套查询语句的理解。
2.实验内容在SQL Server查询分析器中使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。
3.实验步骤用Transact-SQL语句表示,在xssk数据库中实现其数据嵌套查询操作:(1)查询选修了离散数学的学生学号和姓名的代码如下,查询结果如图4.1所示。
select sno,snamefrom studentwhere sno in(select snofrom scwhere cno in(select cnofrom coursewhere cname='离散数学'))图4.1(2)查询0101课程的成绩高于张林的学生学号和成绩的代码如下,查询结果如图4.2所示。
select sno,gradefrom scwhere cno='0101'and grade>(select gradefrom scwhere cno='0101'and sno=(select snofrom studentwhere sname='张林'));图4.2(3)查询其他系中年龄小于计算机系年龄最大者的学生的代码如下,查询结果如图4.3所示。
select*from studentwhere dept<>'计算机系'and age<(select max(age)from studentwhere dept='计算机系');图4.3(4)查询其他系中比计算机系学生年龄都小的学生的代码如下,查询结果如图4.4所示。
select*from studentwhere dept<>'计算机系'and age<(select min(age)from studentwhere dept='计算机系');图4.4(5)查询其他系同牟万里数据库原理课程分数相同的学生学号的代码如下,查询结果如图4.5所示。
实验四复杂查询
实验四复杂查询一、实验目的掌握两个表以上的连接查询的应用,包括嵌套查询。
二、实验内容1、同一数据库中的多表查询(1)查询比“林红”年纪大的男同学信息。
(2)查询所以学生的选课信息、包括学号、姓名、课号、课程名、成绩。
(3)查询已选课学生的学号、姓名、课程名、成绩。
(4)查询选修了“ C 语言程序设计”的学生的学号和姓名。
(5)查询与“张虹”在同一个班级的学生学号、姓名、家庭住址。
(6)查询其他班级中比“ 051”班所有学生年龄大的学生的学号、姓名。
(7)(选做)查询选修了全部课程的学生姓名。
(8)(选做)查询至少选修了学生“”选修的全部课程的学生的学号、姓名。
(9)查询学生的学号、姓名、学习课程名及课程成绩。
(10)查询选修了“高数”课且成绩至少高于选修课程号为“ 002”课程的学生的学号、课程号、成绩,并按成绩从高到底次序排列。
(11)查询选修 3 门以上课程的学生的学号、总成绩(不统计不及格的课程),并要求按总成绩的降序排列出来。
(12)查询多于 3 名学生选修的并以 3 结尾的课程号的平均成绩。
(13)查询最高分与最低分之差大于 5 分的学生的学号、姓名、最高分、最低分。
(14)创建一个表 student_other,结构同 Student,输入若干记录,部分记录和Student 表中的相同。
A. 查询同时出现在 Student 表和 student_other表中的记录。
B. 查询 Student 表和 student_other表中的全部记录。
2、多个数据库间的多表查询(选做)创建一个数据库student_info_other,参数自定。
(1)当前数据库为 Student_info,将 student_info 数据库中的表 student_other 复制到student_info_other 中。
(2)查询同时出现在Student 表和 student_info_other数据库 student_other表中的记录。
数据库SQL实验报告__交互式查询(连接查询及嵌套查询)
《数据库管理系统SQL Server》实验报告
要求:
1.报告格式和内容要求:
a. 内容和格式整齐。
大标题采用黑体四号字加粗,小标题采用小四号字加粗。
正
文采用五号宋体,单倍行距。
b. 贴图时请剪裁到适当大小,要保证打印时可以看清,但也不要太大以免“越界”。
c. 不要在报告中写与实验无关的话,内容要有条理、完整、并能突出重点,要将
遇到的主要问题说明。
2.提交方式和时间:一周内完成。
可以将文件包发到我邮箱******@。
注明主题:
“交SQL作业”。
3.提交文件格式要求:
a. 将实验成果放入一个文件夹中,文件夹的内容包括:本实验报告、分离后的数
据库、如有查询代码(.sql文件)和其它文件也一并放入。
b. 文件夹以“学号姓名班级_S5”为文件名。
注意:你的学号放在姓名前。
c. 注意:所有文件保存后关闭,然后再打包成RAR文件,以免提交的内容丢失或
打不开。
4.主动查阅资料,坚持自己亲手完成实验,弄清每个步骤和相关原理。
第11页2011年4月13日星期三。
数据库实验 集合查询和视图的创建
南通大学数据库实验课
实验报告
学生姓名
所在院系
专业
学号
指导教师
南通大学计科院
2014年 12 月 1 日
实验五集合查询和视图的创建
一、实验目的
1.掌握集合查询涉及的SQL语句
2.掌握视图创建的SQL语句
二、实验内容
1.查询信息系的女生或者是计算机系的男生名单,输出姓名,性别,系名。
(并操作UNION)
2.查询计算机系年龄不大于20岁的学生。
(交操作INTERSECT)
3.查询计算机系年龄大于20岁的学生。
(差操作EXCEPT)
4.创建一个视图view1,要求输出学号,姓名,课程号,分数。
5.基于view1和Course查询每个人各门课程的平均分,输出学号,姓名,平均分,按平均分降序排列。
6.基于view1和Course查询每个人选课的总学分数,输出学号,姓名,总学分数。
三、总结与体会
这次实验主要是集合查询和视图的创建。
集合查询是对多个SELECT语句的结果进行集合操作,包括了交集、并集和差集,使得我们查询更为方便。
而视图是从一个或几个基本表(或视图)导出的虚表,数据库只存放视图的定义,不存放对应的数据,因此基本表中的数据变化,视图中查询出的数据也就随之变化了。
从这个意义上讲,视图就像一个窗口,透过它可以看到数据库中自己感兴趣的数据及其变化。
本次实验让我对视图有了更深的认识和了解,让我感受到视图的方便性与实用性,感受到合理使用视图能带来的许多好处,比如:简化用户的操作、使用户能以多种角度看待同一数据、对重构数据库提供了一定程度的逻辑独立性、对机密数据提供安全保护、更清晰的表达查询,等等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四嵌套查询
班级:学号:姓名
一、实验目的:
掌握嵌套查询使我们可以用多个简单查询构成复杂的查询,从而增强SQL的查询能力。
二、实验内容
1、返回一个值的子查询
(1)查询与“李勇”同一个系的学生学号,姓名。
SELECT SNO,SNAME
FROM STUDENT
WHERE SDEPT IN
(SELECT SDEPT
FROM STUDENT
WHERE SNAME='李勇');
(2)查询与“张三”教师职称相同的教师号,姓名和职称。
SELECT TNO,TNAME,PROF
FROM TEACHER
WHERE PROF IN
(SELECT PROF
FROM TEACHER
WHERE TNAME='张三');
2、返回一组值的子查询
(1)使用ANY谓词查询选修1号课程的学生学号和姓名。
SELECT STUDENT.SNO,SNAME
FROM STUDENT
WHERE SNO=ANY
(SELECT STUDENT.SNO
FROM SC
WHERE SC.SNO=STUDENT.SNO AND CNO=1);
(2)使用IN谓词查询选修1号课程的学生学号和姓名。
SELECT STUDENT.SNO,SNAME
FROM STUDENT
WHERE SNO IN
(SELECT STUDENT.SNO
FROM SC
WHERE SC.SNO=STUDENT.SNO AND CNO=1);
( 3)使用ALL谓词查询其他系中比计算机系所有教师工资都高的教师的姓名、工资和所在系。
SELECT TNAME,SAL,TDEPT
FROM TEACHER
WHERE SAL>ALL
(SELECT SAL
FROM TEACHER
WHERE TDEPT='CS') 肯定是别的系的,所以不用排除sc
(3)使用EXISTS查询没有选修1号课程的学生学号和姓名。
SELECT STUDENT.SNO,SNAME
FROM STUDENT
WHERE NOT EXISTS
(SELECT*
FROM SC
WHERE SC.SNO=STUDENT.SNO AND CNO=1);
附:教师表Teacher(TNO,TNAME,TSEX,AGE,PROF,SAL,TDEPT)
心得体会:
1.Exists不返回任何数据,只产生逻辑值,所以select中用*即可
2.=ANY等价于IN ,<ANY等价于<MAX,<>ANY等价于NOT IN,<ALL等价于<MIN
3.查询中的值如果是字符串就要用单引号,如果是数字则不用
4.Exists查询中必须把所用到的表全部载入,并且where语句也要写完整,才能得到准确的结果。