SQL 基础 | JOIN 操作介绍

news2025/1/7 10:43:04

在SQL中,JOIN是一种强大的功能,用于将两个或多个表中的行结合起来,基于相关的列之间的关系。

JOIN操作通常用在SELECT语句中,以便从多个表中检索数据。

以下是几种基本的JOIN类型以及它们的用法:

  1. INNER JOININNER JOIN是最常用的连接类型。它返回两个表中连接条件相匹配的行。
SELECT column_names
FROM table1
INNER JOIN table2
ON table1.common_field = table2.common_field;

例如,获取所有有订单的客户信息:

SELECT Customers.CustomerName, Orders.OrderDate
FROM Customers
INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
  1. LEFT (OUTER) JOINLEFT JOIN返回左表( table1)的所有行,即使右表( table2)中没有匹配的行。如果右表中没有匹配的行,那么结果集中右表的部分将为NULL。
SELECT column_names
FROM table1
LEFT JOIN table2
ON table1.common_field = table2.common_field;

例如,获取所有客户信息,包括那些没有订单的客户:

SELECT Customers.CustomerName, Orders.OrderDate
FROM Customers
LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID;
  1. RIGHT (OUTER) JOINRIGHT JOINLEFT JOIN相反,它返回右表( table2)的所有行,即使左表( table1)中没有匹配的行。左表中没有匹配的行的部分将为NULL。
SELECT column_names
FROM table1
RIGHT JOIN table2
ON table1.common_field = table2.common_field;
  1. FULL (OUTER) JOINFULL JOIN返回左表和右表中所有行的信息。如果某一侧的表中没有匹配的行,那么该侧的结果集中相应的部分将为NULL。
SELECT column_names
FROM table1
FULL OUTER JOIN table2
ON table1.common_field = table2.common_field;
  1. CROSS JOINCROSS JOIN将一个表中的每一行与另一个表中的每一行组合,如果表中数据量很大,结果集可能会非常庞大。
SELECT column_names
FROM table1
CROSS JOIN table2;
  1. SELF JOINSELF JOIN是一个表与其自身的连接。这通常用于当表中有一个列引用了同一表中的另一个值时。
SELECT column_names
FROM table1 t1, table1 t2
WHERE t1.common_field = t2.common_field;
  1. NATURAL JOINNATURAL JOIN基于两个表中同名的列进行连接。如果表中有多个同名的列,可能会产生不确定的连接逻辑。
SELECT column_names
FROM table1
NATURAL JOIN table2;
  1. JOIN with subqueries: 子查询也可以被连接。你可以在子查询中定义一个结果集,然后将其作为一个临时表与其他表连接。
SELECT column_names
FROM table1
INNER JOIN (SELECT column_names FROM table2 WHERE condition) AS subquery
ON table1.common_field = subquery.common_field;

使用JOIN时,需要确保理解连接条件,以及如何影响结果集的大小和性能。合理的索引和查询优化可以显著提高JOIN操作的性能。

-- END --

alt

如果这篇文章为你带来了灵感或启发,就请帮忙点『赞』or『在看』or『转发』吧,感谢!(๑˃̵ᴗ˂̵)

本文由 mdnice 多平台发布

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

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

相关文章

探秘编程之旅:Baidu Comate 智能代码助手的魔法揭秘

目录 Baidu Comate智能代码助手1.场景需求2.安装步骤3.功能介绍3.1 /指令3.2 插件3.3 #知识 4.使用体验5.总结 Baidu Comate智能代码助手 智能编程助手的意义在于提升编程体验和效率,使开发人员能够更轻松、更快速地完成编码任务,是如今人工智能技术的一…

2024年颠覆商业模式《本草生活》项目,巧妙三招营销引流裂变套路

2024年颠覆商业模式《本草生活》项目,巧妙三招营销引流裂变套路 文丨微三云营销总监胡佳东,点击上方“关注”,为你分享市场商业模式电商干货。 - 引言:现如今流量枯竭、降本增效、红利不再已是线上营销的常态,互联网…

中金:如何把握不断轮动的资产“风口”

从比特币到日股,到黄金与铜再到当前的港股,每次超预期大涨后都透支回调。 今年以来资产的“风口”不断轮动,从比特币到日股,到黄金与铜,再到当前的港股,资产仿佛“接力”般交替领先,同时“风口”…

【北京迅为】《iTOP-3588开发板快速烧写手册》-第10章 多设备量产升级固件

RK3588是一款低功耗、高性能的处理器,适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用,RK3588支持8K视频编解码,内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

分享6个免费下载电子书的网站

着急看书的宝子们看这里! 收藏了一堆电子书网站终于能派上用场了~ 01/Z-Library https://zh.zlibrary-be.se/ 世界上最大的电子图书馆,拥有超千万的书籍和文章资源,99%的书籍资料都能在这里找到。 我给的这个网址现在还能正常打开使用&…

vue+sortablejs来实现列表拖拽——sortablejs的使用

sortablejs官网:https://sortablejs.com/ 最近在看form-builder组件,发现里面有用到sortablejs插件,用于实现拖拽效果。 但是这个官网中的配置,实在是看不懂,太简单又太复杂,不实用。 下面记录一下我的使用&#xff…

