SQL中的连接

2023-11-06

一、表连接
SQL提供了多种类型的连接方式,它们之间的区别在于:从相互交叠的不同数据集合中选择用于连接的行时所采用的方法不同。
连接类型 定义
内连接 只连接匹配的行
左外连接 包含左边表的全部行(不管右边的表中是否存在与它们匹配
的行),以及右边表中全部匹配的行,a.order_id = b.order_id(+)

右外连接 包含右边表的全部行(不管左边的表中是否存在与它们匹配
的行),以及左边表中全部匹配的行,a.order_id(+) = b.order_id

全外连接(也可以叫全连接) 全外连接是能够从这样两张内容不一致的表里,获取全部的信息

交叉连接 连接两个或者多个不相关的表,没有where条件的交叉连接将产生连接表所涉及的笛卡尔积。

自连接(通常只有有人教才会说) 自连接说白了其实就是两张表结构和数据内容完全一样的表,在做数据处理的时候,我们通常会给它们分别重命名来加以区分(言外之意:不重命名也不行啊,不然数据库也不认识它们谁是谁),然后进行关联。
然后这个是我在菜鸟教程那里找的理解图
在这里插入图片描述在这里插入图片描述

内连接:
sql语句一:select * from TableA JOIN TableB on TableA.ID=TableB.ID
sql语句二: select * from TableA,TableB where TableA.ID=TableB.ID
sql语句三: select * from TableA cross join TableB where TableA.ID=TableB.ID (cross join 后只能用where不能用on)
结果视图:
在这里插入图片描述
左外连接:
sql语句: select * from TableA left join TableB on TableA.ID=TableB.ID
注释:TableA(基表)中所有的行列都显示了,第三行的条件不匹配所有TableB(外表)的值都为NULL
在这里插入图片描述
右外连接:
sql语句: select * from TableA right join TableB on TableA.id=TableB.id
在这里插入图片描述

全外连接 :
sql语句:select * from TableA full join TableB on TableA.id=TableB.id
在这里插入图片描述

