5、Mysql连接查询
Mysql的连接查询是通过JOIN关键词来实现的,不同的JOIN有:
INNER JOIN:如果表中存在只少一个匹配项,就返回行数据。
LEFT JOIN:即使右表没有匹配项,也会返回左表的所有行。
RIGHT JOIN:即使左表没有匹配项,也会返回右表的所有行。
:只要任意一张表有匹配项,就返回行数据。
在Mysql中的查询中连接查询的位置:
内连接:SELECT 查询内容 FROM 查询范围 (INNER) JOIN 条件;
外连接:SELECT 查询内容 FROM 查询范围 LEFT JOIN 条件;
外连接:SELECT 查询内容 FROM 查询范围 RIGHT JOIN 条件;
全连接:SELECT 查询内容 FROM 查询范围 条件;
实例1:
题目1:查询所有学生的sno、cname和degree列。
mysql> SELECT g.sno,c.cname,g.degree FROM course c INNER JOIN grade g ON c.cno=g.cno;
实例2:
题目2:查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为null)。
mysql> SELECT s.sid,s.sname,sc.count,sc.sum FROM student s LEFT JOIN (SELECT sid id, count(sid) count, sum(score) sum FROM score GROUP BY sid) sc ON s.sid=sc.id;
实例3:
题目3:查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩。
mysql> SELECT s.sid,s.sname,sc.count,sc.sum FROM student s RIGHT JOIN (SELECT sid id, count(sid) count, sum(score) sum FROM score GROUP BY sid) sc ON s.sid=sc.id;
实例4:
题目:4:查询所有学生和所有老师的全部信息。
mysql> SELECT * FROM students SELECT * FROM teachers;