当前位置:文档之家› 实验七 嵌套查询

实验七 嵌套查询

实验七 嵌套查询
实验七 嵌套查询

实验七嵌套查询

一、实验目的

掌握SELECT语句的嵌套使用,实现表的复杂查询,进一步理解SELECT语句的高级使用方法。

二、实验环境

MS SQL SERVER 2000或者My SQL

三、实验示例

1、由employee表中查找出薪水最高的员工信息。

select *

from employee

where salary=

(select max(salary )

from employee )

2、由sales表中查找出订单金额大于“E0013业务员在1996/10/15这天所接每一张订单的金额”的所有订单。

select *

from sales

where tot_amt>all

(select tot_amt

from sales

where sale_id='E0013'and order_date='1996/10/15')

order by tot_amt

四、实验内容与步骤

1、由sales表中查找出销售金额最高的订单。

2、由sales表中查找出订单金额大于“E0013业务员在1996/10/15这天所接任一张订单的

金额”的所有订单,并显示承接这些订单的业务员和该条订单的金额。

3、找出公司女业务员所接的订单。

4、找出公司中姓名相同的员工,并且依据员工编号排序相识这些员工信息。

5、找出目前业绩未超过20000元的员工。

6、计算公司内各个部门的工资支出总和。

7、计算每一产品销售数量总和与平均销售单价。

五、实验结果

1、由sales表中查找出销售金额最高的订单。

2、由sales表中查找出订单金额大于“E0013业务员在1996/10/15这天所接任一张订单的金额”的所有订单,并显示承接这些订单的业务员和该条订单的金额。

3、找出公司女业务员所接的订单。

4、找出公司中姓名相同的员工,并且依据员工编号排序相识这些员工信息。

5、找出目前业绩未超过20000元的员工。

6、计算公司内各个部门的工资支出总和。

7、计算每一产品销售数量总和与平均销售单价。

sql数据库的嵌套查询

实验四:数据库的嵌套查询实验 学号:姓名: 实验四:数据库的嵌套查询实验 实验目的: 加深对嵌套查询语句的理解。 实验内容: 使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。 实验步骤: 一. 使用带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='刘晨') andsname<>'刘晨V 比较: select S1.* from student S1, student S2 where S1.sdept=S2.sdept and S2.sname='刘晨' 2.查询选修了课程名为’信息系统’的学生的学号和姓名: SQL Server中: select sno, sname from student where sno in

(select sno from sc where cno in (select cno from course where 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') select x.sno from SC x ,SC y where x.sno=y.sno and https://www.doczj.com/doc/236191184.html,o='1' and https://www.doczj.com/doc/236191184.html,o='2' 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 https://www.doczj.com/doc/236191184.html,o='1' and https://www.doczj.com/doc/236191184.html,o='2' 二. 使用带比较运算的子查询 4.查询比’刘晨’年龄小的所有学生的信息: select * from student where sage<

数据库连接查询嵌套查询实验报告

注:交作业使用,请修改

一、实验目的: 熟悉连接查询,嵌套查询等的应用。 二、实验内容: 完成老师word文档中的题目。 三、实验步骤 在上机操作之前,首先要熟悉课本内容和例子。 17、查询所有学生的Sname、Cname和Grade列。(连接查询) select student.sname,https://www.doczj.com/doc/236191184.html,ame,sc.grade from student,course,sc where student.sno=sc.sno and https://www.doczj.com/doc/236191184.html,o=https://www.doczj.com/doc/236191184.html,o 此题因为需要查询的三个信息在不同的表里,所以要找到三个表所具有的共同列,经观察发现student.sno=sc.sno和https://www.doczj.com/doc/236191184.html,o=https://www.doczj.com/doc/236191184.html,o 18、查询所有选修“计算机导论”课程的同学的成绩。(连接查询,嵌套查询)select grade from sc where cno=(select cno from course where cname='计算机导论') select grade from sc ,course where https://www.doczj.com/doc/236191184.html,o=https://www.doczj.com/doc/236191184.html,o and https://www.doczj.com/doc/236191184.html,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='李军') 其实自身连接和普通的连接没有什么区别,只是在自身连接后把一个表取两 个不同的名字,然后后面的就跟普通的连接查询一样了,不过需要注意的是因为两个不同的名字表其实是一个表,所以列的前面要加上表的名字,而且不要弄乱了。嵌套查询思路比较清晰首先找到李军的性别,然后再找和这个性别相同的姓名

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

实验 5 :数据库的嵌套查询实验 本实验需要 2 学时。 一、实验目的 使学生进一步掌握 SQL Server 查询分析器的使用方法,加深 SQL 和 Transact-SQL 语言的嵌 套查询语句的理解。 二、实验内容 在 SQL Server 查询分析器中,使用 IN 、比较符、 ANY 或 ALL 和 EXISTS 操作符进行嵌 套查询操作。 三、实验方法 将查询需求用 Transact-SQL 语言表示;在 SQL Server 查询分析器的输入区中输入 Transact-SQL 查询语句;设置查询分析器的结果区为 Standard Execute( 标准执行 ) 或 Execute to Grid( 网格执行 ) 方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进 行修改,直到正确为止。 四、实验步骤 1 .基本操作实验 在做以下操作前,要求用 Transact-SQL 语句在选课表里增加如下记录: 学号 020101 020101 020101 020101 020101 课程号 103 104 105 106 108 成绩 90 63 84 76 69
Transact-SQL 语句表示,在学生选课库中实现其数据嵌套查询操作。 1)、 求选修了计算机原理的学生学号和姓名。 2)、 求计算机方法课程的最高成绩的学生学号和成绩。