交叉连接:
sql语句: select * from TableA cross join TableB
在这里插入图片描述
返回56=30行数据,即笛卡尔积
自连接:
sql语句: select s1.Name AS Name1,s2.Name AS Name2 from TableA s2,TableA s1
在这里插入图片描述
返回6
6=36行数据

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL中的连接 的相关文章

  • 如何在sqlite中创建物化视图?

    我对物化视图和 SQLite 进行了无数次搜索 据我所知 2004 年和 2006 年似乎有人提到 SQLite 没有物化视图 紧随其后的是 SQLite 的变更日志2008年3月 http www sqlite org releaselo
  • 模式更新后 jOOQ 生成的类的运行时验证?

    我用org jooq util DefaultGenerator在构建过程中生成 jOOQ 类来表示我的数据库模式 当应用程序运行时 架构预计会在应用程序不知情的情况下发生更改 此类更改可能与已生成的代码兼容 也可能不兼容 如何在运行时检测
  • 插入多行并返回主键时 Sqlalchemy 的奇怪行为

    插入多行并返回主键时 我注意到一些奇怪的事情 如果我在 isert 查询中添加使用参数值 我会得到预期的行为 但是当将值传递给游标时 不会返回任何内容 这可能是一个错误还是我误解了什么 我的sqlachemy版本是0 9 4 下面如何重现错
  • 限制 SQL Server 连接到特定 IP 地址

    我想将 SQL Server 实例的连接限制为特定 IP 地址 我想阻止来自除特定列表之外的任何 IP 地址的任何连接 这是可以在 SQL Server 实例或数据库中配置的东西吗 听起来像是你会使用Windows防火墙 http tech
  • sql查询将两列与一列连接起来

    我在 MS Access 2010 中有 2 个表 如下所示 USERS u id u name LOAN l id l from ref users u id l to ref users u id l amount Users u id
  • 如何在 PostgreSQL 中将数据库从一台服务器移动到另一台服务器?

    我正在尝试将数据库从旧服务器移动到新服务器 任何帮助 将不胜感激 Just pipe http www postgresql org docs current interactive migration html从旧服务器转储到新服务器 p
  • 使用Powershell访问远程Oracle数据库

    我需要能够连接到我的网络上基于 Windows 7 的 Oracle 服务器 32 位 Oracle XE 我需要连接的机器运行 Windows 7 64 位 两台机器上都安装了 Powershell 我已在 64 位计算机上安装了 Ora
  • java mysql 准备好的语句

    我正在尝试使用 java 向数据库中进行简单的插入 它告诉我我的 sql 语法已关闭 但是 当我复制打印出来的字符串并将其放入 phpmyadmin 中的 sql 命令中时 它会正确执行该命令 并且我似乎无法弄清楚 java 中的字符串查询
  • 根据表sql中的行替换字符串中的字符

    我需要用一些映射的字符替换字符串中的字符列表 我有一个表 dbo CharacterMappings 有 2 列 CharacterToFilter 和 ReplacementCharacter 假设这个表中有3条记录 Filter Rep
  • Scrapy - 持续从数据库中获取要爬取的url

    我想不断地从数据库中获取要爬行的网址 到目前为止 我成功地从基地获取了 url 但我希望我的蜘蛛继续从该基地读取 因为该表将由另一个线程填充 我有一个管道 一旦爬行 工作 就会从表中删除 url 换句话说 我想使用我的数据库作为队列 我尝试
  • SQLite HAVING 比较错误

    我有一个测试 SQLite 表 用于存储带有值的报告数据 CREATE TABLE IF NOT EXISTS test fact daily revenue date TEXT revenue NUMERIC product TEXT I
  • SQL Server 用分隔符分割字符串

    我有一个输入字符串 100 2 3 101 2 1 103 2 3 我想解析它并将其添加到具有 3 列的表中 因此它应该是 f x col1 col2 col3 100 2 3 类似的其他数据以逗号分隔作为记录和 作为列 Thanks ni
  • 使用两个日期之间的随机日期时间更新每一行

    我有一个专栏叫date created我希望每一行保存一个随机日期 日期距当前时间为 2 天 我正在运行以下查询 但它会更新具有相同随机日期的所有行 我希望每一行都是随机的并且不相同 update table set date create
  • PHP 绑定“bigint”数据类型(MySQLi 准备好的语句)

    studentId 57004542323382 companyOfferId 7 sql INSERT INTO studentPlacement companyOfferId studentId VALUES if stmt db gt
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • 将 UUID 存储为 base64 字符串

    我一直在尝试使用 UUID 作为数据库键 我希望占用尽可能少的字节数 同时仍然保持 UUID 表示形式的可读性 我认为我已经使用 base64 将其减少到 22 个字节 并删除了一些尾随的 这些 对于我的目的来说似乎没有必要存储 这种方法有
  • 插入触发器最终在分区表中插入重复行

    我有一个分区表 我认为 适当的INSERT触发器和一些限制 不知何故 INSERT语句为每个语句插入 2 行INSERT 一个用于父分区 一个用于相应的分区 设置简要如下 CREATE TABLE foo id SERIAL NOT NUL
  • Mysql 中 UNION 子句的替代方案

    我有两张桌子 表 a 表 b table a ID 1 2 3 4 5 7 table b ID 2 3 4 5 6 我必须得到这样的输出而无需UNION命令 ID 1 2 3 4 5 6 7 注意 我有一个联合解决方案 select fr
  • 了解 SSMS 2008 中关系的更新和删除规则

    当我们定义外键约束时 我对 SQL Server 2008 Management Studio 中的更新和删除规则的含义感到困惑 我也没有找到相关的帮助文档 例如F1帮助 这是屏幕快照 如果有人能描述它们的含义并推荐一些相关文档来阅读 我将
  • 将第三个表链接到多对多关联中的桥接表

    设计这个数据库的正确方法是什么 这是我设置表格的方式 我在名为 教师 的表和名为 仪器 的表之间存在多对多关系 然后我有一个连接两者的桥接表 我想将另一个表与 BRIDGE 表关联起来 意思是乐器 老师的组合 该表有 3 行 指定老师可以教

