SQL 入门 3:从内连接到外连接的全面解析
以下为 SQL 连接操作的用法解析涵盖内连接、外连接、多表连接等。学习内容内连接(INNER JOIN)基于条件匹配两表记录INNER 可省略。结果为匹配成功的记录未匹配的被排除。customers 表存客户信息orders 表存订单信息连接后订单信息在前客户信息附后。列名重复时需用 表名.列名 或别名区分。跨数据库连接连接不同数据库的表需指定数据库名如 数据库名.表名。自连接同一表内连接需用不同别名区分实例。示例员工表含员工信息及上级 ID上级也在表中。多表连接连接超过两表依次使用 JOIN 和 ON 指定条件。复合连接条件单列无法唯一标识时使用多列条件匹配。示例order_items 需用 order_id 和 product_id 共同确定唯一记录。隐式连接用 WHERE 替代 JOIN语法简洁但易出错。遗漏 WHERE 会导致交叉连接不推荐。外连接(LEFT JOIN)内连接仅返回匹配记录外连接保留未匹配记录。LEFT JOIN 输出左表全部记录右表无对应则为 NULL。解决内连接局限如需查询所有客户(含无订单者)需用外连接。示例代码与讲解1. 内连接SELECT *FROM ordersINNER JOIN customers ON orders.customer_id customers.customer_id;连接 orders 和 customers基于 customer_id。结果为订单信息对应客户信息未下单客户被排除。SELECT order_id, first_name, last_nameFROM ordersINNER JOIN customers ON orders.customer_id customers.customer_id;查询订单 ID 及对应客户姓名。SELECT order_id, orders.customer_id, first_name, last_nameFROM ordersINNER JOIN customers ON orders.customer_id customers.customer_id;customer_id 在两表均存在用 orders.customer_id 指定。SELECT order_id, o.customer_id, first_name, last_nameFROM orders oINNER JOIN customers c ON o.customer_id c.customer_id;表别名 o 和 c 简化写法。2. 跨数据库连接SELECT *FROM order_items oiJOIN sql_inventory.products p ON oi.product_id p.product_id;连接 sql_store.order_items 和 sql_inventory.products需指明数据库名。3. 自连接USE sql_hr;SELECT e.first_name, e.last_name, m.first_name AS managerFROM employees eJOIN employees m ON e.reports_to m.employee_id;employees 表自连接e 为员工m 为上级基于 reports_to 和 employee_id。4. 多表连接USE sql_store;SELECT o.order_id, o.order_date, c.first_name, c.last_name, o.customer_id, os.name AS statusFROM orders oJOIN customers c ON o.customer_id c.customer_idJOIN order_statuses os ON o.status os.order_status_id;连接 orders(基于 customer_id)、customers 和 order_statuses(基于 status)。5. 复合连接条件SELECT *FROM order_items oiJOIN order_item_notes oinON oi.order_id oin.order_idAND oi.product_id oin.product_id;order_items 单列无法唯一标识用 order_id 和 product_id 复合连接。6. 隐式连接SELECT *FROM orders oJOIN customers c ON o.customer_id c.customer_id;显式内连接。SELECT *FROM orders o, customers cWHERE o.customer_id c.customer_id;隐式连接等效但不推荐遗漏 WHERE 会生成交叉连接。7. 外连接SELECT c.customer_id, c.first_name, order_idFROM customers cJOIN orders o ON c.customer_id o.customer_idORDER BY c.customer_id;内连接仅返回有订单的客户。SELECT c.customer_id, c.first_name, order_idFROM customers cLEFT JOIN orders o ON c.customer_id o.customer_idORDER BY c.customer_id;左连接返回所有客户无订单时 order_id 为 NULL。作业1. 订单项与产品SELECT order_id, oi.product_id, p.name, oi.quantity, oi.unit_priceFROM order_items oiJOIN products p ON oi.product_id p.product_id;查询订单项及产品信息单价以 order_items.unit_price 为准非 products。2. 支付与客户USE sql_invoicing;SELECT p.client_id, p.invoice_id, c.name, p.date, p.amount, pm.nameFROM payments pJOIN clients c ON c.client_id p.client_idJOIN payment_methods pm ON p.payment_method pm.payment_method_id;连接 payments(基于 client_id)、clients 和 payment_methods(基于 payment_method)。3. 产品与订单项USE sql_store;SELECT p.product_id, p.name, oi.quantityFROM products pLEFT JOIN order_items oi ON p.product_id oi.product_id;查询所有产品及订单数量无订单时 quantity 为 NULL。总结本次解析了 SQL 连接操作内连接基于匹配记录外连接保留全部左表记录自连接处理表内关系多表和复合连接应对复杂场景。基于 sql_store、sql_hr 和 sql_invoicing 数据库。后续将探讨更复杂查询。

相关新闻

