【MySQL】MySQL的自然连接和USING连接详细总结
目录
- 1 自然连接
- 2 USING连接
1 自然连接
自然连接是SQL99在SQL92的基础上新增的语法,用关键字 NATURAL JOIN
表示。自然连接类似于SQL92中的等值连接,它会自动查询两张表中所有相同的字段,然后进行等值连接。
举个栗子,这是SQL92语法中等值连接的写法:
SELECT emp.`employee_id`, emp.`last_name`, dept.`department_name`, emp.`manager_id`
FROM employees emp JOIN departments dept
ON emp.`department_id` = dept.`department_id`
AND emp.`manager_id` = dept.`manager_id`;
在SQL99中可以使用自然连接 NATURAL JOIN
代替:
SELECT emp.`employee_id`, emp.`last_name`, dept.`department_name`, emp.`manager_id`
FROM employees emp NATURAL JOIN departments dept;
查询结果:
可以看到,虽然使用自然连接 NATURAL JOIN
代替更简洁,但其远不如SQL92中的等值连接那样灵活。因为自然连接 NATURAL JOIN
是一定会自动查询两张表中所有相同的字段,但很多时候我们仅需要一个相同字段作为连接条件即可,并不需要所有相同字段作为连接条件,因此自然连接 NATURAL JOIN
的应用范围是十分有限的。
2 USING连接
USING
连接是指定表中同名字段进行等值连接。但是只能配合 JOIN
一起使用。
举个栗子,在SQL92语法中的等值连接如下:
SELECT emp.`employee_id`, emp.`last_name`, dept.`department_name`
FROM employees emp, departments dept
WHERE emp.`department_id` = dept.`department_id`;
如果连接条件中的字段同名,则可以使用 USING
连接:
SELECT emp.`employee_id`, emp.`last_name`, dept.`department_name`
FROM employees emp JOIN departments dept
USING (department_id);
查询结果:
USING
连接的灵活度比自然连接 NATURAL JOIN
更强,但其只能用在两张表的同名字段进行等值连接。如果连接条件的字段不同名 (如,自连接) ,就无法使用 USING
连接,其依然具有一定的局限性。
【MySQL】MySQL的自然连接和USING连接详细总结相关推荐
- MySQL 学习笔记(15)— 连接查询(内连接、左外连接、右外连接、全外连接、交叉连接、自然连接等)
本文参考:https://gitbook.cn/gitchat/column/undefined/topic/5db92b68a9c3a53bc3800eff SQL 支持的连接查询包括内连接.外连接 ...
- MySQL的自然联结+外部联结(左外连接,右外连接)+内部联结
[0]README 0.1)本文旨在review MySQL的自然联结+外部联结(左外连接,右外连接)+内部联结 的相关知识: [1]自然联结 1)自然联结定义:无论何时对表进行联结,应该至少有一个列 ...
- Mysql表连接:内连接、外连接、交叉连接、自然连接真的都不一样吗
文章目录 前言 测试环境 创建测试数据 对比测试 内连接 交叉连接 外连接 左外连接 右外连接 自然连接 一般自然连接 自然左外连接 自然右外连接 STRAIGHT_JOIN 逗号分隔连接表 各种连接 ...
- mysql 自然连接、内连接、外连接的区别
数据库中的连接join分为内连接.自然连接.外连接,外连接又分为左外连接.右外连接.全外连接(注意:mysql不支持全外连接) 首先,我们先来建两张表,第一张表命名为kemu,第二张表命名为score ...
- mysql自然连接和等值连接_区分笛卡儿积,自然连接,等值连接,内连接,外连接...
1.区分笛卡儿积,自然连接,等值连接,内连接,外连接(左连接,右连接和全连接) 假设存在两张表R和S,这里使用的是MySQL数据库. 下面这张表是R 下面这张是S 为了测试左连接和右连接,现在增加一张 ...
- mysql 笛卡尔积_Mysql(笛卡尔积、等值连接、自然连接、外连接)
1.笛卡尔积 笛卡尔积的元素是元组,关系A和B的笛卡尔积可以记为(AXB),如果A为a目,B为b目,那么A和B的笛卡尔积为(a+b)列.(a*b)行的元组集合. (1)学生表和分数表中的信息: 学生表 ...
- mysql等值连接概念_Mysql(笛卡尔积、等值连接、自然连接、外连接)
1.笛卡尔积: 笛卡尔积的元素是元组,关系A和B的笛卡尔积可以记为(AXB),如果A为a目,B为b目,那么A和B的笛卡尔积为(a+b)列的元组集合. (1)学生表和分数表中的信息: 学生表: 分数表( ...
- 深入理解MySQL的外连接、内连接、交叉连接
1.内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和 ...
- mysql外连接插座_深入理解SQL的四种连接-左外连接、右外连接、内连接、全连接...
1.内联接(典型的联接运算,使用像 = 或 <> 之类的比较运算符).包括相等联接和自然联接. 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行.例如,检索 students和 ...
最新文章
- 【Nginx】如何建立新连接
- android studio 模拟器中文乱码
- PHP(一) 开发环境搭建
- php mysql筛选查询,php-Vicidial的MySQL筛选器
- 音频处理九:(参数估计)
- zTree使用技巧与详解
- Javascript基础(二)
- PHP二开 三语言( 中文、英语、马来语) 自动抢单系统源码
- mysql链接压测_MySQL压测工具mysqlslap的介绍与使用
- 动态解析dll及使用类
- Effective C# 原则3:选择is或者as操作符而不是做强制类型转换(翻译)
- kotlin和python哪个好_对比 Go 语言,Kotlin 有什么优势和劣势?
- switch 大气层双系统 进入破解系统 及安装nsp nsz 格式教程
- 内存泄露的检测工具——Valgrind
- Unity+Vuforia实现AR图片识别应用
- 信息系统项目管理师必背核心考点(十)信息系统规划
- “PE文件格式”1.9版 完整译文(附注释)
- 在Centos8上部署Django环境(Nginx+mysql+uwsgi)
- 模糊集合和隶属度详解
- 【STM32学习笔记-点亮LED灯】