实验4:使用子查询实现复杂查询 实验报告

合集下载

数据库实验简单和复杂的单表查询

数据库实验简单和复杂的单表查询

实验三实验名称:简单和复杂的单表查询一、实验目的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:使用子查询实现复杂查询 实验报告

实验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比较简明。这次实验对我以后的学习提供了很大的帮助,让我熟悉了数据库实现简单查询。

数据库实验报告 复杂数据查询

数据库实验报告  复杂数据查询
六、调试和测试结果:
七、教师评语与成绩评定:
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表中每种商品的订购金额总和,并且依据销售金额由大到小排序输出。

子查询实验报告

子查询实验报告

实验报告———第三章实验一、实验目的1、理解嵌套子查询2、理解公用表达式3、会使用排序函数4、掌握集合运算二、实验内容1、从一个查询结果中继续查找2、编写代码,选择分数大于90分的所有学生3、列出每个学员的信息,并且列出这个学员最高的分数4、在列出所有学生信息的同时,列出学生成绩总合三、实验步骤A、实验基础搭建:1、创建数据库StuDBUSE masterGOIF EXISTS(SELECT*FROM SYSDATABASES WHERE NAME='Student')BEGINDROP DATABASE StudentENDCREATE DATABASE StudentON PRIMARY(NAME='Student_data',FILENAME='H:\DATA\Student_data.mdf',SIZE= 3MB,MAXSIZE= 5MB,FILEGROWTH= 1MB)LOG ON(NAME='Student_log',FILENAME='H:\DATA\Student_log.ldf',SIZE= 3MB,MAXSIZE= 3MB,FILEGROWTH= 10%)GO2、创建学生信息表StuInfoUSE StudentGOIF EXISTS(SELECT*FROM SYSOBJECTS WHERE NAME='StuInfo') BEGINDROP TABLE StuInfoENDCREATE TABLE StuInfo(StuID INT IDENTITY(1,1)PRIMARY KEY NOT NULL,StuName VARCHAR(10)NOT NULL,StuSex CHAR(2)NOT NULL,ClassID CHAR(2)NOT NULL)GO3、创建学生成绩表StuMarksUSE StudentGOIF EXISTS(SELECT*FROM SYSOBJECTS WHERE NAME='StuMarks') BEGINDROP TABLE StuMarksENDCREATE TABLE StuMarks(ExamNO INT NOT NULL,StuID INT REFERENCES StuInfo(StuID),Subject VARCHAR(10)NOT NULL,Score INT NOT NULL)GO4、插入数据USE StudentGOINSERT INTO StuInfo VALUES('李四','男',1)INSERT INTO StuInfo VALUES('钱七','女',2)INSERT INTO StuInfo VALUES('王五','男',1)INSERT INTO StuInfo VALUES('张三','女',1)INSERT INTO StuInfo VALUES('赵六','女',2)INSERT INTO StuMarks VALUES(1,1,'HTML',85)INSERT INTO StuMarks VALUES(2,1,'Java',80)INSERT INTO StuMarks VALUES(3,1,'SQL',82)INSERT INTO StuMarks VALUES(4,2,'HTML',70)INSERT INTO StuMarks VALUES(5,2,'Java',81)INSERT INTO StuMarks VALUES(6,2,'SQL',60)INSERT INTO StuMarks VALUES(7,3,'HTML',70)INSERT INTO StuMarks VALUES(8,3,'Java',90)INSERT INTO StuMarks VALUES(9,3,'SQL',85)INSERT INTO StuMarks VALUES(10,4,'HTML',61)INSERT INTO StuMarks VALUES(11,4,'Java',68)INSERT INTO StuMarks VALUES(12,3,'HTML',90)INSERT INTO StuMarks VALUES(13,4,'Java',81)INSERT INTO StuMarks VALUES(14,4,'SQL',65)B、实验详细过程及代码练习一:从一个查询结果中继续查找--查询分数大于的记录SELECT*FROM StuMarks WHERE Score> 80--查询学员编号为的学员SELECT*FROM StuMarks WHERE StuID=2--3把第二个查询中的表换成第一个查询,并给这个查询一个别名SELECT*FROM (SELECT*FROM StuMarks WHERE Score> 80)AS S1 WHERE StuID= 2实验结果:练习二:选择有分数大于分的所有学生USE StudentGO--1 查询分数大等于分的所有的学生编号SELECT*FROM StuMarks WHERE Score>=90--2 查询学生信息SELECT*FROM StuInfo--3然后给这个查询添加一个条件,学员编号是否存在于第一查询中SELECT*FROM StuInfoWHERE StuID IN(SELECT StuID FROM StuMarksWHERE Score>= 90)--4 不如子查询直观的写法SELECT distinct StuInfo.*FROM StuInfo,StuMarksWHERE StuInfo.StuID=StuMarks.StuIDANDStuMarks.Score>= 90实验结果:小结:开始自己的写法--查询成绩大于等于分的所有的信息SELECT StuInfo.StuID,StuName,StuSex,Subject,ScoreFROM StuInfo,StuMarksWHERE StuInfo.StuID=StuMarks.StuIDANDScore>= 90结果:练习三:选择有分数大于分的所有学生USE StudentGO--1 首先查询学员的最高分SELECT StuID,MAX(Score) AS MaxMarks FROM StuMarks GROUP BY StuID --2 查询所有学员信息并在最后一列添加MaxMarks,这一列的-- 值将上一个表中跟当前行的StuID一致的结果填充过来SELECT*,(SELECT MAX(Score)FROM StuMarksWHERE StuInfo.StuID=StuMarks.StuID GROUP BY StuID)AS MaxMarks FROM StuInfo实验结果练习四:在列出所有学生信息的同时,列出学生成绩的总和USE StudentGOSELECT b.*,a.Subject,a.Score FROM StuMarks AS a,StuInfo AS b WHERE a.StuID=b.StuID--聚合技术COMPUTE SUM(Score)实验结果习题--1,查询成绩小于分的学员编号SELECT DISTINCT StuID FROM StuMarks WHERE Score< 80--2,以查询的结果作条件,查询成绩小于分的学员信息SELECT*FROM StuInfoWHERE StuID IN(SELECT StuID FROM StuMarks WHERE Score< 80)-------------------------------------------------------------- --习题,查询没有考试学员的信息----------------------------------------------------------------1,查询考试的学员的编号SELECT StuID FROM StuMarks--2,查询没有考试学员的信息--分析:学号在信息表中有在成绩表中没有的即没考试SELECT*FROM StuInfoWHERE StuInfo.StuID NOT IN(SELECT StuID FROM StuMarks)四、实验总结实验一中,相当于把一个查询出来在内存中的表当作查询的表。

