MySQL——连接查询(2)内连接

内连接(Inner Join)又称简单连接或自然连接,是一种常见的连接查询。内连接使用比较运算符对两个表中的数据进行比较,并列出与连接条件匹配的数据行,组合成新的记录,也就是说在内连接查询中,只有满足条件的记录才能出现在查询结果中。内连接查询的语法格式如下所示:

sql 复制代码
SELECT 查询字段 FROM 表1 [INNER] JOIN 表2 0N 表1.关系字段=表2.关系字段

在上述语法格式中,INNER JOIN 用于连接两个表,ON 来指定连接条件,其中INNER 可以省略。

例如,在 department 表和 employee 表之间使用内连接查询,SQL 语句如下:

sql 复制代码
SELECT employee.name,department.dname FROM department JOIN employee ON department.did=employee.did;

上述语句执行成功后,结果如下:

sql 复制代码
mysql> SELECT employee.name,department.dname FROM department JOIN employee ON department.did=employee.did;
+--------+-----------+
| name   | dname     |
+--------+-----------+
| 小红   | 网络部    |
| 小强   | 网络部    |
| 小明   | 媒体部    |
+--------+-----------+
3 rows in set (0.00 sec)

从上述结果可以看出,只有 department.did 与 employee.did 相等的员工才会被显示。

在 MySQL 中,还可以使用 where 条件语句来实现同样的功能。

例如,在 department 表和 employee 表之间使用 WHERE,SQL语句如下:

sql 复制代码
SELECT employee.name,department.dname FROM department,employee WHERE department.did=employee.did;

上述语句执行成功后,结果如下:

sql 复制代码
mysql> SELECT employee.name,department.dname FROM department,employee WHERE department.did=employee.did;
+--------+-----------+
| name   | dname     |
+--------+-----------+
| 小红   | 网络部    |
| 小强   | 网络部    |
| 小明   | 媒体部    |
+--------+-----------+
3 rows in set (0.00 sec)

从查询结果可以看出,使用 WHERE 子句的查询结果与使用INNER JOIN 的查询"果是一致的。需要注意的是,这两个语句的查询结果虽然相同,但是INNER JOIN 是的莲接语句,WHERE 是条件判断语句,在 WHERE 语句后可以直接添加其他条件,而NNER JOIN 语句不可以。

如果在一个连接查询中,涉及的两个表是同一个表,这种查询称为自连接查询。自"接是一种特殊的内连接,它是指相互连接的表在物理上为同一个表,但逻辑上分为两表,例如要查询小红所在的部门有哪些员工,就可以使用自连接查询。

例如,在 department 表和 employee 表之间使用自连接查询,SQL语句如下:

sql 复制代码
SELECT p1.* FROM employee p1 JOIN employee p2 ON p1.did=p2.did WHERE p2.name='小红';

上述语句执行成功后,结果如下:

sql 复制代码
mysql> SELECT p1.* FROM employee p1 JOIN employee p2 ON p1.did=p2.did WHERE p2.name='小红';
+----+--------+------+-----+
| id | name   | age  | did |
+----+--------+------+-----+
|  1 | 小红   |   20 |   1 |
|  2 | 小强   |   22 |   1 |
+----+--------+------+-----+
2 rows in set (0.00 sec)

从查询结果可以看出,王红所在的部门有两个员工,分别是小红和小强。

相关推荐
数据库小组5 分钟前
NineData 实战教程:MySQL 5.5 数据迁移同步到 MySQL 8.0(跨版本升级)
数据库·mysql·mysql优化·数据库开发·数据库迁移·版本升级·数据复制
zhangjw3440 分钟前
1-5 PostgreSQL 数据类型全集:基础类型、字符串、数值、时间类型
数据库·postgresql
王中阳Go1 小时前
5.27 分钟干完后端和全部测试:一场三小时笔试的五个失分点,四个不在代码上
大数据·数据库·人工智能·后端·大语言模型
cnskylee1 小时前
【MySQL】麒麟V10 SP3系统安装MySQL-Commercial-8.0.46
数据库·mysql·adb
梦幻通灵1 小时前
修改MySQL数据库递增序列【持续更新】
数据库·mysql
liminla!1 小时前
SQL 从入门到进阶:语法速查与实战练习(完整优化版)
数据库·sql·算法
tongyiixiaohuang1 小时前
供应商主数据同步实战:从易快报到金蝶云星空的单一策略落地
java·网络·数据库
大侠归来2 小时前
常用 MySQL 分库分表方案详解
数据库·mysql
kingx33 小时前
Windows Server 2008 应急加固实战:7 项入侵痕迹排查与修复
数据库·windows·提权·应急响应·加固
xiaogai_gai3 小时前
采购业务退款单同步实战:从钉钉审批流到金蝶云星空付款单
java·数据库·钉钉