首先创建两张表,初始化数据
SQL> create table zk_test_1(id int,name varchar(10));
SQL> insert into zk_test_1 values(1,'aaa');
SQL> insert into zk_test_1 values(2,'bbb');
SQL> insert into zk_test_1 values(3,'ccc');
SQL> create table zk_test_2(id int , score int);
SQL> insert into zk_test_2 values(1,10);
SQL> insert into zk_test_2 values(2,20);
SQL> insert into zk_test_2 values(4,40);
1.内连接(Inner Join): 两表都满足的组合
SQL> select * from zk_test_1 a inner join zk_test_2 b on a.id = b.id;
结果:
ID NAME SCORE
1 aaa 10
2 bbb 20
2.外连接(Outter Join):
*左外连接(Left Outer Jion)
左向外联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值(null)。其中outer可以忽略。
SQL> select a.id,a.name,b.score from zk_test_1 a left outer join zk_test_2 b on a.id = b.id;
结果:
ID NAME SCORE
1 aaa 10
2 bbb 20
3 ccc (null)
*右外连接(Right Outer Join)
SQL> select a.id,a.name,b.score from zk_test_1 a right outer join zk_test_2 b on a.id = b.id;
结果:
ID NAME SCORE
1 aaa 10
2 bbb 20
4 (null) 40
*全外连接(Full Outer Join)
完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。
SQL> select a.id,a.name,b.score from zk_test_1 a full outer join zk_test_2 b on a.id = b.id;
结果:
ID NAME SCORE
1 aaa 10
2 bbb 20
3 ccc (null)
4 (null) 40
3.外连接与条件配合使用
当在内连接查询中加入条件是,无论是将它加入到join子句,还是加入到where子句,其效果是完全一样的,但对于外连接情况就不同了。当把条件加入到join子句时,SQL Server、Informix会返回外连接表的全部行,然后使用指定的条件返回第二个表的行。如果将条件放到where子句中,SQL Server将会首先进行连接操作,然后使用where子句对连接后的行进行筛选。
在join子句中:
SQL> select a.id,a.name,b.score from zk_test_1 a right join zk_test_2 b on a.id = b.id and b.id = 2;
结果:
ID NAME SCORE
(null) (null) 10
2 bbb 20
(null) (null) 40
在where子句中:
SQL> select a.id,a.name,b.score from zk_test_1 a right join zk_test_2 b on a.id = b.id where b.id = 2;
结果:
ID NAME SCORE
2 bbb 20
4,自身连接
自身连接是指同一个表自己与自己进行连接。这种一元连接通常用于从自反关系(也称作递归关系)中抽取数据。例如人力资源数据库中雇员与老板的关系。
分享到:
相关推荐
Oracle+表连接方式(内连接-外连接-自连接)+详解
错误描述:oracle远程连接服务器出现 ORA-12170 TNS:连接超时 错误检查:有很多是oracle自身安装的问题,但是我这里服务器配置正常,监听正常,服务正常,远程可以ping通服务器。 这里主要是防火墙问题,解决办法: ...
主要将了ArcGIS与Oracle Spatial之间的连接问题,解决了ArcGIS对于Oracle Spatial数据的读写问题
C#中连接oracle连接方法C#中连接oracle连接方法C#中连接oracle连接方法C#中连接oracle连接方法C#中连接oracle连接方法C#中连接oracle连接方法
oracle 左连接 右连接 学习 精选资料
word文件,深入讲解Oracle的外连接查询
Oracle连接有多中,我是在平常开发项目过程中用到的Oracle左连接进行了简单的阐述。
Oracle最大连接数
更改oracle数据库用户连接数,使你在访问oracle数据库的时候不会出现数据库连接进程过大,而造成的连接失败或数据库重启,此资源提供了修改该用户连接数的代码,以使你能够轻松实现增加Oracle数据库的用户连接数。
理解oracle中的外连接,希望对下载的人有帮助
Oracle连接类Oracle连接类Oracle连接类Oracle连接类Oracle连接类
oracle遇到连接空闲例程时的做法
oracle客户端配置连接oracle客户端配置连接oracle客户端配置连接
本章主要讲解oracle客户端连接oracle效劳器,主要有以下内容: 1.配置本地net效劳名配置 2.用sqlplus连接; 3.用toad连接; 一、配置本地net效劳名 首先说明我们的效劳器的IP为60.220.246.53,oracle的SID为czdb。 ...
强制释放Oracle数据连接方案,经常会遇到数据库无法连接,发现是连接数超过限制,如何能够看到默认的数据库连接数量限制呢,如何能够增大数量限制呢? .......
oracle修改最大连接数
Oracle中的外连接Oracle中的外连接Oracle中的外连接Oracle中的外连接Oracle中的外连接
Oracle左连接,右连接.doc Oracle左连接,右连接.doc
oracle新建数据库和连接配置步骤;
使用Jmeter测试Oracle,如何配置Jmeter测试计划,进行Oracle连接数测试