Oracle Join

使用联接可查询多个表中的数据:
SELECT table1.column, table2.column
FROM table1
[NATURAL JOIN table2] | 
[JOIN table2 USING (column_name)] | 
[JOIN table2  ON (table1.column_name = table2.column_name)]| 
[LEFT|RIGHT|FULL OUTER JOIN table2  ON (table1.column_name = table2.column_name)]| 
[CROSS JOIN table2]; 
在该语法中:
• table1.column表示从中检索数据的表和列
• NATURAL JOIN 根据相同的列名联接两个表
• JOIN table2 USING column_name 根据列名执行等值联接
• JOIN table2 ON table1.column_name = table2.column_name根据 ON子句中的条件执行等值联接
• LEFT/RIGHT/FULL OUTER用于执行OUTER联接
• CROSS JOIN用于返回两个表的笛卡尔积

自然联结
-自作主张把相同的列(名字+类型)作为连接条件
Select EMPLOYEES.EMPLOYEE_ID,DEPARTMENTS.DEPARTMENT_NAME  
From EMPLOYEES  
natural join DEPARTMENTS ;
相当于
Select emp.EMPLOYEE_ID,dept.DEPARTMENT_NAME 
From EMPLOYEES emp
 join DEPARTMENTS dept 
on  emp.DEPARTMENT_ID = dept.DEPARTMENT_ID;
对于自然连接,如果有多个列类型名字相同,则会都当做连接条件,这时,如果只想用其中一个作为连接条件可以使用using
SELECT employee_id, last_name,
location_id, department_id
FROM employees JOIN departments
USING (department_id) ;            using后面的()是不可以少的
using后面可以跟where子句做限定,但是列不能有限定词
SELECT l.city, d.department_name
FROM locations l JOIN departments d
USING (location_id)
WHERE location_id = 1400;    --如果是WHERE d.location_id = 1400; 就会报错
使用on可以让连接关系更加明确,
下面是三个表的连接
SELECT employee_id, city, department_name
FROM employees e
JOIN departments d
ON d.department_id = e.department_id
JOIN locations l
ON d.location_id = l.location_id;
on后面可以接where或and,条件也可以限定
SELECT e.employee_id, e.last_name, e.department_id,
d.department_id, d.location_id
FROM employees e JOIN departments d
ON (e.department_id = d.department_id)
AND|WHERE e.manager_id = 149 ;
on后面也可以有多个条件
SELECT e.employee_id, e.last_name, e.department_id,
d.department_id, d.location_id
FROM employees e JOIN departments d
ON e.department_id = d.department_id
and E.EMAIL!=D.DEPARTMENT_NAME;























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值