1,张飞借阅书的籍-子查询
SELECT b.book_name FROM bookinfo b
INNER JOIN book_borrow bb
ON b.book_id =bb.book_id
WHERE bb.card_id =
(SELECT card_id FROM reader WHERE name ="张飞")

2,左/右链接查询
SELECT b.book_name,bb.borrow_data FROM bookinfo b
RIGHT JOIN book_borrow bb
on b.book_id =bb.book_id

3,UNION/UNION All 联级
SELECT book_name,author FROM bookinfo UNION ALL
SELECT borrow_data,return_data FROM book_borrow

4,except/except ALL
SELECT borrow_data,return_data FROM book_borrow except
SELECT book_name,author FROM bookinfo

5,intersect/intersect ALL -交集
SELECT borrow_data,return_data FROM book_borrow intersect ALL
SELECT book_name,author FROM bookinfo

6,left OUTER JOIN
SELECT b.book_name FROM book_borrow bb
LEFT OUTER JOIN bookinfo b
on b.book_id =bb.book_id

7,RIGHT OUTER JOIN
SELECT b.book_name FROM bookinfo b
RIGHT OUTER JOIN book_borrow bb
on b.book_id =bb.book_id

8,FULL OUTER JOIN -sql不支持
SELECT * FROM bookinfo b
FULL OUTER JOIN book_borrow bb
on b.book_id =bb.book_id

9,排序ORDER BY ----age 进行升序排序,在age相同时,balance DESC 排前面
SELECT balance,age FROM reader ORDER BY age asc, balance DESC


having和ground by 一起使用
11,查询每个年龄金额大于50,性别为男的人数至少为2个的情况
SELECT age,
SUM(balance)
FROM reader
WHERE sex ="男"
GROUP BY age
HAVING COUNT(balance)>=2

12,显示余额400的用户名称和性别

SELECT name,sex FROM reader WHERE balance > 400

13,显示每个年龄用户的余额在200以上各有多少人

SELECT age,COUNT(card_id) as "人数"
FROM reader WHERE balance >200
GROUP BY age


*sc(学生表) 、SNO(学生号)、PNO(课程名)、GRADE(成绩)
1、查询每一个班级中年龄大于20,性别为男的人数至少为2个的情况
SELECT 班级, COUNT(age) FROM 表
WHERE sex ="男"
GROUP BY 班级
HAVING COUNT(age) >2

2、显示90分以上学生的课程名和成绩
SELECT 课程名,成绩 FROM 学生表
WHERE 成绩>90

3、显示每个学生的成绩在90分以上的各有多少门
SELECT 学号,COUNT(*) FROM 学生表
WHERE 成绩>90
GROUP BY 学号

4、列出至少有两门课程在90分以上的学生的学生号及90分以上的课程数。
SELECT 学生号 ,COUNT(课程数)
from 学生表
WHERE 成绩 >90
GROUP BY 学生号
HAVING COUNT(课程数)>2

5、列出平均成绩大于90分并且语文课必须在95分以上的学生
SELECT 学生号,AVG(成绩) FROM
学生表 WHERE 学生号
in(SELECT 学生号 FROM 学生表 WHERE 课程名 =“语文课” AND 成绩>95)
GROUP BY 学生号
HAVING AVG(成绩)>90

6、查询平均成绩至少比学号是3的平均成绩高的学生学号以及平均分数
SELECT 学生学号,AVG(成绩) FROM 学生表
GROUP BY 学生号
HAVING AVG(成绩) > (SELECT AVG(成绩) FROM 学生表 学号 =3)

7,查询每个班男女人数分别大于20的班级号及男女生总数?
select 班级,性别,count(*) from tab
group by 班级,性别
having count(*) > 20