Skip to content

多表查询 内连接查询

多表查询-内连接查询

简介

内连接查询,也称为内连接或等值连接,是数据库查询中常见的查询方式。它通过匹配两个或多个表的字段相等来返回结果。内连接主要关注两个表中的匹配行,只显示能够匹配上的记录。这种连接方式不考虑其他运算符(如>、<、>=、<=、<>、between and 等),只关注等值条件。

值得注意的是,内连接查询可以分为隐式内连接和显式内连接两种写法,但功能都是一样的。在查询的列出现二义性时,要使用完全限定名。如果没有使用 where 子句过滤,则查询出的行数是两个数据表中的行数的乘积,这称之为“笛卡儿积”,这样会产生很多无用的数据。

内连接

  • 内连接(INNER JOIN):使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行,组合成新的记录。匹配上显示,匹配不上不显示。
  • 例子: 比如使用外键=主键这个条件过滤掉无效数据
  • 按语法结构分为: 隐式内连接和显式内连接

多表查询里的内连接(INNER JOIN)是指将两个或多个表中满足连接条件的记录组合在一起,形成一个新的结果集。内连接只返回两个表中都有的记录,即连接条件满足的记录。

隐式内连接

  • 在笛卡尔积的的基础上,使用 where 条件过滤无用的数据,这种连接方式是隐式内连接.
  • 语法:select [字段名称] from 表1, 表2 where [条件]
  • 例 1: 筛选出运营部的员工的 id,姓名以及所在城市
SELECT emp_id,ename,dept_location
FROM emp_part,dept
WHERE dept_id=id and dept_name="运营部";

显式内连接

  • 显式内连接: 使用 select [字段名称] from [表 1]inner join [表 2] on [条件] 这种方式
  • 列子: 用显式内连接查询运营部的员工的 id,姓名以及所在城市
SELECT emp_id,dept_location,ename
FROM emp_part
INNER JOIN dept ON dept_id=id AND dept_name="运营部"

总结

内连接查询可以分为隐式内连接和显式内连接两种写法,查询在多张表里都符合要求的记录。