Oracle 多表連接
select * from emp,dept;
select * from emp,dept where emp.deptno=dept.deptno;
select emp.*,dname,loc from where emp.deptno=dept.deptno;
select e.* ,dname,loc from emp e,dept d
where e.deptno=d.deptno.
連接類型
Oracle 8i
select * from emp,dept
where emp.deptno=dept.deptno and deptno=7499;
select * from emp,dept;
select * from emp,dept where emp.deptno=dept.deptno;
select emp.*,dname,loc from where emp.deptno=dept.deptno;
select e.* ,dname,loc from emp e,dept d
where e.deptno=d.deptno.
連接類型
Oracle 8i
select * from emp,dept
where emp.deptno=dept.deptno and deptno=7499;
非等值連接
select empno,ename,sal,grade,losal,hisal from emp,salgrade
where sal>=losal and sal<=hisal
select empno,ename,sal,grade,losal,hisal from emp,salgrade
where sal>=losal and sal<=hisal
左外連接
select * from emp,dept
where emp.deptno(+)=dept.deptno
右外連接
select * from emp,dept
where emp.deptno=dept.deptno(+)
select * from emp,dept
where emp.deptno(+)=dept.deptno
右外連接
select * from emp,dept
where emp.deptno=dept.deptno(+)
自連接
select e1.empno,e1.ename,e1.mgr,e2.ename from emp e1,emp e2
where e1.mgr=e2.empno and e1.empnto=7369
select e1.empno,e1.ename,e1.mgr,e2.ename from emp e1,emp e2
where e1.mgr=e2.empno and e1.empnto=7369
Oracle 9i
select * from emp cross join dept;
select * from emp natural join dept;(自動選擇用那列連接)
select * from emp left outer join dept using(deptno);
select * from emp right outer join dept using(deptno);
select * from emp full outer join dept using(deptno);
select * from emp cross join dept;
select * from emp natural join dept;(自動選擇用那列連接)
select * from emp left outer join dept using(deptno);
select * from emp right outer join dept using(deptno);
select * from emp full outer join dept using(deptno);
select * from emp full outer join dept
on(emp.deptno=dept.deptno);
多表連接
select emp_id,city_name,dept_name from locations l
join departments d
on(d.location_id=l.location_id)
join employees e
on(d.department_id=edepartment_id)
on(emp.deptno=dept.deptno);
多表連接
select emp_id,city_name,dept_name from locations l
join departments d
on(d.location_id=l.location_id)
join employees e
on(d.department_id=edepartment_id)
子查詢
select * from emp
where sal > (select avg(sal) from emp);
select sal from emp group by deptno,sal
select * from emp
where sal > (select avg(sal) from emp);
select sal from emp group by deptno,sal
having sal > (select avg(sal) from emp);
select * from emp
where sal in (select avg(sal) from group by deptno);
select * from emp
where sal in (select avg(sal) from group by deptno);
select * from emp
where sal > any (select avg(sal) from group by deptno);
where sal > any (select avg(sal) from group by deptno);
select * from emp
where sal > all (select avg(sal) from group by deptno);
where sal > all (select avg(sal) from group by deptno);
select * from emp where sal >
(select max(a) from
(select avg(sal) from group by deptno));
(select max(a) from
(select avg(sal) from group by deptno));