实验03 多值查询和嵌套查询

–【实验内容】

–(3)在购买了歌手刘欢专辑的客户中查询购买数量最多的客户。
–参考代码1:用单值子查询。
SELECT UserName
FROM Orders
WHERE OrderID IN(
SELECT OrderID
FROM Album,Sale
WHERE Album.AlbumID=Sale.AlbumID AND AlbumSinger=’刘欢’
AND Quantity >= All(SELECT MAX(Quantity)
FROM Sale
WHERE AlbumID IN
(SELECT AlbumID
FROM Album
WHERE AlbumSinger=’刘欢’)))

–参考代码2:用多值子查询。
SELECT UserName
FROM Orders
WHERE OrderID IN(
SELECT OrderID
FROM Album,Sale
WHERE Album.AlbumID=Sale.AlbumID AND AlbumSinger=’刘欢’
AND Quantity>=ALL(SELECT Quantity
FROM Sale,Album
WHERE Album.AlbumID=Sale.AlbumID
AND AlbumSinger=’刘欢’))

–(4)查找被所有用户收藏的歌曲。
–参考代码1:用相关嵌套查询。
SELECT *
FROM Songs
WHERE NOT EXISTS
(SELECT *
FROM Users
WHERE NOT EXISTS
(SELECT *
FROM Collections
WHERE UserName=Users.UserName AND SongID=Songs.SongID))

–参考代码2:用不相关嵌套查询。
SELECT *
FROM Songs
WHERE SongID IN (SELECT SongID
FROM Collections
GROUP BY SongID
HAVING COUNT() = (SELECT COUNT() FROM Users))

–(3)查找一首歌曲都没有收藏的用户。
–参考代码1:用外连接查询。
INSERT INTO Users VALUES(‘李峰’,’888’,’男’,’李峰’,’无可奉告’,’北京市 西城区’,’100033’,’13577788811’,’liFeng@cuc.edu.cn’,’2008-01-01’,0.00)

–参考代码2:用相关嵌套查询。
SELECT *
FROM Users
WHERE NOT EXISTS
(SELECT *
FROM Songs
WHERE EXISTS
(SELECT *
FROM Collections
WHERE UserName=Users.UserName AND SongID=Songs.SongID))

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于实验一建立的 “图书读者数据库”(Book_Reader_DB)和实验二输入的部分虚拟数据,在SQL Server 2000查询分析器的Transact-SQL语句输入区输入Transact-SQL语句,然后点击“查询”菜单中的“执行”菜单项(或用F5快捷键),执行输入区的Transact-SQL语句。 1、集合查询实验 在“图书读者数据库”(Book_Reader_DB)中,用集合查询的方法完成下列查询任务: ① 查询计算机类和机械工业出版社出版的图书; ② 查询清华大学出版社出版的书中与机械工业出版社出版的所有不相同的图书号与书名; ③ 查询清华大学出版社出版的书与环境类图书的交集; ④ 查询借阅过清华大学出版社出版的“数据结构” 图书和西安电子工业出版社出版的“操作系统”图书的读者号的并集; 2、统计查询实验 在“图书读者数据库”(Book_Reader_DB)中,用分组、统计与计算的方法完成下列查询任务: ① 查找这样的图书类别:要求类别中最高的图书定价不低于全部按类别分组的图书平均定价的2倍; ② 求机械工业出版社出版的各类图书的平均定价,用Group by来实现; ③ 列出计算机类图书的书号、名称及价格,最后求出册数和总价格; ④ 列出计算机类图书的书号、名称及价格,并求出各出版社这类书的总价格,最后求出全部册数和总价格; ⑤ 查询订购图书最多的出版社及订购图书的数量; ⑥ 查询2000年以后购买的图书总册数; ⑦ 计算各类图书的总册数; ⑧ 查询每本图书的平均借阅次数; 上述每项实验内容相应的实验步骤必须进行详细的记录,并将其整理后写在实验报告中。
一、实验目的 1、掌握SQL Server查询分析器的使用方法,加深对SQL和Transact-SQL语言查询语句的理解。 2、熟练掌握数据查询中的分组、统计、计算与集合查询方法。 二、实验环境: Microsoft Windows 2000操作系统,Microsoft SQL Server 2000数据库管理系统标准版或企业版。 三、实验内容、步骤、结果和实验过程中出现的问题: 1>内容: 基于实验一建立的 “图书读者数据库”(Book_Reader_DB)和实验二输入的部分虚拟数据,在SQL Server 2000查询分析器的Transact-SQL语句输入区输入Transact-SQL语句,然后点击“查询”菜单中的“执行”菜单项(或用F5快捷键),执行输入区的Transact-SQL语句。 1、集合查询实验 在“图书读者数据库”(Book_Reader_DB)中,用集合查询的方法完成下列查询任务: ① 查询计算机类和机械工业出版社出版的图书; ② 查询清华大学出版社出版的书中与机械工业出版社出版的所有不相同的图书号与书名; ③ 查询清华大学出版社出版的书与环境类图书的交集; ④ 查询借阅过清华大学出版社出版的“数据结构” 图书和西安电子工业出版社出版的“操作系统”图书的读者号的并集; 2、统计查询实验 在“图书读者数据库”(Book_Reader_DB)中,用分组、统计与计算的方法完成下列查询任务: ① 查找这样的图书类别:要求类别中最高的图书定价不低于全部按类别分组的图书平均定价的2倍; ② 求机械工业出版社出版的各类图书的平均定价,用Group by来实现; ③ 列出计算机类图书的书号、名称及价格,最后求出册数和总价格; ④ 列出计算机类图书的书号、名称及价格,并求出各出版社这类书的总价格,最后求出全部册数和总价格; ⑤ 查询订购图书最多的出版社及订购图书的数量; ⑥ 查询2000年以后购买的图书总册数; ⑦ 计算各类图书的总册数; ⑧ 查询每本图书的平均借阅次数;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值