实验四SQL(三)SQL进行复杂查询实验报告

实验四SQL(三)SQL进行复杂查询实验报告

实验四SQL(三)SQL进行复杂查询实验报告实验四SQL(三)SQL进行复杂查询实验报告实验目的:1. 熟练掌握各种连接查询及其连接条件。

2. 掌握各种嵌套查询的使用。

3. 掌握复杂的集合查询。

实验内容:1.实验一中的数据为基础2.对各表中的数据进行不同条件的连接查询和嵌套查询;1)查询每个学生及其选课情况;2)查询每门课的间接先修课3)将STUDENT,SC进行右连接4)查询有不及格的学生姓名和所在系5)查询所有成绩为优秀(大于90分)的学生姓名6)查询既选修了2号课程又选修了3号课程的学生姓名、学号;7)查询和刘晨同一年龄的学生8)选修了课程名为“数据库”的学生姓名和年龄9)查询其他系比IS系任一学生年龄小的学生名单10)查询其他系中比IS系所有学生年龄都小的学生名单11)查询选修了全部课程的学生姓名12)查询计算机系学生及其性别是男的学生13)查询选修课程1的学生集合和选修2号课程学生集合的差集14)查询李丽同学不学的课程的课程号15)查询选修了3号课程的学生平均年龄16)求每门课程学生的平均成绩17)统计每门课程的学生选修人数(超过3人的才统计)。

要求输出课程号和选修人数,结果按人数降序排列,若人数相同,按课程号升序排列18)查询学号比刘晨大,而年龄比他小的学生姓名。

19)求年龄大于女同学平均年龄的男同学姓名和年龄20)求年龄大于所有女同学年龄的男同学姓名和年龄21)查询至少选修了95002选修的全部课程的学生号码22)查询95001和95002两个学生都选修的课程的信息实验步骤与过程:1.创建学生表student、课程表course和选课表SC,可以用使用实验一中已经建立的表和数据。

2.并输入数据,设置主键。

3.建立索引及三表之间关系。

