SQL中大概有这么几种JOIN:
cross join
inner join
left outer join
right outer join
full outer join
他们都是基于cross join(笛卡尔乘积),举例说明
A_test表
Id a_name a_describe
1 a11111 a11111
2 a22222 a22222
3 a33333 a33333
B_test表
Id b_name b_describe
1 b11111 01
1 b11111 02
2 b22222 01
2 b22222 02
3 b44444 04
select * from a_test a //查询出所有a表中的所有记录 3条
select * from b_test b //查询出所有b表中的所有记录 5条
select * from a_test a cross join b_test b //a b 两表的笛卡尔乘积 即所有的组合 共15条记录
结果:
1 a11111 a111111 1 b11111 01
1 a11111 a111111 1 b11111 02
1 a11111 a111111 2 b22222 01
1 a11111 a111111 2 b22222 02
1 a11111 a111111 4 b44444 01
2 a22222 a222222 1 b11111 01
2 a22222 a222222 1 b11111 02
2 a22222 a222222 2 b22222 01
2 a22222 a222222 2 b22222 02
2 a22222 a222222 4 b44444 01
3 a33333 a333333 1 b11111 01
3 a33333 a333333 1 b11111 02
3 a33333 a333333 2 b22222 01
3 a33333 a333333 2 b22222 02
3 a33333 a333333 4 b44444 01
1 a11111 a111111 1 b11111 01
1 a11111 a111111 1 b11111 02
1 a11111 a111111 2 b22222 01
1 a11111 a111111 2 b22222 02
1 a11111 a111111 4 b44444 01
2 a22222 a222222 1 b11111 01
2 a22222 a222222 1 b11111 02
2 a22222 a222222 2 b22222 01
2 a22222 a222222 2 b22222 02
2 a22222 a222222 4 b44444 01
3 a33333 a333333 1 b11111 01
3 a33333 a333333 1 b11111 02
3 a33333 a333333 2 b22222 01
3 a33333 a333333 2 b22222 02
3 a33333 a333333 4 b44444 01
select * from a_test a inner join b_test b on a.id = b.id
//在笛卡尔乘积的结果集中去掉不符合连接条件的行 包含于笛卡尔乘积
结果:
1 a11111 a111111 1 b11111 01
1 a11111 a111111 1 b11111 02
2 a22222 a222222 2 b22222 01
2 a22222 a222222 2 b22222 02
1 a11111 a111111 1 b11111 01
1 a11111 a111111 1 b11111 02
2 a22222 a222222 2 b22222 01
2 a22222 a222222 2 b22222 02
select * from a_test a left outer join b_test b on a.id = b.id
//是在inner join的结果集上加上左面表中没被选上的不相等的记录,不包含于笛卡尔乘积
//行的右表部分每个字段都用NUll填充
结果:
1 a11111 a111111 1 b11111 01
1 a11111 a111111 1 b11111 02
2 a22222 a222222 2 b22222 01
2 a22222 a222222 2 b22222 02
3 a33333 a333333 NULL NULL NULL
select * from a_test a right join b_test b on a.id = b.id
//是在inner join的结果集上加上右面表中没被选上的不相等的记录,不包含于笛卡尔乘积
//行的左表部分每个字段都用NUll填充
1 a11111 a111111 1 b11111 01
1 a11111 a111111 1 b11111 02
2 a22222 a222222 2 b22222 01
2 a22222 a222222 2 b22222 02
NULL NULL NULL 4 b44444 01
select * from a_test a full outer join b_test b on a.id = b.id
//是在inner join的结果集上加上左、右两面表中没被选上的不相等的记录,不包含于笛卡尔乘积
//行的右、左表两部分每个字段都用NUll填充
1 a11111 a111111 1 b11111 01
1 a11111 a111111 1 b11111 02
2 a22222 a222222 2 b22222 01
2 a22222 a222222 2 b22222 02
NULL NULL NULL 4 b44444 01
3 a33333 a333333 NULL NULL NULL
分享到:
相关推荐
sql连接器
简单的SQL连接客户端,可使用它连接到SQL SERVER
sql 连接字符串
超好用的SQL连接工具,操作比查询分析器方便很多
比较不错的SQL连接器比较不错的SQL连接器比较不错的SQL连接器比较不错的SQL连接器比较不错的SQL连接器比较不错的SQL连接器
在java中配置sql连接池的步骤以及原文件,不足之处请大家指正
短小精悍的云风SQL连接器,用于连接SQL服务器!方便快捷!
1433连接器,黑血专用(SQL连接) 1433连接器,黑血专用(SQL连接) 1433连接器,黑血专用(SQL连接) 1433连接器,黑血专用(SQL连接) 1433连接器,黑血专用(SQL连接) 1433连接器,黑血专用(SQL连接) 1433连接器,黑血专用(SQL...
一直在用的这个工具和大家分享一下,简单易的数据库连接测试工具,主要用来测试是否能连接数据库,不过也可以编码数据库和执行SQL代码,工具虽说,但功能强大。 已测试过 sql server 2000,sql2005,sql2008,mysql, ...
SQLTools sql连接工具SQLTools sql连接工具SQLTools sql连接工具
sqljdbc4 (SQL连接驱动包)sqljdbc4 (SQL连接驱动包) sqljdbc4 (SQL连接驱动包) sqljdbc4 (SQL连接驱动包)
SQL连接测试器 本人收藏了3年的资源 现放出 都是总结了很多系统 软件项目实施过程中的经验的 慢慢积累的
SQLBrowser(一个很小的SQL连接工具),简便快捷
数据库原理及运用实验四SQL连接查询.doc
非常好用的sqltool 无毒 无后门,sql连接工具sql连接工具sql连接工具
sql连接myeclipse与sql的连接
SQL(Structured Query Language,结构查询语言)是一个功能强大的数据库语言。SQL通常使用于数据库的通讯。ANSI(美国国家标准学会)声称,SQL是关系数据库管理系统的标准语言。SQL语句通常用于完成一些数据库的操作...
VB连接SQL 连接数据库 ODBC 数据库
intouch与SQL连接方法
连接SQL数据库,不用写命令,方便实用!