mysql多表查询的相关知识

本文介绍了多表查询的各类方法,包括内连接(隐式与显式)、外连接(左外右外)、子查询以及消除笛卡尔积的技巧。重点讲解了内连接的特点,区分了显式内连接的语法,并讨论了左外连接的应用场景。同时,深入解析了子查询的不同类型及其在查询中的运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多表查询的相关知识

多表查询分为哪几类?

  1. 内连接查询
    1.隐式内连接:使用where来消除无用的数据
    2.显式内连接:换了一种格式

  2. 外连接查询
    1.左外连接
    2.右外连接

  3. 子查询

什么是笛卡尔积呢?

* 有两个集合A,B.取这两个集合的所有组成情况。一般合成的集合是C=A*B
* 要完成多表查询,需要消除无用的数据 

如何消除笛卡尔积呢?

就是多表查询的产生的原因。

内连接查询的主要特点是什么呢?

1.从哪个表进行查询
2.选几个字段
3.使用什么条件

为什么要分显式内连接和隐式内连接?

显式内连接是一种新的表达方式,但是效果都是一样的。

显式内连接的格式中inner是一定要加上的吗?inner join左右的表名是可以交换顺序的吗?

是可以省略的。 INNER JOIN 左右的顺序是可以互换的,但是表的字段的顺序也是会互换的。

为什么需要左外连接?

如果有一个表中的数据有NULL的值,无法和另一个表进行匹配,这样的话,就需要使用左外连接,查询的是左表所有数据以及其交集部分

外连接中的outer是可以省略的吗?

对的是可以省略的。

子查询是什么呢?

查询中嵌套查询
查询结果作为一个条件来使用。

查询 查询最大值的条件
SELECT * FROM emp WHERE emp.salary = (SELECT MAX(salary) FROM emp);

子查询分为哪几类?

子查询的结果是 单行单列;
子查询的结果是 多行单列;
子查询的结果是 多行多列;

子查询中的多行多列的情况是怎样的呢?

把子查询的结果集(一个表)当作一个条件来使用。
子查询可以作为一张虚拟表参与查询

子查询的多行单列的情况是什么样的呢?

子查询可以作为条件,使用运算符in来判断

SELECT * FROM emp WHERE dept_id IN (SELECT id FROM dept WHERE NAME = '财务部' OR NAME = '市场部');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值