4.按照SQL语句格式及题目要求输入语句进行不同条件的连接查询(SELECTFROM和WHERE等查询的语句)和嵌套查询:1、查询每个学生及其选课情况;2、查询每门课的间接先修课;3、将STUDENT,SC进行右连接;4、查询有不及格的学生姓名和所在系;5、查询所有成绩为优秀(大于90分)的学生姓名;6、查询既选修了2号课程又选修了3号课程的学生姓名、学号;7、查询和刘晨同一年龄的学生;8、选修了课程名为“数据库”的学生姓名和年龄;9、查询其他系比IS系任一学生年龄小的学生名单;10、查询其他系中比IS系所有学生年龄都小的学生名单;11、查询选修了全部课程的学生姓名;12、查询计算机系学生及其性别是男的学生;13、查询选修课程1的学生集合和选修2号课程学生集合的差集;14、查询李丽同学不学的课程的课程号;15、查询选修了3号课程的学生平均年龄;16、求每门课程学生的平均成绩;17、统计每门课程的学生选修人数(超过3人的才统计)。

数据库的复杂查询

数据库的复杂查询

实验三数据库的复杂查询一、实验学时2学时二、实验目的(1)熟练掌握复杂查询的select语句。

(2)熟练掌握连接查询方法。

(3)熟练掌握嵌套查询方法。

三、实验要求(1)硬件设备:奔腾II或奔腾II以上计算机,局域网。

(2)软件环境:WINDOWS 9X/NT、WINDOWS SERVER、WINDOWS XP、WINDOWS 7、SQL SERVER 2000/2005/2008中文版企业版或标准版。

(3)实验课前预习,课后及时完成实验内容。

(4)实验过程及记录按题目格式要求填写代码清单。

四、实验内容(一)复杂查询1.查询比“王敏”年纪大的男学生信息。

T-SQL语句:select*from Studentwhere Ssex='男'and Sage> (select Sage from Student where Sname='王敏')2.检索所有学生的选课信息。

(提示:使用外连接)T-SQL语句:select Student.Sno,Sname,Cno,Gradefrom Student left outer join SC on(Student.Sno=SC.Sno);3.查询已选课学生的学号、姓名、课程名、成绩。

(提示:连接查询)T-SQL语句:select Student.Sno,Sname,Cname,Gradefrom Student,SC,Coursewhere Student.Sno=SC.Sno and o=o4.查询选修了“信息系统”的学生的学号和姓名。