【2025最新】基于SpringBoot+Vue的web影院订票系统管理系统源码+MyBatis+MySQL

【2025最新】基于SpringBoot+Vue的web影院订票系统管理系统源码+MyBatis+MySQL

💡实话实说:CSDN上做毕设辅导的都是专业技术服务,大家都要生活,这个很正常。我和其他人不同的是,我有自己的项目库存,不需要找别人拿货再加价。我就是个在校研究生,兼职赚点饭钱贴补生活费&…

2026/5/17 6:54:26 阅读更多 →
SpringBoot+Vue 流浪动物救助网站平台完整项目源码+SQL脚本+接口文档【Java Web毕设】

SpringBoot+Vue 流浪动物救助网站平台完整项目源码+SQL脚本+接口文档【Java Web毕设】

💡实话实说:CSDN上做毕设辅导的都是专业技术服务,大家都要生活,这个很正常。我和其他人不同的是,我有自己的项目库存,不需要找别人拿货再加价。我就是个在校研究生,兼职赚点饭钱贴补生活费&…

2026/7/3 13:41:49 阅读更多 →
自定义Flutter TabBar的艺术

自定义Flutter TabBar的艺术

在Flutter开发中,TabBar是一个常见的组件,用于导航和组织内容。然而,当你希望实现一些独特的设计,比如自定义背景颜色和进度条时,原生的TabBar组件可能无法满足你的需求。本文将通过实例展示如何自定义一个TabBar,使其背景颜色和进度条能够根据数据状态动态变化。 设计目…

2026/7/2 23:54:41 阅读更多 →

最新新闻

【无人机动态避障】基于金豺优化算法GJO融合动态窗口法DWA的无人机三维动态避障方法研究MATLAB代码

【无人机动态避障】基于金豺优化算法GJO融合动态窗口法DWA的无人机三维动态避障方法研究MATLAB代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。 🍎完整代码获取 定制创新 论文复现私信 🍊个人信条:做科研,博学之、审问之、慎思之、明辨…

2026/7/5 1:30:17 阅读更多 →
Anthropic Fable 5 Cyber Jailbreak Severity:AI越狱统一评级体系深度解析

Anthropic Fable 5 Cyber Jailbreak Severity:AI越狱统一评级体系深度解析

引言:AI安全的"CVSS时刻" 2026年7月3日,Anthropic正式发布了**Cyber Jailbreak Severity(CJS)**评级体系——这是全球首个针对AI模型"越狱"行为严重程度的标准化评估框架。同一天,Fable 5在经历18天出口管制后重新上线,搭载了一套全新的多层级安全防…

2026/7/5 1:30:17 阅读更多 →
AI 压测数据回放:让模型读报告之前先校准口径

AI 压测数据回放:让模型读报告之前先校准口径

AI 压测数据回放:让模型读报告之前先校准口径 一、压测报告不能直接丢给模型 AI 可以帮助分析压测结果,但前提是输入数据口径清楚。很多压测报告里混着预热阶段、限流阶段、错误重试、下游故障和业务噪声。如果直接让模型总结,很容易得到一段…

2026/7/5 1:22:14 阅读更多 →
AI工具链选型:GitHub Copilot与Cursor、Codeium企业开发场景实测对比

AI工具链选型:GitHub Copilot与Cursor、Codeium企业开发场景实测对比

AI工具链选型:GitHub Copilot与Cursor、Codeium企业开发场景实测对比 一、评测体系设计与方法论 AI编码助手已成为开发效率的关键杠杆。本次评测聚焦三项主流工具的实际表现。从四个维度建立可复现的量化评测框架。 %%{init: {theme: base}}%% radartitle AI编码助手…

2026/7/5 1:20:14 阅读更多 →
PyTorch 数据加载瓶颈:GPU 空等时先看 DataLoader

PyTorch 数据加载瓶颈:GPU 空等时先看 DataLoader

PyTorch 数据加载瓶颈:GPU 空等时先看 DataLoader 一、训练慢不一定是模型慢 PyTorch 训练时,很多人看到速度慢就先改模型、调 batch size、换显卡。但如果 GPU 利用率忽高忽低,可能瓶颈根本不在模型,而在数据加载。图片解码、文本…

2026/7/5 1:20:14 阅读更多 →
群晖DSM 7.2.2视频管理终极解决方案:免费恢复Video Station完整功能

群晖DSM 7.2.2视频管理终极解决方案:免费恢复Video Station完整功能

群晖DSM 7.2.2视频管理终极解决方案:免费恢复Video Station完整功能 【免费下载链接】Video_Station_for_DSM_722 Script to install Video Station in DSM 7.2.2 and DSM 7.3 项目地址: https://gitcode.com/gh_mirrors/vi/Video_Station_for_DSM_722 你是否…

2026/7/5 1:20:14 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