MySQL数据库中如何使用连接查询?
当查询的结果来源于有关系的多张表时,需要使用到连接查询
连接查询分类:
- 内连接(inner join):表A inner join 表B,表A和表B都匹配的行出现在结果集当中(不区分两个表的先后顺序)
- 左连接(left join):表A left join 表B,表A与表B都匹配的行会出现在结果中,外加表A中独有的数据,未对应的数据使用null填充(区分先后顺序)
- 右连接(right join):表A right join表B,表A与表B都匹配的行会出现在结果中,外加表B中独有的数据,未对应的数据使用null填充(区分先后顺序)
连接查询中的列名和表名的使用:
- 在查询或条件中推荐使用“表名.列名”的语法
- 如果多个表中列名不重复,则可以省略"表名."部分,直接使用"列名"
- 如果表的名称太长,可以取个简写别名,表名后面使用"as 简写名"或者省去as,直接跟上“简写名”
练习:
-
查询学生的姓名、总分
select students.sname,sum(scores.score) from scores inner join students on scores.stuid=students.id group by students.sname;
-
查询各科的平均分、最高分
select subjects.stitle,avg(scores.score),max(scores.score) from scores inner join subjects on scores.subid=subjects.id where subjects.isdelete=0 group by subjects.stitle;
-
查询广州市有哪些区县
select district.atitle, country.atitle from areas as city inner join areas as district on city.id = district.pid left join areas as country on country.pid = district.id where city.atitle = '广州市';