3)、 求其他系中比计算机系任意一学生年龄小的学生 ( 即求年龄小于计算机系年龄最大者的 学生 ) 。 提示:select datediff( "yyyy",出生年月,getdate()) from 学生
获取学生表中的所有学生年龄。 SQL Server DATEDIFF() 函数 SQL Server Date 函数 定义和用法 DATEDIFF() 函数返回两个日期之间的天数。 语法 DATEDIFF ( datepart, startdate, enddate ) startdate 和 enddate 参数是合法的日期表达式。 datepart datepart 年 参数可以是下列的值: 缩写 yy, yyyy qq, q mm, m dy, y dd, d wk, ww dw, w hh mi, n ss, s ms mcs ns
季度 月 年中的日 日 周 星期 小时 分钟 秒 毫秒 微妙 纳秒 实例 例子 1 使用如下 SELECT 语句:

实验(嵌套查询)

嵌套查询实验 1、创建“订货管理数据库”(用简单的语句创建) 2、在该数据库下创建四个表: 1)创建仓库表,由以下属性组成: 仓库号(CHAR型,长度为8,主键); 城市(CHAR型,长度为10,非空唯一); 面积(INT型) 2)创建职工表,由以下属性组成: 仓库号(CHAR型,长度为8); 职工号(CHAR型,长度为8,主键); 工资(INT型,默认值为 1200); 3)创建供应商表,由以下属性组成: 供应商号(CHAR型,长度为5,主键); 供应商名(CHAR型,长度为20,非空唯一);, 地址(CHAR型,长度为20) 4)创建订购单表,由以下属性组成: 职工号(CHAR型,长度为8,非空); 供应商号(CHAR型,长度为4); 订购单号(CHAR型,长度为8,主键); 订购日期(DA TETIME型)

3、用查询分析器,把下列表中的数据插入到相应的表中:(把共享中 文件的代码直接复制,完成数据插入操作)仓库表: 职工表: 订购单表:

供应商表: 4、用查询分析器,对表中的数据进行查询(嵌套查询): 1)哪些城市至少有一个仓库的职工的工资为1250元? 2)找出和职工E4挣同样工资的所有职工。 3)找出哪些城市的仓库向北京的供应商发出了订购单; 4)检索有职工的工资大于或等于WH1仓库中任何一名职工的工资的仓库号(分别使用“>= ANY ”和“>= ”完成); 5)检索有职工的工资大于或等于WH1仓库中所有职工的工资的仓库号(分别使用“>= ALL”和“>=”完成); 6)检索那些仓库中还没有职工的仓库的信息(分别使用NOT EXISTS和NOT IN完成); 7)检索那些仓库中至少已经有一个职工的仓库的信息(分别使用EXISTS和IN完成);

数据库实验3

