0% found this document useful (0 votes)
48 views19 pages

Lecture 3

This document discusses different types of joins in SQL including equi joins, non-equi joins, outer joins, self joins, and joining tables using SQL 1999 syntax. Examples are provided for each type of join.

Uploaded by

Firas Jolha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
48 views19 pages

Lecture 3

This document discusses different types of joins in SQL including equi joins, non-equi joins, outer joins, self joins, and joining tables using SQL 1999 syntax. Examples are provided for each type of join.

Uploaded by

Firas Jolha
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 19

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;

You might also like