T-SQL语句:select SC.Sno,Snamefrom SC,Studentwhere Student.Sno=SC.Sno and Cno in (select Cnofrom Coursewhere Cname='信息系统')5.查询与“刘晨”在同一个系的学生学号、姓名、性别。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
8.
SELECTCOUNT(cShopperId)ASSumShopper
FROMShopper
WHEREvCreditCardTypeIN(
SELECTvCreditCardType
FROMShopper
WHEREvFirstName='Lisa'
ANDvLastName='Lee')
9.
SELECTvFirstname,vLastName
11.检索曾订购过玩具表中所有玩具的订购者名单。
12.创建数据库Employee,其中包含一个主文件,一个辅文件,两个日志文件组成。
三、实验过程
1.
SELECT*
INTO#TexasShopper
FROMShopper
WHEREcState='Texas'
2.
SELECTvFirstName+' '+vLastNameASClientName,cCity
WHEREToyBrand.cBrandId=t1.cBrandId
GROUPBYcBrandName
HAVINGMAX(mToyRate)>=ALL(
SELECTMAX(mToyRate)
FROMToyst2
GROUPBYcBrandId)
6.
SELECTvFirstName,vLastName
FROMShopperX
FROMShopper
WHEREdExpiryDate<='2001-5-31'ANDdExpiryDate>='2001-5-1'
3.
SELECTcBrandId,AVG(mToyRate)ASAvgToyRate
FROMToys
GROUPBYcBrandId
HAVINGAVG(mToyRate)>=ALL(
(NAME=Employee4,
FILENAME='D:\课程\数据库\新建文件夹\Employee4.ndf')
LOGON
(NAME=Employlog1,
FILENAME='D:\课程\数据库\新建文件夹\Employeelog1.ldf',
SIZE=100MB,MAXSIZE=200,FILEGROWTH=20),
SELECTcOrderNo,Toys.cToyId
INTO#NEW1
FROMOrderDetail,Toys
WHEREOrderDetail.cToyId=Toys.cToyId
SELECTcOrderNo,COUNT(cToyId)ASSumToyId
INTO#NEW2
FROM#NEW1
GROUPBYcOrderNo
二、实验内容
完成在,GlobalToyz数据库基础上的操作,按要求完成给出的下列题目,要求写出相应数据库的T-SQL语句。
1.将’Texas’州的订购者(Shopper)信息拷贝到一张全局临时表中(表名自定义)。
2.查询截止日期(dExpiryDate)在2001年5月的订购者(Shopper)的姓名和所在城市。
SELECTAVG(mToyRate)
FROMToys
GROUPBYcBrandId)
4.--自身连接
SELECTvToyName
FROMToysX
WHEREmToyRate=(
SELECTMAX(mToyRate)
FROMToysY
ategoryId=ategoryId)
7.检索订购玩具数量在3个或3个以上的订单号。(Orderdetail表的siQty表示数量)
8.检索和‘Lisa Lee’使用同一种类型的信用卡的订购者的人数。
9.检索订购了玩具品牌为‘Largo’的订购者的姓和名。(多层嵌套查询实现)
10.列出价格不低于所有品牌ID为‘005’的玩具(要求显示玩具ID和名称)。
SIZE=100MB,
MAXSIZE=200,
FILEGROWTH=20),
(NAME=Employee2,
FILENAME='D:\课程\数据库\新建文件夹\Employee2.ndf')AME='D:\课程\数据库\新建文件夹\Employee3.ndf'),
FROMTOYS))
11.2
SELECTvFirstName,vLastName
FROMShopper
WHEREcShopperIdIN(
SELECTcShopperId
FROMOrders
WHEREcOrderNo=(
SELECTcOrderNo
FROMOrderDetail
GROUPBYcOrderNo
3.根据玩具品牌统计每种品牌的平均价格,输出其中平均价格最高的品牌ID以及平均价格。
4.检索每一类(类别用cCategoryId表示)玩具里价格最高的玩具的名称。
5.检索单价最高的玩具的品牌(品牌为Brand)名称。
6.要求必须用带EXISTS量词的嵌套查询实现,检索和‘David Cooper’住在同一个州的订购者(Shopper)的姓和名。
广东海洋大学学生实验报告书
实验名称
实验四:使用子查询
课程名称
数据库原理与应用
成绩
学院(系)
专业
班级
学生姓名
学号
实验地点
实验日期
一、实验目的
1.掌握带谓词IN的子查询;
2.掌握带存在量词的子查询;
3.掌握使用比较运算符的子查询;
4.掌握使用限量谓词的子查询;
5.综合运用所学知识实现查询;
6.掌握SELECT INTO语句;
FROMShopper
WHEREcShopperIdIN(
SELECTcShopperId
FROMOrders
WHEREcOrderNoIN(
SELECTcOrderNo
FROMOrderDetail
WHEREcToyIdIN(
SELECTcToyId
FROMToys
WHEREcBrandIdIN(
指导教师
日期
注:请用A4纸书写,不够另附纸。第页,共页
HAVINGCOUNT(DISTINCTcToyId)=(
SELECTCOUNT(DISTINCTcToyId)
FROMToys)))
12.
CREATEDATABASEEmployee
ON
PRIMARY
(NAME=Employee1,
FILENAME='D:\课程\数据库\新建文件夹\Emplpyee1.mdf',
SELECTcBrandId
FROMToyBrand
WHEREcBrandName='Largo'))))
10.
SELECTcToyId,vToyName
FROMToys
WHEREmToyRate>=(
SELECTMAX(mToyRate)
FROMToys
WHEREcBrandId='005')
11.1
(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比较简明。这次实验对我以后的学习提供了很大的帮助,让我熟悉了数据库实现简单查询。
WHEREEXISTS(
SELECT*
FROMShopperY
WHEREY.vFirstName='David'
ANDY.vLastName='Cooper'ANDX.cState=Y.cState)
7.
SELECTcOrderNo
FROMOrderDetail
GROUPBYcOrderNo
HAVINGSUM(siQty)>='3'
SELECTvFirstName,vLastName
FROMShopper
WHEREcShopperIdIN(
SELECTcShopperId
FROMOrders,#NEW2
WHEREOrders.cOrderNo=#NEW2.cOrderNo
AND#NEW2.SumToyId=(
SELECTCOUNT(DISTINCTcToyId)
5.1
SELECTcBrandName
FROMToyBrand
WHEREcBrandIdIN(
SELECTcBrandId
FROMToys
WHEREmToyRateIN(
SELECTMAX(mToyRate)
FROMToys))
5.2
SELECTcBrandName
FROMToyst1,ToyBrand
相关文档
最新文档