当前位置: 首页 > news >正文

openGauss学习笔记-27 openGauss 高级数据管理- JOIN

文章目录

    • openGauss学习笔记-27 openGauss 高级数据管理- JOIN
      • 27.1 交叉连接
      • 27.2 内连接
      • 27.3 左外连接
      • 27.4 右外连接
      • 27.5 全外连接

openGauss学习笔记-27 openGauss 高级数据管理- JOIN

JOIN子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。

在openGauss中,JOIN有五种连接类型:

  • CROSS JOIN :交叉连接
  • INNER JOIN:内连接
  • LEFT OUTER JOIN:左外连接
  • RIGHT OUTER JOIN:右外连接
  • FULL OUTER JOIN:全外连接

以表table1和表table2为例说明不同连接类型,表数据如下:

openGauss=# SELECT * FROM table1;name  | city
-------+------Joes  | BJLily  | BJJames | SHGrace | SZ
(4 rows)openGauss=# SELECT * FROM table2;id | name  | dept
----+-------+-------1 | Tommy | IT2 | Lily  | IT3 | Li    | sales4 | Grace | IT
(4 rows)

27.1 交叉连接

交叉连接即笛卡儿乘积,是指两个关系中所有元组的任意组合。

示例:将表table1和表table2进行交叉连接,结果如下。

openGauss=# SELECT * FROM table1 CROSS JOIN table2;name  | city | id | name  | dept
-------+------+----+-------+-------Joes  | BJ   |  1 | Tommy | ITJoes  | BJ   |  2 | Lily  | ITJoes  | BJ   |  3 | Li    | salesJoes  | BJ   |  4 | Grace | ITLily  | BJ   |  1 | Tommy | ITLily  | BJ   |  2 | Lily  | ITLily  | BJ   |  3 | Li    | salesLily  | BJ   |  4 | Grace | ITJames | SH   |  1 | Tommy | ITJames | SH   |  2 | Lily  | ITJames | SH   |  3 | Li    | salesJames | SH   |  4 | Grace | ITGrace | SZ   |  1 | Tommy | ITGrace | SZ   |  2 | Lily  | ITGrace | SZ   |  3 | Li    | salesGrace | SZ   |  4 | Grace | IT
(16 rows)

27.2 内连接

使用内连接时,如果两个表的相关字段满足连接条件,就从这两个表中提取数据并组合成新的记录,创建一个新的结果表。也就是在内连接查询中,只有满足条件的元组才能出现在结果关系中。

内连接是一种最常用的连接类型,也是默认的连接类型。

示例:查询表table1和表table2中字段name相同的列。

openGauss=# SELECT * FROM table1 a INNER JOIN table2 b ON a.name = b.name;name  | city | id | name  | dept
-------+------+----+-------+------Lily  | BJ   |  2 | Lily  | ITGrace | SZ   |  4 | Grace | IT
(2 rows)

27.3 左外连接

左外连接是指在连接查询中,将关键字左端表中所有的元组都列出来,如果能在右端的表中找到匹配的元组,显示匹配元组内容。如果在右端的表中,不能找到匹配的元组,那么对应的元组是空值(NULL)。

左外连接查询语句使用的关键字为LEFT OUTER JOIN,也就是说,左外连接的含义是限制连接关键字右端的表中的数据必须满足连接条件,而左端的表中的数据无论是否满足连接条件,均输出左端表中的内容。

示例:

openGauss=# SELECT * FROM table1 a LEFT OUTER JOIN table2 b ON a.name = b.name;name  | city | id | name  | dept
-------+------+----+-------+------Joes  | BJ   |    |       |Lily  | BJ   |  2 | Lily  | ITJames | SH   |    |       |Grace | SZ   |  4 | Grace | IT
(4 rows)

27.4 右外连接

右外连接与左外连接类似,只是关键字右端表中的所有元组都列出,限制左端表的数据必须满足连接条件,而右端表中的数据无论是否满足连接条件,均输出表中的内容。

右外连接查询语句的关键字为RIGHT OUTER JOIN。

示例:

openGauss=# SELECT * FROM table1 a RIGHT OUTER JOIN table2 b ON a.name = b.name;name  | city | id | name  | dept
-------+------+----+-------+-------Lily  | BJ   |  2 | Lily  | ITGrace | SZ   |  4 | Grace | IT|      |  3 | Li    | sales|      |  1 | Tommy | IT
(4 rows)

27.5 全外连接

全外连接查询的特点是左、右两端表中的元组都输出,如果没能找到匹配的元组,就使用NULL来代替。

示例:

openGauss=# SELECT * FROM table1 a FULL OUTER JOIN table2 b ON a.name = b.name;name  | city | id | name  | dept
-------+------+----+-------+-------Joes  | BJ   |    |       |Lily  | BJ   |  2 | Lily  | ITJames | SH   |    |       |Grace | SZ   |  4 | Grace | IT|      |  3 | Li    | sales|      |  1 | Tommy | IT
(6 rows)

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

图片

http://www.lryc.cn/news/104658.html

相关文章:

  • 域名解析优先级
  • 【Opencv】视频跟踪算法KCF
  • 后端整理(集合框架、IO流、多线程)
  • C++ 类和对象篇(二) this指针
  • Excel快捷键F1-F9详解:掌握实用快捷操作,提升工作效率
  • Webpack 安装教程
  • 移远通信首批加入“5G+eSIM计算终端产业合作计划”,助力大屏移动终端全时在线
  • 全网最强大的工具箱—utools介绍及分享
  • Linux常用基础命令❀
  • SQL-进阶
  • [Pytorch]卷积运算conv2d
  • 主流开源监控系统一览
  • 爬虫原理详解及requests抓包工具用法介绍
  • tinkerCAD案例:31. 3D 基元形状简介
  • Vue2基础一、快速入门
  • 【POJ-3279】Fliptile(递推+搜索)
  • 522个matplotlib绘图案例,包含:折线图、散点图、条形图、饼图、直方图、3D图等,源码可直接运行!
  • windows安装Elasticsearch8.9.0
  • 用Delphi编写一个通用视频转换工具,让视频格式转换变得更简单
  • Kafka系列之:安装Know Streaming详细步骤
  • 绝杀 GETPOST 嵌套的 JSON 参数
  • Spring 项目过程及如何使用 Spring
  • 信息学奥赛一本通——1258:【例9.2】数字金字塔
  • selenium官网文档阅读总结(day 2)
  • VMware虚拟机安装VMware tools
  • 【Linux命令200例】rm用来删除文件或目录(谨慎使用)
  • 行云管家荣获CFS第十二届财经峰会 “2023产品科技创新奖”
  • uniapp禁止页面滚动
  • ModuleNotFoundError: No module named ‘_sqlite3‘
  • Rust的入门篇(下)