๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ๋ฐฐ์šฐ๊ณ  ์ตํžˆ๊ธฐ +/ORACLE

(42)[oracle]7์ผ์ฐจ: HAVING, ์„œ๋ธŒ์ƒ๊ด€์ฟผ๋ฆฌ, JOIN, SQL 1992 CODE, CROSS JOIN, EQUI JOIN (=INNER JOIN), EQUI JOIN ์‹œ (+)๋ฅผ ํ™œ์šฉํ•œ ๊ฒฐํ•ฉ ๋ฐฉ๋ฒ•(=OUTER JOIN), NON EQUI JOIN, SQL 1999 CODE, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN

by ์ข…์ด๋นจ๋Œ€ 2023. 10. 25.
TOP

๋ชฉ์ฐจ

    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)
    */