声明:本博文如存在问题,欢迎各位dalao指正!!!
目的与任务:
要求熟练掌握SQL查询语言的基本查询、条件查询、多表查询、统计查询。
这里将所有sql查询语句都放在一起了,直接全部复制到navicat中既可,另外实验一中只有表格没有数据,下面将数据附上。
链接:https://pan.baidu.com/s/14YjOhxUud8-dje3lk2bXKg
提取码:tsvt
-- 1、从USER表中查询所有用户的姓名和单位。
SELECT lname,unitName
FROM Users;
-- 2、查询所有图书的信息。
SELECT *
FROM bookinfo;
-- 3、查询单位为“计算机学院”的用户的全部信息。
select *
from Users
where unitName = '计算机学院';
-- 4、查询已经预约但还没有借出的书的信息。
select *
from Books
where bstatus='3';
-- 5、查询借书超过60天且还没有归还的借阅证号、书号。
select loanNo,bookNo
from Loan
where datediff(now(), borrowDate)>60;
-- 6、查询“清华大学出版社”出版的所有中文书的书名、作者、价格。
select bname,author,price
from BookInfo
where press = '清华大学出版社' && language ='中文';
-- 7、查询在流通总库或者是属于计算机学院资料室的尚未借出的书。
select *
from Books
where location = '流通总库' && bstatus = '0';
-- 8、查询价格在30元到50元之间的书。
select *
from BookInfo
where price between 30 and 50;
-- 9、查询2019年的借阅历史情况。
select *
from LoanHist
where year(borrowDate)='2019';
-- 10、查询作者为兰苓、孙海涛、刘明编写的书的书名、作者、出版社和价格。
select bname,author,press,price
from BookInfo
where author in('兰苓','孙海涛','刘明');
-- 11、查询书名包含“数据库”的所有书名、作者、出版社和价格。
select bname,author,press,price*1.5 as price
from BookInfo
where bname like '%数据库%'
order by bname;
-- 12、查询书名包含“数据库”的所有书名、作者、出版社及价格*1.5 ,并将最后一列重命名为price。
SELECT bname,author,press,price*1.5 AS price
FROM bookinfo
WHERE bname LIKE '%数据库%';
-- 13、将上题的结果按书名排序。
SELECT bname,author,press,price*1.5 AS price
FROM bookinfo
WHERE bname LIKE '%数据库%'
ORDER BY bname;
-- 14、查询收费情况,结果先按日期降序排序,同一天的按金额排序。
SELECT *
FROM money
ORDER BY billdate DESC,amount;
-- 15、查询书价最高的前5种的书名、作者、出版社和定价。
select bname,author,press,price
from BookInfo
order by price desc limit 5;
-- 16、查询买过哪些出版社的书。
SELECT bookinfo.press,COUNT(*)
FROM books,bookinfo
WHERE books.ISBN=bookinfo.ISBN
GROUP BY press;
-- 17、查询借阅用户总人数。
SELECT COUNT(*)
FROM users;
-- 18、查询当前正借有书的用户总人数。
select count(distinct loanNo)
from Loan;
-- 19、查询办证押金的总金额。
select sum(amount)
from Money
where reason = '办证押金';
-- 20、查询用户对书的平均借阅时间:按照用户分组,查询每个用户的平均借阅天数。
select AVG(DATEDIFF(returnDate,borrowDate)) 平均借阅时间
from LoanHist
GROUP by loanNo;
-- 21、查询书的最高价格和最低价格。
select max(price),min(price)
from BookInfo;
-- 22、查询出版社及从各个出版社购进的书各有多少种。
select press,count(*)
from BookInfo
group by press;
-- 23、查询每种图书的书名和其库存量,并对结果按库存量排序。
select a.ISBN,b.bname,count(*)
from Books a,BookInfo b
where a.ISBN=b.ISBN
group by ISBN
order by count(*), ISBN desc ;
-- 24、对上题的查询结果只返回库存量在3本以上的书名和库存量。
select a.ISBN,b.bname,count(*)
from Books a,BookInfo b
where a.ISBN=b.ISBN
group by a.ISBN
having count(*) > 2
order by count(*),a.ISBN desc;
-- 25、查询2019年各种情况收费的总数大于50元的金额和收费原因。
select reason,sum(amount)
from Money
where year(billdate)= 2019
group by reason
having sum(amount) > 50;
-- 26、查询当前借书用户的借阅证号、姓名、书号、借书日期。
select a.loanno,b.lname,a.bookno,a.borrowdate
from Loan a,Users b
where a.loanNo = b.loanNo;
-- 27、查询当前借书过期还没归还的用户的借阅证号、姓名、书名、借书日期、过期天数,并按借阅证号排序。
select a.loanno,b.lname,c.bname,a.borrowdate
from Loan a,Users b,BookInfo c,Class_User d,Books e
where a.loanNo = b.LoanNo && a.bookNo = e.bookNo && e.ISBN=c.ISBN && b.classNo=d.classNo && datediff(now(),a.borrowdate)> d.term
order by a.loanNo;