mysql查询2个isbn数据,数据库实验二 数据查询
ALTER TABLE 书目 ADD 出版年份 VARCHAR(100);
UPDATE 书目 SET 出版年份=‘2005’ WHERE ISBN=‘7040195836’;
UPDATE 书目 SET 出版年份=‘1983’ WHERE ISBN=‘9787508040110’;
UPDATE 书目 SET 出版年份=‘2008’ WHERE ISBN=‘9787506336239’;
UPDATE 书目 SET 出版年份=‘2009’ WHERE ISBN=‘9787010073750’;
COMMIT;
2、求总藏书量、藏书总金额、最高价、最低价。
SELECT COUNT(),SUM(单价),MAX(单价),MIN(单价)
FROM 书目,图书
WHERE 书目.ISBN=图书.ISBN;
3、列出藏书在5本以上的书目(书名、作者、出版社、出版年份)。
SELECT 书目.书名,书目.作者,书目.出版单位,书目.出版年份
FROM 书目
WHERE 书目.ISBN IN
(
SELECT 书目.ISBN
FROM 书目,图书
WHERE 书目.ISBN=图书.ISBN
GROUP BY 书目.ISBN
HAVING COUNT()>5
);
4、列出年份最久远的书?
SELECT *
FROM 书目
WHERE 书目.出版年份=
(
SELECT MAX(出版年份)
FROM 书目
);
5、 目前实际已借出多少册书?
SELECT COUNT()
FROM 图书
WHERE 图书.是否借出=‘是’;
6.、哪一年的图书最多?
SELECT 年份.出版年份
FROM
(
SELECT 书目.出版年份,COUNT(书目.出版年份) AS NUM
FROM 书目,图书
WHERE 书目.ISBN=图书.ISBN
GROUP BY 书目.出版年份
) 年份,
(
SELECT MAX(COUNT()) AS MAX
FROM 书目,图书
WHERE 书目.ISBN=图书.ISBN
GROUP BY 书目.出版年份
) 最多
WHERE 年份.NUM=最多.MAX;
7、 哪本借书证未归还的图书最多?
SELECT 统计.借书证号
FROM
(
SELECT MAX(COUNT(借阅.借书证号)) AS MAX
FROM 借阅
WHERE 借阅.归还日期 IS NULL
GROUP BY 借阅.借书证号
) 最多,
(
SELECT 借阅.借书证号,COUNT(借阅.借书证号) AS NUM
FROM 借阅
WHERE 借阅.归还日期 IS NULL
GROUP BY 借阅.借书证号
) 统计
WHERE 统计.NUM=最多.MAX;
8、平均每本借书证的借书册数。
SELECT SUM(借阅数.借阅_NUM/读者数.读者_NUM)
FROM
(
SELECT COUNT() AS 借阅_NUM
FROM 借阅
) 借阅数,
(
SELECT COUNT() AS 读者_NUM
FROM 读者
) 读者数;
9、哪个单位的读者平均借书册数最多?
SELECT 单位平均数.单位
FROM
(
SELECT 读者单位人数.单位,SUM(读者单位借书数.借书数/读者单位人数.人数) AS 平均数
FROM
(
SELECT 读者.单位,COUNT() AS 人数
FROM 读者
GROUP BY 读者.单位
) 读者单位人数,
(
SELECT 读者.单位,COUNT() AS 借书数
FROM 读者,借阅
WHERE 读者.借书证号=借阅.借书证号
GROUP BY 读者.单位
) 读者单位借书数
WHERE 读者单位人数.单位=读者单位借书数.单位
GROUP BY 读者单位人数.单位
) 单位平均数,
(
SELECT MAX(SUM(读者单位借书数.借书数/读者单位人数.人数)) AS 借书数
FROM
(
SELECT 读者.单位,COUNT() AS 人数
FROM 读者
GROUP BY 读者.单位
) 读者单位人数,
(
SELECT 读者.单位,COUNT() AS 借书数
FROM 读者,借阅
WHERE 读者.借书证号=借阅.借书证号
GROUP BY 读者.单位
) 读者单位借书数
WHERE 读者单位人数.单位=读者单位借书数.单位
GROUP BY 读者单位人数.单位
) 单位最多借书数
WHERE 单位平均数.平均数=单位最多借书数.借书数;
10、 最近两年都未被借过的书。
SELECT 图书.图书编号
FROM 图书
WHERE 图书.图书编号 NOT IN
(
SELECT 借阅.图书编号
FROM 借阅
WHERE MONTHS_BETWEEN(SYSDATE,借阅.借书日期)/12<=2
);
11、今年未借过书的借书证。
SELECT 读者.借书证号
FROM 读者
WHERE 读者.借书证号 NOT IN
(
SELECT 借阅.借书证号
FROM 借阅
WHERE 借阅.借书日期>
(
SELECT TRUNC(SYSDATE,‘YYYY’) FROM DUAL
)
);
出现的问题及解决方案:
1、无法调用派生表及聚集函数的列,解决方案:使用派生表中的列,需要给派生表取别名,才能在WHERE语句中调用,调用方法:别名.列名,如果子查询结果中使用了聚集函数,需要给聚集函数这列取别名,才能调用,调用时使用别名。表取别名不能用AS。
2、对15题,查询借阅了所有“文学”类书目的读者的姓名、单位,产生了错误的理解,题目的意思是查询到的读者要借阅了所有的文学类书,而不是借阅了文学类的书的读者有哪些,解决方案:
(1)方法一,双重否定表肯定,查询的读者不存在文学类的书没有借过
SELECT 读者.姓名,读者.单位
FROM 读者
WHERE NOT EXISTS
(
SELECT *
FROM 图书分类,书目
WHERE 图书分类.图书分类号=书目.图书分类号 AND 图书分类.类名=‘文学’ AND NOT EXISTS
(
SELECT *
FROM 借阅,图书
WHERE 借阅.图书编号=图书.图书编号 AND 借阅.借书证号=读者.借书证号 AND 书目.ISBN=图书.ISBN
)
);
(2)方法二,查询的读者借的文学类书的数目(去重同一借书证借同一ISBN的文学书后的数目)等于文学类书的数目
SELECT 读者.姓名,读者.单位
FROM 读者
WHERE 读者.借书证号 IN
(
SELECT 读者文学类借书.借书证号
FROM
(
SELECT 文学借书数.借书证号,COUNT() AS 读者文学类数借书数
FROM
(
SELECT 借阅.借书证号,图书.ISBN
FROM 借阅,图书分类,书目,图书
WHERE 借阅.图书编号=图书.图书编号 AND 图书.ISBN=书目.ISBN AND 书目.图书分类号=图书分类.图书分类号 AND 图书分类.类名=‘文学’
GROUP BY (借阅.借书证号,图书.ISBN)
) 文学借书数
GROUP BY 文学借书数.借书证号
) 读者文学类借书,
(
SELECT COUNT() AS 总数
FROM 图书分类,书目
WHERE 图书分类.图书分类号=书目.图书分类号 AND 图书分类.类名=‘文学’
) 文学类书总数
WHERE 读者文学类借书.读者文学类数借书数=文学类书总数.总数
);
3、ORACLE不支持使用DATEDIFF()函数计算时间差,解决方案:使用MONTHS_BETWEEN()方法来计算两个日期的月份之差,然后除以12,得到年份之差,就可以查询最近两年都未被借过的书了,MONTHS_BETWEEN()函数中的参数不能颠倒,否则会为负数。
4、怎么获取今年的第一天的日期?解决方案:使用TRUNC()函数将使用SYSDATE查询的日期从年份截去,就可以获取今年的第一天的日期,SELECT TRUNC(SYSDATE,‘YYYY’) FROM DUAL。
四、实验心得体会
通过本次实验熟练的掌握了查询的基本用法,对查询的嵌套有了更加深刻直观的认识,通过实验练习了一些难度较大的查询,对查询设计的思路更加清晰,知道该如何嵌套使用子查询以及怎样查询更清晰,不过也认识到了自己的不足,如15题,对于相关子查询掌握还不够好,思路不够清晰,理解不够透彻。
mysql查询2个isbn数据,数据库实验二 数据查询相关推荐
- MySQL数据库实验二 数据基本查询
★观前提示:本篇内容为mysql数据库实验,代码内容经测试过,可能一小部分有所疏漏,也有会不符合每个人实验的要求的地方,因此以下内容建议仅做思路参考,. 一.实验目的 1.掌握SQL查询语句的一般格式 ...
- 数据库 实验二 SQL查询一
SQL查询一 答案链接链接 实验学时:2 实验类型:验证 实验要求:必修 一.实验目的 通过本实验使学生掌握单表查询并初步掌握多表查询的技能. 二.实验内容 使用实验一建立的银行贷款数据库和表,完成以 ...
- 数据库——实验二 数据查询
1.实验目的 理解SQL 程序设计基本规范,熟练运用SQL 语言实现数据查询,包括单表查询.分组统计查询和连接查询.嵌套查询合和集合查询. 2.实验内容和要求 针对tpch 数据库或自建数据库test ...
- 数据库-实验二-数据查询
--查询"红楼梦"目前可借的各图书编号,及所属版本信息 select 图书编号,出版单位 from 书目,图书 where 书目.isbn=图书.isbn and 书名='红楼梦 ...
- 数据库实验二之数据查询
实验二 数据查询 一.实验目的 1.理解数据库中数据的其他查询方法和应用: 2.学会各种查询要求的实现: 3.学会各种查询的异同及相互之间的转换方法. 二. 实验内容 在实验1的基础上,练习其它查询语 ...
- mysql 性别以女生升序_MySQL数据库实验:任务三 数据库的单表查询设计
任务三 数据库的单表查询设计 文章目录 任务三 数据库的单表查询设计 [实训目的与要求] [实训原理] [实训步骤] 一.简单查询 二.按条件查询 1.比较大小查询 2.带in关键字的查询(确定集合) ...
- 数据库 实验二 查询
一.实验内容 1.用SQL语句表示下列操作,在学生库中实现数据查询. (1)求数学系学生的学号和姓名. (2)求选修了课程的学生学号. (3)求选修001号课程的学生学号和成绩,并要求对查询结果按成绩 ...
- 数据库 查询计算机系姓王,数据库实验3简单查询和连接查询
实验2数据库简单查询 一.实验目的 1.掌握SQL查询语句的基本语法与用法.熟练掌握简单表的数据查询 2.掌握数据库表的各种连接查询,包括内连接和外连接查询 二.实验内容 (一)数据库和表及表中的数据 ...
- 西南科技大学数据库实验二(Oracle 11g)
/* *实验二 数据查询 *时间:2019-11-25 *联系:2838215550@qq.com *附言:把代码写成一首诗. *SELECT [ ALL | DISTINCT] < 目标列表达 ...
最新文章
- android 按键kl文件,Android添加新按键
- 微信实现定位城市并获取城市编码
- C和指针之字符串之strlen、strcpy、 strcat、strcmp使用总结
- 人类视觉计算理论经典著作,豆瓣评分9.7,中文版惊鸿面世!
- 计算机实验报告14,计算机14实验报告模板.doc
- python编程(数据库操作)
- OOP 术语:Arguments(参量)和 Parameters(参数)的区别(转载)
- python实现时频谱,语谱图,mel语谱倒谱等
- 对字符串进行折半查找c语言,C语言:编写折半查找函数
- gitserver提交代码的总结
- [Windows] PPT插件集,部分支持WPS(提高你的制作效率和页面美观)
- 徐梓萌 受邀担任 火星少年计划 第四季 特邀小主持人
- c语言 取结构体地址,结构体赋值,对用不用取地址符有些困惑?
- 智慧厕所空气净化设备异味除臭杀菌更彻底
- 算法实践-遗传算法GA
- 高一下学期计算机考试知识点,高一第一学期计算机期末考试-基础模块(含答案)...
- Kafka Producer 实现源码分析
- pcie5.0 spec学习1.5----lane margining
- 文献阅读09期:基于ADMM方法的柔性负载实时定价
- starting to launch local task to process map join maximum memory =1029701632 的原因