河南大学数据库实验5

由于版本问题图片无法正常上传,如果word版本需要请私信

1.现有读者购书数据库,该数据库中包含三个表:读者相关信息表R,图书信息表B,读者订购图书表OD,具体情况如下表:

表1  R表

表2  B表

表3  OD表

根据以上表的情况,做出如下查询,逐题给出代码及截图:

  1. 找出读者所在城市是“shanghai”的身份是“professor”的读者,或所在城市名包含“jing”的身份为“student”的读者的读者号及身份,按读者号的降序排列
  2. 对每一种有读者订购的图书,找出书号及有读者订购该书读者所在的所有城市,输出结果包括:书号和城市(输出的列取别名)
  3. 找出订购了书号为B2的图书的读者姓名及所在城市(用两种方法做:连接、嵌套)
  4. 找出有一个以上读者订购的图书书号和图书名
  5. 求至少订购了一本《Pascal》的读者姓名
  6. 找出没有订购B1号图书的读者号
  7. 找出价格大于等于15.00或者读者R2最近订购的图书的书号及书名
  8. 求图书B2的订购数
  9. 查询订购的书的数量不确定的(qty是空值),读者编号和书号
  10. 查询图书单价不是15,17,10的图书的图书号和图书名及价格
  11. 查询所有订购了图书的读者的读者号和姓名
  12. 查询单价小于等于10的所有图书被读者订购的数量,输出书名和订购总数量
  13. 查询订购了至少两种书的读者姓名和书的种类数
  14. 查询书价比同一出版社的平均书价高的图书的书号和书名
  15. 查询每个出版社书价最高的图书是哪些, 输出出版社,书号,书名
  16. 找出没有订购B2号图书的读者号,读者的姓名(用存在谓词查询)
  17. 查询读者R4订购的图书的书号和书名(用存在谓词查询)
  18. 查询订购了全部书籍的读者的姓名
  19. 查询至少订购了R1所订购的书籍的读者的编号
  20. 把所有Commerce出版社的图书的价格都增加1
  21. 把读者R2订购的所有图书的数量改为0
  22. 查询读者表中是否有一个Beijing的读者WangWei,如果有,把他删除
  23. 查出每个出版社的图书的平均价格,保存到数据库中
  24. 将所有Beijing读者订购的图书数量改为一本
  25. 删去Shanghai的所有读者的订书单

分别给出对应题目的代码及运行结果截图:

  1. 找出读者所在城市是“shanghai”的身份是“professor”的读者,或所在城市名包含“jing”的身份为“student”的读者的读者号及身份,按读者号的降序排列

SELECT Rno,STATUS

FROM r

WHERE (city='shanghai' AND STATUS='professor') OR (city LIKE '%jing' AND STATUS='student')

ORDER BY rno DESC

  1. 对每一种有读者订购的图书,找出书号及有读者订购该书读者所在的所有城市,输出结果包括:书号和城市(输出的列取别名)

SELECT bno AS '书号',city '城市'

FROM od,r

WHERE od.rno=r.Rno 

  1. 找出订购了书号为B2的图书的读者姓名及所在城市(用两种方法做:连接、嵌套)

SELECT rname,city

FROM od,r

WHERE od.rno=r.rno AND bno='B2'

SELECT rname,city

FROM r

WHERE rno IN (

 SELECT rno

 FROM od

 WHERE bno='B2'

 )

  1. 找出有一个以上读者订购的图书书号和图书名

SELECT bname,bno

FROM b

WHERE bno IN(

 SELECT DISTINCT bno

 FROM od

 )

  1. 求至少订购了一本《Pascal》的读者姓名

SELECT DISTINCT rno

FROM od

WHERE bno IN(

 SELECT bno

 FROM b

 WHERE Bname='Pascal'

 )

  1. 找出没有订购B1号图书的读者号

     

SELECT DISTINCT o1.Rno

FROM od o1

WHERE rno NOT IN (

 SELECT DISTINCT o2.rno

 FROM od o2

 WHERE o2.bno='B1'

 );

  1. 找出价格大于等于15.00或者读者R2最近订购的图书的书号及书名

SELECT bno,bname

FROM b

WHERE price>=15 OR bno IN (

 SELECT bno

 FROM od

 WHERE rno='R2'

 )

  1. 求图书B2的订购数

SELECT bno,SUM(qty)

FROM od

GROUP BY bno

HAVING bno='B2'

  1. 查询订购的书的数量不确定的(qty是空值),读者编号和书号

SELECT rno,bno

FROM od

WHERE qty=NULL

  1. 查询图书单价不是15,17,10的图书的图书号和图书名及价格

SELECT bno,bname,price

FROM b

WHERE price NOT IN (15,17,10)

  1. 查询所有订购了图书的读者的读者号和姓名

