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双持手枪攻略:获取与使用详解
怎样对比不同公司的汽车租赁价格表?
痛苦不再!学会这些甲沟炎的预防与护理技巧
埋在地下的水管漏水怎么检测
想做全飞秒,为什么医生建议我选半飞秒?
材料类哪个专业就业前景好:材料类最吃香的三个专业盘点
辣椒种植技术中地膜覆盖的作用及效果
微积分中的秘密武器:巧妙运用等价无穷小
岭南股份2024年中报深度剖析:亏损2.59亿,挑战与机遇并存,转型之路任重道远
孟浩然《春晓》古诗赏析
易经的坎卦是什么意思
CAD软件的类型及其应用领域
拉萨为什么叫不夜城?
孕妇怀孕期间能唱歌吗 孕妇可以高声唱歌吗
中小学人工智能教育怎么教?这份深圳经验值得借鉴
喉咙痛耳朵里面也跟着痛?原因、治疗与预防全解析
立定跳远满分攻略:技术要领与训练方法详解
成都中考体育冲刺:立定跳远满分攻略揭秘
一份炒面热量揭秘:你吃下的究竟是多少卡路里?
MEM全日制和非全日制的区别
上级补助收入的使用范围有哪些限制?
美国60万人研究发现:A型血60岁前或更易中风
郑州旅游攻略3日游:行程安排、费用及热门景点全解析
一座西塔 两种美誉 美食民俗一相逢 胜却人间无数
股债平衡策略:一种适合普通人的资产配置方案
IDC和云服务有什么区别
心血管造影:适应症、步骤与风险全解析
日化产品种类丰富,究竟包括哪些主要类别?