SQL多表连接查询(详细实例)

SQL 多表连接查询 本文就不详细去说明表连接的概念,举个例子让大家理解表连接的实际用法学生表课程表选课表查询课号'201803'的学生学号,姓名,成绩,并且成绩按降序排列select student .student_id ,student .student_name ,choosecouse .score from student ,choosecouse /*从学生表,选课表中查询学号,姓名,成绩*/where ... 阅读详情
AI摘要

本文详细介绍了SQL中的多种连接查询方式,包括左连接、右连接、完全外连接、内连接及交叉连接,并通过实例展示了不同连接类型的应用场景。此外,还讨论了一对一、一对多、多对多关系下的连接查询实现。

本文主要列举两张和三张表来讲述多表连接查询。

新建两张表:

表1:student  截图如下:

SQL多表连接查询(详细实例)_新客网

表2:course  截图如下:

SQL多表连接查询(详细实例)_新客网
(此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键。)

一、外连接

外连接可分为:左连接、右连接、完全外连接。

1、左连接  left join 或 left outer join

SQL语句:select * from student left join course on student.ID=course.ID

执行结果:

SQL多表连接查询(详细实例)_新客网

左外连接包含left join左表所有行,如果左表中某行在右表没有匹配,则结果中对应行右表的部分全部为空(NULL).

注:此时我们不能说结果的行数等于左表数据的行数。当然此处查询结果的行数等于左表数据的行数,因为左右两表此时为一对一关系。

2、右连接  right join 或 right outer join

SQL语句:select * from student right join course on student.ID=course.ID

执行结果:

SQL多表连接查询(详细实例)_新客网

右外连接包含right join右表所有行,如果左表中某行在右表没有匹配,则结果中对应左表的部分全部为空(NULL)。

注:同样此时我们不能说结果的行数等于右表的行数。当然此处查询结果的行数等于左表数据的行数,因为左右两表此时为一对一关系。

3、完全外连接  full join 或 full outer join

SQL语句:select * from student full join course on student.ID=course.ID

执行结果:

SQL多表连接查询(详细实例)_新客网

完全外连接包含full join左右两表中所有的行,如果右表中某行在左表中没有匹配,则结果中对应行右表的部分全部为空(NULL),如果左表中某行在右表中没有匹配,则结果中对应行左表的部分全部为空(NULL)。

二、内连接  join 或 inner join

SQL语句:select * from student inner join course on student.ID=course.ID

执行结果:

SQL多表连接查询(详细实例)_新客网

inner join 是比较运算符,只返回符合条件的行。

此时相当于:select * from student,course where student.ID=course.ID

三、交叉连接 cross join

1.概念:没有 WHERE 子句的交叉联接将产生连接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。

SQL语句:select * from student cross join course

执行结果:

SQL多表连接查询(详细实例)_新客网

如果我们在此时给这条SQL加上WHERE子句的时候比如SQL:select * from student cross join course where student.ID=course.ID

此时将返回符合条件的结果集,结果和inner join所示执行结果一样。

四、两表关系为一对多,多对一或多对多时的连接语句

当然上面两表为一对一关系,那么如果表A和表B为一对多、多对一或多对多的时候,我们又该如何写连接SQL语句呢?

其实两表一对多的SQL语句和一对一的SQL语句的写法都差不多,只是查询的结果不一样,当然两表也要略有改动。

比如表1的列可以改为:

Sno Name Cno

表2的列可以改为:

Cno CName

这样两表就可以写一对多和多对一的SQL语句了,写法和上面的一对一SQL语句一样。

下面介绍一下当两表为多对多的时候我们该如何建表以及些SQL语句。

新建三表:

表A:  student 截图如下:

SQL多表连接查询(详细实例)_新客网

表B:  course 截图如下:

SQL多表连接查询(详细实例)_新客网

表C:  student_course 截图如下:

SQL多表连接查询(详细实例)_新客网

一个学生可以选择多门课程,一门课程可以被多个学生选择,因此学生表student和课程表course之间是多对多的关系。

当两表为多对多关系的时候,我们需要建立一个中间表student_course,中间表至少要有两表的主键,当然还可以有别的内容。

SQL语句:select s.Name,C.Cname from student_course as sc left join student as s on s.Sno=sc.Sno left join course as c on c.Cno=sc.Cno

执行结果:

SQL多表连接查询(详细实例)_新客网

此条SQL执行的结果是学生选课的情况。

