数据查询
实验目的
1. 掌握基本查询的SQL语句。
2. 掌握SELECT语句中函数的使用方法。
3. 掌握多表查询、子查询的基本方法。
4. 了解高级查询的基本方法。
检索限定与排序
- 查询所有图书的基本信息。
SELECT *
FROM Book;
- 查询所有的图书编号、名称和价格
SELECT B_ID,B_Name,Price
FROM Book;
- 查询教师一次可以借多少本书以及借书期限多少天,输出的结果字段名分别用借书本数和借书期限表示
SELECT LimitNum as 借书本数,LimitDays as 借书期限
FROM ReaderType
WHERE RT_Name='教师';
- 查询“人民邮电出版社”出版的图书的书名、作者、出版社编号及出版日期
SELECT B_Name ,Author ,P_ID ,PubDate
FROM Book
WHERE P_ID IN(SELECT P_ID
FROM Publish
WHERE Pubname='人民邮电出版社');
- 查询姓“张”读者的基本信息
SELECT *
FROM Reader
WHERE R_Name LIKE '张%';
- 查询Borrow表中未还图书的记录
SELECT *
FROM Borrow
WHERE ReturnDate IS NULL;
- 查询2012年一年以内的借阅记录
SELECT *
FROM Borrow
WHERE TO_CHAR(LendDate,'yyyy')=2012;
- 查询部门在“学生处”或“后勤处”的读者信息
SELECT *
FROM Reader
WHERE RDept='学生处' OR RDept='后勤处';
- 查询所有图书的图书编号、名称、作者、出版日期和价格,并按价格升序排序,若图书价格相同,则按出版日期降序排序。
SELECT B_ID ,B_Name ,Author ,PubDate ,Price
FROM Book
ORDER BY Price,PubDate DESC;
- 查询“BorrowInfo”不为空的借阅记录,并对检索结果按还书日期升序排序,若还书日期为NULL,则还书日期为NULL的行排在最前面
SELECT *
FROM Borrow
WHERE BorrowInfo IS NOT NULL
ORDER BY ReturnDate DESC nulls last;
难点
NULL的排序方式 :null是最大的,如果是ASC,则被排在最后。如果是DESC,则被排在最前。
解答
因为ORACLE认为空值是最大的值,所以将SQL语句改为 …order by ”排序字段" desc nulls last ;
不管是ASC 还是 DESC:
nulls first :将null排在最前面。
null last :将null排在最后面。
使用使用语法如下:
–将nulls始终放在最前
SELECT *
FROM zl_cbqc
ORDER BY cb_ld NULLS FIRST
–将nulls始终放在最后
SELECT *
FROM zl_cbqc
ORDER BY cb_ld DESC NULLS LAST