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 |
热门推荐
掌握这4种方法,轻松搞定代数表达式化简
金华、义乌,谁才是“浙江之心”?
安图三小校车安全演练,守护孩子平安上学路
从“项目经理”到“老板”:不同情境下的称呼策略
一文读懂电源插座:L、N、E标识与安全用电要点
骑行安全指南:必备装备让你安心上路
装修旺季省钱攻略:地砖数量精准计算与采购技巧
光绪皇帝之死:一个百年悬案的科学揭秘
紧凑型电池壳专利获批,中科瑞龙引领智能设备小型化趋势
孙俪、蒋欣等演员因《甄嬛传》迎来事业转折
复旦研究揭秘糖尿病“黎明现象”,首款周制剂胰岛素获批
2024年教师退休新规全面解析:退休年龄、待遇标准全解读
健身房神器:高效锻炼肱三头肌
湖南衡山白玉丝瓜丰收,亩均收入破万带动村民就业
十二生肖之鼠:高效健康管理秘籍
一文读懂三大二次元图片网站:资源获取与版权注意事项
上海至奉化高铁中转攻略:两种方案任你选!
深圳地铁6号线:贯穿南北的交通动脉
全国首批、山东首例!新一代3.0T核磁兼容ICD成功植入
蒸馒头秘籍:一次发酵搞定!
深入解析:探秘自然对数平方的神奇魔力
北海至三亚自驾游:轮渡过海省时省力,附路线和费用
秋季胃病高发,专家详解饮食调理与中医方案
60万人次打卡昆明蓝花楹节,政企联动激活“赏花经济”
双色球开奖号码查询神器上线啦!
导航软件实用指南:路线规划、语音导航等功能详解
解码《甄嬛传》:MBTI性格模型揭示人物命运
玉琮、贝币、九宫牌:古代挂坠的文化密码
华西村负债400亿:集体经济模式的兴衰样本
倍他乐克缓释片:心血管疾病治疗的基石药物