ShowDoc item_id 未授权SQL注入漏洞复现 2024年6月,ShowDoc官方发布新版本修复了一个SQL注入漏洞。鉴于该漏洞无前置条件,易于利用,且默认情况下可暴破用户token获取系统后台权限,建议所有使用该系统的企业尽快升级修复,以确保系统安全。 阅读详情

相关推荐

ADS仿真设计平行定向耦合器学习笔记

ADS仿真设计平行定向耦合器

qq_36521926的博客 1万+

多表连接查询

本文主要列举两张和三张表来讲述多表连接查询。 新建两张表: 表1:student 截图如下: 表2:course 截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键。) 一、外连接 外连接可分为:左连接、右连接、完全外连接。 1、左连接 left join 或 left outer join SQL语...

weixin_30847865的博客 5066

智能体在车联网中的应用:第9天 核心工具链与仿真世界:SUMO交通仿真入门——从安装到构建你的第一个虚拟十字路口

摘要 SUMO是一款开源微观交通仿真工具,为车联网和自动驾驶算法开发提供高效安全的测试环境。文章详细介绍了SUMO的核心概念、安装方法及实战应用。在Ubuntu或Windows系统安装SUMO后,可通过netedit工具构建十字路口路网,包括创建节点、连接边、设置交通信号灯等步骤。随后通过编写.rou.xml文件定义车辆类型、路线和车流,实现动态交通场景模拟。SUMO支持与外部程序交互,能复现真实场景、进行极端测试和算法验证,是车联网研究的理想数字沙盘。

IT深耕十余载,大道之简 1450

数据库两表联查、多表联查,多重联查

表连接查询 【小编用的是Oracle数据库,Oracle数据库区分表名与字段名的大小写,所以大家进行查询的时候记得注意双引号哟~】 有表 表名:AAA 字段: id name tag 表名:BBB 字段: id ban qq 表名:AABB字段: id area location 分类: 1.内连接 inner join select 列名 from 主表 inner join 从表 on 主表和从表关系 注意: (1)必须要有on语句 (2)关系必须两表中都...

u013436459的专栏 5257

【CTF-misc】java盲水印BlindWatermark工具使用

​ 盲水印是一种肉眼不可见的水印方式,对图片资源使用图片盲水印或者文字水印,借此避免数字媒体未经授权的复制和拷贝,可通过对原图进行解码操作,得到水印图来证明版权归属。 题目来源:NewStarCTF 2023 公开赛道 WEEK2|MISC:Jvav

qq_39972370的博客 6444

IMU卡尔曼滤波方法详细介绍

本文介绍了基于IMU和卡尔曼滤波的状态估计方法。系统采用9维状态向量(位置、速度、加速度计零偏),通过牛顿运动学建立状态方程,并利用外部位置观测进行校正。详细推导了状态转移矩阵和控制输入矩阵的形式,阐述了预测和更新的计算步骤。同时说明了过程噪声Q和观测噪声R的设置原则,其中Q反映模型不确定性,R取决于传感器精度。该方法可有效融合IMU测量与外部观测数据,实现位置、速度和偏置的联合估计。

haing2019的博客 755

数据库多表关联查询

数据库多表关联查询一、JOIN的使用二、JOIN等同于INNER JOIN等同于WHERE二、多表关联查询 一、JOIN的使用 数据库表之间的关联查询使用“join … on …” 关键字。 JOIN分为: JOIN INNER JOIN LEFT JOIN RIGHT JOIN FULL JOIN 五种JOIN查询的区别: JOIN: 在表中存在至少一个匹配时,则返回行; INNER JOIN:在表中存在至少一个匹配时,则返回行。 LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 ; RIG

1万+

华为防火墙——本地Portal认证

配置IP地址、路由、Nat策略使得内网主机可以访问公网服务器对网段不进行认证,对网段进行portal认证。

m0_49864110的博客 3258

sql语句多表查询实例

