什么是连接查询呢

概念:根据两个表或多个表的列之间的关系,从这些表中查询数据。

目的:实现多个表查询操作。

分类

首先划分一下,连接分为三种:内连接外连接交叉连接

内连接(INNER JOIN):

分为三种:等值连接、自然连接、不等连接

外连接(OUTER JOIN):

分为三种:

  • 左外连接(LEFT OUTER JOIN或LEFT JOIN)
  • 右外连接(RIGHT OUTER JOIN或RIGHT JOIN)
  • 全外连接(FULL OUTER JOIN或FULL JOIN)
交叉连接(CROSS JOIN):

没有WHERE 子句,它返回连接表中所有数据行的笛卡尔积

具体使用介绍

book表a:

stu表b:

1、内联接

定义:仅将两个表中满足连接条件的行组合起来作为结果集。 在内连接中,只有在两个表中匹配的行才能在结果集中出现


SELECT 列名表 FROM 表名1 [INNER] JOIN 表名2 ON或WHERE 条件表达式
内连接分类:
  • 等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
  • 不等值连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。
  • 自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。

SQL语句:


1、select * from book as a,stu as b where a.sutid = b.stuid
2、select * from book as a inner join stu as b on a.sutid = b.stuid
//内连接可以使用上面两种方式,其中第二种方式的inner可以省略。

结果:展示结果相同的id列

外联接

外联接可以是左向外联接、右向外联接或完整外部联接。

大概意思就是:在内连接的基础上,还包含表中所有不符合条件的数据行,并将相对应的表列填写NULL (左--对应右NULL)

在 FROM子句中指定外联接时,可以由下列几组关键字中的一组指定

LEFT JOIN或LEFT OUTER JOIN

左向外联接的结果集包括 LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。


select * from book as a left join stu as b on a.sutid = b.stuid

RIGHT JOIN 或 RIGHT OUTER JOIN

右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。


select * from book as a right join stu as b on a.sutid = b.stuid

FULL JOIN 或 FULL OUTER JOIN

完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。


select * from book as a full outer join stu as b on a.sutid = b.stuid

交叉联接

交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。交叉联接也称作笛卡尔积。


select * from book as a cross join stu as b order by a.id

图解:

  • 上图(来源网上大神)左边两个为左连接的例子图解
  • 上图右边两个为右连接的例子图解
  • 上图中间一个为内连接的例子图解
  • 上图下面两个为全连接的例子图解

最新文章

  1. 启用数据库的 Service Broker
  2. 09_Sum游戏(UVa 10891 Game of Sum)
  3. sort,ksort,asort的区别
  4. [DevExpress]GridControl 列头绘制Checkbox
  5. ASP.NET CompareValidator 控件在VS2012中出错的问题
  6. 怎样在官网上下载xcode7.2
  7. &#183; HTML使用Viewport
  8. spring boot maven 插件
  9. 稍微记录下Django2.2使用MariaDB和MySQL遇到的坑
  10. JQuery属性选择
  11. 主机连接虚拟机的mysql 记录
  12. VP-UML系统建模工具研究
  13. CSS魔法(三)浮动、相对定位、绝对定位
  14. [BZOJ4842]Delight for a Cat[费用流]
  15. BZOJ3996 TJOI2015线性代数
  16. ubuntu新机安装工具
  17. pytest文档3-pycharm运行pytest
  18. AWK入门指南
  19. Yiic执行php脚本
  20. IdentityServer4 + SignalR Core +RabbitMQ 构建web即时通讯(一)

热门文章

  1. POJ 3187 Backward Digit Sums 枚举水~
  2. python3 登录验证小程序,同一用户输错三次密码,锁定账户
  3. struts2_7_Action类中方法的动态调用
  4. [Angular] The Select DOM Event and Enabling Text Copy
  5. 9.13 Binder系统_Java实现_内部机制_Server端
  6. Summary Day30
  7. thinkphp模型事件(钩子函数:模型中在增删改等操作前后自动执行的事件)
  8. 前端css常用的选择小汇
  9. php实现调整数组顺序使奇数位于偶数前面
  10. 数据结构与算法实验题 7.1 M 商人的求救