随机推荐

  • 1.NoSQL数据库简介

    1 1技术发展 技术的分类 1 解决功能性的问题 Java Jsp RDBMS Tomcat HTML Linux JDBC SVN 2 解决扩展性的问题 Struts Spring SpringMVC Hibernate Mybatis
  • 服务器的作用

    服务器的作用 1 服务器就好像是一个电话总台一样 而其他的网络设备就像是公共电话 所有的数据传输都要经过服务器的处理 2 服务器作为一个网络节点 为用户提供数据处理服务 最常见的就是使用服务器为自己搭建一个网站 3 服务器运算能力强 可以长
  • Babel安装步骤(JavaScript编译器)

    首先需要安装node js按照官网 下一步 就行 1 npm init 初始化 2 安装依赖包 npm install save dev babel core babel cli 如果说提示babel不是命令 可以全局安装npm insta
  • 05-windows下SQL Developer连接Orcale

    1 使用orcale安装时候自带的工具SQL Developer 工具位置 连接 连接成功
  • 【React 进阶】props 和 state 的区别详解

    时隔一年半之久再次重新学习 React 好多都还是原来的样子 这次我要重新开启 React 的大门 希望各位小伙伴可以一起讨论学习呦 前言 今天我们开始第一个专题 React 中 关于 props 和 state 当然我们不是对 props
  • 【React】19课 react组件使用redux小案例

    小案例效果入下 我们来看一下文件的目录结构 redux文件内的index js文件代码 const add Num 增加一条数据 const remove Num 删除一条数据 state 数据原先的状态 action 需要来进行改造的内容
  • using namespace std啥意思?命名空间?

    using 是C 中的关键字 命名空间作用域参考 两种形式 using 命名空间名 标识符名 将指定的标识符暴露在当前的作用域内 使得在当前作用域可以直接引用该标识符 using namespace 命名空间名 将指定命名空间内的所有标识符
  • 默纳克调试说明书_默纳克_NICE3000调试说明书(修改版)

    4 2 4 密码设置 为了更有效地进行参数保护 NICE3000电梯一体化控制器提供了密码保护 下面示例将密码改为12345的过程 粗体表示闪烁位 图4 9 密码的设定过程 设置了用户密码 即用户密码FP 00的参数不为0 会先进入用户密码
  • Selenium被检测为爬虫,怎么屏蔽和绕过

    01 Selenium 操作被屏蔽 使用selenium自动化网页时 有一定的概率会被目标网站识别 一旦被检测到 目标网站会拦截该客户端做出的网页操作 比如淘宝和大众点评的登录页 当手工打开浏览器 输入用户名和密码时 是能正常进入首页的 但
  • DNS查询服务器的基本流程

    DNS查询服务器的基本流程 假定域名为m xyz com的主机想知道另一台主机 域名为y abc com 的IP地址 例如 主机m xyz com打算发邮件给y abc com 此时 必须知道主机y abc com的IP地址 主机m xyz
  • 因果推理(九):双重差分(Difference-in-Differences)

    1 预备知识 回顾一下第二章的 unconfoundedness 假设 无混杂假设等价于 T T T到 Y Y Y之间没有畅通无阻的后门路径 在这种情况下 关联就是因果 那么可以用下面的式子计算ATE
  • 【编译原理】第1章 引论

    1 引论 目录 一 基本概念 二 编译过程 三 PL 0编译程序 题目练习 拓展 高级程序语言 参数传递 一 基本概念 源语言程序 源语言编写的程序 源语言一般指的是编写源程序所用的语言 它必须翻译成机器语言才能在计算机中使用 目标语言程序
  • linux下显卡驱动掉了,出现The system is running in low-graphics mode时解决方法

    Ctrl alt F1 cd etc X11 sudo cp xorg conf failsafe xorg conf sudo reboot 重启会发现linux很卡 原因是显卡驱动有问题 Ctrl alt F1 sudo service
  • Android 10如何隐藏应用图标

    隐藏应用图标这个功能应该用的很少 毕竟用到这个功能的应用可想而之 手动滑稽 隐藏图标的实现方式我想在网上查到很多了有在AndroidManifest实现的也用通过如下代码实现的 启动组件 param componentName 组件名 pr
  • 2.处理器与设备间数据交换方式

    处理器与外设之间传输数据的控制方式通常有3种 查询方式 中断方式和直接内存存取 DMA 方式 21 查询方式 设备驱动程序通过设备的I O端口空间 以及存储器空间完成数据的交换 例如 网卡一般将自己的内部寄存器映射为设备的I O端口 而显示
  • ASPXGridView使用总结

    转载 一 ASPXGridView外观显示 属性 Caption 列的标题 KeyFieldName 数据库字段 SEOFriendly 是否启用搜索引擎优化 Summary 指定分页汇总信息的格式 Setting节点的ShowFilter
  • 如何将小程序放到公众号菜单?

    第一步 公众号关联小程序 注 小程序要放到公众号菜单需要先把小程序与公众号关联 如果已经关联了可以直接下一步操作 1 到微信公众平台 登录小程序账号 进入设置 gt 开发设置 即可得到小程序AppID 将其复制下来 获取小程序AppID 2
  • chinaUnix中的linux源代码学习

    原文地址 http bbs chinaunix net thread 1930079 1 1 html 大家好 内核源码版对本版块的精华帖进行了分类汇总 所有的精华帖分为十大类 各个分类的精华帖相关信息分布在该贴2 11楼 每个分类各占1楼
  • AXI总线学习小结

    1 AXI总线结构 AXI总线由5个通道构成 通道名称 通道功能 数据流向 read address 读地址通道 主机 gt 从机 read data 读数据通道 包括数据通道和读响应通道 从机 gt 主机 write address 写地
  • SQL中的连接

    一 表连接 SQL提供了多种类型的连接方式 它们之间的区别在于 从相互交叠的不同数据集合中选择用于连接的行时所采用的方法不同 连接类型 定义 内连接 只连接匹配的行 左外连接 包含左边表的全部行 不管右边的表中是否存在与它们匹配 的行 以及