The difference between the three kinds of join and merge

测试平台:MS-SQL 2008 R2 ;

下面将以两个t_a和t_b表来测试联接和全并

第一:创建A表

create table t_a(
[aid] [int],
[anum]  [char]
)

第二:创建B表

create table t_b(
[bid] [int],
[aname]  [char]
)

第三:1:在A表中添加数据

insert 
INTO t_a(aid,anum) 
SELECT 1,20050111 union
select 2,20050112 union
select 3,20050113 union
select 4,20050114
union ALL SELECT 5,20050115

A表数据如下

aid  anum

1   20050111

2   20050112

3   20050113

4   20050114

5   20050115

 

2:给B表添加数据

insert
INTO t_b(bid,bname) 
SELECT 1,2006032401 union
select 2,2006032402 union
select 3,2006032403 union
select 4,2006032404
union ALL SELECT 8,2006032408

B表数据如下

bid bname

1   2006032401

2   2006032402

3   2006032403

4   2006032404

8   2006032408

第四:1:左联接如下

select * from t_a left join t_b on t_a.aid=t_b.bid

左联接数据如下

aid anum     bid bname

1   20050111   1   2006032401

2   20050112   2   2006032402

3   20050113   3   2006032403

4   20050114   4   2006032404

5   20050115   NULL   NULL

2:右联接如下

select * from t_a right join t_b on t_a.aid=t_b.bid

右联接数据显示如下

aid anum    bid bname

1   20050111   1   2006032401

2   20050112   2   2006032402

3   20050113   3   2006032403

4   20050114   4   2006032404

NULL   NULL   8   2006032408

总结:1:join前的表排列在前面,join后的表在后面;

2:左联是以左右的数据为准,右联是以右边的数据为准;

3Inner join如下

select * from t_a inner join t_b on t_a.aID = t_b.bID

显示如下:

aid anum       bid bname

1   20050111   1   2006032401

2   20050112   2   2006032402

3   20050113   3   2006032403

4   20050114   4   2006032404

总结:inner join与 right join和leftjoin的区别;只显示 aid=bid行数,其它则不用显示;

合并t_a和t_b这两个表

select * from t_b
union
select * from t_a

bid bname

1   20050111

1   2006032401

2   20050112

2   2006032402

3   20050113

3   2006032403

4   20050114

4   2006032404

5   20050115

8   2006032408

合并与联接的差别

1:合并是纵向相加;不过是相对行的行显示成两行;

2:联接是横向加想;只是以左边要么右边的数据而已;

注意:我在这个过程中出现的一些操作另外总结

一:当删有两例的数据的时候要用一个and

delete  from t_a where aid='1' and anum='20050111'

二:修改一个例表的例名

1:删除一个表的name列

alter table t_b
drop colum aname
 

2:新增一个表中的bname列

alter table t_b
add bname int

 三:象a12345这样列的数据定义类型(后面那个有含有5的括号的应该与在中括号外不能写在里面)

create table t_test
 ( [id] [char](5)
  )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值