SQL多表查询实战:连接类型与子查询应用
创作时间:
2025-01-21 17:38:08
作者:
@小白创作中心
SQL多表查询实战:连接类型与子查询应用
在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 |
热门推荐
取证过程中怎样确保证据的有效性
熟地黄种植技巧大揭秘:专家教你防病虫害
原油供应历史性过剩遇上特朗普2.0,国际油市将迎何种变化
熟地乌鸡汤的功效与禁忌:传统滋补汤品的全面解析
从差生到夺冠,付航背后的"高人"功不可没!3句话点醒所有父母
云南权妹的“恐龙扛狼”:一个网络热梗的爆红之路
从“恐龙扛狼”到美声:一个网络梗的爆红之路
广州最新邮政编码全攻略:11区邮编一文掌握
高等数学助力大学物理学习
数学学习顺序的秘密:从焦虑到享受
微积分与线性代数:物理大佬的通关秘籍
疫情期间发热患者的心理护理指南
黄鱼鱼片:营养与美味的完美结合
防空反导新突破!首次亮相航展的红旗-19导弹有何特别之处?
红旗19首次亮相!防空反导作战的杀手锏!
《猫和老鼠》教你如何交朋友
“凌驾”梗再掀热潮:鲁路修 vs 泉此方
凌驾梗爆红背后的秘密:烫手的冰揭秘
乌龟健康大挑战:你能正确预防这些疾病吗?
动量策略升级版:风险调整与行业动量双轮驱动
ATFX首席分析师揭秘:动量交易的实战秘籍
乌龟界的“网红”:揭秘乌龟的神秘习性
如何科学养龟,让你的宠物乌龟更健康?
中国始喙龟:揭秘乌龟进化之谜的关键发现
水煮鹅蛋:心血管健康的明智之选?
鹅蛋竟是养生界的隐藏大佬?
煮鹅蛋vs油煎鹅蛋:营养、口感与安全性的全面对比
《猫和老鼠》:一对欢喜冤家的友谊传奇
《猫和老鼠》新作上映:重温经典,感受创新
张红甫教你做家常红烧鱼简单几步搞定美味