sklearn的make_blobs函数

make_blobs是一个用于生成随机数据点的实用函数, from sklearn.datasets import make_blobs X,Y make_blobs(n_samples2000,n_features2,centers12,cluster_std0.05,center_box[-5,5],random_state21)n_samples: 要生成的样本数量。centers: 要生成的簇&#xff0…

JetsonNano —— Windows下对Nano板卡烧录刷机(官方教程)

介绍 NVIDIA Jetson Nano™ 开发者套件是一款面向创客、学习者和开发人员的小型 AI 计算机。按照这个简短的指南,你就可以开始构建实用的 AI 应用程序、酷炫的 AI 机器人等了。 烧录刷机 1、下载 Jetson Nano开发者套件SD卡映像,并记下它在计算机上的保存…

docker部署小试

一 1.1 需求:根据docker部署nginx并且实现https 1.2 前期准备 准备一台装备好的docker-ce虚拟机,容量至少满足4G/2C,同时做好关闭防火墙的操作 systemctl stop firewalld setenforce 0 1.3 实验部署 1.3.1 创建并进入文件夹 1.3.2 编辑run脚本…

XSKY SDS 6.4 重磅更新:NFS 性能飙升 3 倍,对象多站点等 10 多项功能强势升级

近日,XSKY星辰天合发布了 XSKY SDS V6.4 新版本,该版本在文件的性能提升、对象容灾能力完善方面改进异常显著,同时也大幅提高了存储系统的安全特性,适配更多的信创软硬件生态。 近来,软件定义存储(SDS&…

pymysql用法整理--python实现mysql数据库操作

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文着重整理pymsql的常用方法 不专门讲解MySQL数据库的相关知识 常用基本语法汇总 import pymysql#连接数据库 connpymysql.connect(host127.0.0.1,port3306,userroot,password123456,charsetutf8,db"expe…

洛谷 P4148:简单题 ← KD-Tree模板题

【题目来源】https://www.luogu.com.cn/problem/P4148【题目描述】 你有一个 NN 的棋盘,每个格子内有一个整数,初始时的时候全部为 0,现在需要维护两种操作: ● 1 x y A → 1≤x,y≤N,A 是正整数。将格子 (x,y) 里的数…

韩国站群服务器提供高级安全防护以确保数据和网站的安全性

韩国站群服务器提供高级安全防护以确保数据和网站的安全性 在当今数字化时代,网站的安全性和数据保护已成为企业和个人不可忽视的重要议题。韩国站群服务器作为一个拥有发达科技和互联网基础设施的国家,通过提供高级安全防护措施,为用户的数…

安卓surfaceview的使用方式

1. 什么是surfaceview surfaceview内部机制和外部层次结构 在安卓开发中,我们经常会遇到一些需要高性能、高帧率、高画质的应用场景,例如视频播放、游戏开发、相机预览等。这些场景中,我们需要直接操作图像数据,并且实时地显示到…

后端常用技能:解决java项目前后端传输数据中文出现乱码、问号问题

0. 问题背景 最近做一个解析数据的小工具,本地运行时都正常,发布到服务器上后在导出文件数据时发现中文全部变成了问号,特此记录下问题解决的思路和过程 1. 环境 java 1.8 springboot 2.6.13 额外引入了fastjson,commons-csv等…

##07 从线性回归到神经网络:PyTorch实战解析

文章目录 前言线性回归基础理论背景实现步骤神经网络介绍理论背景实现步骤从线性回归到神经网络结论前言 在深度学习的浩瀚宇宙中,线性回归和神经网络是两个基本但极其重要的概念。线性回归模型是统计学和机器学习的基石之一,而神经网络则是深度学习技术的核心。本文旨在通过…

【日志革新】在ThinkPHP5中实现高效TraceId集成,打造可靠的日志追踪系统

问题背景 最近接手了一个骨灰级的项目,然而在项目中遇到了一个普遍的挑战:由于公司采用 ELK(Elasticsearch、Logstash、Kibana)作为日志收集和分析工具,追踪生产问题成为了一大难题。尽管 ELK 提供了强大的日志分析功…

在时间同步应用上节省大量时间!德思特GNSS模拟器是怎么做到的?

​ 作者介绍 德思特Safran GNSS模拟器是一款综合解决方案,专为精确的PNT(位置、导航和时间)仿真与测试设计。它超越了传统GNSS定位导航仿真,也能提供极高的授时精度。 这款模拟器对于评估和提升GNSS接收机及同步系统的整体性能至…

前端JS必用工具【js-tool-big-box】,验证是否是Unicode字符,获取一个字符串的字节长度,以及新增发送JSONP跨域请求的方法

js-tool-big-box,目前已经收集到了用户需求,希望可以添加一些公用方法,我觉得这很好,我们一起把这个前端通用工具做大一些,帮助更多的小伙伴少些util代码,更多的关注于自己的业务开发,真是不错。…

OpenCV与AI深度学习 | 如何使用YOLOv9检测图片和视频中的目标

本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。 原文链接:如何使用YOLOv9检测图片和视频中的目标 1 介绍 在之前的文章中,我们探索了使用 YOLOv8 进行对象检测。现在,我们很高兴…