实验三高级查询 1实验目的 (1)掌握SQL的高级查询的使用方法,如分组统计、嵌套查询、集合查询等等。 2实验内容 2.1 掌握SQL高级查询使用方法 (1)分组统计。 (2)嵌套查询,包括IN查询、EXISTS查询。 (3)集合查询。 3实验要求 (1)深入复习教材第三章SQL有关高级查询语句。 (2)根据书上的例子,针对TPCH数据库模式设计分组统计查询、嵌套查询(IN、EXISTS)语句和集合查询语句,每种类型的基本查询至少要设计一个查询,描述清楚查询要求,运行你所设计的查询语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。也可以按照附2所列示例查询做实验。 (3)实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。 4实验步骤 4.1 掌握SQL高级查询使用方法 (1)不带分组过滤条件的分组统计查询。统计每个顾客订购金额。 SELECT SUM(TOTALPRICE),custkey FROM ORDERS GROUP BY CUSTKEY (2)带分组过滤条件的分组统计查询。 查询平均每个订单金额超过1000元的顾客编号及其姓名。 SELECT CUSTKEY,NAME FROM customer WHERE custkey IN(

SELECT custkey FROM ORDERS GROUP BY CUSTKEY HA VING A VG(TOTALPRICE)>1000) (3)IN嵌套查询。 查询订购了“海大”制造的“船舶模拟驾驶舱”的顾客。 SELECT* FROM customer C WHERE C.CUSTKEY IN (SELECT O.CUSTKEY FROM ORDERS O,PARTSUPP1PS,SUPPLIER S,PART P,lineitem L WHERE https://www.doczj.com/doc/236191184.html,='海大'AND https://www.doczj.com/doc/236191184.html,='船舶模拟驾驶舱'AND P.PARTKEY=L.PARTKEY AND L.SUPPKEY=S.SUPPKEY) (4)单层EXISTS嵌套查询。 查询没有购买过“海大”制造的“船舶模拟驾驶舱”的顾客。 SELECT* FROM CUSTOMER WHERE NOT EXISTS (SELECT* FROM PART P,SUPPLIER S,LINEITEM L,ORDERS O WHERE https://www.doczj.com/doc/236191184.html,='船舶模拟驾驶舱'AND https://www.doczj.com/doc/236191184.html,='海大' AND L.PARTKEY=P.PARTKEY AND S.SUPPKEY=L.SUPPKEY AND L.ORDERKEY=O.ORDERKEY AND O.CUSTKEY=CUSTOMER.CUSTKEY)

实验6 嵌套查询

(1)查询计算机系(CS)男学生的学生学号及考试成绩。 SELECT sno'学号',degree'考试成绩' FROM sc WHERE sno IN(SELECT sno FROM student WHERE sdept='计算机工程系' AND ssex='男') (2)查询“李勇”同学所选课程的成绩。 SELECT cname FROM course WHERE cno IN(SELECT cno FROM sc WHERE sno IN (SELECT sno FROM student WHERE sname='李勇')) (3) 查询“李新”老师所授课程的课程名称。 SELECT cname FROM course WHERE cno IN(SELECT cno FROM teaching WHERE tno IN (SELECT tno FROM teacher WHERE tname = '李新')) (4) 查询女教师所授课程的课程号及课程名称。 SELECT cno,cname FROM course WHERE cno IN(SELECT cno FROM teaching WHERE tno IN (SELECT tno FROM teacher WHERE tsex='女')) (5) 查询姓“刘”的学生所学的课程名称。 SELECT cname FROM course WHERE cno IN(SELECT cno FROM sc WHERE sno IN(SELECT sno FROM student WHERE sname LIKE '刘%')) (6) 查询选修“数据库”课程且成绩在80~90分之间的学生学号及成绩。 SELECT sno,degree FROM sc WHERE cno IN(SELECT cno FROM course WHERE cname = '数据库') AND degree BETWEEN 80 AND 90 (7) 查询选修“C03”课程的学生的平均年龄。 SELECT AVG(2017-YEAR(sbirthday)) FROM student WHERE sno IN (SELECT sno FROM sc WHERE cno='c03') (8) 查询学习课程名为“数字”的学生学号和姓名。 SELECT sno,sname FROM student WHERE sno IN(SELECT sno FROM sc WHERE cno IN (SELECT cno FROM course WHERE cname='数字')) (9) 查询“钱军”教师任课的课程号,选修其课程的学生的学号和成绩。 SELECT cno,sno,degree FROM sc WHERE cno IN(SELECT cno FROM teaching WHERE tno in(SELECT tno FROM teacher WHERE tname = '钱军')) (10) 查询在第3学期所开课程的课程名称及成绩。 SELECT https://www.doczj.com/doc/236191184.html,ame,sc.degree

数据库的嵌套查询实验

实验报告 一、实验内容 数据库的嵌套查询实验 二、实验目的 进一步掌握SQL Server的使用方法,学会利用Transact-SQL语言表达嵌套查询语句,理解相关的SQL语句。 三、实验内容 用Transact-SQL表达嵌套查询操作,包括使用IN、比较符、ANY 或ALL和EXISTS等操作符,通过SQL Server查询分析器输入、分析并显示正确结果。 四、实验前准备 Courses表: Reports表:

Students表: 五、实验结果 1)求选修了高等数学的学生学号和姓名 2)求C1课程的成绩高于张三的学生学号和成绩 3)求其他系中比计算机系某一学生年龄小的学生

