多表连接查询内连接
A B
A表.x列 B表.y列
1. 找表之间的关系列
2. 将两表放在join左右
3. 将关联条件了放在on后面
4. 将所有的查询条件进行罗列
select A.m,B.n
from
A表 join B表
on A表.x列=B表.y列
where
group by
order by
limit
多表连接
例子1:查询世界人口小于100人的国家名,城市名,国土面积
select city.name,country.name ,country.surfacearea
from
city join country
on city.countrycode = country.code
where city.population<100;
例子2:查询oldguo老师,教的课程名称
select teacher.`tname`,course.`cname` 查询老师的名字 和 课程的名字 关于oldguo的行
from 从
teacher join course teacher表和course表中
on teacher.`tno` = course.`tno` 用teacher表的tno和course表的tno把两张表拼接
where teacher.`tname`='oldguo';
例子3:统计每门课程总成绩
select course.cname,SUM(sc.score)
from
sc join course
on sc.cno = course.cno
group by course.cname;
例子4. 查询oldguo老师教的学生姓名列表
SELECT teacher.tname,GROUP_CONCAT(student.sname)
FROM
teacher JOIN course
ON teacher.tno = course.tno
JOIN sc
ON course.cno = sc.cno
JOIN student
ON sc.sno = student.sno
WHERE teacher.tname='oldguo'
GROUP BY teacher.tname;
例子5. 查询所有老师教的学生姓名列表
例子6. 查询oldboy老师教的不及格学生的姓名
例子7. 统计zhang3,学习了几门课
例子8. 查询zhang3,学习的课程名称有哪些?
例子9. 查询oldguo老师教的学生名.
例子10.查询oldguo所教课程的平均分数
例子11.每位老师所教课程的平均分,并按平均分排序
例子12.查询oldguo所教的不及格的学生姓名
例子13.查询所有老师所教学生不及格的信息