SELECT rno,rname

FROM r

WHERE rno IN(

 SELECT distinct rno

 FROM od

 )

  1. 查询单价小于等于10的所有图书被读者订购的数量,输出书名和订购总数量

SELECT bname,SUM(qty)

FROM od

JOIN b ON b.Bno=od.bno

WHERE price<=10

GROUP BY bname

  1. 查询订购了至少两种书的读者姓名和书的种类数

SELECT rname,COUNT(bno)

FROM r

JOIN od ON od.rno=r.rno

GROUP BY rname

HAVING COUNT(bno)>=2;

  1. 查询书价比同一出版社的平均书价高的图书的书号和书名

SELECT b1.bno,b1.bname

FROM b b1

WHERE b1.price>(

 SELECT AVG(b2.price)

 FROM b b2

 WHERE b2.Pub = b1.pub

 GROUP BY b2.pub

 )

  1. 查询每个出版社书价最高的图书是哪些, 输出出版社,书号,书名

SELECT pub,bno,bname

FROM b b1

WHERE price=(

 SELECT MAX(price)

 FROM b b2

 WHERE b2.Pub = b1.Pub

 )

  1. 找出没有订购B2号图书的读者号,读者的姓名(用存在谓词查询) 

SELECT rno,rname

FROM r

WHERE  NOT EXISTS(

 SELECT rno

 FROM od

 WHERE bno='B2' AND r.rno=od.rno

 ) 

  1. 查询读者R4订购的图书的书号和书名(用存在谓词查询)

SELECT bno,bname

FROM b 

WHERE EXISTS(

 SELECT rno

 FROM od

 WHERE rno='R4' AND od.bno=b.Bno

 )

  1. 查询订购了全部书籍的读者的姓名

SELECT R.Rname

FROM R

JOIN OD ON R.Rno = OD.Rno

GROUP BY R.Rno, R.Rname

HAVING COUNT(DISTINCT OD.Bno) = (

           SELECT COUNT(*) 

           FROM B);

  1. 查询至少订购了R1所订购的书籍的读者的编号

SELECT DISTINCT rno

FROM od s1

WHERE not EXISTS(

 SELECT bno

 FROM od s2

 WHERE s2.rno='R1' AND not EXISTS(

  SELECT *

  FROM od s3

  WHERE s3.rno = s1.Rno AND s3.bno = s2.bno)

)AND s1.Rno <> 'R1'

  1. 把所有Commerce出版社的图书的价格都增加1

UPDATE B

SET Price = Price + 1

WHERE Pub = 'Commerce';

  1. 把读者R2订购的所有图书的数量改为0

UPDATE od

SET qty = 0

WHERE rno='R2'

  1. 查询读者表中是否有一个Beijing的读者WangWei,如果有,把他删除

DELETE FROM r

WHERE city='Beijing' AND rname ='DingWei'

  1. 查出每个出版社的图书的平均价格,保存到数据库中

CREATE TABLE Pub_Avg_Price

(

Pub VARCHAR(20),

Avg_Price numeric(5,2)

);

INSERT INTO Pub_Avg_Price (Pub, Avg_Price)

SELECT Pub, AVG(Price)

FROM B

GROUP BY Pub;

  1. 将所有Beijing读者订购的图书数量改为一本

UPDATE od

SET qty = 1

WHERE rno IN (

 SELECT rno

 FROM r

 WHERE city = 'Beijing')

  1. 删去Shanghai的所有读者的订书单

DELETE FROM od

WHERE rno IN(

 SELECT rno

 FROM r

 WHERE city='shanghai'

 )

总结:通过这次实验让我了解了in和exists的区别在本次实验中的一些例题中需要用两个no exists来查询所有的信息就好像c中的for的功能,并且在该练习中不断加深了对exists的了解,除了存在语句还了解了嵌套查询和分组查询的一些共同性和差异性,并且也对group的一些用法更加牢固,通过group的语法可以将一些成员进行分组,并在其中进行avg,count的时候是对分组内的进行分析,该实验还进行了对insert,update,delete的用法,需要指定了表然后选定一些条件进行操作,其中有着一些嵌套操作,将条件复杂化,所以需要用到嵌套的查询。该实验很好的将之前的知识点进行了融合和表达,让我更加综合的运用此次实验的知识点和内容。

运用:这个图书馆的数据库可能包含以下几个表格:Books(图书)、Orders(订单详情)、Readers(读者)、Publishers(出版社)。

1.找出没有订购B1号图书的读者号

SELECT R.Rno

FROM Readers R

WHERE NOT EXISTS (

    SELECT *

    FROM Orders O

    WHERE O.Bno = 'B1' AND R.Rno = O.Rno

);

找出价格大于等于15.00或者读者R2最近订购的图书的书号及书名

