Jquery中文网 www.jquerycn.cn
Jquery中文网 >  数据库  >  oracle  >  正文 oracle中各种联合查询sql语句总结

oracle中各种联合查询sql语句总结

发布时间:2014-08-15   编辑:www.jquerycn.cn
本文介绍下,在oracle中的各种联合查询sql语句,包括内连接、外连接、求笛卡尔乘积等,有需要的朋友参考学习下。

oracle中各种联合查询的sql语句,如下:
 

复制代码 代码示例:

sqlOracleMongoDBSQL Server
create database mytest
go
use mytest
go
create table t_dept
(
d_id int primary key identity(1,1),
d_name varchar(20),
d_remark varchar(20)
)
go
create table t_emp
(
e_id int primary key identity(1,1),
d_id int references t_dept(d_id),
e_name varchar(20),
e_sex varchar(4)
)
go
insert into t_dept values('一部','1111');
insert into t_dept values('二部','2222');
insert into t_dept values('三部','3333');
insert into t_dept values('四部','4444');
go
insert into t_emp values(1,'一部A君','男');
insert into t_emp values(1,'一部B君','男');
insert into t_emp values(2,'二部C君','女');
insert into t_emp values(null,'三部D君','男');
go
select * from t_dept;
select * from t_emp;
go
--注:联接查询,哪个表在前,就以哪个表为主表
--内联接(两表标识号相同的所有行)
select * from t_dept a inner join t_emp b on a.d_id=b.d_id ;
1一部111111一部A君男
1一部111121一部B君男
2二部222232二部C君女
--外连接(外联接可以是左向外联接、右向外联接或完整外部联接)
--(1)
select * from t_dept a left outer join t_emp b on a.d_id=b.d_id ;--"左外连接 等同于 左连接"
select * from t_dept a left join t_emp b on a.d_id=b.d_id ;--左连接(所有的部门显示,员工表里部门id为null的显示

不出来)
1一部111111一部A君男
1一部111121一部B君男
2二部222232二部C君女
3三部3333NULLNULLNULLNULL
4四部4444NULLNULLNULLNULL
--(2)
select * from t_dept a right outer join t_emp b on a.d_id=b.d_id ;--"右外连接 等同于 右连接"
select * from t_dept a right join t_emp b on a.d_id=b.d_id ;--右连接,员工表所有员工显示,"三部"和"四部"没有员

工的部门则该部门不显示
1一部111111一部A君男
1一部111121一部B君男
2二部222232二部C君女
NULLNULLNULL4NULL三部D君男
--(3)
--完整外部联接,返回左表和右表中的所有行
--当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的

数据值。
select * from t_dept a full outer join t_emp b on a.d_id=b.d_id ;
select * from t_dept a full join t_emp b on a.d_id=b.d_id ;
1一部111111一部A君男
1一部111121一部B君男
2二部222232二部C君女
3三部3333NULLNULLNULLNULL
4四部4444NULLNULLNULLNULL
NULLNULLNULL4NULL三部D君男

--笛卡尔积
select * from t_emp,t_dept
select * from t_dept,t_emp
--返回16条数据,左表有4条,右表有4条,返回行数为4*4=16(条),产生笛卡尔积
1一部111111一部A君男
2二部222211一部A君男
3三部333311一部A君男
4四部444411一部A君男
1一部111121一部B君男
2二部222221一部B君男
3三部333321一部B君男
4四部444421一部B君男
1一部111132二部C君女
2二部222232二部C君女
3三部333332二部C君女
4四部444432二部C君女
1一部11114NULL三部D君男
2二部22224NULL三部D君男
3三部33334NULL三部D君男
4四部44444NULL三部D君男

您可能感兴趣的文章:
oracle中各种联合查询sql语句总结
数据库查询语言(1)
Oracle递归查询举例
设计高效合理的MySQL查询语句的建议
mysql where和having子句的用法
mysql多表联合查询并返回一张表的内容的sql代码
mysql分页查询 oracle分页查询
SQL 总结
mysql group by和having实例详解
Oracle数据库游标使用

[关闭]