数据库中的内、外、左、右连接

常用的数据库连表形式:
内连接 :inner join
外连接 :outer join
左外连接 :left outer join
左连接 :left join
右外连接 right outer join
右连接: right join
全连接 full join 、union
在这里插入图片描述

一、内连接

内连接的查询是两张表的交集,也就是A表和B表所共有的数据才能查询出来

-- join
select * from A  join B on A.id = B.id -- inner join
select * from A inner join B on A.id = B.id -- 逗号的连表方式就是内连接
select * from A , B where A.id = B.id 

上面语句查出来的结果是 id为 1、2、3的数据

二、左外连接和左连接

与内连接形式相同,但左表为主表,指定字段都会显示,右表为从表,无内容会显示 null。根据ON后给出的两表的条件将两表连接起来。左连接全称为左外连接,是外连接的一种。

-- left join
select * from A left join B on  A.id = B.id -- left outer join
select * from A left outer join B on  A.id = B.id 

上面是能得出id为1,2,3,4,5的数据,但是4,5显示的内容为null

三、右连接和右外连接

与内连接形式相同,但右表为主表,指定字段都会显示,左表为从表,无内容会显示 null。根据ON后给出的两表的条件将两表连接起来。右连接全称为右外连接,是外连接的一种。

-- right join
select * from A right join B on  A.id = B.id -- right outer join
select * from A right outer join B on  A.id = B.id 

上面得出的结果是id为1,2,3的数据。

四、全连接

全连接(FULL JOIN)将返回左表和右表中的所有行,并将它们组合在一起。如果某个行在左表中没有匹配的行,则该行的右表列将显示为 NULL。如果某个行在右表中没有匹配的行,则该行的左表列将显示为 NULL。

select * from a left join b on a.id = b.id
union
select * from a right join b on a.id = b.id

五、总结

1.内连接是返回两个表中共有的数据
外连接:以左连接为例,返回的是左连接的所有记录和右表中字段相同的记录

2.左连接是以左表为主表,返回的都是左表的主要字段,使用关键字“LEFT OUTER JOIN”或关键字“LEFT JOIN”来连接两张表。
右连接是以右表为主表,返回的都是右表的主要字段,使用关键字“RIGHT OUTER JOIN”或关键字“RIGHT JOIN”来连接两张表。

3.全连接就是查两个表的全部

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/49225.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业私有云的部署都有哪些方式?

如今常见的企业私有云的部署方式有自建私有云、托管私有云、虚拟私有云、混合云、容器化私有云、本地数据中心部署等。如今,企业私有云的部署呈多样化趋势,以用来满足各个企业的具体需求。以下是RAK部落小编为大家汇总的企业私有云常见的部署方式&#x…

LeetCode 58.最后一个单词的长度 C++

LeetCode 58.最后一个单词的长度 C 思路🤔: 先解决当最后字符为空格的情况,如果最后字符为空格下标就往后移动,直到不为空格才停止,然后用rfind查询空格找到的就是最后一个单词的起始位置,最后相减就是单词…

flowable执行监听器动态指定审批人在退回时产生的bug

场景: 退回产生的bug,有一个结点,本身是通过执行监听器判断上一个结点的审批人来得到这个结点的审批人。之前是通过直接的获取最新task来拿到,但是在退回场景下,最新task为退回结点,故产生错误。 解决&…

C++ 正则库与HTTP请求

正则表达式的概念和语法 用于描述和匹配字符串的工具,通过特定的语法规则,灵活的定义复杂字符串匹配条件 常用语法总结 基本字符匹配 a:匹配字符aabc:匹配字符串abc 元字符(特殊含义的字符) .:匹…

stable diffusion webui环境配置遇到的问题

