数据库两表联查、多表联查,多重联查

版权声明:本文为博主原创文章,未经博主同意不得转载

以Oracle数据库为例

有表

表名:AAA 字段: id name tag
表名:BBB 字段: id ban qq
表名:AABB字段: id area location

分类:

1.内连接 inner join

select 列名 from 主表 inner join 从表
on 主表和从表关系
注意:
(1)必须要有on语句
(2)关系必须两表中都成立
主表和从表:
特点:结果是两表之间的公共数据
公共数据就是说两表中关系列的值要对应
比如:

       SELECT * from  AAA INNER JOIN BBB ON AAA."id"=BBB."id"

      查询显示:

在这里插入图片描述

         [只显示条件都成立的数据]

2.外连接 outer join
a)左外连接 left outer join
select 列名 from 主表 left outer join 从表
on 关系 …

SELECT * from AAA LEFT JOIN BBB ON AAA.“id”=BBB.“id”

    查询显示:
      [左边为主表,主表全部显示,右边为副表,右边无符合数据时显示null,不符合的数据不会显示]

在这里插入图片描述
b)右外连接 right outer join
select 列名 from 从表 right outer join 主表
on 关系 …

SELECT * from AAA RIGHT JOIN BBB ON AAA.“id”=BBB.“id”

   查询显示:
     [右边为主表,主表全部显示,左边为副表,左边无符合数据时显示null,不符合的数据不会显示]

在这里插入图片描述
c)全外连接 full outer join
select 列名 from 主表 full outer join 主表
on 关系 …

SELECT * from AAA full outer JOIN BBB ON AAA.“id”=BBB.“id”

查询显示:
在这里插入图片描述

      [左边为主表,右边为副表,主表和副表全部显示,右边无符合数据时显示null,左边无符合数据时显示null,符合条件的数据会显示在一行]

3.交叉连接 cross join
select 列名 from 主表 cross join 主表;

SELECT * from AAA cross JOIN BBB

查询显示:
在这里插入图片描述

[左边为主表,右边为副表,显示的数据为乘积形式的数据。]
交叉连接查询不能带on子语
结果:两表查询结果的笛卡尔乘积
左表有3行 右表有3行数
结果:9行
附加:另一种连接查询,将多个表用逗号隔开查询

1.SELECT * from AAA,BBB where AAA.“id”=BBB.“id”
在这里插入图片描述
[类似于内连接,只显示条件都成立的数据]

2.SELECT * from AAA , BBB ;–不带where关系条件
在这里插入图片描述

[类似于交叉连接,左边为主表,右边为副表,显示的数据为乘积形式的数据。]

3.SELECT * from AAA INNER JOIN BBB ON AAA.“id”=BBB.“id” INNER JOIN AABB ON BBB.“id”=AABB.“id”
SELECT * from AAA INNER JOIN BBB ON AAA.“id”=BBB.“id” LEFT JOIN AABB ON BBB.“id”=AABB.“location”

SELECT * from AAA RIGHT JOIN BBB ON AAA.“tag”=BBB.“ban” right JOIN AABB ON BBB.“id”=AABB.“id”

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

[可以无限连接,想必到这应该懂了吧?想怎么join就怎么join,需要满足条件才显示的则要满足条件才显示,左右连接需要补null的,则要补null。]

还有就是:on 的时候可以写多个条件,例如:

SELECT * from AAA full outer JOIN BBB ON AAA.“id”=BBB.“id” and AAA.“name”=BBB.“ban” and AAA.“tag”=BBB.“qq”

  • 8
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在MySQL数据库中,多联查是指同时查询两个或多个的操作。常用的多联查类型有交叉连接、内连接、外连接、分组查询和子查询等。交叉连接返回两个的笛卡尔积,内连接返回两个中符合条件的记录,外连接返回两个中符合条件的记录以及未匹配的记录,分组查询用于对多个进行聚合计算,而子查询则是在一个查询中嵌套了另一个查询。 举个例子来说明,假设我们有两个,一个是t_super(包含学生姓名和歌曲ID),另一个是t_song(包含歌曲名称和ID)。我们想要查询在t_super中与歌曲ID为1对应的学生姓名,可以使用子查询的方式进行查询。具体的SQL语句如下: SELECT name FROM t_super WHERE song_id IN (1); 这个查询语句会返回在t_super中歌曲ID为1对应的学生姓名,结果可能为谭咏麟和林青霞。 另外,如果我们想要查询在t_super中没有学习《我只在乎你》这首歌的学生姓名,可以使用子查询和不等于运算符进行查询。具体的SQL语句如下: SELECT name FROM t_super WHERE song_id <> (SELECT id FROM t_song WHERE song_name = '我只在乎你'); 这个查询语句会返回在t_super中没有学习《我只在乎你》这首歌的学生姓名,结果可能为谭咏麟、张国荣、林青霞、刘德华、张曼玉、黎明、梅艳芳、陈慧娴和陈百强。 综上所述,多联查是在MySQL数据库中同时查询多个的操作,可以通过多种方式实现,如交叉连接、内连接、外连接、分组查询和子查询。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [mysql多联合查询](https://blog.csdn.net/m0_58805648/article/details/125533162)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值