数据库的多表连接

本文深入解析SQL中的各种连接类型,包括交叉连接、内连接、外连接及其子类型,以及子查询的多种应用场景,如单值、单列多行和多行多列结果的查询方式。

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

1.交叉连接

没有条件的多表查询就是交叉连接,一定会产生笛卡尔积。sql中表之间的逗号就相当于一个join。

2.内连接

内连接要有条件,就是用左表的记录去匹配右表的记录,匹配上才展示,匹配不上不展示。

2.1隐式内连接

select * from tableA,tableB where tableA.id=table.Aid;

2.2显示内连接

 使用join字段就是显示内连接

select * from tableA join tableB where tableA.id=table.Aid;

select * from tableA join tableB on tableA.id=table.Aid;

3.外连接

外连接也有两种,左外连接和右外连接。

先说左外连接,就是在左表数据全部展示的基础上,匹配右表数据,匹配上就展示,匹配不上就不展示。

右外连接,在展示右表的基础上,匹配左表,匹配上就展示,匹配不上就不展示。

4.子查询

    一条select语句的结果作为另一条select语句语法的一部分

4.1子查询的结果为单值

select id from tableA where salary=(select max(salary) from tableA)

4.2子查询的结果为单列多行

 SELECT * FROM dept WHERE id IN(SELECT dept_id FROM emp WHERE salary >5000);

4.3子查询的结果为多行多列

SELECT * 
FROM (  SELECT * 
        FROM emp 
        WHERE join_date >'2011-1-1') AS e 
    INNER JOIN dept d 
        ON e.dept_id = d.id;

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值