SQL表连接方式
一、SQL中的表连接方式:
- 内连接(INNER JOIN):返回两个表中符合连接条件的交集。
- 外连接(OUTER JOIN):
- 左外连接(LEFT JOIN):返回左表中所有记录,以及右表中符合连接条件的记录。
- 右外连接(RIGHT JOIN):返回右表中所有记录,以及左表中符合连接条件的记录。
- 完全外连接(FULL JOIN):返回左表和右表中的所有记录,如果没有匹配的记录则用NULL填充。
- 交叉连接(CROSS JOIN):返回两个表的笛卡尔积,即左表中的每一行都与右表中的每一行组合。
- 自连接(SELF JOIN):将表与自身进行连接,常用于比较表中不同行之间的数据。
这些连接方式允许在不同的条件下将多个表关联起来,以满足查询的需求。
二、创建两个表:
employees(员工信息)和departments(部门信息):
CREATE TABLE departments (department_id INT PRIMARY KEY,department_name VARCHAR(50)
);CREATE TABLE employees (employee_id INT PRIMARY KEY,employee_name VARCHAR(50),department_id INT,manager_id INT,FOREIGN KEY (department_id) REFERENCES departments(department_id),FOREIGN KEY (manager_id) REFERENCES employees(employee_id)
);
departments表有两个列:department_id和department_name,其中department_id是主键。
employees表有四个列:employee_id、employee_name、department_id和manager_id,其中employee_id是主键,department_id是外键关联到departments表的department_id,manager_id是外键关联到employees表的employee_id,表示员工的直接上级。
这样就创建了两个简单的表,可以用于存储员工和部门的信息。
插入数据:
-- 向 departments 表插入数据
INSERT INTO departments (department_id, department_name) VALUES
(1, 'IT'),
(2, 'HR'),
(3, 'Finance'),
(4, 'Marketing'),
(5, 'Sales');-- 向 employees 表插入数据
INSERT INTO employees (employee_id, employee_name, department_id, manager_id) VALUES
(1, 'John Doe', 1, NULL),
(2, 'Jane Smith', 2, 1),
(3, 'David Lee', 1, 1),
(4, 'Emily Brown', 3, 1),
(5, 'Michael Johnson', 4, 3),
(6, 'Lisa Wang', 1, 3),
(7, 'Tom Davis', 5, 4),
(8, 'Sarah White', 5, 4),
(9, 'Kevin Martin', 2, 1),
(10, 'Mary Wilson', 3, 1);
三、演示连接方式:
1.内连接(INNER JOIN):
SELECT e.employee_name, e.employee_id, d.department_name
FROM employees e
INNER JOIN departments d ON e.department_id = d.department_id;
结果:
employee_name | employee_id | department_name
-----------------------------------------------
John Doe | 1 | IT
Jane Smith | 2 | HR
David Lee | 3 | IT
Emily Brown | 4 | Finance
Michael Johnson | 5 | Marketing
Lisa Wang | 6 | IT
Tom Davis | 7 | Sales
Sarah White | 8 | Sales
Kevin Martin | 9 | HR
Mary Wilson | 10 | Finance
2.左外连接(LEFT JOIN):
SELECT e.employee_name, e.employee_id, d.department_name
FROM employees e
LEFT JOIN departments d ON e.department_id = d.department_id;
结果:
employee_name | employee_id | department_name
-----------------------------------------------
John Doe | 1 | IT
Jane Smith | 2 | HR
David Lee | 3 | IT
Emily Brown | 4 | Finance
Michael Johnson | 5 | Marketing
Lisa Wang | 6 | IT
Tom Davis | 7 | Sales
Sarah White | 8 | Sales
Kevin Martin | 9 | HR
Mary Wilson | 10 | Finance
3.右外连接(RIGHT JOIN):
SELECT e.employee_name, e.employee_id, d.department_name
FROM employees e
RIGHT JOIN departments d ON e.department_id = d.department_id;
结果:
employee_name | employee_id | department_name
-----------------------------------------------
John Doe | 1 | IT
Jane Smith | 2 | HR
David Lee | 3 | IT
Emily Brown | 4 | Finance
Michael Johnson | 5 | Marketing
Lisa Wang | 6 | IT
Tom Davis | 7 | Sales
Sarah White | 8 | Sales
Kevin Martin | 9 | HR
Mary Wilson | 10 | Finance
4.交叉连接(CROSS JOIN):
SELECT e.employee_name, d.department_name
FROM employees e
CROSS JOIN departments d;
结果会返回所有可能的员工和部门组合,共50条记录(10个员工 * 5个部门)。
5.自连接(SELF JOIN):
假设我们想要查找每个员工的经理,我们可以使用自连接:
SELECT e.employee_name, m.employee_name AS manager_name
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.employee_id;
这将返回每个员工及其对应的经理的姓名。
相关文章:
SQL表连接方式
一、SQL中的表连接方式: 内连接(INNER JOIN):返回两个表中符合连接条件的交集。外连接(OUTER JOIN): 左外连接(LEFT JOIN):返回左表中所有记录,以…...
5 原型模式 Prototype
1.模式定义: 指原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 2.应用场景: 当代码不应该依赖于需要复制的对象的具体类时,请使用Prototype模式。 Spring源码中的应用 org.springframework.beans.factory.support.AbstractB…...
springboot java 项目连接es
springboot java 项目连接es 介绍 小项目,没有引用es客户端,直接使用的http的方式进行连接的,方式比较简单,但是依赖较少,一个比较小的项目,部署方便 业务也很简单就是把数据库中的数据读到es中…...
MySQL学习笔记3: MySQL数据库基础
目录 前言目标数据库操作(针对database 的操作)1. 创建数据库 create database 数据库名;2. 查看数据库 show databases;3. 选中数据库 use 数据库名;4. 删除数据库 drop database 数据库名; mysql中支持的数据类型1. 数值类型: NUMERIC(M,D)2. 字符串类…...
GB/T 17640-2023 长丝机织土工布检测
长丝机织土工布是指以合成纤维长丝为原料织制而成的土工布,按纤维品种分为涤纶、丙纶、锦纶 等长丝机织土工布;按用途分为反滤布、复合用基布、管袋布、模袋布等。 GB/T 17640-2023 长丝机织土工布测试项目: 测试要求 测试标准 经向抗拉强…...
MedicalGPT 训练医疗大模型,实现了包括增量预训练、有监督微调、RLHF(奖励建模、强化学习训练)和DPO(直接偏好优化)
MedicalGPT 训练医疗大模型,实现了包括增量预训练、有监督微调、RLHF(奖励建模、强化学习训练)和DPO(直接偏好优化)。 MedicalGPT: Training Your Own Medical GPT Model with ChatGPT Training Pipeline. 训练医疗大模型,实现了包括增量预训练、有监督微…...
UE4 C++联网RPC教程笔记(一)(第1~4集)
UE4 C联网RPC教程笔记(一)(第1~4集) 前言1. 教程介绍与资源2. 自定义 Debug 功能3. Actor 的复制4. 联网状态判断 前言 本系列笔记将会对梁迪老师的《UE4C联网RPC框架开发吃鸡》教程进行个人的知识点梳理与总结,此课程…...
备战蓝桥杯 Day11(滚动数组优化+完全背包)
01背包的滚动数组优化 【题目描述】 经典0—1背包问题,有n个物品,编号为i的物品的重量为w[i],价值为c[i],现在要从这些物品中选一些物品装到一个容量为m的背包中,使得背包内物体在总重量不超过m的前提下价值尽量大。 #include&…...
Java SE 入门到精通—4.抽象类与接口【Java】
抽象类 同接口一样,用来约束子类,限制子类必须拥有某些方法,比普通类多了个抽象方法,用抽象方法该类必为抽象类 概念 没有具体的对象,具体的方法的一个类 abstract关键字声明为抽象类/方法 一个类中有抽象方法则该…...
Python 开发转 Java 简易路线 - 更新中
有了 Python 开发基础,Java 的内容都可以快速过一遍,复杂地方跟着写一遍。 一、基础 1、Java 基础:尚硅谷 - Java基础 全部快速过一遍, 2、数据库:略。 着重 mysql 高级部分(针对面试)&…...
Python编程语言学习
1.Python 特点 Python是一种简单、易读、易学和高效的编程语言,具有以下特点: 简单易学:Python采用清晰简洁的语法,注重代码的可读性和可维护性,使得初学者能够快速上手并编写出清晰的代码。 面向对象:Py…...
Cartographer框架简述
catographer框架分为前端和后端 前端包括雷达数据处理;位姿预测;扫描匹配和栅格地图更新。 后端包括后端:线程池任务与调度;向位姿图添加节点,计算节点的子图内约束和子图间约束(回环检测)&…...
适用于 Linux、Windows 和 macOS 的免费 ONLYOFFICE 桌面应用程序
前言: 最近也是发现了一款特别好用的免费ONLYOFFICE 桌面应用程序忍不住分享给大家,这款编辑器能够打开、阅读和编辑多种文件类型,包括.docx文档、.pptx幻灯片和.xlsx表格等开放XML格式的Office文档。此外,ONLYOFFICE桌面编辑器还…...
C++面向对象程序设计-北京大学-郭炜【课程笔记(四)】
C面向对象程序设计-北京大学-郭炜【课程笔记(四)】 1、this指针1.1、this指针的作用1.2、this指针和静态成员函数 2、静态成员变量和静态成员函数2.1、基本概念2.2、基本概念总结2.3、如何访问静态成员2.4、静态成员变量的使用场景(重要&…...
前端构建效率优化之路
项目背景 我们的系统(一个 ToB 的 Web 单页应用)前端单页应用经过多年的迭代,目前已经累积有大几十万行的业务代码,30 路由模块,整体的代码量和复杂度还是比较高的。 项目整体是基于 Vue TypeScirpt,而构…...
react实现拖拽的插件
插件一:dnd-kit 插件官网链接https://docs.dndkit.com/introduction/installation 插件二:react-beautiful-dnd https://github.com/atlassian/react-beautiful-dnd/tree/master 两个插件的区别: 插件一可以做到从区域A拖住到区域B 插件二…...
解决Uncaught SyntaxError: Cannot use import statement outside a module(at XXX)报错
报错原因:这个错误通常是因为你正在尝试在一个不支持 ES6 模块语法的环境中使用 import 语句。这可能是因为你的代码是在一个只支持 CommonJS 或 AMD 模块系统的环境中运行的,或者你的代码运行的环境没有正确配置以支持 ES6 模块。如果是在浏览器环境&am…...
PHP如何利用post与get方式传值接收数据
目录 一、POST传值1. 使用curl库发送 POST 请求:2. 使用file_get_contents()函数发送 POST 请求:3. 使用stream_socket_client()函数发送 POST 请求:4. 利用from表单提交数据: 二、GET传值1. 使用http_build_query()函数构建 URL …...
在Mac上搭建MongoDB环境
最近工作中需要装MongoDB环境,搭建过程中遇到了一些问题,在这里记录一下安装MongoDB环境的方法以及问题的解决方法。有两种安装MongoDB的方法:brew安装和手动安装。 目录 使用Homebrew安装MongoDB 手动安装MongoDB(不使用Homebr…...
第三十九天| 62.不同路径、63. 不同路径 II
Leetcode 62.不同路径 题目链接:62 不同路径 题干:一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “…...
PP-DocLayoutV3惊艳案例:印章(seal)+ 页眉图片(header_image)+ 视觉脚注(vision_footnote)联合定位
PP-DocLayoutV3惊艳案例:印章(seal) 页眉图片(header_image) 视觉脚注(vision_footnote)联合定位 1. 引言:当文档布局分析遇到“硬骨头” 想象一下这个场景:你拿到一份…...
实时手机检测-通用部署成本分析:A10/A100/T4显卡性价比实测对比
实时手机检测-通用部署成本分析:A10/A100/T4显卡性价比实测对比 1. 项目背景与需求场景 在现代计算机视觉应用中,实时手机检测是一个具有广泛实用价值的技术方向。从智能监控系统中的打电话行为识别,到零售行业的商品展示分析,再…...
GLM-4.7-Flash功能体验:MoE架构+流式输出,感受30B大模型的丝滑对话
GLM-4.7-Flash功能体验:MoE架构流式输出,感受30B大模型的丝滑对话 1. 开篇:初识GLM-4.7-Flash 当我第一次在CSDN星图镜像广场看到GLM-4.7-Flash这个30B参数的大模型时,内心既期待又忐忑。期待的是它能带来怎样的智能体验&#x…...
Windows 11下xray安装全流程:从下载到配置证书的保姆级教程
Windows 11安全工具配置全指南:从零开始搭建本地测试环境 在数字化生活日益普及的今天,个人电脑安全越来越受到重视。对于技术爱好者而言,了解和使用专业安全工具不仅能提升自身防护能力,也是学习网络安全知识的重要途径。本文将详…...
本地数据库工具革新:浏览器应用如何3分钟解决SQLite查看难题
本地数据库工具革新:浏览器应用如何3分钟解决SQLite查看难题 【免费下载链接】sqlite-viewer View SQLite file online 项目地址: https://gitcode.com/gh_mirrors/sq/sqlite-viewer 在数字化开发的日常工作流中,SQLite数据库文件查看往往成为效率…...
ROS2 核心概念与实战应用指南
1. ROS2核心概念解析:从零开始理解机器人开发框架 第一次接触ROS2时,我被它复杂的术语体系搞得晕头转向。直到把机器人项目比作一个餐厅,才突然开窍——节点就像厨师和服务员,话题是传菜窗口,服务是点单对讲机…...
Element UI表格进阶:手把手教你自定义el-table展开按钮样式与排序功能
Element UI表格深度定制:从展开按钮到排序逻辑的全方位改造指南 在企业级前端开发中,数据表格的交互体验直接影响用户操作效率。Element UI的el-table组件虽然提供了开箱即用的功能,但面对复杂业务场景时,默认配置往往难以满足个性…...
Thing.Core:面向嵌入式IoT的声明式C++框架
1. Thing.Core 框架概述:面向嵌入式 IoT 开发的声明式抽象层Thing.Core 是一个专为物联网终端设备快速开发而设计的轻量级 C 框架,其核心设计理念是生产力优先于极致性能。这一取舍在当前 ESP32、ESP8266、nRF52840 等高性能 MCU 广泛普及的背景下具有明…...
Linux系统auditd审计服务实战:从零配置到规则优化(附常用命令大全)
Linux系统auditd审计服务实战:从零配置到规则优化(附常用命令大全) 当服务器遭遇入侵时,大多数管理员的第一反应往往是查看历史命令记录。但现实情况是,黑客通常会第一时间清空.bash_history文件。这时,一个…...
工业相机丢帧问题全解析:从硬件到软件的5个实战解决方案
工业相机丢帧问题全解析:从硬件到软件的5个实战解决方案 在机器视觉系统的实际应用中,工业相机丢帧问题就像一条潜伏的生产线杀手——它可能悄无声息地导致检测漏判、定位偏差甚至整批产品质检失效。去年某汽车零部件厂商就曾因2%的随机丢帧,…...