4)求其他系中比计算机系学生年龄都小的学生 5)求选修了C2课程的学生姓名 6)求没有选修C2课程的学生姓名 7)查询选修了全部课程的学生的姓名 8)求至少选修了学号为“S2”的学生所选修的全部课程的学生学号和姓名 六、主要实验步骤 1)求选修了高等数学的学生学号和姓名 select sno,sname from students a where sno in (

select sno from reports b where sno=a.sno and cno in ( select cno from courses where cno=https://www.doczj.com/doc/236191184.html,o and cname='高等数学' ) ) 2)求C1课程的成绩高于张三的学生学号和成绩select sno,grade from reports where cno=1 and grade> ( select grade from reports where cno=1 and sno= ( select sno from students where sname='张三' )

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

实验 5 :数据库的嵌套查询实验 本实验需要 2 学时。 一、实验目的 使学生进一步掌握SQL Server 查询分析器的使用方法,加深SQL 和Transact-SQL 语言的嵌套查询语句的理解。 二、实验内容 在SQL Server 查询分析器中,使用IN 、比较符、ANY 或ALL 和EXISTS 操作符进行嵌套查询操作。 三、实验方法 将查询需求用Transact-SQL 语言表示;在SQL Server 查询分析器的输入区中输入 Transact-SQL 查询语句;设置查询分析器的结果区为Standard Execute( 标准执行) 或Execute to Grid( 网格执行) 方式;发布执行命令,并在结果区中查看查询结果;如果结果不正确,要进行修改,直到正确为止。 四、实验步骤 1 .基本操作实验 在做以下操作前,要求用Transact-SQL 语句在选课表里增加如下记录: Transact-SQL 语句表示,在学生选课库中实现其数据嵌套查询操作。 1)、求选修了计算机原理的学生学号和姓名。

2)、求计算机方法课程的最高成绩的学生学号和成绩。 3)、求其他系中比计算机系任意一学生年龄小的学生( 即求年龄小于计算机系年龄最大者的学生) 。 提示:select datediff( "yyyy",出生年月,getdate()) from 学生 获取学生表中的所有学生年龄。 4)、求其他系中比计算机系学生年龄都小的学生。

5)、求选修了高等数学课程的学生姓名。 6)、求没有选修计算机原理课程的学生姓名。

7)、查询选修了全部课程的学生的姓名。 8)、求至少选修了学号为020203的学生所选修的全部课程的学生学号和姓名。

数据库数据查询实验报告

师学院数学与计算机科学学院 《数据库》实验报告 实验序号:07 实验项目名称:数据查询 学号2014210758 姓名邹业安专业、班级14信科实验地点222 指导教师褚万军时间2017.6.07 一、实验目的及要求 ?掌握从简单到复杂的各种数据查询。包括:单表查询、多表连接查询、嵌套查询、集合查询。 ?掌握用条件表达式表示检索条件。 ?掌握用聚合函数计算统计检索结果。 二、实验设备(环境)及要求 1、环境要求: 硬件:PC(PII以上,128M以上存)、因特网接入; 软件:在SQL Server 2000中 三、实验容与步骤 1、一般简单查询 (1)不带条件的查询指定字段(考虑去掉和不去掉重复值两种情况)。select distinct 学号 from 选课 select 学号 from 选课

(2)查询某个表中的所有记录 查询教师表中的所有记录 (3)使用单个条件的简单查询 查询成绩大于50的学生的学号select 学号 from 选课where 成绩>50

(4)使用多个条件(AND关系)的查询 select工资 from教师 where工资>200 and工资<500 (5)使用多个条件(OR关系)的查询 select工资 from教师 where工资<200 or工资>500 (6)使用多个条件(混合AND和OR关系)的查询 select*from学生 where (院系='2'and生源='')or(院系='6'and生源='') (7)使用带NOT运算的查询 select * from 学生 where not (生源='')

(8)使用BETWEEN???AND???的查询 select * from 选课 where 成绩 between 86 and 93 (9)使用NOT???BETWEEN???AND???的查询select * from 选课 where 成绩 not between 76 and 93 (10)使用LIKE运算符的字符串匹配查询。 select * from 课程 where 课程性质 like '专业__'

数据库的嵌套查询实验报告

实验三:数据库的嵌套查询实验 实验目的: 加深对嵌套查询语句的理解。 实验内容: 使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。 实验步骤: 一. 使用带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 https://www.doczj.com/doc/236191184.html,o=https://www.doczj.com/doc/236191184.html,o 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')

SQL数据的查询和更新实验报告报告

