SQL多表联合查询(交叉连接,内连接,外连接)
连接查询:
1. CROSS 交叉连接:
交叉连接返回的结果是被连接的两个表中所有数据行的笛卡尔积,也就是返回第一个表中符合查询条件的数据行数乘以第二个表中符合,查询条件的数据行数,例如department表中有4个部门,employee表中有4个员工,那么交叉连接的结果就有4 * 4 = 16条数据
SELECT * FROM 表1
CROSS JOIN 表2;或SELECT * FROM 表1,表2;
从上述描述情况可以看出,交叉连接的结果就是两个表中所有数据的组合。 在实际开发中这种业务需求是很少见的,一般不会使用交叉连接,而是使用具体的条件对数据进行有目的的查询。
2. 内连接:
内连接(INNER JOIN)又称简单连接或自然连接,是一种常见的连接查询。内连接使用比较运算符对两个表中的数据进行比较,并列出与连接条件匹配的数据航,组合成新的记录,也就是说在内连接查询中,只有满足条件的记录才能出现在查询结果中。
SELECT 查询字段
FROM 表1 [INNER] JOIN 表2
ON 表1.关系字段 = 表2.关系字段;
在上述语法格式中,INNER JOIN用于连接两个表,ON来指定连接条件,其中INNER可以省略。内连接其实还可以细分为如下两类:
1.隐式内连接:顾名思义隐式的就是我们看不到inner join的关键字。使用where关键字替代。
SELECT * FROM 表1,表2 where 表1.关系字段 = 表2.关系字段;
2.显示内连接:显示的就是在语句中明显的调用了inner join的关键字
SELECT * FROM 表1
inner join 表2
on 表1.关系字段 = 表2.关系字段;或SELECT * FROM 表1
join 表2
on 表1.关系字段 = 表2.关系字段;
3. 外连接:
前面讲解的内连接查询中,返回的结果只包含符合查询条件和连接条件的数据,然而有时还需要返回查询结果中不仅包含符合条件的数据,而且还包括左表(左连接或做外连接)、右表(右连接或右外连接),或两个表(全连接)中的所有数据,此时就需要使用外连接查询,外连接分为左连接和右连接。
语法格式:
SELECT 所查字段
FROM 表1 LEFT|RIGHT [OUTER] JOIN 表2
ON 表1.关系字段 = 表2.关系字段
WHERE 条件;
外连接的语法格式和内连接类似,只不过使用的是LEFT JOIN、RIGHT JOIN关键字,其中关键字左边的表被称为左表,关键字右边的表被称为右表。
SQL多表联合查询(交叉连接,内连接,外连接)相关推荐
- SQL 多表联合查询
很少用join,这次学学,并备忘两篇文章! 转自:http://hcx-2008.javaeye.com/blog/285661 连接查询 通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要 ...
- 基本功:SQL 多表联合查询的几种方式
点击关注公众号,实用技术文章及时了解 来源:blog.csdn.net/zt15732625878/article /details/79074123 前言 最近在项目中用到连接查询,连接查询是关系数 ...
- SQL 多表联合查询的几种方式
来源:blog.csdn.net/zt15732625878/article/details/79074123 https://www.jb51.net/article/205675.htm 前 ...
- SQL 多表联合查询,收藏直接起飞!
为什么需要多张数据库表进行查询呢?因为如果设计成一张表会造成数据冗余,造成数据库空间浪费,然而有时我们需要将多张表的数据整合并且查询出来,这时就需要通过表之间的主外键关联在一起进行查询. 查看获取表结 ...
- 万字详解 | SQL 多表联合查询方法,收藏直接起飞!
为什么需要多张数据库表进行查询呢?因为如果设计成一张表会造成数据冗余,造成数据库空间浪费,然而有时我们需要将多张表的数据整合并且查询出来,这时就需要通过表之间的主外键关联在一起进行查询. 查看获取表结 ...
- oracle 连接查询(内、外连接、自连接、子查询)
内连接: 一般使用inner join来实现.其中inner关键字可以省略 同时必须在from子句之后定义一个on子句,用来指定连接条件 外连接 1 左外连接:关键字为left outer join或 ...
- postgres sql 多表联合查询_从零学会SQL-多表查询
之前学习的内容几乎针对单个表进行简单操作,实际工作中可没有这么简单,复杂的表结构和多表数据关联进行分析,这时候需要我们掌握多表查询方法,一如既往,我们先看一下这篇的主要内容: 表的加法 表的联结 联结 ...
- SQL多表联合查询时采用字段模糊匹配
先说一下背景和要求: 背景:由于业务或是其他不描述的原因的问题导致原有存储的数据发生变动,与现有数据有差别,但还是能勉强看明白数据内容. 要求:实现A表的名称字段和B表的名称字段要模糊匹配. 上图: ...
- 一个mybatis动态 SQL查询的完整小案例。包含多表联合查询。
多表联合查询 一个根据机场查询航线的例子.有两张表,机场表包含机场信息:机场id.机场名字.机场城市. 航班包含航线信息:航班id.飞机编号.飞行时间.票价.起飞机场id.降落机场id. 需要查询的结 ...
最新文章
- c语言cythe头文件,第5章 C语言序的基本结构.doc
- 用于生成随机数的python标准库模块是_17 Python 标准库之 random 模块 - Python 进阶应用教程...
- 在Python中检查类型的规范方法是什么?
- JAVA进阶教学之(foreach)
- python3获取网页内容_python3获取一个网页特定内容
- 移通好闹钟微信小程序全套源码
- Go 标准库 http.FileServer 实现静态文件服务
- java四个基本步骤_javac编译的四个主要的流程
- 解决百度云下载过慢、Linux下载百度云数据问题
- linux RAC 安装失败完全卸载
- Win7纯净版系统Windows未能启动,文件Winload.exe的解决方法
- PHP100视频解压密码以及目录
- 思科模拟器GNS3将路由器变成交换机的方法
- 潮汕明代皇封御葬古墓受损追踪:当地相关部门介入
- 塑料回收标志相关知识
- snipaste截图软件编辑时修改方框粗细
- 浪潮存储:基于系统级可靠性设计,为数据存储保驾护航
- cad图片边框怎么去掉
- blogbus博客搬家到wordpress
- “将‘const NSString *‘发送到‘NSString *‘类型的参数会丢弃限定符”警告