SQL语言习题及答案(好)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
15
检索居住在Dallas的所有客户都订购过的商品编号 6.检索居住在 的所有客户都订购过的商品编号 关系代数 Select pid from Products P where not exist ( select * from Customers C where C.city = ‘Dallas’ and C.cid not in ( select O.cid from Orders O where O.pid = P.pid ) )
关系代数
答案 Select aid, percent From Agents A Where not exist ( select * from Customers C where C.city = ‘Duluth’ and C.cid not in ( select O.cid from Orders O where O.aid = A.aid)) Order by percent desc
19
检索符合下述条件的商品的编号: 10.检索符合下述条件的商品的编号:至少有一个客户通 过与该客户位于同一个城市的经销商订购过该商品
关系代数
答案 Select O.pid from Orders O, Customers C, Agents A Where O.cid = C.cid and O.aid = A.aid and C.city = A.city
4
(第一大题) 第一大题) 4.检索职工 检索职工Smith所参与的或者主管部门为该职 检索职工 所参与的或者主管部门为该职 工所在部门的项目的编号
关系代数 ( select p From E, W where ename = ‘Smith’ and E.e# = W.e# ) UNION ( select p# from E, P where ename = ‘Smith’ and E.d# = P.d# )
13
4.检索为所有客户订购过同一种商品的经销商的编号
关系代数
Select O1.aid from Orders O1, Customers C1 Where O1.cid = C1.cid and not exist ( select * from Customers C2 where C2.cid not in ( select O2.cid from Orders O2 where O2.aid = O1.aid and O2.pid = O1.pid))
2.检索位于 检索位于Stafford的每个项目的编号、主管部门的 的每个项目的编号、 检索位于 的每个项目的编号 编号及其部门负责人的姓名和家庭地址
关系代数
Select P.p#, P.d#, ename, addr from P, D, E where P.d# = D.d# and D.mgre# = E.e# and city=’ Stafford
12
检索没有为居住在Duluth的任何客户订购过任何商品 3.检索没有为居住在 的任何客户订购过任何商品 的经销商的编号
关系代数
Select aid from agents where aid not in ( select aid from Customers C, Orders O where C.cid = O.cid and C.city = ‘Duluth’)
答案2: 答案 :
6
(第一大题) 第一大题) 6.检索至少有一个家属且具有管理员身份的职工 检索至少有一个家属且具有管理员身份的职工 的姓名
关系代数 答案1: 答案 : select E1.ename from E E1, E E2, Depend D1 where E1.e# = D1.e# and E1.e# = E2.se# select E.ename from E , Depend where E.e# = Depend.e# and E.e# in (select E.se# from E) 答案2: 答案 :
10
(第二大题) 第二大题)
检索每个经销商销售每一种产品的总数量(结果列有 结果列有: 1.检索每个经销商销售每一种产品的总数量 结果列有: 经销商的编号,产品的编号,销售总数量 经销商的编号,产品的编号,销售总数量)
关系代数
Select aid, pid, sum(qty) from Orders group by aid, pid
3
(第一大题) 第一大题) 3.检索参与了 号部门的所有项目的职工的姓名 检索参与了5号部门的所有项目的职工的姓名 检索参与了 关系代数
select ename from E Where not exist ( Select * from P Where P.d# = 5 and p# not in ( Select p# from W Where W.e# = E.e# ) )
关系代数
答案 Select O1.cid, sum(O1.dollars) From Orders O1 Where O1.cid not in ( select O2.cid from Orders O2 where O2.aid <> ‘a04’ ) Group by O1.cid
18
检索为居住在Duluth的所有客户订购过商品的经销商 9.检索为居住在 的所有客户订购过商品的经销商 的编号及其佣金百分比, 的编号及其佣金百分比,并按照佣金百分比的降序输 出查询结果
1
(第一大题) 第一大题) 1.检索部门 检索部门Research的所有职工的姓名和家庭地址 检索部门 的所有职工的姓名和家庭地址
关系代数
select ename, addr from E, D where D.d# = E.d# and dname = ’Research’
2
(第一大题) 第一大题)
16
7.检索享有最高佣金百分比的经销商的编号 关系代数
Select aid from Agents where percent IN ( select max(A1.percent) from Agents A1 )
17
检索仅仅通过a04号经销商订购过商品的客户编号 号经销商订购过商品的客户编号, 8.检索仅仅通过 号经销商订购过商品的客户编号,并 给出每个客户的订购总金额
来自百度文库11
检索符合下述要求的客户的编号: 2.检索符合下述要求的客户的编号:在该客户订购过的 所有商品中, 所有商品中,每一种商品的每笔订单的订购数量均达 到或超过300 到或超过 关系代数 Select T.cid From ( select cid, pid, avg(qty) as q_avg from Orders group by cid, pid ) T Group by T.cid Having min(T.q_avg) >= 300
Select ename from E where salary IN (select max(salary) From E )
9
(第二大题) 第二大题)
顾客Customers (编号 编号cid, 姓名 姓名cname, 城市 城市city, 顾客 编号 销售折扣discnt) 销售折扣 经销商Agents (编号 编号aid, 名称 名称aname, 城市 城市city, 佣金百分 经销商 编号 比percent) 商品Products (编号 商品 编号pid, 商品名pname, 城市city, 库存数 商品名 城市 编号 单价price) 量quantity, 单价 订单Orders (编号 编号ordno, 订购月份 订购月份month, 顾客编号 顾客编号cid, 订单 编号 经销商编号aid, 商品编号 商品编号pid, 订购数量 订购数量qty, 购买金额 经销商编号 dollars) 请用SQL语言来表示下述数据操作要求。 语言来表示下述数据操作要求。 请用 语言来表示下述数据操作要求
14
检索仅通过a03和 两个经销商订购过商品的客户编 5.检索仅通过 和a05两个经销商订购过商品的客户编 号 关系代数 答案 Select O1.cid from Orders O1 where O1.cid not in ( select O2.cid from Orders O2 where O2.aid <> ‘a03’ and O2.aid <> ‘a05’ )
20
(第一大题) 第一大题)
职工 E(ename,e#,bdate,addr,salary,se#,d#) ( , , , , , , ) 部门 D(dname,d#,部门负责人的工号 ( , ,部门负责人的工号mgre#) ) 项目 P(pname,p#,所在城市city,主管部门编号d#) ( , ,所在城市 ,主管部门编号 ) 工作 W(职工工号 ,项目编号 ,工作时间 (职工工号e#,项目编号p#,工作时间hours) ) 职工家属Depend(e#,家属的姓名 ( ,家属的姓名name,家属的性别 ) 职工家属 ,家属的性别sex)
5
(第一大题) 第一大题) 5.检索拥有两个或两个以上家属的职工的姓名 检索拥有两个或两个以上家属的职工的姓名
关系代数(两种写法) 关系代数 两种写法) 两种写法 答案1: 答案 : Select ename from E, Depend D1, Depend D2 Where E.e# = D1.e# and D1.e# = D2.e# and D1.name <> D2.name select ename from E, Depend Where E.e# = Depend.e# group by E.e#, E.ename having Count(*) >= 2
7
(第一大题) 第一大题) 7.检索不带家属的职工的姓名 检索不带家属的职工的姓名 关系代数
答案
select ename from E where e# NOT IN ( select e# from Depend )
8
(第一大题) 第一大题) 8.检索工资收入最高的职工的姓名 检索工资收入最高的职工的姓名 关系代数