MS-SQL中的三种联接与合并(举例说明)的区别的HOWTO文章
2015-01-09 15:40
267 查看
测试平台:MS-SQL 2008 R2 ;
下面将以两个t_a和t_b表来测试联接和全并
第一:创建A表
第二:创建B表
第三:1:在A表中添加数据
A表数据如下
aid anum
1 20050111
2 20050112
3 20050113
4 20050114
5 20050115
2:给B表添加数据
B表数据如下
bid bname
1 2006032401
2 2006032402
3 2006032403
4 2006032404
8 2006032408
第四:1:左联接如下
左联接数据如下
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:右联接如下
右联接数据显示如下
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:左联是以左右的数据为准,右联是以右边的数据为准;
3:Inner join如下
显示如下:
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这两个表
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
二:修改一个例表的例名
1:删除一个表的name列
2:新增一个表中的bname列
三:象a12345这样列的数据定义类型(后面那个有含有5的括号的应该与在中括号外不能写在里面)
下面将以两个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:左联是以左右的数据为准,右联是以右边的数据为准;
3:Inner 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) )
相关文章推荐
- sql之left join、right join、inner join的区别及举例说明
- 举例说明在SQL中,DELETE语句与DROP TABLE的区别
- sql表连接查询的区别`inner join、left join、rightjoin、outer join举例说明
- SQL(横表和纵表)行列转换,PIVOT与UNPIVOT的区别和使用方法举例,合并列的例子
- sql,多张表统计查询------举例说明一下吧
- sql语句中三种连接的区别
- ArrayList和LinkedList的区别是什么?举例说明LinkedList可实现的功能
- char和varchar的区别(ms-sql )
- MySQL与Transact SQL(MS SQL Server)的SQL语句区别点滴(C++)
- SQL三种备份的区别
- MS SQL Server和MySQL区别
- MS SQL SERVER 与 ORACLE 聚集表区别
- MS SQL Server 2005/2008系列文章导航
- SQL三种备份的区别
- MS SQL Server 2005 系统表详细说明
- MS SQL Server 和 MySQL的区别
- CSS中Display与Visibility区别及举例说明
- MS SQL Server和MySQL区别
- 举例说明在C#语言ref和out的区别
- 上篇文章中ScrollBar滚动条类 举例说明各参数用途