SELECT B.Bno, B.Bname

FROM Books B

WHERE B.Price >= 15.00

OR B.Bno IN (

    SELECT O.Bno

    FROM Orders O

    WHERE O.Rno = 'R2'

    ORDER BY O.OrderDate DESC

    LIMIT 1

);

求图书B2的订购数

SELECT COUNT(*)

FROM Orders

WHERE Bno = 'B2';

查询订购的书的数量不确定的(qty是空值),读者编号和书号

SELECT Rno, Bno

FROM Orders

WHERE Qty IS NULL;

查询图书单价不是15,17,10的图书的图书号和图书名及价格

SELECT Bno, Bname, Price

FROM Books

WHERE Price NOT IN (15, 17, 10);

查询所有订购了图书的读者的读者号和姓名

SELECT DISTINCT R.Rno, R.Rname

FROM Readers R

JOIN Orders O ON R.Rno = O.Rno;

查询单价小于等于10的所有图书被读者订购的数量,输出书名和订购总数量

SELECT B.Bname, SUM(O.Qty)

FROM Books B

JOIN Orders O ON B.Bno = O.Bno

WHERE B.Price <= 10

GROUP BY B.Bname;

查询订购了至少两种书的读者姓名和书的种类数

SELECT R.Rname, COUNT(DISTINCT O.Bno)

FROM Readers R

JOIN Orders O ON R.Rno = O.Rno

GROUP BY R.Rno

HAVING COUNT(DISTINCT O.Bno) >= 2;

查询书价比同一出版社的平均书价高的图书的书号和书名

SELECT B.Bno, B.Bname

FROM Books B

WHERE B.Price > (

    SELECT AVG(B2.Price)

    FROM Books B2

    WHERE B2.Pub = B.Pub

);

查询每个出版社书价最高的图书是哪些, 输出出版社,书号,书名

SELECT B.Pub, B.Bno, B.Bname

FROM Books B

WHERE B.Price = (

    SELECT MAX(B2.Price)

    FROM Books B2

    WHERE B2.Pub = B.Pub);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/36236.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

利用通义灵码AI在VS Code中快速开发扫雷游戏:Qwen2.5-Max模型的应用实例

引言 随着人工智能技术的不断进步&#xff0c;开发过程中的自动化程度也在逐步提高。阿里云推出的通义灵码AI程序员&#xff0c;作为一款创新型的智能编程助手&#xff0c;现已全面上线并兼容VS Code、JetBrains IDEs等多种开发环境。本文将介绍如何利用最新的Qwen2.5-Max模型…

Java多线程与高并发专题——在 Thread 中多个 ThreadLocal 是怎么存储的?

Thread、 ThreadLocal 及 ThreadLocalMap 三者之间的关系 在解答本文的标题问题之前&#xff0c;先要搞清楚 Thread、 ThreadLocal 及 ThreadLocalMap 三者之间的关系。 首先我们梳理下它们的定义与作用&#xff1a; Thread&#xff08;线程&#xff09; 定义&#xff1a;Th…

git tag常用操作

git tag是干嘛用的&#xff0c;相当于一个轻量级的分支。在一个分支上&#xff0c;创建一个tag&#xff0c;就是标记某一次的提交。然后方便checkout到 这个标签上。用tag的意思就是不用专门再创建一个新分支来修改后续的改动。分支不变&#xff0c;继续在上面改动&#xff0c;…

大模型开发(六):LoRA项目——新媒体评论智能分类与信息抽取系统

LoRA项目——新媒体评论智能分类与信息抽取系统 0 前言1 项目介绍1.1 项目功能1.2 技术原理1.3 软硬件环境1.4 项目结构 2 数据介绍与处理2.1 数据集介绍2.2 数据处理2.3 数据导入器 3 模型训练3.1 配置文件3.2 工具函数3.3 模型训练3.4 模型评估 4 模型推理 0 前言 微调里面&…

简单几步完成dify的本地搭建

简单几步完成dify的本地搭建

网络爬虫【爬虫库request】

我叫不三不四&#xff0c;很高兴见到大家&#xff0c;欢迎一起学习交流和进步 今天来讲一讲爬虫 Requests是Python的一个很实用的HTTP客户端库&#xff0c;完全满足如今网络爬虫的需求。与Urllib对比&#xff0c;Requests不仅具备Urllib的全部功能&#xff1b;在开发使用上&…

深度学习:从零开始的DeepSeek-R1-Distill有监督微调训练实战(SFT)

原文链接&#xff1a;从零开始的DeepSeek微调训练实战&#xff08;SFT&#xff09; 微调参考示例&#xff1a;由unsloth官方提供https://colab.research.google.com/github/unslothai/notebooks/blob/main/nb/Qwen2.5_(7B)-Alpaca.ipynbhttps://colab.research.google.com/git…

