Oracle学习----多表连接
来源:互联网 发布:linux fd 编辑:程序博客网 时间:2024/04/28 14:31
连接类型
使用一个连接去查询多张表的数据
SELECT table1.column,table2.clumn FROM table1,table2 WHERE table1.column1 = table.column2;
非等值连接
用非等值连接检索记录
SELECT e.last_name,e.salary,j.grade_level FROM employees e,job_grades j WHERE e.salary BETWEEN j.lowest_sal AND j.highest_sal;
外部连接
WORKER表中的MANAGER_ID等于MANAGER表中的EMPLOYEE_ID
SELECT worker.last_name || ' works for ' || manager.last_name FROM employees worker,employees manager WHERE worker.manager_id = manager.employee_id;
SQL1999语法介绍
Cross join 解释:CROSS JOIN产生了一个笛卡尔积(Cartesian product),就象是在连接两个表格时忘记加入一个WHERE子句一样
eg:SELECT last_name,dept_id FROMemp,dept; SELECT ename,loc FROMemp CROSS JOIN dept;
Natural join NATURALJOIN能够通过在两个表的列名来自动的检查join。NATURAL JOIN要求在每一个表格中的字段名相同
eg:SELECTename,dname,loc FROM dept,emp WHERE dept.deptno = emp.deptno; SELECT ename,dname,loc FROM dept NATURAL JOIN emp;
Join using() 如果几个字段有同样的名字,而你又不想用所有的这些字段来连接的时候,你就可以用USING子句,指定连接列名。
eg:SELECT dept_id, city FROM departments, locations WHERE departments.location_id =location.location_id;
SELECT department_name,city FROM departments JOIN locations USING (location_id);
Join on() ON子句被用于当在两个表中的字段名不一致时来连接表
eg:SELECT department_name,city FROM department, location WHEREdepartment.location_id =location.loc_id;
SELECTdepartment_name, city FROM department d JOIN location l ON (d.location_id =l.id);
Left outer join on() 在LEFTOUTER JOIN中,会返回所有左边表中的行,甚至在被连接的表中没有可对应的列名的情况下也如此。
eg:SELECT last_name,dept_id FROM emp e, dept d WHERE e.department_id =d.department_id(+);
SELECT last_name,dept_id FROM emp LEFT OUTER JOIN Dept ONe.dept_id = d.dept_id;
Right outer join() 在RIGHTOUTER JOIN中返回的是表中所有右边的行,甚至在被连接的表中没有对应的情况下也如此。
eg:SELECT last_name,d.dept_id FROM employees e, departments d WHERE e.department_id(+) =d.department_id;
SELECT last_name,d.dept_id FROM employees e RIGHT OUTER JOIN departments d ON (e.department_id =d.department_id);
Full outer join on() FULL OUTER JOIN=LEFT OUTJOIN+RIGHT OUT JOIN
eg: SELECT e.last_name,d.dept_id FROM employees e,departments d WHERE e.department_id = d.department_id(+)
UNION AL SELECT e.last_name,d.dept_id FROM employees e,departments d WHERE e.department_id (+)=d.department_id;
SELECT e.last_name,d.dept_id FROM employees e FULL OUTER JOIN departments d ON (e.department_id =d.department_id);
附加条件
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.manager_id = 149;
- Oracle学习----多表连接
- oracle多表连接
- Oracle 多表连接
- Oracle多表连接
- Oracle 多表连接
- oracle 多表连接
- ORACLE学习笔记之表连接
- 【Oracle学习】之 表的连接查询
- Oracle基础学习----连接
- Oracle学习----连接字
- oracle学习笔记--连接
- Oracle多表连接详解
- Oracle多表连接查询
- Oracle数据库 -- 多表连接
- 【Oracle数据库】多表连接
- oracle多表连接查询
- Oracle多表连接查询
- oracle 多表连接 内连接 外连接
- 编程之美 4.10 数字哑谜回文 问题2及扩展
- 百度面试android工程师经历
- ZOj1015判弦图
- 【转】ALSA(lib和util)交叉编译与测试
- quartus不能生成pof文件的解决办法
- Oracle学习----多表连接
- python模块——logging(日志管理)
- 笔记:操作IIS
- 自己实现RMI(五)socket通信方案之TCP通信
- 01背包问题总结
- Android RIL的java框架
- 内核态和用户态的区别以及内核栈
- HDU 2602 Bone Collector
- bdump大小增长过快的处理方法