详解SQL多表查询:连接类型与子查询实战
创作时间:
作者:
@小白创作中心
详解SQL多表查询:连接类型与子查询实战
引用
CSDN
1.
https://blog.csdn.net/Lyhdreamer/article/details/136338455
在SQL中,多表查询是指在一个查询语句中同时处理两个或多个表的数据。分为连接查询和子查询。
一、连接查询
通过连接运算符可以实现多个表查询。分为内连接、外连接、交叉连接。
连接运算是由一个笛卡尔积运算和一个选取运算构成的。首先用笛卡尔积完成对两个数据集合的乘运算,然后对生成的结果集合进行选取运算。
示例表如下:
- student表
- score表
1. 内连接
把两个表中数据对应的数据查询出来,内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值,即查询两张表的交集。内连接分以下三种:
(1)等值连接
在连接条件中使用等于号“=”运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。
SELECT * FROM student INNER JOIN score ON student.id = score.id;
(2)自然连接
在连接条件中使用等于“=”运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。
自然连接仅适用于那些具有相同名称和数据类型的列。如果两个表中的列名称或数据类型不匹配,自然连接将无法执行。
-- NATURAL JOIN无ON语句
SELECT * FROM student NATURAL JOIN score;
(3)不等值连接
在连接条件使用除等于运算符以外的其它比较运算符比较被连接列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。
2. 外连接
以某个表为基础把对应数据查询出来,返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个表(全外连接)中的所有行。
(1)左外连接
SELECT * FROM student LEFT OUTER JOIN score ON student.id = score.id;
(2)右外连接
SELECT * FROM student RIGHT OUTER JOIN score ON student.id = score.id;
(3)全外连接
SELECT * FROM student FULL OUTER JOIN score ON student.id = score.id;
3. 交叉连接
交叉连接不带ON语句,返回被连接的两个表所有行的笛卡尔积。
-- CROSS JOIN无ON语句
SELECT * FROM student CROSS JOIN score;
二、子查询
SQL语句中嵌套SELECT语句,称为嵌套语句,又称子查询,根据子查询结果不同分为以下四种:
子查询外部的语句可以是INSERT/UPDATE/DELETE/SELECT的任何一个。
分类 | 描述 | 常用操作符 |
---|---|---|
标量子查询 | 子查询结果为单个值 | =、<>、>、>=、<、<= |
列子查询 | 子查询的结果为一列 | IN、NOT IN、ANY、SOME、ALL |
行子查询 | 子查询的结果为一行 | =、<>、IN、NOT IN |
表子查询 | 子查询的结果为多行多列 | IN |
热门推荐
Redis中数据分片与分片策略
如何识别股票图表中的单日反转形态
用时规则解读应氏杯首局 有些“传统”应与时俱进
尿检维生素C+-是什么意思?
青海晶珠藏药带你了解藏药炮制工艺
恒生科技指数各行业权重分布
小米手机如何关闭自动更新
政策变化会影响公务员的稳定吗
全球5G测试峰会发出联合宣言:5G统一标准,统一生态
如何正确书写职务、岗位和职称?
深入分析股票短线交易的风险与策略
颈椎问题是否可能引发后脑紧绷发麻
【警惕】靠吸人血为生的小“头虱”,大麻烦!
游离甲状腺素偏高说明什么问题
什么银制品具有较好的抗氧化性?这种抗氧化性的原理是什么?
内向者如何做好项目管理
小腿痛是怎么回事
优劣粉条的鉴别方法
数学摇滚:一种充满数学之美的独立摇滚风格
发财树怕冷还是怕热?发财树的适宜生长温度是多少?
感冒期间可以吃蛋糕吗?一文详解感冒期间的饮食注意事项
里程碑!詹姆斯升湖人队史得分榜第十:效力三队都能做到史上唯一
达成短期目标后感到空虚?5个实用方法帮你重启人生
劳动能力鉴定全流程指南:从申请到赔偿
2025年春运开始时间+结束时间(起止时间)
手把手教你画萌宠狗狗教程
深圳阳台山自然风景区攻略:门票、路线、地址交通全解析
治疗与生活习惯并重 严控胆固醇指数
交通事故精神鉴定与伤残等级评定标准详解
如何规划合理的购房资金安排?这样的安排有哪些影响因素?