在当前数据库中写出实现下列操作的丁-SQL语句。(若某题有多种写+法,按题目要+
1个回答
关注
展开全部
SELECT 出版社, AVG(定价) AS 平均定价
FROM 图书
GROUP BY 出版社
HAVING 平均定价 > 40;
SELECT B.读者编号, B.姓名, T.书名, T.应还日期, T.实际归还日期
FROM 图书 T
JOIN 借书记录 B
ON T.图书编号 = B.图书编号
WHERE T.书名 LIKE '%数据库%';
SELECT 姓名, 读者编号, COUNT(*) AS 借书数量
FROM 借书记录
GROUP BY 姓名, 读者编号
HAVING COUNT(*) > 30;
SELECT 图书编号, 书名, 定价
FROM 图书
WHERE 定价 = (SELECT MAX(定价) FROM 图书);
咨询记录 · 回答于2024-01-03
在当前数据库中写出实现下列操作的丁-SQL语句。(若某题有多种写+法,按题目要+
亲很高兴回答你的问题,好的,请告诉我需要实现的具体操作,我将为您编写相应的SQL语句。
1. 统计每个出版社的图书的平均定价,仅显示平均定价大于40元的信息:
SELECT 出版社, AVG(定价) AS 平均定价
FROM 图书
GROUP BY 出版社
HAVING AVG(定价) > 40;
2. 查询借阅过图书名称中包含“数据库”的所有图书的读者编号、读者姓名以及他们所借阅的这些图书的图书名称、应还日期和实际归还日期(连接使用JOIN形式):
SELECT 读者编号, 读者姓名, 图书名称, 应还日期, 实际归还日期
FROM 借阅表
JOIN 读者表 ON 借阅表.读者编号 = 读者表.读者编号
JOIN 图书表 ON 借阅表.图书编号 = 图书表.图书编号
WHERE 图书名称 LIKE '%数据库%';
3. 显示借书数量超过30本(含30本)的读者信息,输出读者编号,姓名及其借书数量(连接使用WHERE形式):
SELECT 读者编号, 姓名, COUNT(*) AS 借书数量
FROM 借阅表
JOIN 读者表 ON 借阅表.读者编号 = 读者表.读者编号
GROUP BY 读者编号, 姓名
HAVING COUNT(*) > 30;
4. 查询价格最高的图书信息,显示图书编号、书名、价格(使用嵌套查询实现):
SELECT * FROM (
SELECT 图书编号, 书名, 价格, RANK() OVER (ORDER BY 价格 DESC) AS rnk
FROM 图书表
) t WHERE t.rnk = 1;
5. 查询2023年3月份的图书借阅情况,输出借阅的图书信息(使用YEAR、MONTH函数以及嵌套查询实现):
SELECT * FROM (
SELECT * FROM 借阅表 WHERE YEAR(借阅日期) = 2023 AND MONTH(借阅日期) = 3
) t;
SELECT 出版社, AVG(定价) AS 平均定价
FROM 图书
GROUP BY 出版社
HAVING 平均定价 > 40;
SELECT
B.读者编号,
B.姓名,
T.书名,
T.应还日期,
T.实际归还日期
FROM 图书 T
JOIN 借书记录 B ON T.图书编号 = B.图书编号
WHERE T.书名 LIKE '%数据库%';
SELECT 姓名, 读者编号, COUNT(*) AS 借书数量
FROM 借书记录
GROUP BY 姓名, 读者编号
HAVING COUNT(*) > 30;
SELECT 图书编号, 书名, 定价
FROM 图书
WHERE 定价 = (SELECT MAX(定价) FROM 图书);
# 5. SELECT
- T.图书编号
- T.书名
- B.读者编号
- B.姓名
- B.图书编号
- B.借书日期
FROM 借书记录 B
JOIN 图书 T ON B.图书编号 = T.图书编号
WHERE YEAR(B.应还日期) = 2023 AND MONTH(B.应还日期) = 3;
6.SELECT R.姓名, T.书名, B.借书日期, B.应还日期FROM 图书 T JOIN 借书记录 B ON T.图书编号 = B.图书编号 JOIN 读者 R ON B.读者编号 = R.读者编号WHERE B.实际归还日期 IS NULL;
7.SELECT DISTINCT R.姓名, R.联系电话FROM 借书记录 B JOIN 读者 R ON B.读者编号 = R.读者编号WHERE B.实际归还日期 IS NULL;
8. CREATE VIEW vcg AS
SELECT DISTINCT
A.读者编号,
A.姓名,
A.联系电话,
B.书名,
B.应还日期
FROM 借书记录 B
JOIN 读者 A ON A.读者编号 = B.读者编号
WHERE B.应还日期 < NOW() AND B.实际归还日期 IS NULL;
9.SELECT * FROM vcg;
哥
你太伟大了
呜呜呜
10.UPDATE 借书记录SET 读者编号='16022'WHERE 读者编号='16021';