sql join 大汇总(inner join 内联、full join 全连、 left join 左连、right join 右连 、cross join 交叉连以及union)

本文详细解析了SQL中各种联表查询方式,包括内连接、全外连接、左连接、右连接以及并集操作,通过具体示例展示了如何操作两个具有相似结构的表,为数据库操作提供了实用指南。

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

一、定义两个表 ,结构如下

create table A (
    id  nvarchar(50) null,
    names nvarchar(50) null

create table B (
    id  nvarchar(50) null,
    names nvarchar(50) null

二、 插入数据

A表

insert into A values('1','zhangsan00');
insert into A values('2','zhangsan01');
insert into A values('3','zhangsan02');
insert into A values('4','zhangsan03');

B表

insert into B values('1','zhangsan00');
insert into B values('2','zhangsan01');
insert into B values('3','zhangsan05');
insert into B values('4','zhangsan06');

-- inner join 两个表的交集

select *from A  inner join B on A.names=B.names

-- full out join 两个表的并集

select * from A full outer join B  on A.names=B.names 

-- 案例 求两个表的非交集部分

select * from  A full outer join B on A.names = B.names where  A.id is null or B.id is null

--left join  左表的所有数据列出,右表的相同部分列出,不同部分用null 补齐

select A.*,B.id as Bid,B.names as bName from A left  join B on A.names =B.names;

 --right join  右表的所有数据列出,左表相同部分列出,不同部分用null 补齐

select A.*,B.id as Bid,B.names as bName from A right  join B on a.names = b.names

 

--union 合并两个表的数据(不允许重复)

select names from A 

union 

select names from B

--union all 两个表的并集(语序重复)

select names from A

union  all 

select names from B

-- corss join  表A和表B的数据进行一个N*M的组合,即笛卡尔积

select *  from A cross join B  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值