环境配置步骤: conda创建一个python3.10的环境,起个名叫sdenv, 使用命令conda create -n denv python3.10进入创建好的环境在webui的路径下直接运行python launch.py会自动开始安装所需的包(可能需要梯子或者在系统配置中添加pip的国内源&am…

1Panel面板配置java运行环境及网站的详细操作教程

本篇文章主要讲解,通过1Panel面板实现java运行环境,部署网站并加载的详细教程。 日期:2024年7月21日 作者:任聪聪 独立博客:https://rccblogs.com/501.html 一、实际效果 二、详细操作 步骤一、给我的项目进行打包&am…

在jsPsych中使用Vue

jspsych 介绍 jsPsych是一个非常好用的心理学实验插件,可以用来构建心理学实验。具体的就不多介绍了,大家可以去看官网:https://www.jspsych.org/latest/ 但是大家在使用时就会发现,这个插件只能使用js绘制界面,或者…

陌陌聊天数据案例分析

目录 背景介绍和需求分析基于hive数仓实现需求开发根据聊天数据建库建表加载数据ETL数据清洗背景分析原始数据出现的问题ETL实现 需求指标统计思路需求开发 基于FineBI实现可视化报表配置流程构建可视化报表 总结 背景介绍和需求分析 陌陌是一个聊天平台,每天都会产…

不能包含中文的正则表达式

原文 1、不包含汉字[^\u4e00-\u9fa5] var r /^[^\u4e00-\u9fa5]$/ if(r.test(str)){} 2、只能包含汉字 [\u4e00-\u9fa5]

STM32自己从零开始实操10:PCB全过程

一、PCB总体分布 分布主要参考有: 方便供电布线。方便布信号线。方便接口。人体工学。 以下只能让大家看到各个模块大致分布在板子的哪一块,只能说每个人画都有自己的理由,我的理由如下。 还有很多没有表达出来的东西,我也不知…

二叉树---二叉搜索树中的众数

题目: 给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。 如果树中有不止一个众数,可以按 任意顺序 返回。 假定 BST 满…

PingCAP 王琦智:下一代 RAG,tidb.ai 使用知识图谱增强 RAG 能力

导读 随着 ChatGPT 的流行,LLMs(大语言模型)再次进入人们的视野。然而,在处理特定领域查询时,大模型生成的内容往往存在信息滞后和准确性不足的问题。如何让 RAG 和向量搜索技术在实际应用中更好地满足企业需求&#…

昇思25天学习打卡营第14天|计算机视觉

昇思25天学习打卡营第14天 文章目录 昇思25天学习打卡营第14天FCN图像语义分割语义分割模型简介网络特点数据处理数据预处理数据加载训练集可视化 网络构建网络流程 训练准备导入VGG-16部分预训练权重损失函数自定义评价指标 Metrics 模型训练模型评估模型推理总结引用 打卡记录…

Electron 和 React 开发桌面应用程序

目录 书籍推荐 Electron React 在线资源和教程 官方文档 在线教程 综合学习路径 经典开发案例 Visual Studio Code Hyper Tusk Notable Beekeeper Studio 开源项目和示例代码 Electron React Boilerplate Electron Forge + React Electron React Template 学…

FPGA开发在verilog中关于阻塞和非阻塞赋值的区别

一、概念 阻塞赋值:阻塞赋值的赋值号用“”表示,对应的是串行执行。 对应的电路结构往往与触发沿没有关系,只与输入电平的变化有关系。阻塞赋值的操作可以认为是只有一个步骤的操作,即计算赋值号右边的语句并更新赋值号左边的语句…

Transformer-Bert---散装知识点---mlm,nsp

本文记录的是笔者在了解了transformer结构后嗑bert中记录的一些散装知识点,有时间就会整理收录,希望最后能把transformer一个系列都完整的更新进去。 1.自监督学习 bert与原始的transformer不同,bert是使用大量无标签的数据进行预训…

规范:前后端接口规范

1、前言 随着互联网的高速发展,前端页面的展示、交互体验越来越灵活、炫丽,响应体验也要求越来越高,后端服务的高并发、高可用、高性能、高扩展等特性的要求也愈加苛刻,从而导致前后端研发各自专注于自己擅长的领域深耕细作。 然…

volatile,最轻量的同步机制

目录 一、volatile 二、如何使用? 三、volatile关键字能代替synchronized关键字吗? 四、总结: 还是老样子,先来看一段代码: 我们先由我们自己的常规思路分析一下代码:子线程中,一直循环&…

NoSQL之Redis非关系型数据库

目录 一、数据库类型 1)关系型数据库 2)非关系型数据库 二、Redis远程字典服务器 1)redis介绍 2)redis的优点 3)Redis 为什么那么快? 4)Redis使用场景 三、Redis安装部署 1&#xff0…

kail-linux如何使用NAT连接修改静态IP

1、Contos修改静态IP vi /etc/sysconfig/network-scripts/ifcfg-ens33, 标记红色处可能序号会变动 参考linux配置网络不通解决方案_kylinv10sp2 网关不通-CSDN博客https://tanrt06.blog.csdn.net/article/details/132430485?spm1001.2014.3001.5502 Kail时候NAT连…