数据库实验报告复杂查询
数据库实验简单和复杂的单表查询
实验三实验名称:简单和复杂的单表查询一、实验目的1.熟练掌握用SELECT语句实现简单的单表查询。
掌握SELECT子句、FROM子句、WHERE子句及ORDER BY 子句的用法。
2. 熟练掌握SELECT查询语句中的Group by 子句、Having子句的用法,以及汇总函数的使用。
二、实验原理1.用SELECT语句实现简单的单表查询。
在SELECT子句中用TOP关键字来限制返回到结果集中的记录数目,用DISTINCT关键字从结果集中去掉重复的记录。
WHERE子句中用关系比较符、[NOT] BETWEEN、[NOT] IN、LIKE、IS [NOT]NULL及逻辑运算符构成查询条件,对结果集中的记录进行筛选。
ORDER BY子句将根据查询结果集中一个或多个字段对查询结果进行排序。
2. 在查询语句中用Group by子句进行分组;用Having子句对分组进行筛选。
使用MAX(),MIN(),COUNT(),SUM(),A VG()等函数在查询结果集中生成汇总值。
三、实验设备安装有SQL SERVER 2005的计算机。
四、实验内容运行查询文件company.sql,生成上机必要的数据,然后完成以下操作。
1、查找所有经理的姓名、职称、薪水。
2、在销售主表sales中查找销售金额大于等于10000元的订单。
3、在员工表employee中查找薪水在4000至8000元之间的员工。
4、在员工表employee中查找住址为上海、北京、天津这三个城市的员工。
5、在客户表customer中查找住址不在上海、北京、天津这三个城市的客户。
6、在员工表employee中查找姓“王”用姓名最后一个字为“7、在客户表customer中查找姓“刘”的客户名称、电话。
8、查找出职称为“经理”或“职员”的女工的信息。
9、查找薪水最高的前三条员工记录。
10、查找订单金额最高的前10%的订单记录。
select top 10 percent*from salesorder by tot_amt desc11、查找员工表中所属部门。
实验五大数据查询——复杂查询
实验五数据查询——复杂查询一、实验目的1.掌握SQLServer查询语句的基本语法2.熟练使用SQL的Select语句对多表进行查询3.熟练掌握并运用SQLServer所提供的函数4.熟练使用SQL语句进行复杂的连接操作二、实验环境(实验的软件、硬件环境)硬件:PC机软件:SQL2000三、实验指导说明请复习相关的查询知识点并完成如下内容。
四、实验内容1.在订单数据库orderDB中,完成如下的查询:(1)用子查询查询员工“张小娟”所做的订单信息。
(2)查询没有订购商品的且在北京地区的客户编号,客户名称和邮政编码,并按邮政编码降序排序。
(3)查询订购了“32M DRAM”商品的订单编号,订货数量和订货单价。
(4)查询与员工编号“E2008005”在同一个部门的员工编号,姓名,性别,所属部门。
(5)查询既订购了P2*******商品,又订购了P2*******商品的客户编号,订单编号和订单金额(6)查询没有订购“52倍速光驱”或“17寸显示器”的客户编号,客户名称。
(7)查询订单金额最高的订单编号,客户姓名,销售员名称和相应的订单金额。
(8)查询订购了“52倍速光驱”商品的订购数量,订购平均价和订购总金额。
(9)查询订购了“52倍速光驱”商品且订货数量界于2~4之间的订单编号,订货数量和订货金额。
(10)在订单主表中查询每个业务员的订单数量(11)统计在业务科工作且在1973年或1967年出生的员工人数和平均工资。
(12)在订单明细表中统计每种商品的销售数量和金额,并按销售金额的升序排序输出。
(13)统计客户号为“C20050001”的客户的订单数,订货总额和平均订货金额(14)统计每个客户的订单数,订货总额和平均订货金额。
(15)查询订单中至少包含3种(含3种)以上商品的订单编号及订购次数,且订购的商品数量在3件(含3件)以上。
(16)查找订购了“32M DRAM”的商品的客户编号,客户名称,订货总数量和订货总金额。
数据库实验 复杂查询
实验4 复杂查询一.实验目的:1.掌握SQL语句中的group by 子句。
2.掌握SQL语句中的子查询。
3.掌握SQL语句中的order by 子句。
二.实验内容:1.在自己的文件夹下建立一个“教学数据库”,表如下:2.S(学生表)C(课程表)SC(成绩表)S(学生表)SNO SN SEX AGE DEPT S1 赵亦女17 计算机S2 钱尔男18 信息S3 孙珊女20 信息S4 李思男21 自动化S5 周武男19 计算机S6 孙丽女20 自动化C(课程表)CNO CN CTC1 程序设计60C2 微机原理80C3 数字逻辑60C4 数据结构80C5 数据库60C6 编译原理60C7 操作系统60SC(成绩表)SNO CNO SCORES1 C1 90S1 C2 85S2 C5 57S2 C6 80S2 C7S2 C4 70S3 C1 75S3 C2 70S3 C4 85S4 C1 93S4 C2 85S4 C3 83S5 C2 893.利用SQL语句完成下列查询:(1)查询全体学生的学号、姓名、课程名和成绩。
(2)查询选修了课程的学生的人数。
(3)查询选修C1或C2且分数大于等于85分学生的姓名、课程名和成绩。
(4)查询所有姓孙的学生的学号和姓名。
(5)查询没有考试成绩的学生的学号、姓名和课程名。
(6)查询选修C1课程的最高分,显示课程号、课程名和最高分。
(7)查询每个学生的学号、姓名和平均成绩,按平均成绩的降序排列。
(8)查询比孙珊同学所选修课程最高成绩还高的学生的姓名、课程名和成绩。
(9)查询至少选修两门课程学生的学号、姓名和选课门数。
(10)查询考试成绩不及格学生的姓名、课程名和成绩。
数据库查询的实验报告
数据库查询的实验报告数据库查询的实验报告引言:数据库查询是一项重要的技术,它可以帮助我们从庞大的数据集中提取所需的信息。
本实验旨在探索数据库查询的原理和实践,通过实际操作和分析,深入了解数据库查询的过程和技巧。
实验目的:1. 理解数据库查询的基本概念和原理;2. 掌握使用SQL语句进行数据库查询的方法;3. 分析不同查询语句的执行效率和优化策略。
实验步骤:1. 数据库准备:选择一个合适的数据库系统,并创建一个包含适当表结构和数据的数据库。
2. 查询语句编写:根据实际需求,编写不同类型的查询语句,包括基本查询、条件查询、排序查询、聚合查询等。
3. 查询语句执行:使用数据库管理系统提供的查询工具,执行编写好的查询语句,并观察查询结果。
4. 查询结果分析:根据查询结果,分析查询语句的执行效率和查询结果的准确性。
5. 优化策略实施:对于执行效率较低的查询语句,尝试优化策略,如索引的使用、查询语句的重写等。
6. 优化效果评估:比较优化前后查询语句的执行效率,并分析优化策略的有效性。
实验结果与讨论:通过实验,我们发现数据库查询的过程中,查询语句的编写和优化对查询效率有重要影响。
以下是我们的实验结果和讨论。
1. 基本查询:基本查询是最简单的查询方式,通过SELECT语句从数据库中选择所需的字段。
我们发现,基本查询的执行效率较高,查询结果准确。
然而,在处理大量数据时,查询时间可能会增加。
为了提高效率,我们可以使用LIMIT子句限制返回的记录数。
2. 条件查询:条件查询是根据特定条件筛选数据的查询方式。
我们使用WHERE子句来指定查询条件,并发现查询结果的准确性和效率与查询条件的选择有关。
使用索引字段作为查询条件可以大大提高查询效率。
3. 排序查询:排序查询是根据指定字段的顺序对查询结果进行排序的方式。
我们使用ORDER BY子句来指定排序字段,并观察到排序查询的执行效率较高。
然而,对于大规模数据集,排序操作可能会导致性能下降。
数据库实验报告 复杂数据查询
七、教师评语与成绩评定:
4
5
(19)查询所开课程的选修情况,包括没有任何学生选修的课程。 SELECT 学号, 课程名, 分数 FROM 成绩 A RIGHT OUTER JOIN 课程 B ON (A.课程编号=B.课程编号)
(20) 查询研究生与其导师的情况。 SELECT * FROM 研究生 A INNER JOIN 教师 B ON A.导师号= B.教工号 也可以写成等价的 SQL 语句: SELECT * FROM 研究生 A,导师 B WHERE A.导师号= B.教工号
(21)查询教师指导研究生的情况,包括不指导研究生的教师。
3
SELECT * FROM 导师 A LEFT OUTER JOIN 研究生 B ON (A.教工号= B.导师) 三、实验平台: Microsoft SQL Sever 四、设计流程: 1、进入查询分析器,参见进入查询分析器演示。 2、在查询分析器的命令编辑窗口输入 SQL 语句,点击执行键 ►,将执行 SQL 语 句。参见执行 SQL 语句的演示。 3、在调试程序过程中,可以用鼠标选择某些要执行的 SQL 语句,再点击执行键, 执行选择的语句。参见执行 SQL 语句的演示。 4、 注意:在各个表中插入数据的顺序,首先在父表中插入数据,然后在子表中 插入数据。另外,由于表的定义中包含完整性约束的定义,所以,当主码重 复,或者外码不是被参照表的有效值时,系统将拒绝插入的数据。 5、保存调试通过的 SQL 程序。 五、程序清单:
(11)根据学生、课程和成绩表,输出“计算机”课程的成绩单,包括姓名和 分数。 SELECT 姓名,分数 FROM 学生 A JOIN 成绩 B ON(A.学号=B.学号) JOIN 课程 C ON(B.课程编号=C.课程编号) WHERE C.课程名称=’计算机’
复杂查询实验报告
复杂查询实验报告江培健 10140421510计教(2)班(1) 查找有销售记录的客户编号、名称和订单总额。
SELECT a.CustomerNo,CustomerName, sum(qua ntity*price) orderSumFROM OrderMaster a,OrderDetail b,Customer cWHERE b.orderNo=a.orderNo AND c.CustomerNo=a.CustomerNo GROUP BY a.CustomerNo,CustomerNameORDER BY a.CustomerNo,orderSum DESC (2) 在订单明细表中查询订单金额最高的订单 (3) SELECT top 1 orderNo,sum(quantity*price)FROM OrderDetail GROUP BY orderNo ORDER BY 订单金额DESC订单金额3查询没有订购商品的客户编号和客户名称SELECT CustomerNo,CustomerNameFROM CustomerWHERE CustomerNo NOT IN (SELECT CustomerNo FROM OrderMaster)(4) (4)找出至少被订购3次的商品编号、订单编号、订货数量和订货金额,并按订货数量的降序排序输出。
SELECT productNo ,orderNo ,qua ntity ,qua ntity *price 订货金额FROM OrderDetailWHERE productNO IN(SELECT productNoFROM OrderDetailGROUP BY productNoHAVING cou nt(*)>=3)ORDER BY productNo desc⑸(5)使用子查询查找16M DRAM的销售情况,要求显示相应的销售员的姓名、性别, 销售日期、销售数量和金额(6) SELECT employeeName,case sex⑺whe n 'F' then ' 女'(8) whe n 'M' then ' 男'end sex,(9) orderDate,qua ntity,qua ntity*price 金额(10) FROM Employee a,OrderMaster b,OrderDetail c(11) WHERE a.employeeNo=b.salerNo AND b.orderNo=c.orderNo(12) AND c.ProductNo IN ((13) SELECT f.ProductNo(14) FROM OrderMaster d,OrderDetail e,Product f(15) WHERE d.orderNo=e.orderNo AND ProductName='32M DRAM')idien ' F* then '玄' when F then '男'end sex,orderDat e, quarrt ity, quant it y*p rice 金额FROM Employee OrderMauSt er b?Or de rDet ail cWHERE a. employeeNo=b. salerNo AND b. orderN^c. or de rNoAND c^Product No IN (SELECT f.PraductNoFROM OrdetMaster dj OtderDetail e f Product fWHERE d. orderNo=e< orderN口AND ProductName=* 32M DRAHI*) IlkSELECT orderNo ,orderSumFROM OrderMasterWHERE orderSum =(SELECT max(orderSum ) FROM OrderMaster )(7) 计算出一共销售了几种商品SELECT COUNT(*)种类FROM (SELECT DISTINCT ProductNo FROM OrderDetail)a(8) 显示OrderDetail表中每种商品的订购金额总和,并且依据销售金额由大到小排序输出。
数据库原理与应用实验二 复杂的数据查询
实验二复杂的数据查询
一、实验目的
掌握利用select语句进行复杂的数据查询。
二、实验要求
写出实训时碰到的问题以及解决问题的办法,完成本次实训的体会。
三、实验内容
1.检索限选人数小于平均限选人数的课程名称和教师
2.检索班级号为20000003的学生的学号、姓名、班级代码、班级名称
3.检索学生选课为第1志愿(WILLORDER)的学号、姓名、课程号、课程名称
4.按部门统计课程的平均报名人数,要求显示部门名称、平均报名人数。
5.统计各部门的班级数,要求显示部门编号、部门名称和班级数量。
6.查看“00电子商务”版的选修报名情况。
要求显示学号、姓名、课程编号、课程名称、志愿号,并按学号(升序)、志愿号(降序)排列。
7.查看“甘蕾”同学选修的课程名、学分、上课时间、志愿号,按志愿号(升序)排序查询结果。
8.按系部统计各系的最少报名人数、最多报名人数、平均报名人数和报名总数,并汇总显示所有系部的报名总数。
要求平均报名人数保留两位小数位。
四、实验作业
严格按照各题要求做实验,在实训报告中,需要对知识点进行描述,撰写实验过程及过程中遇到的难点,并给出解决办法或新的心得体会。
数据库实验四_复杂查询
实验四复杂查询一、实验目的掌握两个表以上的连接查询的应用,包括嵌套查询。
二、实验内容(1)查询比“林红”年纪大的男学生信息。
select*from Student_20103322where(year(GETDATE())-year(Birth))>(select year(GETDATE())-year(Birth)from Student_20103322where Sname='林红')and Sex='男'(2)检索所有学生的选课信息,包括学号、姓名、课号、课程名、成绩。
select Student_20103322.Sno,Sname,Course_o,Cname,Grade from Student_20103322,Course_20103322,SC_20103322where Student_20103322.Sno=SC_20103322.Sno ANDCourse_o=SC_o(3)查询已选课学生的学号、姓名、课程名、成绩。
select Student_20103322.Sno,Sname,Cname,Gradefrom Student_20103322,Course_20103322,SC_20103322 where Student_20103322.Sno=SC_20103322.Sno AND Course_o=SC_o(4)查询选修了“C语言程序设计”的学生的学号和姓名。
select Student_20103322.Sno,Snamefrom Student_20103322where Sno IN(select Snofrom SC_20103322where Cno in(select Cnofrom Course_20103322where Cname='C语言程序设计'))(5)查询与“张虹”在同一个班级的学生学号、姓名、家庭住址。
数据库操作查询实训报告
一、实训背景随着信息技术的飞速发展,数据库已经成为现代社会信息管理的重要工具。
为了更好地掌握数据库操作与查询技能,我们进行了一次数据库操作查询的实训。
本次实训旨在通过实际操作,使学生熟练掌握数据库的基本操作,包括数据库的创建、表的创建、数据的插入、查询、更新和删除等,并能够运用SQL语言进行复杂的查询操作。
二、实训内容1. 数据库的创建与使用首先,我们学习了如何创建一个新的数据库,以及如何使用现有的数据库。
在MySQL数据库中,创建数据库的语句如下:CREATE DATABASE 数据库名;使用数据库的语句如下:USE 数据库名;2. 表的创建与操作接下来,我们学习了如何创建表,以及如何对表进行操作,包括添加字段、修改字段、删除字段等。
创建表的语句如下:CREATE TABLE 表名 (字段名1 数据类型,字段名2 数据类型,...);添加字段的语句如下:ALTER TABLE 表名 ADD 字段名1 数据类型;修改字段的语句如下:ALTER TABLE 表名 MODIFY 字段名1 数据类型;删除字段的语句如下:ALTER TABLE 表名 DROP 字段名1;3. 数据的插入、查询、更新和删除在掌握了表的基本操作后,我们学习了如何向表中插入数据、查询数据、更新数据和删除数据。
插入数据的语句如下:INSERT INTO 表名 (字段名1, 字段名2, ...) VALUES (值1, 值2, ...);查询数据的语句如下:SELECT 字段名1, 字段名2, ... FROM 表名 WHERE 条件;更新数据的语句如下:UPDATE 表名 SET 字段名1 = 值1, 字段名2 = 值2, ... WHERE 条件;删除数据的语句如下:DELETE FROM 表名 WHERE 条件;4. SQL查询语句最后,我们学习了SQL查询语句,包括单表查询、多表查询、子查询等。
以下是部分查询语句的示例:(1)单表查询SELECT 字段名1, 字段名2, ... FROM 表名 WHERE 条件;(2)多表查询SELECT 字段名1, 字段名2, ... FROM 表名1, 表名2 WHERE 条件;(3)子查询SELECT 字段名1, 字段名2, ... FROM 表名 WHERE 条件1 IN (SELECT 字段名1, 字段名2, ... FROM 表名2 WHERE 条件2);三、实训过程1. 实训初期,我们通过查阅教材和资料,了解了数据库的基本概念和操作方法。
数据库实验报告 数据查询
FROM学生
(20)查询学生的总人数。
SELECT COUNT(*)AS人数
FROM学生
2、复杂查询
(21)如果要统计成绩表中所有选课的学生人数,即不管一名学生选了几门课程,都只计算一次
SELECT COUNT (DISTINCT (学号)) AS人数
(12)列出教工中比姜立伟工资低的姓名和工资。
SELECT R.姓名,R.工资
FROM教工R,教工S
WHERE R.工资<S.工资AND S.姓名='姜立伟'
(13)查出所有不是教授的教工姓名。
SELECT姓名
FROM教工
WHERE职称NOT LIKE '教授'
(14)检索工资在1000元到2000元范围内的职工信息。
SELECT *
FROM教工
WHERE职称='教授'
(3)列出教工表中的系编号并消除重复的元组。
SELECT DILeabharlann TINCT系编号FROM教工
(4)已知学分=学时/17,计算每一门课程的学分数。
SELECT课程名称,学时/17 AS学分
FROM课程
(5)显示教授的工资和提高10%的工资额。
SELECT姓名,工资,工资*1.1 AS '工资*1.1'
(32)统计无先修课的课程的学时总数;
(33)统计每位学生选修课程的门数、学分及其平均成绩;
(34)统计选修每门课程的学生人数及各门课程的平均成绩;
(35)找出平均成绩在85分以上的学生,结果按系分组,并按平均成绩的升序排
列;
(36)查询选修了“1”或“2”号课程的学生学号和姓名;
数据库原理复杂查询实验报告
计算机科学与信息学院 软件工程系上机实验报告《数据库原理》实验报告《数据库原理》实验报告题目题目实验4 复杂查询(一)姓名姓名 *** 班级班级 *** 日期日期 ***实验环境:实验环境:SQL Server 2000 SQL Server 2000实验内容与完成情况:一、实验目的本实验的目的使学生熟练掌握SQL Server 查询分析器的使用方法,本实验的目的是使学生进一步掌握SQL Server 查询分析器的使用方法,加深SQL 语言的连接查询的理解。
语言的连接查询的理解。
二、实验内容本实验使用实验三中建立的基本表Student Student、、Course 、SC 和Teacher 中的元组。
中的元组。
Student 学 号 Sno 姓 名 Sname 性 别 Ssex 年 龄 Sage 所在系所在系 Sdept 200215121 李勇李勇 男 20 CS 200215122 刘晨刘晨 女 19 CS 200215123 王敏王敏 女 18 MA 200215125 张立张立 男 19 IS 200215126 欧阳丽欧阳丽女21FL Course课程号课程号 Cno 课程名课程名Cname 先行课先行课 Cpno 学分学分 Ccredit 1 数据库数据库 5 4 2数学数学 2 3 信息系统信息系统 1 4 4 操作系统操作系统 6 3 5 数据结构数据结构 7 4 6 数据处理数据处理 2 7 PASCAL6 4 8DB_Design12SC学号学号 Sno 课程号课程号 Cno 成绩成绩 Grade 200215121 1 92 200215121 2 85 200215121 3 88 200215122 2 90 200215122 3 80 200215122 1 200215123 2 50 200215123 3 70Teacher教师编号教师编号 Tno 教师教师姓名姓名Tname 性 别 Tsex 年 龄 Tage 所在系所在系 Tdept 职称职称 Ttitles 工资工资Twage系主任系主任编号编号 Tdno 110001 钟灵钟灵 女27 CS 讲师讲师 2800110005 110002 杨毅杨毅 男 42 CS 副教授副教授 3500 110005 110003 周倩周倩 女 25 CS 讲师讲师 2800 110005 110005 陈文茂陈文茂 男 48 CS 教授教授 4000 110005 120001 江南江南 男 30 IS 副教授副教授 3500 120003 120002 刘洋刘洋 男 28 IS 讲师讲师 2800 120003 120003 汪明汪明 男 44 IS 教授教授 4000 120003 120004 张蕾张蕾 女 35 IS 副教授副教授 3500 120003 130001 邹佳羽邹佳羽 女 25 MA 讲师讲师 2800 130003 130002 王力王力 男 30 MA 讲师讲师 2800 130003 130003 王小峰王小峰 男 35 MA 副教授副教授 3500 130003 130004 魏昭魏昭 男 40 MA 副教授副教授 3500 130003 140001 王力王力 男 32 FL 副教授副教授 3500 140005 140002 张小梅张小梅 女 27 FL 讲师讲师 2800 140005 140003 吴娅吴娅 女 27 FL 讲师讲师 2800 140005 140004 陈姝陈姝 女 35 FL 副教授副教授 3500 140005 140005 周斌周斌男44FL教授教授4000140005在SQL Server2000查询分析器中,使用查询分析器中,使用连接查询连接查询完成如下查询要求:完成如下查询要求: (1) 求选课学生的基本情况以及他的选修情况;求选课学生的基本情况以及他的选修情况;SELECT Student .*,SC .* FROM S tudent Student ,SCWHERE Student .Sno =SC .Sno ;(2) 求学生的学号、姓名、选修的课程号及成绩;求学生的学号、姓名、选修的课程号及成绩;SELECT Student.Sno,Student.Sname,o,SC.GradeStudent,SCFROM S tudentWHERE Student.Sno=SC.Sno;(3) 求选修课程号为1且成绩在90以上的学生学号、姓名和成绩;以上的学生学号、姓名和成绩; SELECT Student.Sno,Student.Sname,SC.GradeFROM S tudentStudent,SC;WHERE Student.Sno=SC.Sno AND o=1 AND Grade>90(4) 求每一门课程的间接先行课(即先行课的先行课);求每一门课程的间接先行课(即先行课的先行课); SELECT o,SECOND.Cpno as '该课程的先行课'FROM C ourseCourse FIRST, Course SECONDWHERE o=o;(5) 求选修了数学课的学生的学号和姓名;求选修了数学课的学生的学号和姓名;SELECT Student.Sno,Student.SnameStudent,SC,CourseFROM S tudentWHERE Student.Sno=SC.Sno AND o=o AND ame='数学';(6) 求学生李勇选修的总学分;求学生李勇选修的总学分;SELECT SC Sno,SUM(SC Grade) as '总学分'Student,SCFROM S tudentWHERE Student.Sno=SC.Sno AND Student.Sname='李勇'Group by SC.Sno;(7) 求各学生选修的总学分;求各学生选修的总学分;SELECT Student.Sname,SUM(SC.Grade) as '总学分'Student,SCFROM S tudentWHERE Student.Sno=SC.SnoGroup by Student.Sname;(8) 求课程“数据库”的平均成绩;求课程“数据库”的平均成绩;SELECT ame as'数据库',AVG(SC.Grade) as '平均成绩' Course,SCFROM C ourseWHERE o=o AND ame='数据库'Group by ame;(9) 求计算机系学生的选课情况;求计算机系学生的选课情况;SELECT SC.*,Student.Sname,Student.SdeptFROM SC,StudentWHERE SC.Sno=Student.Sno AND Student.Sdept ='CS' ;W HERE(10) 求和钟灵在同一个系的老师姓名;和钟灵在同一个系的老师姓名;SELECT TnameFROM TeacherWHERE Tdept=SELECT Tdept(TeacherFROMTname ='钟灵');WHERE(11) 求吴娅所在系的教师人数;吴娅所在系的教师人数;SELECT COUNT(Tdept)FROM TeacherWHERE Tdept =(SELECT TdeptFROM TeacherWHERE Tname = ‘‘吴娅’);WHERE Tname =(12) 求和王小峰同一职称的教师姓名和所在系;和王小峰同一职称的教师姓名和所在系; SELECT Tname,TdeptFROM TeacherWHERE Ttitles=(SELECT TtitlesFROM TeacherWHERE Tname = ‘‘王小峰’)WHERE Tname =AND Tname != ‘‘王小峰’;AND Tname !=(13) 求和邹佳羽工资相同的教师人数;和邹佳羽工资相同的教师人数;SELECT count(Twage)FROM TeacherWHERE Twage=(TwageSELECT T wageFROM TeacherWHERE Tname= '邹佳羽')AND Tname != '邹佳羽';(14) 求汪明所在系教师的平均工资和最高工资;汪明所在系教师的平均工资和最高工资; SELECT AVG(Twage) as '平均工资',MAX(Twage) as '最高工资' FROM TeacherWHERE Tdept=(TdeptSELECT T deptFROM TeacherWHERE Tname= '汪明');(15) 求至少选修了8个学分的学生学号。
实验5:数据库——复杂数据查询与视图管理
实验5:复杂数据查询与视图管理一、实验目的1、掌握复杂查询的使用方法。
2、掌握视图的创建、视图的查询以及通过视图更新(插入、修改、删除)基本表中的数据。
二、实验任务及截图:注意:用到的表结构及信息如下:S:学生基本信息表;C:课程基本信息表;SC:学生选课信息表。
各表的结构以及数据如下所示:表 2.1 学生基本信息表(表名:S)表 2.2 课程基本信息表(表名:C)表 2.3 学生选课信息表(表名:SC)综合查询:1、求不选修C语言课程的学生学号。
select snofrom Swhere not exists(select C.*,SC.*from C,SCwhere o=o ANDame='C语言');2、查询平均成绩在60分以上的学生姓名。
select sname,AVG(SC.grade)'平均分'from S,SCwhere S.sno=SC.snogroup by snamehaving AVG(SC.grade)>603、求这样的学生姓名:该学生选修了全部课程并且其中一门课在90分以上。
select snamefrom S,SCwhere S.sno=SC.snoAND grade>90AND not exists(select*from Cwhere not exists(select*from SCwhere sno=s.snoAND cno=o))4、查询选修课程数在两门以上的学生姓名。
(用连接查询和嵌套查询两种方法实现)连接查询:select snamefrom S,SCwhere S.sno=SC.snogroup by snamehaving COUNT(sname)>2嵌套查询:select snamefrom Swhere sno in(select snofrom SCgroup by snohaving count(SC.sno)>2)5、查询所有成绩都及格的学生人数。
SQL数据库实验四_复杂查询(1)解答
实验四复杂查询(1)解答实验结果1. 查询没有订购商品的且在北京地区的客户编号、客户名称和邮政编码,并按邮政编码降序排序。
SQL语句:SELECT customerNo,customerName,zipFROM CustomerWHERE address LIKE'%北京%'and customerNo NOT IN(SELECT customerNoFROM OrderMaster)ORDER BY zip DESC查询结果:问题:SELECT customerNo,customerName,zipFROM CustomerWHERE address='北京市'AND customerNo not in(select customerNo from OrderMaster)ORDer by zip DESC2.查询订购了“32M DRAM”商品的订单编号、订货数量和订货单价。
SQL语句:SELECT orderNo,quantity,priceFROM OrderDetailWHERE productNo IN(SELECT productNoFROM ProductWHERE productName='32M DRAM')查询结果:3.查询与员工编号E2008005在同一个部门的员工编号、姓名、性别、所属部门。
SQL语句:SELECT employeeNo,employeeName,sex,departmentFROM EmployeeWHERE department IN(SELECT departmentFROM EmployeeWHERE employeeNo='E2008005')查询结果:不包括员工‘E2008005’:SELECT employeeNo,employeeName,sex,departmentFROM EmployeeWHERE department IN(SELECT departmentFROM EmployeeWHERE employeeNo='E2008005')AND employeeNo!='E2008005'4.查询既订购了P2*******商品,又订购了P2*******的商品的客户编号、订单编号和订单总额。
xmut数据库实验4-复杂的SQL查询
(3)创建供应商表,由下列属性组成:供应商号(CHAR型),供应商名(CHAR型),地址(CHAR型),其中供应商号为主码。
WHERE "订购单表"."职工号"="职工表"."职工号" AND
"职工表"."仓库号"="仓库表"."仓库号" AND
"城市"='上海' SELECT "订购单号"
FROM "职工表","订购单表","供应商表"
WHERE "职工表"."职工号"="订购单表"."职工号" AND
"订购单表"."供应商号"="供应商表"."供应商号" AND
CREATE VIEW "北京仓库供应商"
AS SELECT "供应商名"
FROM "供应商表","仓库表","订购单表","职工表"
WHERE "供应商表"."供应商号"="订购单表"."供应商号" AND
"订购单表"."职工号"="职工表"."职工号" AND
数据库实验报告复杂查询
实验五复杂查询1 实验目的与要求(1) 熟练掌握SQL语句的使用。
(2) 熟练使用SQL语句进行连接操作。
2 实验内容(1) 在订单明细表中查询订单金额最高的订单。
实验脚本:实验结果图-1 (1)查询结果(2) 找出至少被订购3次的商品编号、订单编号、订货数量和订货金额,并按订货数量的降序排序输出。
实验脚本:实验结果图-2 (2)查询结果(3) 查找销售总额少于5000元的销售员编号、姓名和销售额。
实验脚本:实验结果图-3 (3)查询结果(4) 找出目前业绩未超过5000元的员工,并按销售业绩的降序排序输出。
实验结果图-4 (4)查询结果(5) 查询订购的商品数量没有超过10个的客户编号和客户名称。
实验结果图-5 (5)查询结果(6) 查找订货金额最大的客户名称和总货款。
实验脚本:实验结果:图-6 (6)查询结果(7) 查找至少订购了3种商品的客户编号、客户名称、商品编号、商品名称、数量和金额。
实验结果:图-7 (7)查询结果(8) 找出目前销售业绩超过4000元的业务员编号及销售业绩,并按销售业绩从大到小排序。
实验脚本:实验结果:图-8 (8)查询结果(9) 求每位客户订购的每种商品的总数量及平均单价,并按客户号、商品号从小到大排列。
实验结果:图-9 (9)查询结果(10) 查询业绩最好的的业务员号、业务员名及其总销售金额。
实验脚本:实验结果:图-10 (10)查询结果(11) 查询订购的商品至少包含了订单“200803010001”中所订购商品的订单。
实验结果:图-11 (11)查询结果(12) 查询总订购金额超过“C20070002”客户的总订购金额的客户号、客户名及其住址。
图-12 (12)查询结果(13) 查询总销售金额最高的销售员编号、订单编号、订单日期和订单金额。
实验脚本:图-13 (13)查询结果(14) 用存在量词查找没有订货记录的客户名称。
实验脚本:图-14 (14)查询结果(15) 查询既订购了“52倍速光驱”商品,又订购了“17寸显示器”商品的客户编号、订单编号和订单金额。
实验09 复杂查询-连接查询
实验9 复杂查询-连接查询一、目的和要求●掌握多表查询语句。
●连接查询二、实验内容(1)外连接查询、内连接查询(2)全连接,交叉连接,左,右连接。
三、实验环境Windows XP和SQL Server 2005的安装环境四、实验原理SQL Server 2005数据库管理系统、关系数据库理论五、实验步骤(一)附加数据库1.1 打开SQL Server Management Studio1.2 选择数据库节点,右键单击选择附加数据库1.3 找到你的主数据文件1.4 将student数据库附加到SQL Server Management Studio中1.5 打开student数据库,执行以下查询(二)复杂查询内连接查询1. 连接student 和class表,显示所有符合条件的记录。
use studentselect * from student inner join class on student.classno=class.classno2.查询class,列出班级的编号、学生姓名、所属专业名称use studentselect class.classno,sname,classname from student inner join class on student.classno=class.classno3.查询学生信息,以下列名称作为列标题:学号、姓名、性别、班级名称use studentselect sno as 学号,sname as 姓名,ssex as 性别,classname as 班级from student inner join class on student.classno=class.classno4.查询孙晓龙所在的班级及专业代码use studentselect sname,classname,pno from student inner join class on student.classno=class.classno where sname='孙晓龙'5.查询专业号为:0101的学生姓名与成绩`use studentselect sname,sscore from student inner join class on student.classno=class.classno where pno='0101'6.查询专业为:0202的姓名,及成绩,并按成绩升序排列。
实验五数据查询复杂查询
实验五数据查询——复杂查询一、实验目的1.掌握SQLServer查询语句的基本语法2.熟练使用SQL的Select语句对多表进行查询3.熟练掌握并运用SQLServer所提供的函数4.熟练使用SQL语句进行复杂的连接操作二、实验环境(实验的软件、硬件环境)硬件:PC机软件:SQL2000三、实验指导说明请复习相关的查询知识点并完成如下内容。
四、实验内容1.在订单数据库orderDB中,完成如下的查询:(1)用子查询查询员工“张小娟”所做的订单信息。
(2)查询没有订购商品的且在北京地区的客户编号,客户名称和邮政编码,并按邮政编码降序排序。
(3)查询订购了“32M DRAM”商品的订单编号,订货数量和订货单价。
(4)查询与员工编号“E2008005”在同一个部门的员工编号,姓名,性别,所属部门。
(5)查询既订购了P商品,又订购了P商品的客户编号,订单编号和订单金额(6)查询没有订购“52倍速光驱”或“17寸显示器”的客户编号,客户名称。
(7)查询订单金额最高的订单编号,客户姓名,销售员名称和相应的订单金额。
(8)查询订购了“52倍速光驱”商品的订购数量,订购平均价和订购总金额。
(9)查询订购了“52倍速光驱”商品且订货数量界于2~4之间的订单编号,订货数量和订货金额。
(10)在订单主表中查询每个业务员的订单数量(11)统计在业务科工作且在1973年或1967年出生的员工人数和平均工资。
(12)在订单明细表中统计每种商品的销售数量和金额,并按销售金额的升序排序输出。
(13)统计客户号为“C”的客户的订单数,订货总额和平均订货金额(14)统计每个客户的订单数,订货总额和平均订货金额。
(15)查询订单中至少包含3种(含3种)以上商品的订单编号及订购次数,且订购的商品数量在3件(含3件)以上。
(16)查找订购了“32M DRAM”的商品的客户编号,客户名称,订货总数量和订货总金额。
(17)查询每个客户订购的商品编号,商品所属类别,商品数量及订货金额,结果显示客户名称,商品所属类别,商品数量及订货金额,并按客户编号升序和按订货金额的降序排序输出。
实验4:使用子查询实现复杂查询 实验报告
日期
注:请用A4纸书写,不够另附纸。第页,共页
3.根据玩具品牌统计每种品牌的平均价格,输出其中平均价格最高的品牌ID以及平均价格。
4.检索每一类(类别用cCategoryId表示)玩具里价格最高的玩具的名称。
5.检索单价最高的玩具的品牌(品牌为Brand)名称。
6.要求必须用带EXISTS量词的嵌套查询实现,检索和‘David Cooper’住在同一个州的订购者(Shopper)的姓和名。
WHEREToyBrand.cBrandId=t1.cBrandId
GROUPBYcBrandName
HAVINGMAX(mToyRate)>=ALL(
SELECTMAX(mToyRate)
FROMToyst2
GROUPBYcBrandId)
6.
SELECTvFirstName,vLastName
FROMShopperX
(NAME=Employeelog2,
FILENAME='D:\课程\数据库\新建文件夹\Employeelog2.ldf',
SIZE=100MB,MAXSIZE=200,FILEGROWTH=20);
四、实验总结
通过这次试验,我基本掌握了SQL Server的带谓词IN的子查询,带存在量词的子查询,使用比较运算符的子查询,掌握使用限量谓词的子查询,对数据库的认识有了更深刻的理解,值得注意的是,第5题和第11题,第一种方法是我自己写的,第二种是网上的参考资料。5.1是利用多层嵌套查询实现,5.2是利用多表连接盒多层嵌套查询实现;11.1建立的两个临时表,比较麻烦,11.2则利用多层嵌套循环实现,思路一样,但11.2比较简明。这次实验对我以后的学习提供了很大的帮助,让我熟悉了数据库实现简单查询。
实验四 复杂查询
实验四复杂查询一、实验目的掌握两个表以上的连接查询的应用,包括嵌套查询。
二、实验内容1、同一数据库中的多表查询(1)查询比“林红”年纪大的男同学信息。
(2)查询所以学生的选课信息、包括学号、姓名、课号、课程名、成绩。
(3)查询已选课学生的学号、姓名、课程名、成绩。
(4)查询选修了“C语言程序设计”的学生的学号和姓名。
(5)查询与“张虹”在同一个班级的学生学号、姓名、家庭住址。
(6) 查询其他班级中比“051”班所有学生年龄大的学生的学号、姓名。
(7)(选做)查询选修了全部课程的学生姓名。
(8)(选做)查询至少选修了学生“20110002”选修的全部课程的学生的学号、姓名。
(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表中的记录。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五复杂查询
1 实验目的与要求
(1) 熟练掌握SQL语句的使用。
(2) 熟练使用SQL语句进行连接操作。
2 实验内容
(1) 在订单明细表中查询订单金额最高的订单。
实验脚本:
实验结果
图-1 (1)查询结果
(2) 找出至少被订购3次的商品编号、订单编号、订货数量和订货金额,并按订货数量的降序排序输出。
实验脚本:
实验结果
图-2 (2)查询结果
(3) 查找销售总额少于5000元的销售员编号、姓名和销售额。
实验脚本:
实验结果
图-3 (3)查询结果
(4) 找出目前业绩未超过5000元的员工,并按销售业绩的降序排序输出。
实验结果
图-4 (4)查询结果
(5) 查询订购的商品数量没有超过10个的客户编号和客户名称。
实验结果
图-5 (5)查询结果
(6) 查找订货金额最大的客户名称和总货款。
实验脚本:
实验结果:
图-6 (6)查询结果
(7) 查找至少订购了3种商品的客户编号、客户名称、商品编号、商品名称、数量和金额。
实验结果:
图-7 (7)查询结果
(8) 找出目前销售业绩超过4000元的业务员编号及销售业绩,并按销售业绩从大到小排序。
实验脚本:
实验结果:
图-8 (8)查询结果
(9) 求每位客户订购的每种商品的总数量及平均单价,并按客户号、商品号从小到大排列。
实验结果:
图-9 (9)查询结果
(10) 查询业绩最好的的业务员号、业务员名及其总销售金额。
实验脚本:
实验结果:
图-10 (10)查询结果
(11) 查询订购的商品至少包含了订单“200803010001”中所订购商品的订单。
实验结果:
图-11 (11)查询结果
(12) 查询总订购金额超过“C20070002”客户的总订购金额的客户号、客户名及其住址。
图-12 (12)查询结果
(13) 查询总销售金额最高的销售员编号、订单编号、订单日期和订单金额。
实验脚本:
图-13 (13)查询结果
(14) 用存在量词查找没有订货记录的客户名称。
实验脚本:
图-14 (14)查询结果
(15) 查询既订购了“52倍速光驱”商品,又订购了“17寸显示器”商品的客户编号、订单编号和订单金额。
实验脚本:
实验结果:未查找到与要求符合的信息。
图-15 (15)查询结果为空
(16) 求每位客户订购的每种商品的总数量及平均单价,并按客户号、商品号从小到大排列。
实验结果:
图-16 (16)查询结果
(17) 实验问题:
①存在量词与集合运算IN、连接运算和全称量词之间的关系如何?它们可以互相替换吗?给出你的理由。
答:存在量词EXISTS可以用连接运算或集合运算IN来实现,而SQL中没有全称量词,只能用存在量词和取非运算来实现。
②请写出例2.51的执行过程。
1)首先取将OrderMaster表和OrderDetail表建立自然连接;
2)执行子查询,查询至少销售了5种商品的销售员编号;
3)将结果结合中的元组作为一个新关系输出。
③存在量词一般用在相关子查询中,请分别给出存在量词用在相关子查询和非相关子查询的查询例子。
相关子查询:
SELECT studentName,classNo
FROM Student x
WHERE EXISTS
(SELECT * FROM Score a,Course b
WHERE a.courseNo=b.courseNo
AND a.studentNo=x.studentNo AND courseName=’操作系统’)非相关子查询:
SELECT studentNo,classNo
FROM Student
WHERE NOT EXISTS
(SELECT *
FROM Student
WHERE studentName=‘王红’)。