数据库,SQL查询题目

数据库,SQL查询题目,第1张

--基础题

--1.查询读者最喜爱的3种图书分类号,即借阅表中出现最多的3类图书分类号

SELECT TOP 3 [分类号] FROM [图书] JOIN [借阅] ON [图书].[图书编号]=[借阅].[图书编号]

GROUP BY [分类号] ORDER BY COUNT(*) DESC

--附加题

--1.查询小于20岁的读者最喜欢的3类图书

SELECT TOP 3 [书名] FROM [读者] JOIN [借阅] ON [读者].[借书证号]=[借阅].[借书证号]

JOIN [图书] ON [图书].[图书编号]=[借阅].[图书编号]

WHERE [年龄]<20 GROUP BY [书名] ORDER BY COUNT(*) DESC

--2.查询至少借阅了 宁静 所借图书(书名相同)的人的姓名

SELECT [姓名] FROM [读者] WHERE [姓名]<>'宁静' AND [借书证号] IN(SELECT [借书证号] FROM [借阅]

WHERE [图书编号] IN(SELECT [图书编号] FROM [读者] JOIN [借阅] ON [读者].[借书证号]=[借阅].[借书证号] WHERE [姓名]='宁静'))

--3.查询借阅了多于3本书且每本书价均高于60的读者的借书证号

SELECT [借书证号]

FROM [借阅] JOIN [图书] ON [图书].[图书编号]=[借阅].[图书编号]

WHERE [单价]>60 GROUP BY [借书证号] HAVING COUNT(*)>3

GO

--4.假定读者表中所有人姓名均不多于4个汉字,请建立一个查询语句,要求根据名字中任意1个或两个或3个或4个汉字,即可找到该读者的详细信息(即完全模糊查询)

CREATE PROCEDURE CX

@XM VARCHAR(8) AS

IF LEN(@XM)=1 SELECT * FROM [读者] WHERE @XM LIKE '['+RTRIM([姓名])+']'

ELSE IF LEN(@XM)=2 SELECT * FROM [读者] WHERE LEFT(@XM,1) LIKE '['+RTRIM([姓名])+']' AND RIGHT(@XM,1) LIKE '['+RTRIM([姓名])+']'

ELSE IF LEN(@XM)=3 SELECT * FROM [读者] WHERE LEFT(@XM,1) LIKE '['+RTRIM([姓名])+']' AND SUBSTRING(@XM,2,1) LIKE '['+RTRIM([姓名])+']' AND RIGHT(@XM,1) LIKE '['+RTRIM([姓名])+']'

ELSE IF LEN(@XM)=4 SELECT * FROM [读者] WHERE LEFT(@XM,1) LIKE '['+RTRIM([姓名])+']' AND SUBSTRING(@XM,2,1) LIKE '['+RTRIM([姓名])+']' AND SUBSTRING(@XM,3,1) LIKE '['+RTRIM([姓名])+']' AND RIGHT(@XM,1) LIKE '['+RTRIM([姓名])+']'

GO

[例]设教学数据库中有3个关系:

学生关系S(SNO,SNAME,AGE,SEX)

学习关系SC(SNO,CNO,GRADE)

课程关系C(CNO,CNAME,TEACHER)

下面用关系代数表达式表达每个查询语句。

(1) 检索学习课程号为C2的学生学号与成绩。

πSNO,GRADE(σ CNO='C2'(SC))

(2) 检索学习课程号为C2的学生学号与姓名

πSNO,SNAME(σ CNO='C2'(SSC))

由于这个查询涉及到两个关系S和SC,因此先对这两个关系进行自然连接,同一位学生的有关的信息,然后再执行选择投影 *** 作。

此查询亦可等价地写成:

πSNO,SNAME(S)(πSNO(σ CNO='C2'(SC)))

这个表达式中自然连接的右分量为"学了C2课的学生学号的集合"。这个表达式比前一个表达式优化,执行起来要省时间,省空间。

(3)检索选修课程名为MATHS的学生学号与姓名。

πSNO,SANME(σ CNAME='MATHS'(SSCC))

(4)检索选修课程号为C2或C4的学生学号。

πSNO(σ CNO='C2'∨CNO='C4'(SC))

(5) 检索至少选修课程号为C2或C4的学生学号。

π1(σ1=4∧2='C2'∧5='C4'(SC×SC))

这里(SC×SC)表示关系SC自身相乘的乘积 *** 作,其中数字1,2,4,5都为它的结果关系中的属性序号。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10773593.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存