๋ชฉ์ฐจ
1. 23.10.25(์)
1. 20231025_01_scott.sql
SELECT USER
FROM DUAL;
--==>> SCOTT
--โ โ โ HAVING โ โ โ --
/* 1-๋ฌธ์ & ํจ๊ป ํผ ๋ด์ฉ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
--โ EMP ํ
์ด๋ธ์์ ๋ถ์๋ฒํธ๊ฐ 20, 30์ธ ๋ถ์๋ฅผ ๋์์ผ๋ก
-- ๋ถ์์ ์ด ๊ธ์ฌ๊ฐ 10000 ๋ณด๋ค ์ ์ ๊ฒฝ์ฐ๋ง ๋ถ์๋ณ ์ด ๊ธ์ฌ๋ฅผ ์กฐํํ๋ค.
SELECT DEPTNO, SUM(SAL)
FROM EMP
WHERE ๋ถ์๋ฒํธ๊ฐ 20, 30
GROUP BY ๋ถ์๋ฒํธ;
SELECT DEPTNO, SUM(SAL)
FROM EMP
WHERE DEPTNO IN (20, 30)
GROUP BY DEPTNO;
--==>>
/*
30 9400
20 10875
*/
-- ๋ถ์๋ฒํธ 30์ 10000๋ณด๋ค ์ ๊ณ , ๋ถ์๋ฒํธ 20์ 10000๋ณด๋ค ๋ง์์ ์ ์ ์์
SELECT DEPTNO, SUM(SAL)
FROM EMP
WHERE DEPTNO IN (20, 30) -- OR
AND SUM(SAL) < 10000
GROUP BY DEPTNO;
--==>> ์๋ฌ ๋ฐ์
-- (ORA-00934: group function is not allowed here)
-- ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์๊ธฐ ๋๋ฌธ์ [DEPTNO IN (20, 30)] ์ ์ผ๋ฐ์กฐ๊ฑด์ผ๋ก ์ ์ํ ์ ์๋ค
SELECT DEPTNO, SUM(SAL)
FROM EMP
WHERE DEPTNO IN (20, 30) -- OR
GROUP BY DEPTNO
HAVING SUM(SAL) < 10000; -- ๊ทธ๋ฃน์ ๋ํ ์กฐ๊ฑด
--==>> 30 9400
-- SELECT ๋ฌธ์ PARSING ์์๋ฅผ ์ ์ํ๋ฉด์ HAVING ์ฌ์ฉํ๊ธฐ
SELECT DEPTNO, SUM(SAL)
FROM EMP
GROUP BY DEPTNO
HAVING SUM(SAL) < 10000
AND DEPTNO IN (20, 30);
SELECT *
FROM EMP;
-------------------------
SELECT DEPTNO, SUM(SAL)
FROM EMP
WHERE DEPTNO IN (20, 30) -- OR
GROUP BY DEPTNO
HAVING SUM(SAL) < 10000;
SELECT *
FROM EMP
WHERE DEPTNO IN (20, 30);
-- EMP ํ
์ด๋ธ ์ ์ฒด๋ฅผ 1์ฐจ๋ก ๋ฉ๋ชจ๋ฆฌ์ ํผ์ฌ๋ฆผ + ๋ท๋ถ๋ถ ์คํ (VS) WHERE์ ์ด ์์ ๊ฒฝ์ฐ, ํ
์ด๋ธ์์ WHERE ์ ๊น์ง 1์ฐจ๋ก ๋ฉ๋ชจ๋ฆฌ์ ํผ์ฌ๋ฆผ + ๋ท๋ถ๋ถ ์คํ
-- ์ฟผ๋ฆฌ๋ฌธ์ ํจ์จ์ฑ์ด ๊ทน๋ช
ํ๊ฒ ๋ค๋ฆ. ๋ ๋ฒ์งธ์ ๋ฐฉ์์ผ๋ก ์ฟผ๋ฆฌ๋ฌธ์ ๊ตฌ์ฑํ๋ ๊ฒ์ด ๋ฐ๋์งํจ
--------------------------------------------------------------------------------
--โ โ โ ์ค์ฒฉ ๊ทธ๋ฃนํจ์ / ๋ถ์ํจ์ โ โ โ --
--โป ๊ทธ๋ฃนํจ์๋ 2 LEVEL ๊น์ง ์ค์ฒฉํด์ ์ฌ์ฉํ ์ ์๋ค.
-- ํจ์๋ ์ผ๋ฐ์ ์ผ๋ก ์ค์ฒฉ์ ๋ํ ์ ํ์ด ์๋๋ฐ, ๊ทธ๋ฃนํจ์๋ ๋
ผ๋ฆฌ์ ์ธ ํน์ฑ์ ์ ํ๋์ด์์(์ด๊ฒ๋ ์ค๋ผํด๋ง ์ค์ฒฉ๋๊ณ , ๋๋จธ์ง๋ ์ค์ฒฉ๋ ์๋จ)
SELECT SUM(SAL)
FROM EMP
GROUP BY DEPTNO;
--==>>
/*
9400
10875
8750
*/
SELECT MAX(SUM(SAL)) "COL1"
FROM EMP
GROUP BY DEPTNO;
--==>> 10875
-- RANK() / DENSE_RANK()
--> ์ค๋ผํด 9i๋ถํฐ ์ ์ฉ๋์๋ ํจ์ (MSSQL์ ์๋ง๋ 2005๋ถํฐ ์ ์ฉ...)
--> ํ์ ๋ฒ์ ์์๋ RANK() ๋ DENSE_RANK() ๋ฅผ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์
-- ์ด ํจ์๋ฅผ ํ์ฉํ์ง ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฐพ์์ผ ํ๋ค.
-- ์๋ฅผ ๋ค์ด... ๊ธ์ฌ ์์๋ฅผ ๊ตฌํ๊ณ ์ ํ๋ค๋ฉด...
-- ํด๋น ์ฌ์์ ๊ธ์ฌ๋ณด๋ค ๋ ํฐ ๊ฐ์ด ๋ช ๊ฐ์ธ์ง ํ์ธํ ํ
-- ํ์ธํ ์ซ์์ ใ+1ใ์ ์ถ๊ฐ๋ก ์ฐ์ฐํด ์ฃผ๋ฉด...
-- ๊ทธ ๊ฐ์ด ๊ณง ํด๋น ์ฌ์์ ๋ฑ์๊ฐ ๋๋ค.
SELECT ENAME, SAL
FROM EMP;
--==>>
/*
SMITH 800
ALLEN 1600
WARD 1250
JONES 2975
MARTIN 1250
BLAKE 2850
CLARK 2450
SCOTT 3000
KING 5000
TURNER 1500
ADAMS 1100
JAMES 950
FORD 3000
MILLER 1300
*/
SELECT COUNT(*) + 1
FROM EMP
WHERE SAL > 800; -- SMITH ์ ๊ธ์ฌ
--==>> 14 -- SMITH ์ ๋ฑ์
SELECT COUNT(*) + 1
FROM EMP
WHERE SAL > 1600; -- ALLEN ์ ๊ธ์ฌ
--==>> 7 -- ALLEN ์ ๋ฑ์
--โป ์๋ธ ์๊ด ์ฟผ๋ฆฌ(=์๊ด ์๋ธ ์ฟผ๋ฆฌ)
-- ํ๋กฌ์ ์ ๋ด๋ถ์ฟผ๋ฆฌ๊ฐ ๋ค์ด์๋๊ฒ = ์๋ธ์ฟผ๋ฆฌ
-- ๋ฉ์ธ ์ฟผ๋ฆฌ๊ฐ ์๋ ํ
์ด๋ธ์ ์ปฌ๋ผ์ด
-- ์๋ธ ์ฟผ๋ฆฌ์ ์กฐ๊ฑด์ (WHERE์ , HAVING์ )์ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ
-- ์ฐ๋ฆฌ๋ ์ด ์ฟผ๋ฆฌ๋ฌธ์ ์๋ธ ์๊ด ์ฟผ๋ฆฌ(์๊ด ์๋ธ ์ฟผ๋ฆฌ)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
SELECT ENAME "์ฌ์๋ช
", SAL "๊ธ์ฌ", 1 "๊ธ์ฌ๋ฑ์"
FROM EMP;
SELECT ENAME "์ฌ์๋ช
", SAL "๊ธ์ฌ", (1) "๊ธ์ฌ๋ฑ์"
FROM EMP;
SELECT ENAME "์ฌ์๋ช
", SAL "๊ธ์ฌ", (SELECT COUNT(*) + 1
FROM EMP
WHERE SAL > 1600;) "๊ธ์ฌ๋ฑ์"
FROM EMP;
SELECT E.ENAME "์ฌ์๋ช
", E.SAL "๊ธ์ฌ", (SELECT COUNT(*) + 1
FROM EMP
WHERE SAL > E.SAL) "๊ธ์ฌ๋ฑ์"
FROM EMP E
ORDER BY 3;
--==>>
/*
KING 5000 1
FORD 3000 2
SCOTT 3000 2
JONES 2975 4
BLAKE 2850 5
CLARK 2450 6
ALLEN 1600 7
TURNER 1500 8
MILLER 1300 9
WARD 1250 10
MARTIN 1250 10
ADAMS 1100 12
JAMES 950 13
SMITH 800 14
*/
/* 2-๋ฌธ์ & ํจ๊ป ํผ ๋ด์ฉ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
--โ EMP ํ
์ด๋ธ์ ๋์์ผ๋ก
-- ์ฌ์๋ช
, ๊ธ์ฌ, ๋ถ์๋ฒํธ, ๋ถ์๋ด๊ธ์ฌ๋ฑ์, ์ ์ฒด๊ธ์ฌ๋ฑ์ ํญ๋ชฉ์ ์กฐํํ๋ค.
-- ๋จ, RANK() ํจ์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ , ์๋ธ์๊ด์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค.
SELECT COUNT(*) + 1
FROM EMP
WHERE SAL> 800; --SMITH ์ ๊ธ์ฌ
--==>> 14 --SMITH ์ ๊ธ์ฌ ๋ฑ์(-> ์ ์ฒด๊ธ์ฌ๋ฑ์)
SELECT COUNT(*) + 1
FROM EMP
WHERE SAL > 800 --SMITH ์ ๊ธ์ฌ
AND DEPTNO = 20; --SMITH ์ ๋ถ์๋ฒํธ
--==>> 5 --SMITH ์ ๊ธ์ฌ ๋ฑ์(-> ๋ถ์๋ด๊ธ์ฌ๋ฑ์)
SELECT ENAME "์ฌ์๋ช
", SAL "๊ธ์ฌ", DEPTNO "๋ถ์๋ฒํธ", (1) "๋ถ์๋ด๊ธ์ฌ๋ฑ์", (1) "์ ์ฒด๊ธ์ฌ๋ฑ์"
FROM EMP;
SELECT ENAME "์ฌ์๋ช
", SAL "๊ธ์ฌ", DEPTNO "๋ถ์๋ฒํธ"
, (SELECT COUNT(*) + 1
FROM EMP
WHERE SAL > 800
AND DEPTNO = 20;) "๋ถ์๋ด๊ธ์ฌ๋ฑ์"
, (SELECT COUNT(*) + 1
FROM EMP
WHERE SAL> 800;) "์ ์ฒด๊ธ์ฌ๋ฑ์"
FROM EMP;
--> SMITH ์จ์ ๊ดํ ์ฟผ๋ฆฌ๊ตฌ๋ฌธ
SELECT ENAME "์ฌ์๋ช
", SAL "๊ธ์ฌ", DEPTNO "๋ถ์๋ฒํธ", (1) "๋ถ์๋ด๊ธ์ฌ๋ฑ์", (1) "์ ์ฒด๊ธ์ฌ๋ฑ์"
FROM EMP;
SELECT ENAME "์ฌ์๋ช
", SAL "๊ธ์ฌ", DEPTNO "๋ถ์๋ฒํธ"
, (SELECT COUNT(*) + 1
FROM EMP
WHERE SAL > E.SAL
AND DEPTNO = E.DEPTNO) "๋ถ์๋ด๊ธ์ฌ๋ฑ์"
, (SELECT COUNT(*) + 1
FROM EMP
WHERE SAL> E.SAL) "์ ์ฒด๊ธ์ฌ๋ฑ์"
FROM EMP E
ORDER BY 3, 5;
--==>>
/*
KING 5000 10 1 1
CLARK 2450 10 2 6
MILLER 1300 10 3 9
SCOTT 3000 20 1 2
FORD 3000 20 1 2
JONES 2975 20 3 4
ADAMS 1100 20 4 12
SMITH 800 20 5 14
BLAKE 2850 30 1 5
ALLEN 1600 30 2 7
TURNER 1500 30 3 8
MARTIN 1250 30 4 10
WARD 1250 30 4 10
JAMES 950 30 6 13
*/
--โ EMP ํ
์ด๋ธ์ ๋์์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ์กฐํ๋ ์ ์๋๋ก ์ฟผ๋ฆฌ๋ฌธ์ ๊ตฌ์ฑํ๋ค.
/*
- ๊ฐ ๋ถ์ ๋ด์์ ์
์ฌ์ผ์๋ณ๋ก ๋์ ๋ ๊ธ์ฌ์ ํฉ
-----------------------------------------------------------------------
์ฌ์๋ช
๋ถ์๋ฒํธ ์
์ฌ์ผ ๊ธ์ฌ ๋ถ์๋ด์
์ฌ๋ณ๊ธ์ฌ๋์
-----------------------------------------------------------------------
SMITH 20 1980-12-17 800 800
JONES 20 1981-04-20 2975 3775
FORD 20 1981-12-03 3000 6775
-----------------------------------------------------------------------
*/
SELECT EMP.ENAME "์ฌ์๋ช
", EMP.DEPTNO "๋ถ์๋ฒํธ", EMP.HIREDATE "์
์ฌ์ผ", EMP.SAL "๊ธ์ฌ"
, (1) "๋ถ์๋ด์
์ฌ๋ณ๊ธ์ฌ๋์ "
FROM EMP
ORDER BY 2, 3;
SELECT E1.ENAME "์ฌ์๋ช
", E1.DEPTNO "๋ถ์๋ฒํธ", E1.HIREDATE "์
์ฌ์ผ", E1.SAL "๊ธ์ฌ"
, (1) "๋ถ์๋ด์
์ฌ๋ณ๊ธ์ฌ๋์ "
FROM EMP E1
ORDER BY 2, 3;
SELECT E1.ENAME "์ฌ์๋ช
", E1.DEPTNO "๋ถ์๋ฒํธ", E1.HIREDATE "์
์ฌ์ผ", E1.SAL "๊ธ์ฌ"
, (SELECT SUM(E2.SAL) FROM EMP E2 WHERE E2.DEPTNO = E1.DEPTNO) "๋ถ์๋ด์
์ฌ๋ณ๊ธ์ฌ๋์ "
FROM EMP E1
ORDER BY 2, 3;
SELECT E1.ENAME "์ฌ์๋ช
", E1.DEPTNO "๋ถ์๋ฒํธ", E1.HIREDATE "์
์ฌ์ผ", E1.SAL "๊ธ์ฌ"
, (SELECT SUM(E2.SAL)
FROM EMP E2
WHERE E2.DEPTNO = E1.DEPTNO
AND E2.HIREDATE<=E1.HIREDATE) "๋ถ์๋ด์
์ฌ๋ณ๊ธ์ฌ๋์ "
FROM EMP E1
ORDER BY 2, 3;
--==>>
/*
CLARK 10 1981-06-09 2450 2450
KING 10 1981-11-17 5000 7450
MILLER 10 1982-01-23 1300 8750
SMITH 20 1980-12-17 800 800
JONES 20 1981-04-02 2975 3775
FORD 20 1981-12-03 3000 6775
SCOTT 20 1987-07-13 3000 10875
ADAMS 20 1987-07-13 1100 10875
ALLEN 30 1981-02-20 1600 1600
WARD 30 1981-02-22 1250 2850
BLAKE 30 1981-05-01 2850 5700
TURNER 30 1981-09-08 1500 7200
MARTIN 30 1981-09-28 1250 8450
JAMES 30 1981-12-03 950 9400
*/
SELECT E.ENAME "์ฌ์๋ช
", E.DEPTNO "๋ถ์๋ฒํธ", E.HIREDATE "์
์ฌ์ผ", E.SAL "๊ธ์ฌ"
, (SELECT SUM(SAL) FROM EMP WHERE (DEPTNO=E.DEPTNO) AND (HIREDATE<=E.HIREDATE)) "๋ถ์๋ด์
์ฌ๋ณ๊ธ์ฌ๋์ "
FROM EMP E
ORDER BY 2,3;
/* 3-๋ฌธ์ & ํจ๊ป ํผ ๋ด์ฉ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
--โ EMP ํ
์ด๋ธ์ ๋์์ผ๋ก
-- ์
์ฌํ ์ฌ์์ ์๊ฐ ๊ฐ์ฅ ๋ง์์ ๋์
-- ์
์ฌ๋
์๊ณผ ์ธ์์๋ฅผ ์กฐํํ ์ ์๋๋ก ์ฟผ๋ฆฌ๋ฌธ์ ๊ตฌ์ฑํ๋ค.
/*
----------- ---------
์
์ฌ๋
์ ์ธ์์
----------- ---------
1981-02 2
1981-09 2
1981-12 2
1987-07 2
----------- ---------
*/
SELECT ENAME , HIREDATE
FROM EMP
ORDER BY 2;
SELECT TO_CHAR(HIREDATE, 'YYYY-MM') "์
์ฌ๋
์"
, COUNT(*) "์ธ์์"
FROM EMP
GROUP BY TO_CHAR(HIREDATE, 'YYYY-MM');
/*
1981-05 1
1981-12 2
1982-01 1
1981-09 2
1981-02 2
1981-11 1
1980-12 1
1981-04 1
1987-07 2
1981-06 1
*/
-- ๋ฐฉ๋ฒ1)
SELECT TO_CHAR(HIREDATE, 'YYYY-MM') "์
์ฌ๋
์"
, COUNT(*) "์ธ์์"
FROM EMP
WHERE COUNT(*) = 2
GROUP BY TO_CHAR(HIREDATE, 'YYYY-MM');
--==>> ์๋ฌ ๋ฐ์(ORA-00934: group function is not allowed here)
-- WHERE ์ ์ COUNT ๋ถ๊ฐ๋ฅ ํด์ ์๋ฌ ๋ฐ์ํ๋ค.
SELECT TO_CHAR(HIREDATE, 'YYYY-MM') "์
์ฌ๋
์"
, COUNT(*) "์ธ์์"
FROM EMP
GROUP BY TO_CHAR(HIREDATE, 'YYYY-MM')
HAVING COUNT(*) = 2;
--==>>
/*
1981-12 2
1981-09 2
1981-02 2
1987-07 2
*/
FROM EMP
GROUP BY TO_CHAR(HIREDATE, 'YYYY-MM')
HAVING COUNT(*) = (์
์ฌ๋
์ ๊ธฐ์ค ์ต๋ ์ธ์);
-- ๊ธฐ์กด์๋ 2์๋ ๊ฐ์ ์ฐ๋ฆฌ๊ฐ ์ง์ ๋ฃ์ด์ฃผ๋ ๊ฒ์ด ์๋๋ผ
-- ์ค๋ผํด์์ ์์์ ์ฐพ๊ฒ๋ ๊ตฌ์ฑํด์ผ ํ๋ค.
-- ์
์ฌ๋
์ ๊ธฐ์ค ์ต๋ ์ธ์
SELECT COUNT(*)
FROM EMP
GROUP BY TO_CHAR(HIREDATE, 'YYYY-MM');
/*
1
2
1
2
2
1
1
1
2
1
*/
-- ์
์ฌ๋
์ ๊ธฐ์ค ์ต๋ ์ธ์์
SELECT MAX(COUNT(*))
FROM EMP
GROUP BY TO_CHAR(HIREDATE, 'YYYY-MM');
FROM EMP
GROUP BY TO_CHAR(HIREDATE, 'YYYY-MM')
HAVING COUNT(*) = (SELECT MAX(COUNT(*))
FROM EMP
GROUP BY TO_CHAR(HIREDATE, 'YYYY-MM'));
--(์
์ฌ๋
์ ๊ธฐ์ค ์ต๋ ์ธ์) ์ ํ๊ณ ๋ฐ๊ฟ์ค๋ค.(๋ธ๊น!)
-- ๋ฐฉ๋ฒ2)
SELECT TO_CHAR(HIREDATE,'YYYY-MM') "์
์ฌ๋
์"
, COUNT(*) "์ธ์์"
FROM EMP
GROUP BY TO_CHAR(HIREDATE, 'YYYY-MM');
SELECT T1.์
์ฌ๋
์, T1.์ธ์์
FROM
(
SELECT TO_CHAR(HIREDATE,'YYYY-MM') "์
์ฌ๋
์"
, COUNT(*) "์ธ์์"
FROM EMP
GROUP BY TO_CHAR(HIREDATE, 'YYYY-MM')
) T1
WHERE T1.์ธ์์ = (2);
--(2) ์๋ฆฌ๋ฅผ ๋ฐ๊ฟ ์ ์๋๋ก ์ฝ๋ ์ง๊ธฐ
SELECT T1.์
์ฌ๋
์, T1.์ธ์์
FROM
(
SELECT TO_CHAR(HIREDATE,'YYYY-MM') "์
์ฌ๋
์"
, COUNT(*) "์ธ์์"
FROM EMP
GROUP BY TO_CHAR(HIREDATE, 'YYYY-MM')
) T1
WHERE T1.์ธ์์ = (SELECT MAX(T2.์ธ์์)
FROM
(
SELECT TO_CHAR(HIREDATE, 'YYYY-MM') "์
์ฌ๋
์"
,COUNT(*) "์ธ์์"
FROM EMP
GROUP BY TO_CHAR(HIREDATE, 'YYYY-MM')
)T2
)
ORDER BY 1;
/*
1981-02 2
1981-09 2
1981-12 2
1987-07 2
*/
--๋ฐฉ๋ฒ3)
SELECT T1.์
์ฌ๋
์, T1.์ธ์์
FROM
(
SELECT TO_CHAR(HIREDATE,'YYYY-MM') "์
์ฌ๋
์"
, COUNT(*) "์ธ์์"
FROM EMP
GROUP BY TO_CHAR(HIREDATE, 'YYYY-MM')
) T1
WHERE T1.์ธ์์ = (SELECT MAX(COUNT(*))
FROM EMP
GROUP BY TO_CHAR(HIREDATE, 'YYYY-MM')
)
ORDER BY 1;
--------------------------------------------------------------------------------
--โ โ โ ROW_NUMBER โ โ โ --
SELECT ENAME "์ฌ์๋ช
", SAL "๊ธ์ฌ", HIREDATE "์
์ฌ์ผ"
FROM EMP;
/*
SMITH 800 1980-12-17
ALLEN 1600 1981-02-20
WARD 1250 1981-02-22
JONES 2975 1981-04-02
MARTIN 1250 1981-09-28
BLAKE 2850 1981-05-01
CLARK 2450 1981-06-09
SCOTT 3000 1987-07-13
KING 5000 1981-11-17
TURNER 1500 1981-09-08
ADAMS 1100 1987-07-13
JAMES 950 1981-12-03
FORD 3000 1981-12-03
MILLER 1300 1982-01-23
*/
SELECT ROW_NUMBER() OVER(ORDER BY SAL DESC) "๊ด์ฐฐ"
, ENAME "์ฌ์๋ช
", SAL "๊ธ์ฌ", HIREDATE "์
์ฌ์ผ"
FROM EMP;
/*
1 KING 5000 1981-11-17
2 FORD 3000 1981-12-03
3 SCOTT 3000 1987-07-13
4 JONES 2975 1981-04-02
5 BLAKE 2850 1981-05-01
6 CLARK 2450 1981-06-09
7 ALLEN 1600 1981-02-20
8 TURNER 1500 1981-09-08
9 MILLER 1300 1982-01-23
10 WARD 1250 1981-02-22
11 MARTIN 1250 1981-09-28
12 ADAMS 1100 1987-07-13
13 JAMES 950 1981-12-03
14 SMITH 800 1980-12-17
*/
SELECT ROW_NUMBER() OVER(ORDER BY SAL DESC) "๊ด์ฐฐ"
, ENAME "์ฌ์๋ช
", SAL "๊ธ์ฌ", HIREDATE "์
์ฌ์ผ"
FROM EMP
ORDER BY ENAME;
/*
12 ADAMS 1100 1987-07-13
7 ALLEN 1600 1981-02-20
5 BLAKE 2850 1981-05-01
6 CLARK 2450 1981-06-09
2 FORD 3000 1981-12-03
13 JAMES 950 1981-12-03
4 JONES 2975 1981-04-02
1 KING 5000 1981-11-17
11 MARTIN 1250 1981-09-28
9 MILLER 1300 1982-01-23
3 SCOTT 3000 1987-07-13
14 SMITH 800 1980-12-17
8 TURNER 1500 1981-09-08
10 WARD 1250 1981-02-22
*/
-- '๊ด์ฐฐ'์ด๋ผ๊ณ ๋ถ์ฌ๋ ๋ฒํธ๋ ์ ๋ ฌ์ ๋ฐ๊ฟ๋ ๊ณ ์ ์ ๋ฒํธ์ฒ๋ผ ๋ถ์ด์์์ ํ์ธํ๋ค.
SELECT ROW_NUMBER() OVER(ORDER BY ENAME) "๊ด์ฐฐ"
, ENAME "์ฌ์๋ช
", SAL "๊ธ์ฌ", HIREDATE "์
์ฌ์ผ"
FROM EMP
ORDER BY ENAME;
/*
1 ADAMS 1100 1987-07-13
2 ALLEN 1600 1981-02-20
3 BLAKE 2850 1981-05-01
4 CLARK 2450 1981-06-09
5 FORD 3000 1981-12-03
6 JAMES 950 1981-12-03
7 JONES 2975 1981-04-02
8 KING 5000 1981-11-17
9 MARTIN 1250 1981-09-28
10 MILLER 1300 1982-01-23
11 SCOTT 3000 1987-07-13
12 SMITH 800 1980-12-17
13 TURNER 1500 1981-09-08
14 WARD 1250 1981-02-22
*/
-- ์ ๋ ฌํ ENAME์ ๊ธฐ์ค์ผ๋ก ๊ด์ฐฐ๋ฒํธ ๋ถ์ฌํ๋ค.(์์ ์ฝ๋์ ๋ค๋ฅธ ๋ถ๋ถ: SELECT์ ORDER BY)
--โป ๊ฒ์ํ์ ๊ฒ์๋ฌผ ๋ฒํธ๋ฅผ SEQUENCE๋ IDENTITY๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด
-- ๊ฒ์๋ฌผ์ ์ญ์ ํ์ ๊ฒฝ์ฐ... ์ญ์ ํ ๊ฒ์๋ฌผ์ผ๋ฆฌ ์๋ฆฌ์ ๋ค์ ๋ฒํธ๋ฅผ ๊ฐ์ง
-- ๊ฒ์๋ฌผ์ด ๋ฑ๋ก๋๋ ์ํฉ์ด ๋ฐ์ํ๊ฒ ๋๋ค.
-- ์ด๋... ๋ณด์์ฑ ์ธก๋ฉด์ด๋... ๋ฏธ๊ด์ ... ๋ฐ๋์งํ์ง ์์ ์ํ์ผ ์ ์๊ธฐ ๋๋ฌธ์
-- ROW_NUMBER()์ ์ฌ์ฉ์ ๊ณ ๋ คํด ๋ณผ ์ ์๋ค.
-- ๊ด๋ฆฌ์ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ ๋์๋ SEQUENCE ๋ IDENTITY ๋ฅผ ์ฌ์ฉํ์ง๋ง,
-- ๋จ์ํ ๊ฒ์๋ฌผ์ ๋ชฉ๋กํํ์ฌ ์ฌ์ฉ์์๊ฒ ๋ฆฌ์คํธ ํ์์ผ๋ก ๋ณด์ฌ์ค ๋์๋
-- ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ๋ฐ๋์งํ ์ ์๋ค.
-- ๋ฐฉ๋ฒ1) ์ค๊ฐ์ ๋ฒํธ๊ฐ ์๋๊ฒ์ ์ฌ์ฉ์๊ฐ ์๊ฒ ๋๋ค๋ฉด(๊ฒ์๋ฌผ์ ์ญ์ ํ๊ธฐ ๋๋ฌธ์)
-- ์ฌ์ฉ์์ ์
์ฅ์์๋ ํํฐ๋ง์ ๋ง์ดํ๋ ๊ฒ์ํ์ด๋ผ๊ณ ์๊ฐ์ด ๋ค์ด ์ ๋ขฐ์ฑ์ด ๋จ์ด์ง๋ค.
-- ๋ฐฉ๋ฒ2) ๊ธฐ๋๋ ฅ์ ์์ธ์ฐ๊ธฐ ์ํด์ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ง๋ ๊ฒ์๋ฌผ ๋ฒํธ๊ฐ ์ค์ DB๋ฒํธ๋ก ์ฐ๋ํ๊ธฐ๋ ํ๋ค.
-- โ SEQUENCE(์ํ์ค: ์ฃผ๋ฌธ๋ฒํธ)
-- -> ์ฌ์ ์ ์ธ ์๋ฏธ: 1. (์ผ๋ จ์) ์ฐ์์ ์ธ ์ฌ๊ฑด๋ค 2. (์ฌ๊ฑด, ํ๋ ๋ฑ์) ์์
-- โ ์ํ์ค ์์ฑ
CREATE SEQUENCE SEQ_BOARD -- ๊ธฐ๋ณธ์ ์ธ ์ํ์ค ์์ฑ ๊ตฌ๋ฌธ
START WITH 1 -- ์์๊ฐ ์ค์
INCREMENT BY 1 -- ์ฆ๊ฐ๊ฐ ์ค์
NOMAXVALUE -- ์ต๋๊ฐ ์ค์ ์ต์
NOCACHE; -- ์บ์ ์ฌ์ฉ ์ํจ ์ค์ ์ต์
--==>> Sequence SEQ_BOARD์ด(๊ฐ) ์์ฑ๋์์ต๋๋ค.
-- ์บ์๋, ์
์ฅํ๊ธฐ ์ํด ๋ง์ ์ธ์์ด ํ๊บผ๋ฒ์ ๋ค์ด๊ฐ๋ ค๊ณ ํ๋ฉด ๋ค์ด๊ฐ ์ ์์ ๋
-- ์
์ฅ๊ถ์ ๋ฝ์์ ์
์ฅ์ผ๋ก ํ์ ๊ฒฝ์ฐ ๋ค์ด๊ฐ ์๋ ์์ง๋ง ๋๊ธฐ์๊ฐ์ด ์์ ์ ์๋๋ฐ
-- ํ๊บผ๋ฒ์ ์ฌ๋ฌ์ฅ์ ๋ฝ์์ ๋๋์ด์ฃผ๋ ๊ฒ๊ณผ ๊ฐ๋ค.
--โ ์ค์ต ํ
์ด๋ธ ์์ฑ(ํ
์ด๋ธ๋ช
: TBL_BOARD)
CREATE TABLE TBL_BOARD -- TBL_BOARD ํ
์ด๋ธ ์์ฑ ๊ตฌ๋ฌธ -> ๊ฒ์ํ ํ
์ด๋ธ
( NO NUMBER -- ๊ฒ์๋ฌผ ๋ฒํธ -> X ์ฌ์ฉ์ ์์ฑ
, TITLE VARCHAR2(50) -- ๊ฒ์๋ฌผ ์ ๋ชฉ -> O
, CONTENTS VARCHAR2(100) -- ๊ฒ์๋ฌผ ๋ด์ฉ -> O
, NAME VARCHAR2(20) -- ๊ฒ์๋ฌผ ์์ฑ์ -> โณ
, PW VARCHAR2(20) -- ๊ฒ์๋ฌผ ํจ์ค์๋ -> โณ
, CREATED DATE DEFAULT SYSDATE -- ๊ฒ์๋ฌผ ์์ฑ์ผ -> X
);
--==>> Table TL_BOARD์ด(๊ฐ) ์์ฑ๋์์ต๋๋ค.
--โ ๋ฐ์ดํฐ ์
๋ ฅ -> ๊ฒ์ํ์ ๊ฒ์๋ฌผ ์์ฑ
-- SEQ_BOARD.NEXTVAL: SEQ_BOARD์์ ์ํ์ค์ ๋ฒํธํ๋ถ์ฌํ๋ค.
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '์~~~ ํ๋ค๋ค', '10๋ถ๋ง ์ฌ์๋ค ์ฌ๊ป์', '๋ฌธ์ ํ', 'java006$', DEFAULT);
--==>> 1 ํ ์ด(๊ฐ) ์ฝ์
๋์์ต๋๋ค.
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '์~ ์กธ๋ฆฌ๋ค', '10๋ถ๋ง ์๊ณ ์ฌ๊ป์', '์ ํ์ธ', 'java006$', DEFAULT);
--==>> 1 ํ ์ด(๊ฐ) ์ฝ์
๋์์ต๋๋ค.
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '์~ ์๊ฒจ', 'ํ๋ฃจํ๋ฃจ๊ฐ ์ฌ๋ฏธ์์ด์', '๋
ธ์ํ', 'java006$', DEFAULT);
--==>> 1 ํ ์ด(๊ฐ) ์ฝ์
๋์์ต๋๋ค.
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '๋ณด๊ณ ์ถ๋ค', '๋ฒ๊ตฌ๊ฐ ๋๋ฌด๋๋ฌด ๋ณด๊ณ ์ถ์ด์', '๊น์ํ', 'java006$', DEFAULT);
--==>> 1 ํ ์ด(๊ฐ) ์ฝ์
๋์์ต๋๋ค.
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '๋ฐฐ๊ณ ํ์', '์ ์ฌ์ ๋จน์๋๋ฐ ๋ฐฐ๊ณ ํ์', '๊น๋ฏผ์ง', 'java006$', DEFAULT);
--==>> 1 ํ ์ด(๊ฐ) ์ฝ์
๋์์ต๋๋ค.
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '์์ง ๋จ์์๋ค์', '๋ ์๊ฐ ๋ฐ์ด๋ ๋จ์์๋ค์', '์ด์ค์', 'java006$', DEFAULT);
--==>> 1 ํ ์ด(๊ฐ) ์ฝ์
๋์์ต๋๋ค.
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '๊ทธ๋งํ๊ณ ์ถ๋ค', '๊ทธ๋ฅ ๋์ด๊ฐ๊น....', '๊นํธ์ง', 'java006$', DEFAULT);
--==>> 1 ํ ์ด(๊ฐ) ์ฝ์
๋์์ต๋๋ค.
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '์~ ๋ฐฐ์ํ', 'ใ
ใ
ใ
ใ
ใ
', '๋
ธ์ํ', 'java006$', DEFAULT);
--==>> 1 ํ ์ด(๊ฐ) ์ฝ์
๋์์ต๋๋ค.
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '์๊ทผ์๊ทผ', '๊ถ์๋ ๊ถ์๋ ', '์ด์ค์', 'java006$', DEFAULT);
--==>> 1 ํ ์ด(๊ฐ) ์ฝ์
๋์์ต๋๋ค.
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '๋ชจ์๋ผ์', '์์ง ์ ์ด ๋ชจ์๋ผ์', '๊น๋๋ฏผ', 'java006$', DEFAULT);
--==>> 1 ํ ์ด(๊ฐ) ์ฝ์
๋์์ต๋๋ค.
--โ ์ธ์
์ค์ ๋ณ๊ฒฝ
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
--โ ํ์ธ
SELECT *
FROM TBL_BOARD;
/*
1 ์~~~ ํ๋ค๋ค 10๋ถ๋ง ์ฌ์๋ค ์ฌ๊ป์ ๋ฌธ์ ํ java006$ 2023-10-25 15:26:04
2 ์~ ์กธ๋ฆฌ๋ค 10๋ถ๋ง ์๊ณ ์ฌ๊ป์ ์ ํ์ธ java006$ 2023-10-25 15:28:11
3 ์~ ์๊ฒจ ํ๋ฃจํ๋ฃจ๊ฐ ์ฌ๋ฏธ์์ด์ ๋
ธ์ํ java006$ 2023-10-25 15:31:02
4 ๋ณด๊ณ ์ถ๋ค ๋ฒ๊ตฌ๊ฐ ๋๋ฌด๋๋ฌด ๋ณด๊ณ ์ถ์ด์ ๊น์ํ java006$ 2023-10-25 15:32:03
5 ๋ฐฐ๊ณ ํ์ ์ ์ฌ์ ๋จน์๋๋ฐ ๋ฐฐ๊ณ ํ์ ๊น๋ฏผ์ง java006$ 2023-10-25 15:34:01
6 ์์ง ๋จ์์๋ค์ ๋ ์๊ฐ ๋ฐ์ด๋ ๋จ์์๋ค์ ์ด์ค์ java006$ 2023-10-25 15:35:23
7 ๊ทธ๋งํ๊ณ ์ถ๋ค ๊ทธ๋ฅ ๋์ด๊ฐ๊น.... ๊นํธ์ง java006$ 2023-10-25 15:38:26
8 ์~ ๋ฐฐ์ํ ใ
ใ
ใ
ใ
ใ
๋
ธ์ํ java006$ 2023-10-25 15:39:24
9 ์๊ทผ์๊ทผ ๊ถ์๋ ๊ถ์๋ ์ด์ค์ java006$ 2023-10-25 15:40:25
10 ๋ชจ์๋ผ์ ์์ง ์ ์ด ๋ชจ์๋ผ์ ๊น๋๋ฏผ java006$ 2023-10-25 15:41:17
*/
--โ ์ปค๋ฐ
COMMIT;
--==>> ์ปค๋ฐ์๋ฃ
--โ ๊ฒ์๋ฌผ ์ญ์
SELECT *
FROM TBL_BOARD
WHERE NO=1;
DELETE
FROM TBL_BOARD
WHERE NO=1;
--==>> 1 ํ ์ด(๊ฐ) ์ญ์ ๋์์ต๋๋ค.
SELECT *
FROM TBL_BOARD
WHERE NO=6;
--==>> 6 ์์ง ๋จ์์๋ค์ ๋ ์๊ฐ ๋ฐ์ด๋ ๋จ์์๋ค์ ์ด์ค์ java006$ 2023-10-25 15:35:23
DELETE
FROM TBL_BOARD
WHERE NO=6;
--==>> 1 ํ ์ด(๊ฐ) ์ญ์ ๋์์ต๋๋ค.
SELECT *
FROM TBL_BOARD
WHERE NO=8;
--==>> 8 ์~ ๋ฐฐ์ํ ใ
ใ
ใ
ใ
ใ
๋
ธ์ํ java006$ 2023-10-25 15:39:24
DELETE
FROM TBL_BOARD
WHERE NO=8;
--==>> 1 ํ ์ด(๊ฐ) ์ญ์ ๋์์ต๋๋ค.
SELECT *
FROM TBL_BOARD
WHERE NO=10;
--==>> 10 ๋ชจ์๋ผ์ ์์ง ์ ์ด ๋ชจ์๋ผ์ ๊น๋๋ฏผ java006$ 2023-10-25 15:41:17
DELETE
FROM TBL_BOARD
WHERE NO=10;
--==>> 1 ํ ์ด(๊ฐ) ์ญ์ ๋์์ต๋๋ค.
--โ ํ์ธ
SELECT *
FROM TBL_BOARD;
/*
2 ์~ ์กธ๋ฆฌ๋ค 10๋ถ๋ง ์๊ณ ์ฌ๊ป์ ์ ํ์ธ java006$ 2023-10-25 15:28:11
3 ์~ ์๊ฒจ ํ๋ฃจํ๋ฃจ๊ฐ ์ฌ๋ฏธ์์ด์ ๋
ธ์ํ java006$ 2023-10-25 15:31:02
4 ๋ณด๊ณ ์ถ๋ค ๋ฒ๊ตฌ๊ฐ ๋๋ฌด๋๋ฌด ๋ณด๊ณ ์ถ์ด์ ๊น์ํ java006$ 2023-10-25 15:32:03
5 ๋ฐฐ๊ณ ํ์ ์ ์ฌ์ ๋จน์๋๋ฐ ๋ฐฐ๊ณ ํ์ ๊น๋ฏผ์ง java006$ 2023-10-25 15:34:01
7 ๊ทธ๋งํ๊ณ ์ถ๋ค ๊ทธ๋ฅ ๋์ด๊ฐ๊น.... ๊นํธ์ง java006$ 2023-10-25 15:38:26
9 ์๊ทผ์๊ทผ ๊ถ์๋ ๊ถ์๋ ์ด์ค์ java006$ 2023-10-25 15:40:25
*/
--โ ๊ฒ์๋ฌผ ์์ฑ
INSERT INTO TBL_BOARD VALUES
(SEQ_BOARD.NEXTVAL, '์ง์คํฉ์๋ค', '์ ๋ ์ ํ ์กธ๋ฆฌ์ง ์์์', '์ํ์ฑ', 'java006$', DEFAULT);
--==>> 1 ํ ์ด(๊ฐ) ์ฝ์
๋์์ต๋๋ค.
--โ ๊ฒ์๋ฌผ ์ญ์
SELECT *
FROM TBL_BOARD
WHERE NO = 7;
--==>> 7 ๊ทธ๋งํ๊ณ ์ถ๋ค ๊ทธ๋ฅ ๋์ด๊ฐ๊น.... ๊นํธ์ง java006$ 2023-10-25 15:38:26
DELETE
FROM TBL_BOARD
WHERE NO = 7;
--==>> 1 ํ ์ด(๊ฐ) ์ญ์ ๋์์ต๋๋ค.
--โ ํ์ธ
SELECT *
FROM TBL_BOARD;
/*
2 ์~ ์กธ๋ฆฌ๋ค 10๋ถ๋ง ์๊ณ ์ฌ๊ป์ ์ ํ์ธ java006$ 2023-10-25 15:28:11
3 ์~ ์๊ฒจ ํ๋ฃจํ๋ฃจ๊ฐ ์ฌ๋ฏธ์์ด์ ๋
ธ์ํ java006$ 2023-10-25 15:31:02
4 ๋ณด๊ณ ์ถ๋ค ๋ฒ๊ตฌ๊ฐ ๋๋ฌด๋๋ฌด ๋ณด๊ณ ์ถ์ด์ ๊น์ํ java006$ 2023-10-25 15:32:03
5 ๋ฐฐ๊ณ ํ์ ์ ์ฌ์ ๋จน์๋๋ฐ ๋ฐฐ๊ณ ํ์ ๊น๋ฏผ์ง java006$ 2023-10-25 15:34:01
9 ์๊ทผ์๊ทผ ๊ถ์๋ ๊ถ์๋ ์ด์ค์ java006$ 2023-10-25 15:40:25
11 ์ง์คํฉ์๋ค ์ ๋ ์ ํ ์กธ๋ฆฌ์ง ์์์ ์ํ์ฑ java006$ 2023-10-25 16:07:05
*/
--โ ์ปค๋ฐ
COMMIT;
--==>> ์ปค๋ฐ ์๋ฃ.
--โ ๊ฒ์ํ์ ๊ฒ์๋ฌผ ๋ฆฌ์คํธ ์กฐํ
SELECT NO "๊ธ๋ฒํธ", TITLE "์ ๋ชฉ", NAME "์์ฑ์", CREATED "์์ฑ์ผ"
FROM TBL_BOARD;
/*
2 ์~ ์กธ๋ฆฌ๋ค ์ ํ์ธ 2023-10-25 15:28:11
3 ์~ ์๊ฒจ ๋
ธ์ํ 2023-10-25 15:31:02
4 ๋ณด๊ณ ์ถ๋ค ๊น์ํ 2023-10-25 15:32:03
5 ๋ฐฐ๊ณ ํ์ ๊น๋ฏผ์ง 2023-10-25 15:34:01
9 ์๊ทผ์๊ทผ ์ด์ค์ 2023-10-25 15:40:25
11 ์ง์คํฉ์๋ค ์ํ์ฑ 2023-10-25 16:07:05
*/
SELECT ROW_NUMBER() OVER(ORDER BY CREATED) "๊ธ๋ฒํธ"
, TITLE "์ ๋ชฉ", NAME "์์ฑ์", CREATED "์์ฑ์ผ"
FROM TBL_BOARD;
/*
1 ์~ ์กธ๋ฆฌ๋ค ์ ํ์ธ 2023-10-25 15:28:11
2 ์~ ์๊ฒจ ๋
ธ์ํ 2023-10-25 15:31:02
3 ๋ณด๊ณ ์ถ๋ค ๊น์ํ 2023-10-25 15:32:03
4 ๋ฐฐ๊ณ ํ์ ๊น๋ฏผ์ง 2023-10-25 15:34:01
5 ์๊ทผ์๊ทผ ์ด์ค์ 2023-10-25 15:40:25
6 ์ง์คํฉ์๋ค ์ํ์ฑ 2023-10-25 16:07:05
*/
SELECT ROW_NUMBER() OVER(ORDER BY CREATED) "๊ธ๋ฒํธ"
, TITLE "์ ๋ชฉ", NAME "์์ฑ์", CREATED "์์ฑ์ผ"
FROM TBL_BOARD
ORDER BY 4 DESC;
/*
6 ์ง์คํฉ์๋ค ์ํ์ฑ 2023-10-25 16:07:05
5 ์๊ทผ์๊ทผ ์ด์ค์ 2023-10-25 15:40:25
4 ๋ฐฐ๊ณ ํ์ ๊น๋ฏผ์ง 2023-10-25 15:34:01
3 ๋ณด๊ณ ์ถ๋ค ๊น์ํ 2023-10-25 15:32:03
2 ์~ ์๊ฒจ ๋
ธ์ํ 2023-10-25 15:31:02
1 ์~ ์กธ๋ฆฌ๋ค ์ ํ์ธ 2023-10-25 15:28:11
*/
--------------------------------------------------------------------------------
--โ โ โ JOIN(์กฐ์ธ) โ โ โ --
--** ์กฐ์ธ์ ์ฌ์ ์ ๋ป: ํฉ์น๋ค, ๊ฒฐํฉํ๋ค
--** 92 ์ฝ๋: 92๋
์ ํ์ ๋์ด์ ์ฐ์ํ ์ฝ๋
--** 99 ์ฝ๋: 99๋
์ ํ์ ๋์ด์ ์ฐ์ํ ์ฝ๋
--**======================================================
--** ๊ฒฐ๋ก : ์ค๋ฌด์์ ๋ชจ๋ ์ฐ์ด๊ธฐ ๋๋ฌธ์... ๋๋ค ์์์ผ ํจ
--**======================================================
-- 1. SQL 1992 CODE
-- CROSS JOIN
--** ๋ชจ๋ ๊ฒฐํฉ ์ ํ์ด ๋ค ๋ค์ด์๋ ์ฝ๋
SELECT *
FROM EMP, DEPT; -- EMP ํ
์ด๋ธ๊ณผ, DEPT ํ
์ด๋ธ์ ํผ์ฌ๋ ค๋ผ
--> ์ํ์์ ๋งํ๋ ๋ฐ์นด๋ฅดํธ ๊ณฑ(CATERSIAN PRODUCT)
-- ๋ ํ
์ด๋ธ์ ๊ฒฐํฉํ ๋ชจ๋ ๊ฒฝ์ฐ์ ์(14 * 4 = 56)
/*EX)
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO DEPTNO_1 DNAME LOC
7369 SMITH CLERK 7902 1980-12-17 00:00:00 800 20 10 ACCOUNTING NEW YORK
7369 SMITH CLERK 7902 1980-12-17 00:00:00 800 20 20 RESEARCH DALLAS
7369 SMITH CLERK 7902 1980-12-17 00:00:00 800 20 30 SALES CHICAGO
7369 SMITH CLERK 7902 1980-12-17 00:00:00 800 20 40 OPERATIONS BOSTON*/
--==>> SMITH๊ฐ ์ฌ๋ฌ๊ฐ์ง์ ๊ฒฐํฉํด์ ๋ณด์ฌ์ง
SELECT *
FROM EMP;
SELECT *
FROM SALGRADE;
SELECT *
FROM DEPT;
SELECT *
FROM TBL_EMP;
SELECT *
FROM TBL_DEPT;
-- EQUI JOIN: ์๋ก ์ ํํ๊ฒ ์ผ์นํ๋ ๋ฐ์ดํฐ๋ค ๋ผ๋ฆฌ ์ฐ๊ฒฐํ์ฌ ๊ฒฐํฉ์ํค๋ ๊ฒฐํฉ ๋ฐฉ๋ฒ
SELECT *
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO;
/*
7782 CLARK MANAGER 7839 1981-06-09 00:00:00 2450 (null) 10 10 ACCOUNTING NEW YORK
7839 KING PRESIDENT (null) 1981-11-17 00:00:00 5000 (null) 10 10 ACCOUNTING NEW YORK
7934 MILLER CLERK 7782 1982-01-23 00:00:00 1300 (null) 10 10 ACCOUNTING NEW YORK
7566 JONES MANAGER 7839 1981-04-02 00:00:00 2975 (null) 20 20 RESEARCH DALLAS
7902 FORD ANALYST 7566 1981-12-03 00:00:00 3000 (null) 20 20 RESEARCH DALLAS
7876 ADAMS CLERK 7788 1987-07-13 00:00:00 1100 (null) 20 20 RESEARCH DALLAS
7369 SMITH CLERK 7902 1980-12-17 00:00:00 800 (null) 20 20 RESEARCH DALLAS
7788 SCOTT ANALYST 7566 1987-07-13 00:00:00 3000 (null) 20 20 RESEARCH DALLAS
7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30 30 SALES CHICAGO
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30 30 SALES CHICAGO
7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30 30 SALES CHICAGO
7900 JAMES CLERK 7698 1981-12-03 00:00:00 950 (null) 30 30 SALES CHICAGO
7698 BLAKE MANAGER 7839 1981-05-01 00:00:00 2850 (null) 30 30 SALES CHICAGO
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 1400 30 30 SALES CHICAGO
*/
SELECT *
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO;
--==>>
/*
7782 CLARK MANAGER 7839 1981-06-09 00:00:00 2450 10 10 ACCOUNTING NEW YORK
7839 KING PRESIDENT 1981-11-17 00:00:00 5000 10 10 ACCOUNTING NEW YORK
7934 MILLER CLERK 7782 1982-01-23 00:00:00 1300 10 10 ACCOUNTING NEW YORK
7566 JONES MANAGER 7839 1981-04-02 00:00:00 2975 20 20 RESEARCH DALLAS
7902 FORD ANALYST 7566 1981-12-03 00:00:00 3000 20 20 RESEARCH DALLAS
7876 ADAMS CLERK 7788 1987-07-13 00:00:00 1100 20 20 RESEARCH DALLAS
7369 SMITH CLERK 7902 1980-12-17 00:00:00 800 20 20 RESEARCH DALLAS
7788 SCOTT ANALYST 7566 1987-07-13 00:00:00 3000 20 20 RESEARCH DALLAS
7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30 30 SALES CHICAGO
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30 30 SALES CHICAGO
7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30 30 SALES CHICAGO
7900 JAMES CLERK 7698 1981-12-03 00:00:00 950 30 30 SALES CHICAGO
7698 BLAKE MANAGER 7839 1981-05-01 00:00:00 2850 30 30 SALES CHICAGO
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 1400 30 30 SALES CHICAGO
*/
-- NON EQUI JOIN: ๋ฒ์ ์์ ์ ํฉํ ๊ฒ๋ค๋ผ๋ฆฌ ์ฐ๊ฒฐ์ํค๋ ๊ฒฐํฉ ๋ฐฉ๋ฒ
--** ์ ํํ๊ฒ ์ผ์นํ๋ ์กฐ๊ฑด์ผ๋ก ์กฐ์ธ์ด ์๋
SELECT *
FROM EMP, SALGRADE
WHERE EMP.SAL BETWEEN SALGRADE.LOSAL AND SALGRADE.HISAL;
--** EMPํ
์ด๋ธ๊ณผ SQLGRADE ํ
์ด๋ธ์ ์กฐํฉํ๋๋ฐ, EMPํ
์ด๋ธ์ ๊ธ์ฌ๊ฐ SALGRADE์ ๋ฎ์ ๊ฐ๋ถํฐ SALGRADEํ
์ด๋ธ์ ๋์๊ฐ ์ฌ์ด์ ๊ฐ๋ง ์ถ์ถํ๋ค.
SELECT *
FROM EMP E, SALGRADE S --** ๊ฒฐํฉ์ , ์ฝค๋ง๋ก
WHERE E.SAL BETWEEN S.LOSAL AND S.HISAL; --** ๊ฒฐํฉ์กฐ๊ฑด์ WHERE์ ๊ธฐ์ฌ
/*
7369 SMITH CLERK 7902 1980-12-17 00:00:00 800 20 1 700 1200
7900 JAMES CLERK 7698 1981-12-03 00:00:00 950 30 1 700 1200
7876 ADAMS CLERK 7788 1987-07-13 00:00:00 1100 20 1 700 1200
7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30 2 1201 1400
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 1400 30 2 1201 1400
7934 MILLER CLERK 7782 1982-01-23 00:00:00 1300 10 2 1201 1400
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30 3 1401 2000
7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30 3 1401 2000
7782 CLARK MANAGER 7839 1981-06-09 00:00:00 2450 10 4 2001 3000
7698 BLAKE MANAGER 7839 1981-05-01 00:00:00 2850 30 4 2001 3000
7566 JONES MANAGER 7839 1981-04-02 00:00:00 2975 20 4 2001 3000
7788 SCOTT ANALYST 7566 1987-07-13 00:00:00 3000 20 4 2001 3000
7902 FORD ANALYST 7566 1981-12-03 00:00:00 3000 20 4 2001 3000
7839 KING PRESIDENT 1981-11-17 00:00:00 5000 10 5 3001 9999
*/
-- EQUI JOIN ์ (+) ๋ฅผ ํ์ฉํ ๊ฒฐํฉ ๋ฐฉ๋ฒ
SELECT *
FROM TBL_EMP;
SELECT *
FROM TBL_DEPT;
INSERT INTO TBL_DEPT VALUES(50, '๊ฐ๋ฐ๋ถ', '์์ธ');
--==>> 1 ํ ์ด(๊ฐ) ์ฝ์
๋์์ต๋๋ค.
COMMIT;
--==>> ์ปค๋ฐ ์๋ฃ.
FROM TBL_EMP E, TBL_DEPT D
WHERE E.DEPTNO = D.DEPTNO;
--> ์ด 14๊ฑด์ ๋ฐ์ดํฐ๊ฐ ๊ฒฐํฉ๋์ด ์กฐํ๋ ์ํฉ
-- ์ฆ, ๋ถ์๋ฒํธ๋ฅผ ๊ฐ์ง ๋ชปํ ์ฌ์๋ค(5) ๋ชจ๋ ๋๋ฝ
-- ๋ํ, ์์ ์ฌ์์ ๊ฐ์ง ๋ชปํ ๋ถ์(2) ๋ชจ๋ ๋๋ฝ
SELECT *
FROM TBL_EMP E, TBL_DEPT D
WHERE E.DEPTNO = D.DEPTNO(+);
--> ์ด 19 ๊ฑฐ์ ๋ฐ์ดํฐ๊ฐ ๊ฒฐํฉ๋์ด ์กฐํ๋ ์ํฉ
-- ์์ ์ฌ์์ ๊ฐ์ง ๋ชปํ ๋ถ์(2) ๋๋ฝ -------------------------(+)
-- ๋ถ์๋ฒํธ๋ฅผ ๊ฐ์ง ๋ชปํ ์ฌ์๋ค(5) ๋ชจ๋ ์กฐํ
/*
7934 MILLER CLERK 7782 1982-01-23 00:00:00 1300 10 10 ACCOUNTING NEW YORK
7839 KING PRESIDENT 1981-11-17 00:00:00 5000 10 10 ACCOUNTING NEW YORK
7782 CLARK MANAGER 7839 1981-06-09 00:00:00 2450 10 10 ACCOUNTING NEW YORK
7902 FORD ANALYST 7566 1981-12-03 00:00:00 3000 20 20 RESEARCH DALLAS
7876 ADAMS CLERK 7788 1987-07-13 00:00:00 1100 20 20 RESEARCH DALLAS
7788 SCOTT ANALYST 7566 1987-07-13 00:00:00 3000 20 20 RESEARCH DALLAS
7566 JONES MANAGER 7839 1981-04-02 00:00:00 2975 20 20 RESEARCH DALLAS
7369 SMITH CLERK 7902 1980-12-17 00:00:00 800 20 20 RESEARCH DALLAS
7900 JAMES CLERK 7698 1981-12-03 00:00:00 950 30 30 SALES CHICAGO
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30 30 SALES CHICAGO
7698 BLAKE MANAGER 7839 1981-05-01 00:00:00 2850 30 30 SALES CHICAGO
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 1400 30 30 SALES CHICAGO
7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30 30 SALES CHICAGO
7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30 30 SALES CHICAGO
8007 ๋ฐ๋์ SALESMAN 7698 2023-10-24 14:47:30 1000
8006 ์ ํ์ฑ SALESMAN 7698 2023-10-24 14:47:30 2500
8003 ๊น๋ฏผ์ง SALESMAN 7698 2023-10-24 14:47:30 1700
8002 ์ํ์ฑ CLERK 7566 2023-10-24 14:47:30 2000 10
8001 ์ด์ค์ CLERK 7566 2023-10-24 14:47:30 1500 10
*/
SELECT *
FROM TBL_EMP E, TBL_DEPT D
WHERE E.DEPTNO(+) = D.DEPTNO;
--> ์ด 16 ๊ฑด์ ๋ฐ์ดํฐ๊ฐ ๊ฒฐํฉ๋์ด ์กฐํ๋ ์ํฉ
-- ์์ ์ฌ์์ ๊ฐ์ง ๋ชปํ ๋ถ์(2) ๋ชจ๋ ์กฐํ
-- ๋ถ์๋ฒํธ๋ฅผ ๊ฐ์ง ๋ชปํ ์ฌ์๋ค(5) ๋๋ฝ -------------------------(+)
--โป <(+)> ๊ฐ ์๋ ์ชฝ ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ ํ -- ๊ธฐ์ค
-- <(+)> ๊ฐ ์๋ ์ชฝ ํ
์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ํ๋ํ๋ ํ์ธํ์ฌ ๊ฒฐํฉ์ํค๋ ํํ๋ก -- ์ถ๊ฐ(์ฒจ๊ฐ)
-- JOIN ์ด ์ด๋ฃจ์ด์ง๋ค.
/*
7369 SMITH CLERK 7902 1980-12-17 00:00:00 800 20 20 RESEARCH DALLAS
7499 ALLEN SALESMAN 7698 1981-02-20 00:00:00 1600 300 30 30 SALES CHICAGO
7521 WARD SALESMAN 7698 1981-02-22 00:00:00 1250 500 30 30 SALES CHICAGO
7566 JONES MANAGER 7839 1981-04-02 00:00:00 2975 20 20 RESEARCH DALLAS
7654 MARTIN SALESMAN 7698 1981-09-28 00:00:00 1250 1400 30 30 SALES CHICAGO
7698 BLAKE MANAGER 7839 1981-05-01 00:00:00 2850 30 30 SALES CHICAGO
7782 CLARK MANAGER 7839 1981-06-09 00:00:00 2450 10 10 ACCOUNTING NEW YORK
7788 SCOTT ANALYST 7566 1987-07-13 00:00:00 3000 20 20 RESEARCH DALLAS
7839 KING PRESIDENT 1981-11-17 00:00:00 5000 10 10 ACCOUNTING NEW YORK
7844 TURNER SALESMAN 7698 1981-09-08 00:00:00 1500 0 30 30 SALES CHICAGO
7876 ADAMS CLERK 7788 1987-07-13 00:00:00 1100 20 20 RESEARCH DALLAS
7900 JAMES CLERK 7698 1981-12-03 00:00:00 950 30 30 SALES CHICAGO
7902 FORD ANALYST 7566 1981-12-03 00:00:00 3000 20 20 RESEARCH DALLAS
7934 MILLER CLERK 7782 1982-01-23 00:00:00 1300 10 10 ACCOUNTING NEW YORK
50 ๊ฐ๋ฐ๋ถ ์์ธ
40 OPERATIONS BOSTON
*/
--์ด์ ๊ฐ์ ์ด์ ๋ก...
SELECT *
FROM TBL_EMP E, TBL_DEPT D
FROM E.DEPTNO(+) = D.DEPTNO(+);
-- ์ด๋ฐ์์ JOIN์ ์กด์ฌํ์ง ์๋๋ค.
-- 2. SQL 1999 CODE -> <JOIN> ํค์๋ ๋ฑ์ฅ -> JOIN(๊ฒฐํฉ)์ ์ ํ ๋ช
์
--** JOIN์ด๋ผ๋ ํค์๋๊ฐ ๋ณด์ธ๋ค ! -> 99์ฝ๋
--** ์๋ณด์ธ๋ค! -> 92์ฝ๋
-- -> <ON> ํค์๋ ๋ฑ์ฅ -> ๊ฒฐํฉ ์กฐ๊ฑด์ WHERE ๋์ ON
-- CROSS JOIN
SELECT *
FROM EMP CROSS JOIN DEPT;
-- INNER JOIN
SELECT *
FROM EMP INNER JOIN DEPT
ON EMP.DEPTNO = DEPT.DEPTNO;
--** ์๋ฆฌ์ด์ค(ALIAS- ๋ณ์นญ) ๊ฐ๋ฅ
SELECT *
FROM EMP E INNER JOIN DEPT D
ON E.DEPTNO = D.DEPTNO;
--** INNER ์๋ต ๊ฐ๋ฅ
SELECT *
FROM EMP E JOIN DEPT D
ON E.DEPTNO = D.DEPTNO;
-- OUTER JOIN
--** ๋์ฌ๊ฒจ์ ๋ด์ผํ ๋ถ๋ถ
SELECT *
FROM TBL_EMP E LEFT OUTER JOIN TBL_DEPT D
ON E.DEPTNO = D.DEPTNO;
-- WHERE E.DEPTNO = D.DEPTNO(+);
SELECT *
FROM TBL_EMP E RIGHT OUTER JOIN TBL_DEPT D
ON E.DEPTNO = D.DEPTNO;
-- WHERE E.DEPTNO(+) = D.DEPTNO;
SELECT *
FROM TBL_EMP E FULL OUTER JOIN TBL_DEPT D
ON E.DEPTNO = D.DEPTNO;
--** OUTER ์๋ต๊ฐ๋ฅ
SELECT *
FROM TBL_EMP E RIGHT JOIN TBL_DEPT D
ON E.DEPTNO = D.DEPTNO;
--โป ์ฐธ๊ณ
--1๋ฒ)
SELECT *
FROM TBL_EMP E JOIN TBL_DEPT D
ON E.DEPTNO = D.DEPTNO
AND E.JOB = 'CLERK';
--> ์ด์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ฟผ๋ฆฌ๋ฌธ์ ๊ตฌ์ฑํด๋
-- ์กฐํ ๊ฒฐ๊ณผ๋ฅผ ์ป๋ ๊ณผ์ ์๋ ๋ฌธ์ ๊ฐ ์๋ค.
--2๋ฒ)
SELECT *
FROM TBL_EMP E JOIN TBL_DEPT D
ON E.DEPTNO = D.DEPTNO
WHERE E.JOB = 'CLERK';
--> ํ์ง๋ง ์ด์ ๊ฐ์ ๊ตฌ์ฑํ์ฌ
-- ์กฐํํ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
--**==============================
--** ON: ๊ฒฐํฉ์กฐ๊ฑด
--** WHERE๋: ์กฐํ์กฐ๊ฑด
--**==============================
--** SELECT ์กฐ๊ฑด ์ฒ๋ผ
--** WHERE ์ ์ ์จ์ด ์กฐ๊ฑด์ ๋ง๋ ๊ฒ๋ง 1์ฐจ์ ์ผ๋ก ํผ์ฌ๋ฆผ
--** 1๋ฒ) TBL_DEPT ์กฐ๊ฑด & TBL_EMP ๋ชจ๋ ํผ์ฌ๋ฆผ
--** 2๋ฒ) TBL_DEPT ์ TBL_EMP์กฐ๊ฑด์ ๋ง๋ ๊ฒ๋ง ํผ์ฌ๋ฆผ
/* 4-๋ฌธ์ & ํจ๊ป ํผ ๋ด์ฉ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
--โ EMP ํ
์ด๋ธ๊ณผ DEPT ํ
์ด๋ธ์ ๋์์ผ๋ก
-- ์ง์ข
์ด MANAGER์ CLERK ์ธ ์ฌ์๋ค๋ง
-- ๋ถ์๋ฒํธ, ๋ถ์๋ช
, ์ฌ์๋ช
, ์ง์ข
๋ช
, ๊ธ์ฌ ํญ๋ชฉ์ ์กฐํํ๋ค.
-- ๋ถ์๋ฒํธ, ๋ถ์๋ช
, ์ฌ์๋ช
, ์ง์ข
๋ช
, ๊ธ์ฌ
-- DEPTNO DNAME ENAME JOB SAL
-- E, D D E E E
SELECT D.EMPNO "๋ถ์๋ฒํธ", D.DNAME "๋ถ์๋ช
", E.ENAME "์ฌ์๋ช
", E.JOB "์ง์ข
๋ช
", E.SAL "๊ธ์ฌ"
FROM EMP E JOIN DEPT D
ON E.DEPTNO = D.DEPTNO
WHERE E.JOB IN ('MANAGER', 'CLERK');
/*
7782 ACCOUNTING CLARK MANAGER 2450
7934 ACCOUNTING MILLER CLERK 1300
7876 RESEARCH ADAMS CLERK 1100
7566 RESEARCH JONES MANAGER 2975
7369 RESEARCH SMITH CLERK 800
7698 SALES BLAKE MANAGER 2850
7900 SALES JAMES CLERK 950
*/
SELECT ๋ถ์๋ฒํธ, ๋ถ์๋ช
, ์ฌ์๋ช
, ์ง์ข
๋ช
, ๊ธ์ฌ
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO;
SELECT DEPTNO, DNAME, ENAME, JOB, SAL
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO;
--==>> ์๋ฌ ๋ฐ์(ORA-00918: column ambiguously defined)
-- ๋ ํ
์ด๋ธ ๊ฐ ์ค๋ณต๋๋ ์นผ๋ผ์ ๋ํ
-- ์์ ํ
์ด๋ธ์ ์ ํด์ค์ผ (๋ช
์ํด์ค์ผ) ํ๋ค.
--โป ๋ ํ
์ด๋ธ ๊ฐ ์ค๋ณต๋๋ ์ปฌ๋ผ์ ๋ํด ์์ ํ
์ด๋ธ์ ๋ช
์ํ๋ ๊ฒฝ์ฐ
-- ๋ถ๋ชจ ํ
์ด๋ธ์ ์นผ๋ผ์ ์ฐธ์กฐํ ์ ์๋๋ก ์ฒ๋ฆฌํด์ผ ํ๋ค.
--** ๋๊ฐ์ ํ
์ด๋ธ์ด ์์ ๊ฒฝ์ฐ ๋ถ๋ชจํ
์ด๋ธ์ ๊ฐ์ ธ์์ ์จ์ผํจ
--** ๋ถ๋ชจํ
์ด๋ธ์ด๋?
--** EMP์ DEPTNO ๊ฐ์ด ์ฌ๋ฌ๊ฐ ์๋๋ฐ DEPT๋ DEPTNO ๊ฐ์ด ํ๋๋ง ์์ -> ๋ฐ๋ผ์ ๋ถ๋ชจํ
์ด๋ธ์ DEPTNO
SELECT *
FROM DEPT; -- ๋ถ๋ชจํ
์ด๋ธ
SELECT *
FROM EMP; -- ์์ํ
์ด๋ธ
SELECT D.DEPTNO, DNAME, ENAME, JOB, SAL
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO;
-- ๋ ํ
์ด๋ธ์ ๋ชจ๋ ํฌํจ๋์ด ์๋ ์ค๋ณต๋ ์ปฌ๋ผ์ด ์๋๋๋ผ๋
-- ์ปฌ๋ผ์ ์์ ํ
์ด๋ธ์ ๋ช
์ํด ์ค ์ ์๊ธฐ๋ฅผ ๊ถ์ฅํ๋ค.
SELECT D.DEPTNO, D.DNAME, E.ENAME, E.JOB, E.SAL
FROM EMP E, DEPT D
WHERE E.DEPTNO = D.DEPTNO;
--** ์ฆ, ์์ํ
์ด๋ธ์ ๋ช
์ํ์ง ์์ผ๋ฉด ํด๋น SELECT๋ฅผ ์ฐพ๊ธฐ์ํด ์ฌ๋ฌ ํ
์ด๋ธ์ ์กฐํํ๋ค.
--** ๋ฐ๋ผ์ ์์ํ
์ด๋ธ์ ๋ช
์ํจ์ผ๋ก์จ ์ค๋ผํด์๊ฒ ์์
์ง์๋ฅผ ๋ช
ํํ๊ฒ ํ์ฌ, ๋ถํ์ํ ์์
์ ์ต์ํํ๋ค.
--** ์์ฐํฐ์กฐ์ธ์์ ๊ณตํต๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ฌ๋ ๋ถ๋ชจํ
์ด๋ธ์ด ์๋๋ฉด ์
๋ ํธํด์ ๊ฐ์ ธ์ฌ ์ ์๋ค.
SELECT D.DEPTNO, DNAME, ENAME, JOB, SAL
FROM EMP E, DEPT D
WHERE E.DEPTNO(+) = D.DEPTNO;
/*
DEPTNO DNAME ENAME JOB SAL
40 OPERATIONS (null) (null) (null) -- DEPTNO๊ฐ 40
*/
SELECT E.DEPTNO, DNAME, ENAME, JOB, SAL
FROM EMP E, DEPT D
WHERE E.DEPTNO(+) = D.DEPTNO;
--==>>
/*
DEPTNO DNAME ENAME JOB SAL
(null) OPERATIONS (null) (null) (null) -- DEPTNO๊ฐ (null)
*/