mysql中的内连接与外连接

在MySQL中,内连接和外连接是用于从多个表中检索数据的两种不同的连接方式。

  1. 内连接(INNER JOIN)

    内连接返回两个表之间匹配的行。它只返回两个表中共同匹配的行,如果在一个表中没有匹配到对应的行,则不会显示在结果中。

    语法如下:

    sql 复制代码
    SELECT columns
    FROM table1
    INNER JOIN table2 ON table1.column = table2.column;

    例如,假设我们有两个表:studentsgrades,它们通过学生ID进行关联。下面的查询将返回两个表中匹配的学生及其成绩:

    sql 复制代码
    SELECT students.name, grades.grade
    FROM students
    INNER JOIN grades ON students.student_id = grades.student_id;
  2. 外连接(OUTER JOIN)

    外连接允许返回匹配的行以及未匹配的行。MySQL支持左外连接(LEFT JOIN)、右外连接(RIGHT JOIN)和全外连接(FULL JOIN)。

    • 左外连接(LEFT JOIN):返回左表中的所有行,以及右表中与左表中行匹配的行。如果右表中没有匹配的行,则会在结果中显示 NULL 值。

      语法如下:

      sql 复制代码
      SELECT columns
      FROM table1
      LEFT JOIN table2 ON table1.column = table2.column;
    • 右外连接(RIGHT JOIN):与左外连接类似,但是返回右表中的所有行,以及左表中与右表中行匹配的行。

      语法如下:

      sql 复制代码
      SELECT columns
      FROM table1
      RIGHT JOIN table2 ON table1.column = table2.column;
    • 全外连接(FULL JOIN):返回两个表中的所有行,并且对于没有匹配的行,将会使用 NULL 值填充。

      MySQL并不直接支持FULL JOIN,但可以通过UNION ALL和LEFT JOIN、RIGHT JOIN的组合来实现。

    例如,下面的查询将返回所有学生,以及他们的成绩(如果有的话):

    sql 复制代码
    SELECT students.name, grades.grade
    FROM students
    LEFT JOIN grades ON students.student_id = grades.student_id;
相关推荐
花青泽38 分钟前
5-数据库-SQL注入-联合查询-关键字绕过-day13
数据库·sql
天桥下的卖艺者7 小时前
使用scitable包,两步生成逆概率删失权重(IPCW)
数据库·r语言
隔窗听雨眠7 小时前
AI原生数据库浪潮:国产数据库的架构重构与路径之争
数据库
数据库小学妹7 小时前
数据库选型实战:从数据类型到TCO成本,五维决策框架+九款产品横评
数据库·信创·国产数据库·数据库选型·oracle迁移
神龙天舞20018 小时前
MySQL 备库为什么会延迟好几个小时
android·数据库·mysql
丙氨酸長鏈10 小时前
Web前端入门第 问:JavaScript 一个简单的 IndexedDB 数据库入门示例
前端·javascript·数据库
独行侠影a10 小时前
APScheduler+Redis 分布式定时任务:解决多实例任务重复执行
数据库·redis·分布式
传说故事11 小时前
数据库中一些常用英文单词含义
数据库·oracle
夏贰四11 小时前
中小企业搭建业务中台如何控成本?业务中台轻量化落地分几步实施?
数据库·业务中台
林焱RPA12 小时前
影刀RPA200篇纪念版:最实用的20个自动化场景大盘点
数据库