问题及描述: --1.学生表 Student(S#,Sname,Sage,Ssex) --S# 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别 --2.课程表  Course(C#,Cname,T#) --C# --课程编号,Cname 课程名称,T# 教师编号 --3.教师表  Teacher(T#,Tname) --T# 教师编号,Tname 教师姓名 -

晴天的专栏 4万+

大模型复杂问答能力评测框架:从原理到实践

在人工智能领域,大语言模型(LLM)的评估是衡量其实际应用价值的关键环节。其核心原理在于通过系统化的评测框架,对模型的理解、推理、整合与表达能力进行量化分析。传统的NLP基准测试往往侧重于事实性检索或简单推理,难以全面反映模型在应对多跳推理、隐含条件、长上下文整合等复杂现实任务时的真实性能。因此,专门针对复杂问答设计的评测技术应运而生,其价值在于为模型选型、效果优化和瓶颈诊断提供数据驱动的科学依据。该技术广泛应用于需要深度逻辑判断的业务场景,如智能投顾、法律咨询、医疗诊断等。本文聚焦的`tan92hl/Co

weixin_28679635的博客 361

FPGA纯Verilog实现I²C主机控制器与EEPROM读写

I²C是一种广泛应用的同步串行总线协议,用于连接微控制器与EEPROM、传感器等低速外设。其核心原理包括开漏结构、主从通信机制、START/STOP时序及ACK/NACK应答流程。技术价值在于硬件资源占用少、布线简洁、支持多从机扩展,特别适合FPGA嵌入式系统中轻量级外设控制。典型应用场景涵盖工业数据存储、配置参数持久化及实时传感器接口。本文基于Xilinx Spartan-6 FPGA,采用纯Verilog HDL实现参数化I²C主机控制器与AT24C02 EEPROM读写验证,深入解析状态机设计、SDA

weixin_33557333的博客 119

【MySQL联合查询】轻松实现数据关联

1、联合查询 1.1认识笛卡尔积 1.2笛卡尔积进行多表查询 1.3内连接和外连接 1.3.1两张表一一对应 1.3.2两张表不一一对应 1.4自连接 1.5子查询 1.5.1单行子查询 1.5.2多行子查询 1.5.3合并查询

拼命阿紫冲冲冲! 1万+

【FreeSwitch开发实践】外呼网关配置(拨打电话)

FreeSwitch开发一个重要应用是外呼,所谓外呼就拨打真实电话或手机号呼叫,配合语音机器人可以实现智能客服的功能。外呼配置主要是配置外呼服务器,外呼服务器主要指SIP网关,每个外呼服务器就是一个SIP节点,FreeSwitch服务也可以是一个SIP节点。本文主要介绍了FreeSwitch外呼相关配置,主要有外呼配置的模式,包括注册模式和非注册模式网关加载的查看方法拨号中常见的呼出配置和呼入配置如果觉得有些帮助或觉得文章还不错,请关注一下博主,你的关注是我持续写作的动力。............

xiao2macf的专栏 1万+

SQL多表连接查询

SQL多表连接查询(详细实例) 本文主要列举两张和三张表来讲述多表连接查询。 新建两张表: 表1:student 截图如下: 表2:course 截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键。) 一、外连接 外连接可分为:左连接、右连接、完全外连接。 1、左连接 left join 或 left outer join SQL语句:select * from student left join cou...

舞小潮の涂粪墙 1455

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

SQL多表查询、连接查询

本文概述了数据库表间关系的三种主要类型:一对多、多对多和一对一,并介绍了多表查询的分类与方法。一对多关系通过外键实现,多对多需借助中间表,而一对一关系则用于单表拆分优化。多表查询包括连接查询(内连接、外连接、自连接)、联合查询和子查询。内连接查询交集数据,外连接包含单边所有数据,自连接则实现表与自身的关联。联合查询合并结果集,子查询嵌套在SQL语句中,可分为标量、列、行和表子查询。文章通过具体案例和SQL语法展示了各类查询的实现方式,为数据库设计提供了实用指导。

m0_73849719的博客 920

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

(四)sql多表连接查询join on的用法

(四)sql多表连接查询join on的用法

qq_43070500的博客 4万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

sql server语法——多表查询(连接查询)

一、含义 当查询中涉及到了多个表的字段,需要使用多表查询 select 字段1,字段2,…… from 表1,表2,…… 二、分类 按年代分 sql192: 等值连接 非等值连接 自连接 sql199【推荐使用】 内连接 等值连接 非等值连接 自连接 外连接 左外连接 右外连接 全外连接 三、语法 sql92语法 特点: 一般为表起别名 多表的顺序可以调换 n表连接至少需要n-1个连接条件 等值连接的结果是多表的交集部分 等值连接 select 查询列表 from 表1 别名,表2 别名 w

weixin_44201223的博客 1万+

SQL的多表连接查询(难点)

多表连接查询是数据库操作中的难点,主要包括内连接、外连接和自连接三种类型。内连接(INNER JOIN)只返回两表中匹配的行,是最常用的连接方式;左连接(LEFT JOIN)返回左表所有行及右表匹配行,右连接(RIGHT JOIN)则相反;自连接用于处理表中层级关系。此外,联合查询(UNION/UNION ALL)用于纵向合并结果集,要求列数相同且类型兼容。连接查询基于表间关联条件横向组合数据,而联合查询则是纵向合并结果集。这些查询方式各具特点,应根据实际需求选择使用。

chen_note的博客 1339

SQL多表连接查询全攻略

本文介绍了SQL中的多表连接查询方法,主要包括四种连接类型:内连接(INNER JOIN)、外连接(LEFT/RIGHT OUTER JOIN)、自连接和交叉连接(CROSS JOIN)。重点阐述了内连接仅返回匹配行,左/右外连接则保留主表全部行并用NULL填充不匹配值,交叉连接产生笛卡尔积。通过学生选课、图书销售等实例演示了不同连接的应用场景和语法实现,并对比了各连接类型的差异。最后简要说明了UNION操作符合并结果集的使用方法。全文提供了SQL多表查询的实用指南。

2401_87975790的博客 1477

SQL 中多表查询的常见连接方式

INNER JOIN仅保留匹配记录保留一侧全部记录保留两侧所有记录CROSS JOIN生成笛卡尔积处理 NULL 值时需注意COALESCE()或IFNULL()函数的使用可以通过实际运行这些 SQL 语句观察不同连接方式的差异。自连接本质:将同一张表视为两个逻辑表进行连接必须使用别名:区分不同角色的表实例(如e为员工,m为上级)常用场景组织结构查询(员工 ↔ 上级)分类层级(父分类 ↔ 子分类)路径分析(如路线 A → B → C)NULL 处理SELECTe.name,

qq_45941196的博客 2255

SQL中的连接查询,多表查询与等值连接

查询同时涉及两个以上的表,称为连接查询。包括等值连接查询,自然连接查询,非等值连接查询,自身连接查询,外连接查询和复合条件连接查询等 1.等值与非等值连接查询     where 子句中连接两个表的条件称为连接条件 如 Student.Sname=Sc.Sno   比较运算符有= > < <= >= != <> 。当连接运算符为=时,...

云源 2162

SQL Server第六章-多表连接查询

标题:SQL Server第六章-多表连接查询。

2302_79444883的博客 1039

《SQL经典实例》:5. 多表连接查询

目录 多表连接 合并行Union all/union 合并列:1. 全连接 合并列:2. INNER JOIN 合并列:3. LEFT JOIN 合并列:4. RIGHTJOIN 多于两个表的连接 综合应用 多表连接 合并行Union all/union SELECT 列表里的所有项目必须保持数目相同,且数据类型匹配(所以select T1时要加个null) SELECT ename AS ename_and_dname, deptno FROM emp WHE...

小白的博客 1622

2.SQL语句之多表(连接)查询

0.概述 作用:当所需要查询的数据分布在多张表上时,需要使用多表查询(连接查询) 方式:  1.SQL92多表查询        2.SQL99多表查询    两种方式均可,其中SQL92书写方便阅读困难,SQL99书写较麻烦,但阅读很方便,而且符合逻辑(下文会体现),两种方式都有使用,所以都要学习。不过更推荐SQL99。 1.SQL92多表查询 笛卡尔积 笛卡尔积也称直积,两个集合X...

/*Chen*/的博客 4644

SQL: 多表连接与跨表查询(JOIN)

在 MySQL Workbench 中创建 Entity Relationship Diagram(ERD) 是非常实用的功能,适合可视化数据库结构。是用来连接两个或多个表的操作,它基于表之间的关系(通常是外键),将它们的记录“拼接”起来,它让你能在多个表之间组合数据。某个客户买了什么商品?写别名的目的是为了避免重复表名前缀,尤其在多表连接中非常有用。6.你可以在这个界面中拖动、调整表的位置,并右键表查看表结构。每一条记录是:某个顾客买了某个商品,在某个时间。,每次 JOIN 两张表,最后形成一张大表。

2402_88047672的博客 2297
上一篇: 异常机制及throw与throws的区别
下一篇: 数据库的几种连接查询
鹿晗的晗
博客等级 码龄16年 22粉丝 23原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值