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 = '广州市';

     

     

posted @ 2020-12-29 00:20  eliwang  阅读(348)  评论(0编辑  收藏  举报