TISHREEN UNIVERSITY
SECOND YEAR
DATABASE 1
LECTURE 3
SET PAGESIZE 388;
SET LINESIZE 388;
SELECT * FROM EMP;
SELECT * FROM DEPT;
SELECT * FROM EMP,DEPT;
1-EQUI JOIN:
SELECT * FROM EMP,DEPT
WHERE EMP.DEPTNO=DEPT.DEPTNO;
SELECT ENAME,LOC,DEPTNO FROM EMP,DEPT
WHERE EMP.DEPTNO=DEPT.DEPTNO ;
SELECT ENAME,LOC,EMP.DEPTNO FROM EMP,DEPT
WHERE EMP.DEPTNO=DEPT.DEPTNO;
SELECT ENAME,LOC,EMP.DEPTNO FROM EMP,DEPT
WHERE EMP.DEPTNO=DEPT.DEPTNO AND JOB='CLERK';
SELECT ENAME,LOC,E.DEPTNO FROM EMP E,DEPT D
WHERE E.DEPTNO=D.DEPTNO AND JOB='CLERK';
SELECT * FROM SALGRADE;
SELECT ENAME,DNAME,SAL,GRADE,HISAL
FROM EMP E,DEPT D,SALGRADE S
WHERE E.DEPTNO=D.DEPTNO AND E.SAL=S.HISAL;
2-NON EQUI JOIN:
SELECT * FROM SALGRADE;
SELECT ENAME,GRADE,SAL FROM EMP,SALGRADE WHERE
SAL BETWEEN LOSAL AND HISAL;
3-OUTER JOIN:
SELECT ENAME,LOC,DEPT.DEPTNO FROM EMP,DEPT
WHERE EMP.DEPTNO=DEPT.DEPTNO;
SELECT ENAME,LOC,DEPT.DEPTNO FROM EMP,DEPT
WHERE EMP.DEPTNO(+)=DEPT.DEPTNO;
SELECT ENAME,LOC,DEPT.DEPTNO FROM EMP,DEPT
WHERE DEPT.DEPTNO=EMP.DEPTNO(+);
SELECT ENAME,LOC,DEPT.DEPTNO FROM EMP,DEPT
WHERE EMP.DEPTNO=DEPT.DEPTNO(+);
4- SELF JOIN:
SELECT * FROM EMP;
SELECT WORKER.ENAME W_NAME,MANAGER.ENAME M_NAME
FROM EMP WORKER,EMP MANAGER
WHERE WORKER.MGR=MANAGER.EMPNO;
SELECT WORKER.ENAME W_NAME,WORKER.SAL W_SAL,
MANAGER.ENAME M_NAME,MANAGER.SAL M_SAL
FROM EMP WORKER,EMP MANAGER
WHERE WORKER.MGR=MANAGER.EMPNO;
SELECT WORKER.ENAME W_NAME,WORKER.SAL W_SAL,
MANAGER.ENAME M_NAME,MANAGER.SAL M_SAL
FROM EMP WORKER,EMP MANAGER
WHERE WORKER.MGR=MANAGER.EMPNO
AND WORKER.SAL>MANAGER.SAL;
SELECT WORKER.ENAME W_NAME,MANAGER.ENAME M_NAME
FROM EMP WORKER,EMP MANAGER
WHERE WORKER.MGR=MANAGER.EMPNO(+);
SELECT E.ENAME,E.HIREDATE FROM EMP E,EMP D
WHERE D.ENAME='BLAKE' AND E.HIREDATE>D.HIREDATE;
JOINING TABLES USING SQL 1999 SYNTAX:
1-CROSS JOIN:
SELECT * FROM EMP CROSS JOIN DEPT;
SELECT * FROM EMP,DEPT;
2-NATURAL JOINS:
SELECT * FROM EMP NATURAL JOIN DEPT;
SELECT * FROM EMP E,DEPT D WHERE E.DEPTNO=D.DEPTNO;
SELECT * FROM EMP NATURAL JOIN DEPT
WHERE DEPTNO=10;
SELECT * FROM EMP NATURAL JOIN DEPT
WHERE EMP.DEPTNO=10;
SELECT E.ENAME,E.DEPTNO,DNAME FROM EMP E NATURAL JOIN DEPT
WHERE DEPTNO=10;
SELECT E.ENAME,DNAME FROM EMP E NATURAL JOIN DEPT
WHERE DEPTNO=10;
3-JOINS WITH THE USING CLAUSE:
SELECT * FROM EMP JOIN DEPT USING(DEPTNO);
SELECT * FROM EMP JOIN DEPT USING(DEPTNO) WHERE DEPTNO=10;
SELECT * FROM EMP JOIN DEPT USING(EMP.DEPTNO)
WHERE DEPTNO=10;
SELECT * FROM EMP JOIN DEPT USING(DEPTNO)
WHERE EMP.DEPTNO=10;
SELECT E.ENAME,DNAME FROM EMP E JOIN DEPT USING(DEPTNO)
WHERE DEPTNO=10;
4-JOINS WITH THE ON CLAUSE:
SELECT * FROM EMP JOIN DEPT ON (EMP.DEPTNO=DEPT.DEPTNO);
SELECT * FROM EMP JOIN DEPT ON (EMP.DEPTNO=DEPT.DEPTNO)
WHERE DEPT.DEPTNO=10;
SELECT ENAME,GRADE FROM EMP JOIN SALGRADE ON (SAL BETWEEN LOSAL
AND HISAL);
SELECT W.ENAME,M.ENAME FROM EMP W JOIN EMP M ON (W.MGR=M.EMPNO);
SELECT ENAME,DNAME,SAL,GRADE
FROM EMP E
JOIN DEPT D
ON E.DEPTNO=D.DEPTNO
JOIN SALGRADE S
ON E.SAL BETWEEN S.LOSAL AND S.HISAL;
5-LEFT OUTER JOIN:
SELECT ENAME,D.DEPTNO,DNAME FROM
EMP E LEFT OUTER JOIN DEPT D
ON D.DEPTNO=E.DEPTNO;
SELECT ENAME,D.DEPTNO,DNAME FROM EMP E,DEPT D
WHERE E.DEPTNO=D.DEPTNO(+);
6-RIGHT OUTER JOIN:
SELECT ENAME,D.DEPTNO,DNAME FROM
EMP E RIGHT OUTER JOIN DEPT D
ON D.DEPTNO=E.DEPTNO;
SELECT ENAME,D.DEPTNO,DNAME FROM EMP E,DEPT D
WHERE E.DEPTNO(+)=D.DEPTNO;
SELECT ENAME,D.DEPTNO,DNAME FROM
DEPT D RIGHT OUTER JOIN EMP E
ON D.DEPTNO=E.DEPTNO;
7-FULL OUTER JOIN:
SELECT ENAME,D.DEPTNO,DNAME FROM
EMP E FULL OUTER JOIN DEPT D
ON D.DEPTNO=E.DEPTNO;
SELECT E.ENAME,M.ENAME FROM EMP E FULL OUTER JOIN EMP M
ON E.MGR=M.EMPNO;
SELECT E.ENAME ,M.ENAME FROM EMP E,EMP M
WHERE E.MGR=M.EMPNO(+)
UNION
SELECT E.ENAME ,M.ENAME FROM EMP E,EMP M
WHERE E.MGR(+)=M.EMPNO;
(+) TO L-OUTER JOIN:
SELECT WORKER.ENAME W_NAME,MANAGER.ENAME M_NAME
FROM EMP WORKER,EMP MANAGER
WHERE WORKER.MGR=MANAGER.EMPNO(+);
SELECT WORKER.ENAME W_NAME,MANAGER.ENAME M_NAME
FROM EMP WORKER LEFT OUTER JOIN EMP MANAGER
ON WORKER.MGR=MANAGER.EMPNO;
(+) TO R-OUTER JOIN:
SELECT WORKER.ENAME W_NAME,MANAGER.ENAME M_NAME
FROM EMP WORKER,EMP MANAGER
WHERE WORKER.MGR(+)=MANAGER.EMPNO;
SELECT WORKER.ENAME W_NAME,MANAGER.ENAME M_NAME
FROM EMP WORKER RIGHT OUTER JOIN EMP MANAGER
ON WORKER.MGR=MANAGER.EMPNO;
SELF JOIN THREE TABLES:
SELECT WORKER.ENAME W_NAME,MANAGER1.ENAME
M1_NAME,MANAGER2.ENAME M2_ENAME
FROM EMP WORKER,EMP MANAGER1,EMP MANAGER2 WHERE
WORKER.MGR=MANAGER1.EMPNO
AND MANAGER1.MGR=MANAGER2.EMPNO;
(+):
SELECT WORKER.ENAME W_NAME,MANAGER1.ENAME
M1_NAME,MANAGER2.ENAME M2_ENAME
FROM EMP WORKER,EMP MANAGER1,EMP MANAGER2 WHERE
WORKER.MGR=MANAGER1.EMPNO(+)
AND MANAGER1.MGR=MANAGER2.EMPNO(+);
L-R OUTER JOIN:
SELECT WORKER.ENAME W_NAME,MANAGER1.ENAME
M1_NAME,MANAGER2.ENAME M2_ENAME
FROM EMP WORKER
LEFT OUTER JOIN
EMP MANAGER1
ON WORKER.MGR=MANAGER1.EMPNO
LEFT OUTER JOIN
EMP MANAGER2
ON MANAGER1.MGR=MANAGER2.EMPNO;