sql中的连接查询

create table 产品
(
   产品编号  char(9) not null,
   产品名称  varchar(20)  not null
)
go
create table 产品销量
(
   产品编号  char(9) not null,
   销量      int
)
go
insert into 产品 values('001','显示器')
insert into 产品 values('002','键盘')
insert into 产品 values('003','鼠标')
insert into 产品销量 values('001','25')
insert into 产品销量 values('003','35')
insert into 产品销量 values('005','30')


--A.自身连接查询
select a.*,b.* from 产品 as a join 产品 as b
on a.产品编号=b.产品编号
/*
自身连接查询,
必须有连接条件,
不能有查询条件,
结果集全显示,
要加上区分标记
*/

--B.多表连接查询
--B-1: 交叉查询
select * from 产品 cross join 产品销量
/*
交叉连接(不含查询条件)
全显示,左在左,右在右
类似于俩矩阵相乘
*/
select * from 产品 cross join 产品销量
where 产品.产品编号=产品销量.产品编号
--交叉连接(含 查询条件)

--B-2-1 等值连接查询
select * from 产品 join 产品销量
on  产品.产品编号=产品销量.产品编号
/*
等值连接
结果全显示,左在左,右在右
*/

--B-2-2 自然连接查询
select 产品名称 from 产品 join 产品销量
on  产品.产品编号=产品销量.产品编号
/*
自然连接查询 要指定列的名字
结果只显示所选列
*/

--B-2-3不等值查询
select * from 产品 join 产品销量
on  产品.产品编号>产品销量.产品编号

/*
连接条件中不能是等号
结果是符合条件的全显示
*/

--B-3-1 外连中的左连
select * from 产品 left join  产品销量
on 产品.产品编号=产品销量.产品编号
/*
查询时以左表为准,
结果中不仅有与连接条件中相同的行;
并且,左表中与连接条件中不相同的行也都要显示
右表对应的为null 
*/

--B-3-2 外连中的右连
select * from 产品 right join  产品销量
on 产品.产品编号=产品销量.产品编号
/*
查询时以右表为准,
结果中不仅有与连接条件中相同的行;
并且,右表中与连接条件中不相同的行也都要显示
左表对应的为null 
*/
--B-3-3 完全外连接
select * from 产品 full join  产品销量
on 产品.产品编号=产品销量.产品编号
/*
完全外连接,全显示,
若A表有的项,B没有,则B中对应为null
反过来一样
*/
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值