oracle的自连接、内连接、外连接、交叉连接、自然连接、等值连接、不等值连接

等值连接  :关联条件要写表名.字段名=表名.字段名   等值连接中可能有笛卡尔积运算
自然连接 natural join:语句中没有on 并且自然连接的表里要有相同字段名  例: from M natural join N M表和N表要有相同的字段才可以(自然连接一定是等值连接,但是等值连接不一定是自然连接)
自连接:同一张表的连接查询
内连接:where 或者inner join
外连接:left/right/full outer join
交叉连接 cross join:语句中不能有on,不需要连接的表中有同名的字段,也不需要字段值有相同值,返回到结果集合中的数据行数等于两个表行数相乘

 

例:

create table A(
 name varchar(10),
 age number
);

create table B(
 name varchar(10),
 money number
);

--内连接
select * from A inner join B on a.name=b.name;   --等值连接
select * from A,B where  a.name=b.name;    --等值连接
select * from A inner join B on a.name<>b.name;   --不等值连接
select * from A,B where  a.name<>b.name;   --不等值连接

--外连接
select * from A left join B on a.name=b.name;   --等值连接
select * from A left outer join B on a.name=b.name;   --等值连接
select * from A left join B on a.name<>b.name;   --不等值连接
select * from A left outer join B on a.name<>b.name;   --不等值连接

--自连接

select * from A m , A n  WHERE m.name=n.name;  --等值连接
select * from A m , A n  WHERE m.name<>n.name;  --不等值连接
select * from A m inner join A n  on m.name=n.name;  --  等值连接
select * from A m inner join A n  on m.name<>n.name;  -- 不等值连接

--自然连接
select * from A natural join B;  -- 等值连接
--交叉连接
select * from A cross join B ;

你可能感兴趣的:(oracle)