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 |
热门推荐
查体颈部血管检查怎么做
股骨头坏死的治疗方法全解析
股骨头坏死的 3个典型症状和简单辨别动作
打架斗殴派出所处理流程
饶育蕾解读:如何抓住财富新机遇?
解密巴菲特的投资秘诀:如何实现财富自由?
慢性非萎缩性胃炎的主要病因及预防措施
「胃痛吃什么」?胃痛饮食禁忌?医学博士给你22个摆脱「胃痛」的方法
服用立普妥期间的饮食雷区,这些食物要当心!
阿托伐他汀长期用药,这4个注意事项你一定要知道!
如何正确使用阿托伐他汀钙片管理心血管健康?
丝绸衣物高效熨烫小窍门分享
秋冬衣物熨烫与护理全攻略
丝绸和棉T恤的高级熨烫技巧
陈海贤教你破解人际关系中的心理密码
失信被执行人怎么还款
揭秘:东北人为何忌讳踩井盖
西安旅游攻略:第一次去西安需要准备什么,看完就懂了!
云南旅游全景攻略:跟团游指南及热门景点深度解析
西安旅游攻略:一文详解古都的历史与魅力
正确看待期末考试评分:从理解到成长
期末考试评分标准大揭秘:如何拿高分?
掌握这些理科实验技巧,期末考试轻松拿高分!
非萎缩性胃炎:认识症状,科学防治
彻底消灭腹胀症状,无需用药!学会避免吃这些制气食物,告别腹胀
文明礼仪小知识:公共场所行为指南
【以案说医】蔡立民:益气祛风,通络止痛法治疗股骨头缺血性坏死
老年人髋关节疼就是股骨头坏死吗?
网络小说 vs 传统文学:谁更接地气?
舌头上起泡并疼痛?可能原因与处理方法