实验三、SQL的数据查询 1、实验目的 熟悉SQL语句的数据查询语言,能够SQL语句对数据库进行单表查询、连接查询、嵌套查询、集合查询和统计查询。 2、实验内容 实验内容主要是对数据库进行查询操作,包括如下四类查询方式: (1)单表查询 ●查询的目标表达式为所有列、指定的列或指定的列的运算三种不同。 ●使用DISTINCT保留字消除重复行。 ●对查询结果排序和分组。 ●集合分组使用集函数进行各项统计。 (2)连接查询 ●笛卡儿连接和等值连接。 ●自连接。 ●外连接 ●复合条件连接。 ●多表连接。 (3)嵌套查询 ●通过实验验证对子查询的两个限制条件。 ●体会相关子查询和不相关子查询的不同。 ●考察四类谓词的用法,包括: 第一类,IN、NOT IN; 第二类,带有比较运算符的子查询; 第三类,SOME、ANY或ALL谓词的子查询,查询最大值和最小值; 第四类,带有EXISTS谓词的子查询,实现“所有”等情况(如王 宏的“所有”课程,“所有”女生选修的课程) (4)集合运算 ●使用保留字UNION进行集合或运算。 ●采用逻辑运算符AND或OR来实现集合交和减运算。 3、实验步骤 以University_Mis数据库为例,该数据库中有四张如实验一,其中Score 是每门课的考试成绩,Scredit是学生所有考试合格课程所获得的积分总数,Ccredit每门课程的学分数。 在数据库中,存在这样的联系:学生可以选择课程,一个课程对应一个教师。在表Reports中保存学生的选课记录和考试成绩。

请先输入如下元组,再对数据库进行有关的查询操作: 图1.1、Students表 图1.2、T eachers表 图1.3、Courses表 图1.4、Reports表

7 数据库的嵌套查询实验

7数据库的嵌套查询实验 7.1实验目的 1.掌握SQL Server查询分析器的使用方法; 2.加深SQL语言的嵌套查询语句的理解; 3.掌握SQL语言的的使用方法和用途。 7.2实验环境 1.硬件环境:PC机一台; 2.软件环境:SQL Server 2005; 7.3实验内容 在SQL Server查询分析器中使用IN、比较符、ANY或ALL和EXISTS操作符进行嵌套查询操作。 具体完成以下例题。将它们用SQL语句表示,在学生选课中实现其数据嵌套查询操作。 1.求任课“计算机网络”课程的老师信息; 2.求选修“数据库系统”课程学生的学号,姓名,专业和班级; 3.求选修了课程“高等数学”和课程“计算机网络”的学生的学号,班级; 4.求选修了课程类别为“JC”的学生的学号,平时成绩和期末成绩; 5.求选修了“高等数学”课程的学生所有信息; 6.求赵波老师所带课程中学生的学号和期末成绩; 7.求课程年度在2014年的任课老师所有信息; 8.求给专业为“计算机”的学生的任课老师信息; 9.求职称为“副教授”的教师所带学生的学号和平时成绩; 10.求学期为“1”的课程的课程名称和学时;

7.4实验步骤 1.在开始菜单中:所有程序->SQL Server 2005 ->SQL Server Management Studio,单击“连接”按钮,便可以进入【SQL Server Management Studio】窗口。 2.在SQL Server Management Studio中,在【对象资源管理器】中选择“EDUC”数据库,右键选择“新建查询”,如图7-1所示; 图7-1 新建查询窗口 3.进入查询编辑器窗口,在其中中编辑所要查询的数据,例如求任课“计算机网络”课程的老师信息,单击快捷工具栏的“!执行”按钮,执行上述语句,在结果框中显示出查询的结果,如图7-2所示; SQL语言如下: SELECT 任课教师ID,姓名,性别,职称from 教师档案表 where 任课教师ID in

数据库实验五

实验五:数据库综合查询 姓名:潘年品学号:120802010027 一、实验目的 1. 掌握SELECT语句的基本语法和查询条件表示方法; 2. 掌握查询条件种类和表示方法; 3. 掌握连接查询的表示及使用; 4. 掌握嵌套查询的表示及使用; 5. 了解集合查询的表示及使用。 二、实验环境 已安装DBMS的计算机; 具有局域网环境,有固定IP; 三、实验学时 2学时 四、实验要求 1. 了解SELECT语句的基本语法格式和执行方法; 2. 了解连接查询的表示及使用; 3. 了解嵌套查询的表示及使用; 4. 了解集合查询的表示及使用; 5. 完成实验报告; 五、实验内容及步骤 以数据库原理实验2数据为基础,请使用T-SQL 语句实现进行以下操作: 1.查询以‘数据_’开头,且倒数第3个字符为‘结’的课程的详细情况; 2.查询名字中第2个字为‘阳’的学生姓名和学号及选修的课程号、课程名;

3.列出选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号及成 绩; 4. 查询缺少成绩的所有学生的详细情况; 5. 查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息;

6. 查询所选课程的平均成绩大于张力的平均成绩的学生学号、姓名及平均成绩; 7. 按照?学号,姓名,所在院系,已修学分?的顺序列出学生学分的获得情况。其中已修学分为考试已经及格的课程学分之和;

8. 列出只选修一门课程的学生的学号、姓名、院系及成绩; 9. 查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;

10. 只选修?数据库?和?数据结构?两门课程的学生的基本信息; 11. 至少选修?数据库?或?数据结构?课程的学生的基本信息;

实验六 嵌套查询

