Joins
CREATE TABLE dept(deptno NUMBER, dname VARCHAR2(20), loc VARCHAR2(20));
CREATE TABLE emp(empno NUMBER, manager NUMBER, deptno NUMBER, ename VARCHAR2(20), sal NUMBER);
CREATE TABLE emp_details(empno NUMBER, manager NUMBER, deptno NUMBER, ename VARCHAR2(20), sal NUMBER, effective_from DATE, effective_to DATE);
INSERT INTO DEPT (DEPTNO,DNAME,LOC) VALUES (10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT (DEPTNO,DNAME,LOC) VALUES (20,'RESEARCH','DALLAS');
INSERT INTO DEPT (DEPTNO,DNAME,LOC) VALUES (30,'SALES','CHICAGO');
INSERT INTO DEPT (DEPTNO,DNAME,LOC) VALUES (40,'OPERATIONS','BOSTON');
INSERT INTO EMP (EMPNO,MANAGER,JOB,DEPTNO,ENAME,SAL) VALUES (7369,7902,'CLERK',20,'SMITH',800);
INSERT INTO EMP (EMPNO,MANAGER,JOB,DEPTNO,ENAME,SAL) VALUES (7499,7698,'SALESMAN',30,'ALLEN',1600);
INSERT INTO EMP (EMPNO,MANAGER,JOB,DEPTNO,ENAME,SAL) VALUES (7521,7698,'SALESMAN',30,'WARD',1250);
INSERT INTO EMP (EMPNO,MANAGER,JOB,DEPTNO,ENAME,SAL) VALUES (7566,7839,'MANAGER',20,'JONES',2975);
INSERT INTO EMP (EMPNO,MANAGER,JOB,DEPTNO,ENAME,SAL) VALUES (7654,7698,'SALESMAN',30,'MARTIN',1250);
INSERT INTO EMP (EMPNO,MANAGER,JOB,DEPTNO,ENAME,SAL) VALUES (7698,7839,'MANAGER',30,'BLAKE',2850);
INSERT INTO EMP (EMPNO,MANAGER,JOB,DEPTNO,ENAME,SAL) VALUES (7782,7839,'MANAGER',10,'CLARK',2450);
INSERT INTO EMP (EMPNO,MANAGER,JOB,DEPTNO,ENAME,SAL) VALUES (7788,7566,'ANALYST',20,'SCOTT',3000);
INSERT INTO EMP (EMPNO,MANAGER,JOB,DEPTNO,ENAME,SAL) VALUES (7839,null,'PRESIDENT',10,'KING',5000);
INSERT INTO EMP (EMPNO,MANAGER,JOB,DEPTNO,ENAME,SAL) VALUES (7844,7698,'SALESMAN',30,'TURNER',1500);
INSERT INTO EMP (EMPNO,MANAGER,JOB,DEPTNO,ENAME,SAL) VALUES (7876,7788,'CLERK',20,'ADAMS',1100);
INSERT INTO EMP (EMPNO,MANAGER,JOB,DEPTNO,ENAME,SAL) VALUES (7900,7698,'CLERK',30,'JAMES',950);
INSERT INTO EMP (EMPNO,MANAGER,JOB,DEPTNO,ENAME,SAL) VALUES (7902,7566,'ANALYST',20,'FORD',3000);
INSERT INTO EMP (EMPNO,MANAGER,JOB,DEPTNO,ENAME,SAL) VALUES (7934,7782,'CLERK',10,'MILLER',1300);
INSERT INTO EMP (EMPNO,MANAGER,JOB,DEPTNO,ENAME,SAL) VALUES (7999,8000,'MANAGER',50,'MILLER',4300);
INSERT INTO EMP (EMPNO,MANAGER,JOB,DEPTNO,ENAME,SAL) VALUES (8000,7782,'MANAGER',60,'MILLER',5300);
COMMIT;
Old/Conventional SQL New/ANSI SQL Visual Representation Result
INNER JOIN
SELECT e.*, d.* SELECT e.*, d.*
FROM emp e, dept d FROM emp e
WHERE e.deptno=d.deptno; INNER JOIN dept d ON e.deptno = d.deptno;
LEFT OUTER
SELECT e.*, d.* SELECT e.*, d.*
FROM emp e, dept d FROM emp e
WHERE e.deptno = d.deptno(+); LEFT OUTER JOIN dept d ON e.deptno = d.deptno;
RIGHT OUTER
SELECT e.*, d.* SELECT e.*, d.*
FROM emp e, dept d FROM emp e
WHERE e.deptno(+) = d.deptno; RIGHT OUTER JOIN dept ON e.deptno = d.deptno;
FULL OUTER
SELECT e.*, d.* SELECT e.*, d.*
FROM emp e, dept d FROM emp e
WHERE e.deptno = d.deptno(+) FULL OUTER JOIN dept d ON e.deptno = d.deptno;
UNION ALL
SELECT e.*, d.*
FROM emp e, dept d
WHERE e.deptno(+) = d.deptno
AND e.deptno IS NULL;