美文网首页
2018-07-29MySQL的关系连接查询

2018-07-29MySQL的关系连接查询

作者: 菩灵 | 来源:发表于2018-07-29 15:45 被阅读8次

先看个问题

  • 问:查询每个学生每个科目的分数
  • 分析:学生姓名来源于students表,科目名称来源于subjects,分数来源于scores表,怎么将3个表放到一起查询,并将结果显示在同一个结果集中呢?
  • 答:当查询结果来源于多张表时,需要使用连接查询
  • 关键:找到表间的关系,当前的关系是
    • students表的id---scores表的stuid
    • subjects表的id---scores表的subid
  • 则上面问题的答案是:
select students.sname,subjects.stitle,scores.score
from scores
inner join students on scores.stuid=students.id
inner join subjects on scores.subid=subjects.id;

  • 结论:当需要对有关系的多张表进行查询时,需要使用连接join

连接查询

  • 连接查询分类如下:

    • 表A inner join 表B:表A与表B匹配的行会出现在结果中


      不分左右,能匹配上的都出现
    • 表A left join 表B:表A与表B匹配的行会出现在结果中,外加表A中独有的数据,未对应的数据使用null填充


      左连接
    • 表A right join 表B:表A与表B匹配的行会出现在结果中,外加表B中独有的数据,未对应的数据使用null填充


      右连接
  • 在查询或条件中推荐使用“表名.列名”的语法

  • 如果多个表中列名不重复可以省略“表名.”部分

  • 如果表的名称太长,可以在表名后面使用' as 简写名'或' 简写名',为表起个临时的简写名称

什么时候需要用到连接查询:需要查看一组信息,来自多张表。

注意:inner join 只有在关系匹配上的时候才会在结果集中出现,inner join不分前后。

inner join匹配上的会出现

练习

  • 查询学生的姓名、平均分
select students.sname,avg(scores.score)
from scores
inner join students on scores.stuid=students.id
group by students.sname;

  • 查询男生的姓名、总分
select students.sname,avg(scores.score)
from scores
inner join students on scores.stuid=students.id
where students.gender=1
group by students.sname;

  • 查询科目的名称、平均分
select subjects.stitle,avg(scores.score)
from scores
inner join subjects on scores.subid=subjects.id
group by subjects.stitle;

  • 查询未删除科目的名称、最高分、平均分
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;

相关文章

  • 2018-07-29MySQL的关系连接查询

    先看个问题 问:查询每个学生每个科目的分数 分析:学生姓名来源于students表,科目名称来源于subjects...

  • mysql-数据查询语句-多表

    连接查询 连接查询,是关系数据库中最主要的查询,包括等值查询、自然连接查询、非等值查询、自身连接查询、外连接查询和...

  • 多表查询的连接方式

    连接查询主要分为三种:内连接、外连接、交叉连接。 内连接 等值连接/相等连接使用”=”关系将表连接起来的查询,其查...

  • 黑马SQL笔记 - 基础篇 - 4. 多表查询

    多表关系 一对多 多对多 一对一 连接查询 自连接:当前表与自身的连接查询,自连接必须使用表别名内连接:相当于查询...

  • MySQL - 基本知识4: 查询

    查询-比较运算符 逻辑运算, 模糊查询 范围, 判断空 聚合函数 分组 排序 分页 存储关系 建立关系表 连接查询

  • MySQL——连接查询(特殊的多表查询)

    连接查询(将具有管理关系的多个表连接起来进行查询操作) 1. 内连接语法格式:· SELECT 字段名列表 FRO...

  • mysql连接查询,自关联,子查询

    mysql支持三种类型的连接查询,分别为:内连接查询,左连接查询,右连接查询 内连接查询: 左连接查询: 右连接查...

  • mysql关联查询

    关联查询:数据查询是Mysql数据库管理最重要的一个功能,连接查询是关系型数据库最主要的查询,包括了内连接(INN...

  • python学习笔记-数据库06_连接查询

    连接查询可以实现多表的查询,当查询的字段数据来自不同的表就可以使用连接查询来完成连接查询可以分为:内连接查询左连接...

  • MySQL5.5多表之连接查询

    连接查询 关系型数据库管理系统中,通常将每个实体的所有信息存放在一张表中,当查询数据时,通过连接操作查询多个表中的...

网友评论

      本文标题:2018-07-29MySQL的关系连接查询

      本文链接:https://www.haomeiwen.com/subject/wwwzmftx.html