实验五 一、实验名称:数据库嵌套查询 二、实验目的 1.掌握嵌套查询的表示及使用; 2.掌握使用IN、比较符; 3.掌握ANY或ALL; 4.掌握EXISTS操作符进行嵌套查询操作。 三、实验环境 已安装SQL Server 2005 企业版的计算机; 具有局域网环境,有固定IP; 四、实验学时 2学时 五、实验要求 1.了解连接查询的表示及使用; 2.完成实验报告。 实验内容及步骤: 在WHERE子句中包含一个形如SELECT-FROM-WHERE的查询块,此查询块称为子查询或嵌套查询,包含子查询的语句称为父查询或外部查询。 一、返回一个值的子查询 当子查询的返回值只有一个时,可以使用比较运算符(=, >, <, >=, <=, !=)将父查询和子查询连接起来。 【例1】查询与李明教师职称相同的教师号、姓名。 SELECT TNO,TN FROM T WHERE PROF=(SELECT PROF FROM T WHERE TN='李明') 二、返回一组值的子查询 如果子查询的返回值不止一个,而是一个集合时,则不能直接使用比较运算符,可以在比较运算符和子查询之间插入ANY或ALL。 1. 使用ANY 【例2】查询讲授课程号为C5的教师姓名。 SELECT TN FROM T

WHERE TNO=ANY(SELECT TNO FROM TC WHERE CNO='C5') 2. 使用IN 可以使用IN代替“=ANY”。 【例3】查询讲授课程号为C5的教师姓名 SELECT TN FROM T WHERE TNO IN(SELECT TNO FROM TC WHERE CNO='C5') 3. 使用ALL ALL的含义为全部。 【例4】查询其他系中比电力系所有教师工资都高的教师的姓名和工资。 SELECT TN,SAL FROM T WHERE SAL>ALL(SELECT SAL FROM T WHERE DEPT='电力') AND DEPT!= ‘电力’ 4. 使用EXISTS EXISTS表示存在量词,带有EXISTS的子查询不返回任何实际数据,它只得到逻辑值“真”或“假”。当子查询的的查询结果集合为非空时,外层的WHERE 子句返回真值,否则返回假值。 【例5】查询讲授课程号为C5的教师姓名 SELECT TN FROM T WHERE EXISTS(SELECT * FROM TC WHERE TNO=T.TNO AND CNO='C5')

《数据库原理》实验4--嵌套查询

实验七:嵌套查询 一、实验目的 掌握SELECT语句的嵌套使用,实现多表的复杂查询,进一步理解SELECT语句的高级使用方法。 二、实验环境 已安装SQL Server 2005 企业版的计算机 三、实验学时 2学时 四、实验要求 1.了解SELECT语句的基本语法格式和执行方法; 2.了解嵌套查询的表示及使用; 3.完成实验报告; 五、实验原理 使用嵌套查询时,先用内查询(子查询)挑选出部分数据,以作为外查询(主查询)的数据来源或搜索条件。包含子查询的语句通常采用以下格式: WHERE 表达式[NOT] IN (子查询) WHERE 表达式比较运算符[ANY|ALL] (子查询) WHERE [NOT] EXISTS (子查询) 其中前两种又称为不相关子查询,子查询的查询条件不依赖其父查询,所以可以先求出子查询的结果,然后由内到外逐层求解。最后一种为相关子查询,其子查询的查询条件依赖于外层父查询的某个属性值,所以不能先一次性地求出子查询的结果。 六、实验示例 1、由employee表中查找出薪水最高的员工信息。 select * from employee where salary= (select max(salary ) from employee )

2、由sales表中查找出订单金额大于“E0013业务员在1996/11/10这天所接每一张订单的金额”的所有订单。 select * from sales where tot_amt>all (select tot_amt from sales where sale_id='E0013'and order_date='1996/10/15') order by tot_amt 3、用存在量词查找没有订货记录的客户名称 select cust_name from customer a where not exists (select * from sales b where a.cust_id=b.cust_id) 七、实验内容 请使用T-SQL 语句实现进行以下操作: ●针对S_T数据库 1.查询所选课程的平均成绩大于刘晨的平均成绩的学生学号、姓名及平均成绩; 2.列出只选修一门课程的学生的学号、姓名、院系及成绩; 3.查找选修了至少一门和刘晨选修课程一样的学生的学号、姓名及课程号; 4.查询至少选修了“信息系统”和“数学”这两门课程的学生的基本信息; 5.查询只被一名学生选修的课程的课程号、课程名; 6.检索所学课程包含学生‘刘晨’所学课程的学生学号、姓名; 7.使用嵌套查询列出选修了“数学”课程的学生学号和姓名; 8.使用嵌套查询查询其它系中年龄小于CS系的某个学生的学生姓名、年龄和院系; 9.使用嵌套查询查询其它系中年龄小于CS系所有学生年龄的学生; ●针对company数据库