MySQL 调优

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…

Clion远程开发配置

代码开发环境&#xff1a;windows下&#xff0c;基于Clion 2024.3开发&#xff0c;标准为C20 代码运行环境&#xff1a;远程服务器&#xff0c;ubuntu&#xff0c;cmake版本3.12&#xff0c;gcc11.4&#xff0c;g11.4&#xff0c;gdb12.1 实现功能&#xff1a;在本地windows开…

男女搭配(数学思维)

#include <bits/stdc.h> using namespace std; int main() {// 请在此输入您的代码int t;cin>>t;while(t--){int n,m,k;cin>>n>>m>>k;int smin(n,2*m)/2;if(nm-k > 3*s) cout<<s<<endl;else cout<<(nm-k)/3<<endl;}r…

SakuraCat(1)整体架构概述 (完善中)

项目功能概述 支持Servlet组件可部署一个标准的Web App 项目架构总览 HTTP服务器&#xff1a;负责建立链接&#xff0c;处理请求的数据&#xff0c;并转发给Servlet容器。Servlet容器&#xff1a;将HttpServletRequest和HttpServletResponse对象传给对应的业务类进行相应的逻…

一种基于大规模语言模型LLM的数据分析洞察生成方法

从复杂数据库中提取洞察对数据驱动决策至关重要,但传统手动生成洞察的方式耗时耗力,现有自动化数据分析方法生成的洞察不如人工生成的有洞察力,且存在适用场景受限等问题。下文将介绍一种新的方法,通过生成高层次问题和子问题,并使用SQL查询和LLM总结生成多表数据库中的见…

单片机学完开发板,如何继续提升自己的技能?

很多人学完开发板后都会卡在一个尴尬的阶段&#xff1a;觉得自己会的东西不少&#xff0c;但又不知道下一步该干啥。会点C语言&#xff0c;能烧录程序&#xff0c;能点亮LED&#xff0c;玩转按键&#xff0c;搞定串口等等&#xff0c;能用开发板做点小玩意儿&#xff0c;但面对…

计算机网络——总结

01. 网络的发展及体系结构 网络演进历程 从1969年ARPANET的4个节点发展到如今覆盖全球的互联网&#xff0c;网络技术经历了电路交换到分组交换、有线连接到无线覆盖的革命性变革。5G时代的到来使得网络传输速度突破10Gbps&#xff0c;物联网设备数量突破百亿级别。 网络体系…

实验10决策树

实验10决策树 一、实验目的 &#xff08;1&#xff09;理解并熟悉决策树算法思想和原理&#xff1b; &#xff08;2&#xff09;熟悉决策树算法的数学推导过程&#xff1b; &#xff08;3&#xff09;能运用决策树算法解决实际问题并体会算法的效果&#xff1b; &#xff08;4…

【css酷炫效果】纯CSS实现悬浮弹性按钮

【css酷炫效果】纯CSS实现悬浮弹性按钮 缘创作背景html结构css样式完整代码效果图 想直接拿走的老板&#xff0c;链接放在这里&#xff1a;https://download.csdn.net/download/u011561335/90492020 缘 创作随缘&#xff0c;不定时更新。 创作背景 刚看到csdn出活动了&…

【模块化编程】制作、可视化不平衡数据(长尾数据)(以Cifar-10为例)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;《PyTorch科研加速指南&#xff1a;即插即用式模块开发》-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎…

Linux操作系统7- 线程同步与互斥1(POSIX互斥锁的使用详解)

上篇文章&#xff1a;Linux操作系统6- 线程4&#xff08;POSIX线程的简单封装&#xff09;-CSDN博客 本篇代码仓库:myLerningCode/l30 橘子真甜/Linux操作系统与网络编程学习 - 码云 - 开源中国 (gitee.com) 目录 一. 线程不互斥造成的结果 二. pthread_mutex_t 互斥…

深入 Linux 声卡驱动开发:核心问题与实战解析

1. 字符设备驱动如何为声卡提供操作接口&#xff1f; 问题背景 在 Linux 系统中&#xff0c;声卡被抽象为字符设备。如何通过代码让应用程序能够访问声卡的录音和播放功能&#xff1f; 核心答案 1.1 字符设备驱动的核心结构 Linux 字符设备驱动通过 file_operations 结构体定…

洛谷 [语言月赛 202503] 题解(C++)

本文为洛谷3月的语言月赛题目全部题解&#xff0c;难度为入门到普及-&#xff0c; 觉的有帮助或者写的不错的可以点个赞 题目链接为 题目列表 - 洛谷 | 计算机科学教育新生态 目录 题目A:长方形 解题思路: 代码(C): 题目B:水流 题目大意: 解题思路: 代码(C): 题目C:格…