本人会用几天时间把在学校学到的整个数据库知识全盘托出,如果能看懂并且明白我接下来所写的博文,相信对你数据库提升、对行业软件理解、以后工作有很大帮助。
由于SQL部分内容实在太多,我会把整个第二章分成四个小部分来细讲
目录
第二讲其二:SQL
SQL的组成部分
数据查询语言——单表查询
2.3.1查询语句格式
SELECT后面直接跟列名
【例2.18】
【例2.19】查询Book表中的全部数据
DISTINCT关键字
•如果在结果中重复的数据不想显示出来,可以使用DISTINCT关键字
•【例2.22】查询每一本书九折后的价格
列更名
WHERE子句
• SELECT 列名列表 FROM 表名
WHERE 条件表达式
•【例2.25】查询价格大于30元的图书的全部信息
范围比较:BETWEEN … AND …
•【例2.29】查询图书价格在25到50元之间的图书
•【例2.30】图书价格不在20到30元之间的图书
比较运算
•【例2.26】查询所有的女读者的信息
•【例2.27】查询图书价格在30到50元之间的图书
•【例2.28】查询“机械工业出版社”或者“清华大学出版社”出版的图书
集合查询:IN
•【例2.31】查找“机械工业出版社”,“清华大学出版社”,“高等教育出版社”出版的全部图书
•【例2.32】查找不是“机械工业出版社”,“清华大学出版社”,“高等教育出版社”出版的全部图书
WHERE子句中可以使用的查询条件
空值比较:IS NULL
•【例2.38】查询性别为空的读者的信息
•【例2.39】查询出生日期不为空的读者的姓名
字符串模糊查询:LIKE
•【例2.33】查询姓全部“王”的读者的信息。
LIKE的用法
多重条件查询
•【例】查询1992年以后出生的女读者的姓名
查询语句格式
SELECT [ALL|DISTINCT] <目标列名序列>
FROM <数据源>
[ WHERE <检索条件表达式> ]
[ GROUP BY <分组依据列>
[ HAVING <组提取条件表达式> ] ]
[ ORDER BY <排序依据列> [ ASC|DESC ] ]
ORDER BY子句:排序
•【例2.42】查询读者的信息按出生日期的升序显示
•【例2.43】查询读者的信息按出生日期的“降序”显示
•【例2.44】查询图书的信息,查询结果按照出版社的名称升序排序,同一出版社的按照价格的降序排序。
聚集函数
•【例2.45】统计全部图书的平均价格
•【例2.46】查询最高的图书价格
•【例2.47】统计读者的总人数
分组查询(GROUP BY 子句)
•【例2.49】统计每个出版社的出版图书的数目
•可以使用GROUP BY <列名>进行分组
•在<列名>上值相同的元组被分在一组,该列称为分组依据列。然后可以使用聚集函数统计每一组的数据。
•【例2.42】统计每个人所借图书的数目。
•【例2.43】统计每个出版社出版图书的平均价格,并显示每个出版社的名称
•【例】查询出版图书平均价格高于30元的出版社名称,并显示其图书平均价格。
•【例2.45】查询出版图书多于2本的出版社名称和出版图书数目
小结:SELECT 的基本结构
聚集函数
FROM <数据源>
[ WHERE <检索条件表达式> ]
[ GROUP BY <分组依据列>
[ HAVING <组提取条件表达式> ] ]
[ ORDER BY <排序依据列> [ ASC|DESC ] ]
– 聚集函数:统计正式讲解SQL之前先准备好软件环境,了解library数据库的结构和表的含义
SELECT name, author, price FROM Book
select * from book
SELECT pubilsh FROM Book
SELECT DISTINCT pubilsh FROM Book
SELECT book_ID,name,price*0.9 FROM Book
SELECT * FROM Book WHERE price >30
SELECT * FROM Book WHERE price BETWEEN 25 AND 50
等价于
SELECT * FROM Book WHERE price>=25 AND price <=50
SELECT * FROM Book WHERE price NOT BETWEEN 20 AND 30
等价于
SELECT * FROM Book WHERE price<20 OR price >30
Select * from reader where sex=‘女’
SELECT * FROM Book WHERE price BETWEEN 25 AND 50
SELECT * FROM Book WHERE publish =‘机械工业出版社’ or publish = ’ 清华大学出版社’,’ 高等教育出版社’
SELECT * FROM Book WHERE publish IN(‘机械工业出版社’, ’ 清华大学出版社’,’ 高等教育出版社’)
SELECT * FROM Book WHERE publish NOT IN (‘机械工业出版社’, ’ 清华大学出版社’,’ 高等教育出版社’)
SELECT * FROM Reader WHERE sex IS NULL
SELECT name FROM Reader WHERE birthdate IS not NULL
SELECT * FROM Reader WHERE name LIKE ‘王%’
SELECT name FROM Reader WHERE birthdate >= ’1992-1-1’ AND sex=‘女’
SELECT * FROM Reader ORDER BY birthdate ASC
SELECT MAX(price) FROM Book
SELECT * FROM Reader ORDER BY birthdate DESC
SELECT * FROM Book ORDER BY publish ASC,price DESC
SELECT AVG(price) FROM Book
SELECT MAX(price) FROM Book
SELECT COUNT(*) FROM Reader
SELECT COUNT(*) , publish FROM Book GROUP BY publish
SELECT COUNT(book_ID), Reader_id FROM Borrow GROUP BY Reader_id Having COUNT(book_ID)>2
SELECT publish, AVG(price) AS 平均价格 FROM Book GROUP BY publish
SELECT publish,AVG(price) FROM Book GROUP BY publish HAVING AVG(price)>30
SELECT publish, COUNT(*) FROM Book GROUP BY publish HAVING COUNT(*)>2