实验五 连接查询、嵌套查询与联合查询 实验指导

实验五连接查询、嵌套查询与联合查询实验指导 一、连接查询 前面的查询都是在单个表中进行的查询。在数据库的实际编程应用中,往往需要查询许多数据,有可能这些数据出现在两个或两个以上的表中,而我们希望这些数据出现在一个结果集中,这就要用到连接查询。在SQL Server中,可以使用两种语法形式:一种是ANSI 连接语法形式,连接写在FROM子句中,使用JOIN…ON关键字。另一种是早期SQL SERVER 连接语法形式,连接写在WHERE子句中。在SQL SERER中可以设定兼容级别为80及以下(在对象资源管理器中展开相应的数据库,右击,选择“属性”,在弹出的“数据库属性”对话框中选择“选项”,有兼容级别设置)才能使用这种形式。在SQLServer2008中推荐使用ANSI形式的连接。两种连接的语法格式如下。 SQL Server连接的语法格式: SELECT <查询列表> FROM 表1,表2 WHERE 表1.列1 <比较运算符> 表2.列2 其中比较运算符可以是:=、>、<、>=、<=、<>等。 说明: ●连接的列(属性)名可不相同,但数据类型必须兼容。 ●当<比较运算符>是“=”时,称等值连接,否则为非等值连接。 ANSI连接的语法形式如下: SELECT 表名.列名[,…n] FROM {表名1 [连接类型] JOIN表名2 ON 连接条件} [,…n] WHERE 查询条件 连接查询包括以下几种类型。 1. 内连接 从两个或两个以上的表的组合中,挑选出符合连接条件的数据。如果数据无法满足连接条件,则将其丢弃。通常称这种方法为内部连接INNER JOIN。在内部连接中,参与连接的表的地位是平等的。它有两种形式:等值连接和自然连接。等值连接会产生冗余列,因为它将连接条件中的共享列显示两次。而自然连接则清除了等值连接产生的冗余列,因此我们所说的内连接在没有特殊说明时都指的是自然连接。 例1 查询所有学生的选课信息(包含学号、姓名、课程编号)。 用SQL Server形式进行连接:

数据库实验二

任课教师: 《数据库原理及应用》 实 验 报 告 学号: 姓名: 班级:

实验二数据库的简单查询和高级查询 一、实验目的: 本实验的目的是使学生掌握SQL Server查询分析器的使用方法,加深对SQL和SQL语言的查询语句的理解。熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法,加深SQL语言的嵌套查询语句的理解,熟练掌握数据查询中的分组、统计、计算和集合的操作方法。 二、实验内容 (一)简单查询操作。该实验包括投影、选择条件表达,数据排序,使用临时表等。 具体完成以下题目,将它们转换为SQL语句表示,在学生选课数据库中实现其数据查询操作。1.求数学系学生的学号和姓名 2.求选修了课程的学生学号 3.求选修课程号为‘1’的学生号和成绩,并要求对查询结果按成绩的降序排列,如果成绩相同按学号的升序排列。 4.求选修课程号为‘1’且成绩在80~90之间的学生学号和成绩,并将成绩乘以0.8输出。5.求数学系或计算机系姓张的学生的信息。 6.求缺少了成绩的学生的学号和课程号 (二)连接查询操作。该实验包括等值连接、自然连接、求笛卡儿积、一般连接、外连接、内连接、左连接、右连接和自连接等。 1.查询每个学生的情况以及他所选修的课程 2.求学生的学号、姓名、选修的课程及成绩 3.求选修课程号为‘1’且成绩在90以上的学生学号、姓名和成绩 4.查询每一门课程的间接先行课(即先行课的先行课) (三)嵌套查询操作:在SQL Server查询分析器中使用IN、比较符、ANY或ALL和EXISTS 操作符进行嵌套查询操作。 具体完成以下各题。将它们用SQL语句表示,在学生选课中实现其数据嵌套查询操作。 1.求选修了高等数学的学号和姓名 2.求‘1’课程的成绩高于刘晨的学生学号和成绩 3.求其他系中比计算机系某一学生年龄小的学生(即年龄小于计算机系年龄最大者的学生)4.求其他系中比计算机系学生年龄都小的学生 5.求选修了‘2’课程的学生姓名 6.求没有选修‘2’课程的学生姓名 7.查询选修了全部课程的学生姓名 8.求至少选修了学号为“95002”的学生所选修全部课程的学生学号和姓名 (四)集合查询和统计查询: 1)分组查询实验。该实验包括分组条件表达、选择组条件表达的方法。 2)使用函数查询的实验。该实验包括统计函数和分组统计函数的使用方法。 3)集合查询实验。该实验并操作UNION、交操作INTERSECT和差操作MINUS的实现方法。具体完成以下例题,将它们用SQL语句表示,在学生选课中实现其数据查询操作。 1.求学生的总人数 2.求选修了课程的学生人数 3.求课程和选修了该课程的学生人数 4.求选修超过3门课的学生学号 5.查询计算机科学系的学生及年龄不大于19岁的学生 6.查询计算机科学系的学生与年龄不大于19岁的学生的交集 7.查询计算机科学系的学生与年龄不大于19岁的学生的差集 8.查询选修课程‘1’的学生集合与选修课程‘2’的学生集合的交集

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

