任务要求
打开province数据库 第一题 查询街道信息(jdxx)数据表的开福区(qxmc)的所有字段 第二题 查询街道信息(jdxx)数据表的开福区和岳麓区(qxmc)的所有字段 第三题 查询街道信息(jdxx)数据表的长沙市(cs)的西湖街道(name)所有字段。
jdxx数据表有四个字段,分别是省份(sf)、城市(cs)、区县(qxmc)、街道(name)。
use province;
#代码开始
#第一题
select * from jdxx where qxmc="开福区";
#第二题
select * from jdxx where qxmc="岳麓区"
union
select * from jdxx where qxmc="开福区";
#第三题
select * from jdxx where cs="长沙市" and name="西湖街道";
#代码结束
本关任务: 根据jdxx数据表,查询湖南省(sf)所有的区县名称(qxmc),每个区县只出现一次 查询长沙市(cs)所有的区县名称(qxmc),每个区县只出现一次。
use province
#代码开始
select distinct qxmc from jdxx where sf='湖南省';
select distinct qxmc from jdxx where cs='长沙市';
#代码结束
本关任务:对jdxx统计查询 查询湖南省的街道个数 查询长沙市的街道个数 查询湖南省的区县个数 查询长沙市的区县个数。
use province;
#代码开始
#答案1
select count(name)
from jdxx
where sf = '湖南省';
#答案2
select count(name)
from jdxx
where cs = '长沙市'
group by cs;
#答案3
select count(distinct qxmc)
from jdxx
where sf = '湖南省';
#答案4
select count(distinct qxmc)
from jdxx
where cs = '长沙市';
#代码结束
本关任务:统计每个省的名称和街道数目 显示街道数目大于200个的城市和街道数目 显示长沙市每个区县的街道数目。
use province;
#代码开始
#题目1
select sf,count(*)
from jdxx
group by sf;
#题目2
select cs,count(*)
from jdxx
group by cs
having count(*)>200;
#题目3
select qxmc, count(*)
from jdxx
where cs = '长沙市'
group by qxmc;
本关任务:显示jdtj数据表中街道个数最多的10个的所有字段; 显示jdtj数据表中街道个数最少的10个的所有字段; 按街道个数从高到底,街道个数相同的按省份升序排序显示jdtj数据表中街道个数大于35的所有字段 jdtj数据表字段为省份(sf)、城市(cs)、区县(qx) 、街道个数(jdgs)字段。
use province;
#代码开始
#第一题
select *
from jdtj
order by jdgs desc
limit 10;
#第二题
select *
from jdtj
order by jdgs asc
limit 10;
#第三题
select *
from jdtj
where jdgs > 35
order by jdgs desc,sf asc;
#代码结束
打开library数据库 第一题 根据读者(reader)和借阅(borrow)数据表,查询王颖珊的借阅记录,包括条形码txm、借阅日期jyrq、还书日期hsrq 第二题 根据图书(book)和借阅(borrow)数据表,查询李白全集被借阅的情况:包括读者证号dzzh、借阅日期jyrq、还书日期hsrq 第三题 根据读者(reader)、图书(book)和借阅(borrow)数据表查询没有被归还的借阅信息:包括读者证号dzzh、姓名xm、电话dhhm、条形码txm、书名sm、借阅日期jyrq 提示:通过isnull(表达式)可以判断表达式是否NULL值。
通过isnull(表达式)可以判断表达式是否NULL值
use library;
#代码开始
#第一题
select txm , jyrq , hsrq
from borrow , reader
where reader.dzzh = borrow.dzzh and xm='王颖珊';
#第二题
select dzzh , jyrq , hsrq from borrow , book where borrow.txm = book.txm and book.sm='李白全集';
#第三题
select reader.dzzh , xm , dhhm , book.txm , sm , borrow.jyrq from reader,book,borrow where reader.dzzh=borrow.dzzh and book.txm = borrow.txm and isnull(hsrq);
#代码结束
任务: 根据数据表图书、读者和借阅,实现多表查询及对查询分组统计
为了完成本关任务,你需要掌握: 第一题: 统计每本书借阅的次数,显示书名和借阅次数(借阅次数命名为jycs),按借阅次数降序排列,借阅次数相同的按书名降序排列 (提示:borrow数据表的一条数据对应一次借阅) 第二题: 统计借阅次数在2次以上的图书的借阅的次数,显示书名和借阅次数,按借阅次数降序排列,借阅次数相同的按书名降序排列 第三题 统计每个出版社的图书的借阅次数,显示出版社的名称和借阅次数,按借阅次数降序排列,借阅次数相同的按出版社降序排列 第四题: 统计每位读者借阅的次数,显示姓名和借阅次数,按借阅次数降序排列,借阅次数相同的按姓名降序排列 第五题: 统计研究生读者借阅的次数,显示姓名和借阅次数,按借阅次数降序排列,借阅次数相同的按姓名降序排列 注意:order by <表达式1>,<表达式2> 表示首先按第一个表达式的值排序,第一个表达式的值相同的再按第二个表达式的值排序。
use library
#代码开始
#第一题
select sm,count(*)jycs from borrow left join book on book.txm=borrow.txm
group by sm
order by count(*) desc,sm desc;
#第二题
select sm,count(*)jycs from borrow left join book on book.txm=borrow.txm
group by sm having(count(*)>=2)
order by count(*) desc,sm desc;
#第三题
select cbs,count(*)jycs from borrow left join book on book.txm=borrow.txm
group by cbs
order by count(*) desc,cbs desc;
#第四题
select xm,count(*)jycs from borrow left join reader on borrow.dzzh=reader.dzzh
group by xm
order by count(*) desc,xm desc;
#第五题
select xm,count(*)jycs from borrow left join reader on borrow.dzzh=reader.dzzh
where sf='研究生'
group by xm
order by count(*) desc,xm desc;
#代码结束
第一题 查询与李白全集同一个出版社的图书的书名(不包括李白全集) 第二题 查询高于图书的平均售价(sj)的图书的书名和售价 第三题 查询售价最高的图书的条形码、书名和售价 第四题 查询售价最低的图书的条形码、书名和售价。
use library;
#代码开始
#答案1
select sm
from book
where cbs = (select cbs from book where sm ='李白全集') and sm !='李白全集';
#答案2
select sm, sj
from book
where sj > (select avg(sj) from book);
#答案3
select txm, sm, sj
from book
where sj = (select max(sj) from book);
#答案4
select txm, sm, sj
from book
where sj = (select min(sj) from book);
#代码结束
本关任务: 第一题 查询曾经借过图书的读者的读者证号和姓名 第二题 查询曾经没有被借阅的图书的条形码和书名 第三题 查询与孙思旺借过相同图书的读者的读者证号和姓名,按读者证号升序排列 第四题 查询借阅过李白全集的读者所借过的其他图书的书名 按书名升序排列。
use library;
#代码开始
#题目1
select distinct reader.dzzh,xm
from reader,borrow
where reader.dzzh = borrow.dzzh
order by reader.dzzh asc;
#题目2
select book.txm, sm
from book left join borrow
on book.txm = borrow.txm
where jyrq is null;
#题目3
select distinct reader.dzzh, xm
from reader,borrow
where reader.dzzh = borrow.dzzh and txm in(
select borrow.txm
from reader,borrow,book
where reader.dzzh = borrow.dzzh and borrow.txm = book.txm and xm = '孙思旺') and xm !='孙思旺'
order by reader.dzzh asc;
#题目4
select distinct sm
from borrow,book
where borrow.txm = book.txm and dzzh in(
select dzzh
from borrow,book
where borrow.txm = book.txm and sm ='李白全集'
)and sm !='李白全集'
order by sm asc;
#代码结束