实验五数据库的嵌套查询实验 本实验需要2学时。 一、实验目的 使学生进一步掌握SQL Server或oracle的企业管理器的使用方法,加深SQL 语言的嵌套查询语句的理解。 二、实验内容 在SQL Server查询分析器或oracle的企业管理器中使用IN、比较符、ANY 或ALL和EXISTS操作符进行嵌套查询操作。 三、实验方法 将查询需求用SQL语言表示;发布执行命令.井在结果区中查看查询结果:如果结果不正确,要进行修改.直到正确为止。 四、实验步骤 1 基本操作实验 用SQL语句表示,在学生选课库中实现其数据嵌套查询操作。 (1)求选修了高等数学的学生学号和姓名。 select a.sno,a.sname from student a where a.sno in(select sno from sc where cno=(select cno from course d where https://www.doczj.com/doc/236191184.html,ame='高等数学')) (2)求C1课程的成绩高于张三的学生学号和成绩。 select a.sno,sname,c.grade from student a,sc c where a.sno=c.sno and c.grade>( select c.grade from student a,sc c where a.sname='张三' and a.sno=c.sno and https://www.doczj.com/doc/236191184.html,o=001 ) and https://www.doczj.com/doc/236191184.html,o='001'; (3)求其他系中年龄小于计算机系年龄最大者的学生。 select a.* from student a where sage<(select max(sage) from student where sdept='计算机系') and a.sdept!='计算机系'; (4)求其他系中比计算机系学生年龄都小的学生。 select * from student where sdept!='计算机系' and sage<(select min(sage) from student where sdept='计算机系'); (5)求选修了C1课程的学生姓名。 select sname from student a,sc b where https://www.doczj.com/doc/236191184.html,o='001' and a.sno=b.Sno;

实验:数据库综合查询新教材.doc

实验六:数据库综合查询 一、实验目的 1.掌握SELECT语句的基本语法和查询条件表示方法; 2.掌握查询条件种类和表示方法; 3.掌握连接查询的表示及使用; 4.掌握嵌套查询的表示及使用; 5.了解集合查询的表示及使用。 二、实验环境 已安装SQL Server 2005 企业版的计算机(13台); 具有局域网环境,有固定IP; 三、实验学时 2学时 四、实验要求 1.了解SELECT语句的基本语法格式和执行方法; 2.了解连接查询的表示及使用; 3.了解嵌套查询的表示及使用; 4.了解集合查询的表示及使用; 5.完成实验报告; 五、实验内容及步骤 以数据库原理实验5数据为基础,请使用T-SQL 语句实现进行以下操作:1.查询以‘DB_’开头,且倒数第3个字符为‘s’的课程的详细情况; USE student SELECT'课程号'=Cno,'课程名'=Cname,'先行课号'=Cpno,'学分'=Ccredit FROM course WHERE SUBSTRING(Cname,1,3)='DB_'AND SUBSTRING(RIGHT(RTRIM(Cname),3),1,1)='s' 2.查询名字中第2个字为‘阳’的学生姓名和学号及选修的课程号、课程名;USE student SELECT'姓名'=student.Sname,'学号'=student.Sno,'课程号'=https://www.doczj.com/doc/236191184.html,o,'课程名'=https://www.doczj.com/doc/236191184.html,ame FROM student,course,sc

student.Sno=sc.Sno AND https://www.doczj.com/doc/236191184.html,o=https://www.doczj.com/doc/236191184.html,o AND SUBSTRING(LTRIM(student.Sname),2,1)='阳' 3.列出选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号 及成绩; USE student SELECT '学号'=student.Sno, '姓名'=student.Sname, '所在院系'=student.Sdept, '课程号'=https://www.doczj.com/doc/236191184.html,o, '成绩'=sc.Grade FROM student,course,sc WHERE student.Sno=sc.Sno AND https://www.doczj.com/doc/236191184.html,o=https://www.doczj.com/doc/236191184.html,o AND (https://www.doczj.com/doc/236191184.html,ame='数学'OR https://www.doczj.com/doc/236191184.html,ame='大学英语') 4.查询缺少成绩的所有学生的详细情况; USE student SELECT student.* FROM student,sc

相关主题
文本预览
相关文档 最新文档