ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • SQL - Join, ์„œ๋ธŒ์ฟผ๋ฆฌ
    DATABASE 2020. 7. 21. 14:17

     

    ๐ŸŽฏ SQL์˜ Join๊ณผ ์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์•Œ์•„๋ณธ๋‹ค.

     

     



     

    JOIN

    ๊ฒ€์ƒ‰ํ•˜๊ณ ์ž ํ•˜๋Š” ์ปฌ๋Ÿผ์ด ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ…Œ์ด๋ธ”์— ๋ถ„์‚ฐ๋˜์–ด์žˆ๋Š” ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•ด์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•

     

    EMPํ…Œ์ด๋ธ”๊ณผ DEPT ํ…Œ์ด๋ธ”์—๋Š” DEPTNO ๋ผ๋Š” ๊ณตํ†ต์ปฌ๋Ÿผ์ด ์กด์žฌํ•œ๋‹ค.

    ์—ฌ๊ธฐ์„œ EMP ํ…Œ์ด๋ธ”์˜ DEPTNO๋ฅผ ์™ธ๋ž˜ํ‚ค๋ผ๊ณ  ํ•˜๊ณ ,  DEPT ํ…Œ์ด๋ธ”์˜ DEPTNO๋ฅผ ๊ธฐ๋ณธํ‚ค๋ผ๊ณ  ํ•œ๋‹ค.

    ์™ธ๋ž˜ํ‚ค(Foreign Key)๋Š” ๊ทธ ์ž์ฒด๋กœ ์ •๋ณด๋ฅผ ๊ฐ–๊ณ ์žˆ๋Š” ๊ฑด ์•„๋‹ˆ๊ณ , ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์— ์ฐพ์•„๊ฐ€์„œ ์ฐธ์กฐํ•  ๊ฐ’์„ ๋งํ•œ๋‹ค.

    ์ฐธ์กฐ ๋‹นํ•˜๋Š” dept ํ…Œ์ด๋ธ”์„ ๋ถ€๋ชจํ…Œ์ด๋ธ”/masterํ…Œ์ด๋ธ” ์ด๋ผํ•˜๊ณ  ์ฐธ์กฐํ•˜๋Š” emp ํ…Œ์ด๋ธ”์„ ์ž์‹ํ…Œ์ด๋ธ”/slave ํ…Œ์ด๋ธ” ์ด๋ผ๊ณ  ํ•œ๋‹ค.

    ๋งˆ์Šคํ„ฐ ํ…Œ์ด๋ธ”์˜ ๊ธฐ๋ณธํ‚ค PK(D.DEPTNO)๊ฐ€ ์ž์‹ ํ…Œ์ด๋ธ”์˜ ์ฐธ์กฐํ‚ค,์™ธ๋ž˜ํ‚คFK(E.DEPTNO)๊ฐ€ ๋œ๋‹ค.

     

     

    join ์ข…๋ฅ˜
    • ์˜ค๋ผํด ์กฐ์ธ (์˜ค๋ผํด 8i)
    • ANSI ์กฐ์ธ (์˜ค๋ผํด 9i ์ดํ›„)

     

     

     

    ์˜ค๋ผํด์กฐ์ธ

    ์˜ค๋ผํด์—์„œ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ. ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์„ ์—ฐ๊ฒฐํ•˜๋Š” ์กฐ์ธ ์กฐ๊ฑด์„ where์ ˆ์— ๋ช…์‹œํ•œ๋‹ค.

     

     

    ์นดํƒ€์‹œ์•ˆ ํ”„๋กœ๋•ํŠธCatasian Product

    ๋ชจ๋“  ๊ฐ€๋Šฅํ•œ ํ–‰๋“ค์˜ ์กฐ์ธ. ์กฐ๊ฑด์„ ์ƒ๋žตํ•  ๊ฒฝ์šฐ ๋ฐœ์ƒ

    ์ผ์น˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š๊ณ  ์กฐ์ธํ•˜๋Š” ๊ฐ ํ…Œ์ด๋ธ”์˜ ํ–‰ ๊ฐœ์ˆ˜๋ฅผ ์„œ๋กœ ๊ณฑํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์œ ํšจํ•œ ๋ฐ์ดํ„ฐ๋กœ ์‚ฌ์šฉ๋˜์ง€ ๋ชปํ•œ๋‹ค.

    WHERE ์ ˆ์— ์กฐ๊ฑด ๋ช…์‹œ ์•ˆํ•˜๊ณ  ๊ทธ๋ƒฅ SELECT ~ FROM ํ˜•ํƒœ๋กœ๋งŒ ์ฟผ๋ฆฌ๋ฌธ์„ ์ž‘์„ฑํ•˜๋ฉด ๊ฒฐ๊ณผ๋กœ ๊ณฑ์ง‘ํ•ฉ์ด ํ˜•์„ฑ๋œ๋‹ค.

     

     

    Equi ์กฐ์ธ = ์ดํ€„์กฐ์ธ ์ด๋„ˆ์กฐ์ธ

    SELECT ๊ฒ€์ƒ‰ํ•  ์ปฌ๋Ÿผ๋ช… ๋ช…์‹œ
    FROM ์‚ฌ์šฉํ•  ๋‘๊ฐœ์˜ ํ…Œ์ด๋ธ” ๋ช… ๋ช…์‹œ
    WHERE ๋™๋“ฑ์—ฐ์‚ฐ์ž(=) ์‚ฌ์šฉํ•ด์„œ '์กฐ์ธ์กฐ๊ฑด' ๋ช…์‹œ

    ์กฐ๊ฑด์—์„œ = ์‚ฌ์šฉํ•˜์—ฌ ๊ณตํ†ต์ ์œผ๋กœ ์กด์žฌํ•˜๋Š” ์ปฌ๋Ÿผ์˜ ๊ฐ’๋“ค์ด ์ •ํ™•ํ•˜๊ฒŒ ์ผ์น˜ํ•˜๋Š” ํ–‰์„ ์—ฐ๊ฒฐํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

    ๋‹ค๋ฅธ๋ง๋กœ ๋‹จ์ˆœ์กฐ์ธ, ๋‚ด๋ถ€์กฐ์ธ(์ด๋„ˆ์ชผ์ธ)์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค.

     

    ๊ณตํ†ต์ปฌ๋Ÿผ ์‚ฌ์šฉ ์‹œ ๋ชจํ˜ธ์„ฑ์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ค‘๋ณต๋œ ์ปฌ๋Ÿผ์€ ์กฐ์ธํ•œ ํ…Œ์ด๋ธ”์—์„œ ์–ด๋–ค ๊ฑธ ์‚ฌ์šฉํ• ์ง€ ๊ณจ๋ผ์ค˜์•ผ ๋œ๋‹ค. 

    ์ด๊ฑธ ์„ ํƒํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋‚œ๋‹ค. ๊ณตํ†ต ์ปฌ๋Ÿผ์ด ์–ด๋Š ํ…Œ์ด๋ธ”์— ์†ํ•˜๋Š”์ง€ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ช…์‹œ์ ์œผ๋กœ ํ…Œ์ด๋ธ”๋ช…์„ ์ ์–ด์ฃผ๋ฉด ์˜ค๋ฅ˜๋ฅผ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.

     

    SELECT ENAME, DNAME
    FROM EMP, DEPT
    WHERE EMP.DEPTNO = DEPT.DEPTNO;

    ์…€๋ ‰ํŠธ ์ ˆ์— ์‚ฌ์šฉ๋œ ์ปฌ๋Ÿผ์€ ์–‘์ชฝ ํ…Œ์ด๋ธ”์— ๋ชจ๋‘ ์กด์žฌํ•˜๋Š” ์ปฌ๋Ÿผ์ด ์•„๋‹ˆ๋‹ค. ๊ณตํ†ต์  ์—†์Œ. ์ด๋•Œ๋Š” ์ปฌ๋Ÿผ๋ช… ์•ž์— ํ…Œ์ด๋ธ”๋ช…์„ ์ง€์ •ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

    FROM์ ˆ์—์„œ๋„ ํ…Œ์ด๋ธ”๋ช…์— ๋ณ„์นญ์„ ๋ถ™์ผ ์ˆ˜ ์žˆ๋‹ค. ๋ณ„์นญ์„ ์ง€์ •ํ–ˆ์„ ๊ฒฝ์šฐ WHERE์ ˆ๊ณผ SELECT์ ˆ์—” ํ…Œ์ด๋ธ”๋ช…์ด ์•„๋‹Œ ๋ณ„์นญ์„ ์‚ฌ์šฉํ•ด์•ผ ๋œ๋‹ค.

     

    ์‚ฌ์›๋ฒˆํ˜ธ๊ฐ€ 7900์ธ ์‚ฌ๋žŒ์„ ์ฐพ์œผ๋ผ๋Š” ๊ฒ€์ƒ‰์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•ด์คŒ

     

    WHERE์ ˆ ๋‹ค์Œ์€ ์กฐ์ธ์กฐ๊ฑด์„ ๋จผ์ € ๋ช…์‹œํ•˜๊ณ  AND๋‚˜ OR ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด ๊ฒ€์ƒ‰์กฐ๊ฑด์„ ๋ช…์‹œํ•œ๋‹ค.

     

    ๋ถ€์„œ๋ณ„๋กœ 2005๋…„ ์ด์ „์— ์ž…์‚ฌํ•œ ์ง์›๋“ค์˜ ์ธ์› ์ˆ˜ ์ถœ๋ ฅํ•˜๊ธฐ

     

     

    Non-Equi์กฐ์ธ

    ๋‘ ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ณตํ†ต์ปฌ๋Ÿผ์ด ์—†๋Š” ๊ฒฝ์šฐ, where ์ ˆ์— ๋™๋“ฑ์—ฐ์‚ฐ์ž ์ด์™ธ์˜ ๋น„๊ต์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์กฐ์ธ ๋ฐฉ๋ฒ•.

    SELECT ENAME, SAL, GRADE
    FROM EMP E, SALGRADE S
    WHERE SAL BETWEEN LOSAL AND HISAL;

    ์˜ˆ๋ฅผ๋“ค์–ด ๋“ฑ๊ธ‰ํ…Œ์ด๋ธ”์„ ์ด์šฉํ•œ ๋ฐฉ๋ฒ•(๊ฒน์น˜๋Š” ์ปฌ๋Ÿผ ์—†์Œ, ๊ธ‰์—ฌ๋ฅผ ๊ธฐ์ค€์— ๋”ฐ๋ผ 5๋“ฑ๊ธ‰์œผ๋กœ ๊ตฌ๋ถ„ํ•œ ํ…Œ์ด๋ธ”)์ด ์žˆ๋Š”๋ฐ,

    ๊ฐ ์‚ฌ์›์˜ ๊ธ‰์—ฌ๊ฐ€ ๋ช‡ ๋“ฑ๊ธ‰์ธ์ง€ ํŒŒ์•…ํ•˜๋ ค๋ฉด ๊ทธ ๋ฐ์ดํ„ฐ๊ฐ€ ์ผ์น˜ํ•˜๋Š”์ง€ ๋น„๊ต๋ฌธ์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” where ์ ˆ์— ๋น„๊ต๋ฌธ์œผ๋กœ between a and b๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ์ด๊ฑธ ๋ถ€๋“ฑํ˜ธ ์—ฐ์‚ฐ์ž๋กœ ํ‘œ์‹œํ•˜๋ฉด sal ≥ losal and sal ≤ hisal; ๋กœ ๋ฐ”๊ฟ”์“ธ ์ˆ˜ ์žˆ๋‹ค.

    3๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ์กฐ์ธํ•  ๋• ์ดํ€„์กฐ์ธ๊ณผ ๋…ผ์ดํ€„์กฐ์ธ์ด ๊ฐ™์ด ์“ฐ์ผ ์ˆ˜ ์žˆ๋‹ค.

     

     

    self์กฐ์ธ

    ์ž๊ธฐ์ž์‹ ์˜ ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐ. ํ…Œ์ด๋ธ”์˜ ๋ณ„์นญ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ƒ์˜ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•œ๋‹ค.

    SELECT E.ENAME, M.ENAME
    FROM EMP E, EMP M
    WHERE E.MGR = M.EMPNO;

    ์‚ฌ์›์˜ ๊ด€๋ฆฌ์ž ๋ฒˆํ˜ธ๋กœ ๊ด€๋ฆฌ์ž๋ฅผ ์กฐํšŒํ•˜๊ณ ์‹ถ์œผ๋ฉด ๊ณ„์† empํ…Œ์ด๋ธ”์„ ๋’ค์ ธ์•ผํ•œ๋‹ค. ์…€ํ”„ ์กฐ์ธ ํ•„์š”

    ๊ฐ™์€ ํ…Œ์ด๋ธ”์ด ํ•˜๋‚˜ ๋” ์กด์žฌํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐ˜๋“œ์‹œ ํ…Œ์ด๋ธ” ๋ณ„์นญ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

     

     

    Outer ์กฐ์ธ

    ์กฐ์ธ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜์ง€ ๋ชปํ•˜๋Š” ํ–‰๋“ค๋„ ์ „๋ถ€ ์ถœ๋ ฅํ•œ๋‹ค.

    ๋ˆ„๋ฝ๋œ ์ž๋ฃŒ(NULL)๊ฐ€ ์žˆ์œผ๋ฉด ๋ˆ„๋ฝ๋œ๊ฒƒ๊นŒ์ง€ ์ถ”๊ฐ€ํ•ด์„œ ๋ณด์—ฌ์ค€๋‹ค

    ์กฐ์ธ์‹œํ‚ฌ ๊ฐ’์ด ์—†๋Š” ์กฐ์ธ์ธก์— (+)๋ฅผ ๋ถ™์—ฌ์ค€๋‹ค. ํ…Œ์ด๋ธ” ์ค‘์— ํ•œ๋ฒˆ๋งŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.

     

    ์กฐ์ธ์˜ ์‹คํ–‰๊ฒฐ๊ณผ๋Š” ๋ฐ˜๋“œ์‹œ ์กฐ์ธ ์กฐ๊ฑด์— ๋งŒ์กฑํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์กฐํšŒํ•˜๋ฉฐ ์กฐ์ธ์กฐ๊ฑด์— ์œ„๋ฐฐ๋˜๋ฉด ๋ˆ„๋ฝ๋œ๋‹ค.

    ์กฐ๊ฑด์— ์ผ์น˜ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์กฐํšŒํ•˜๋Š” ์กฐ์ธ์„ INNER ์กฐ์ธ์ด๋ผ ํ•˜๊ณ  ์œ„์˜ ์ดํ€„, ๋…ผ์ดํ€„, ์…€ํ”„์กฐ์ธ์ด ๋ชจ๋‘ ์ด๋„ˆ์กฐ์ธ์ด๋‹ค.

     

     

    ์‚ฌ์›๊ณผ ๋‹ด๋‹น ๊ด€๋ฆฌ์ž์˜ ์ด๋ฆ„์„ ๋ˆ„๋ฝ๋œ ๋ถ€๋ถ„๊นŒ์ง€ ์ถœ๋ ฅ

     

     

    ๋ถ€์„œ 40๋ฒˆ์— ๋งค์นญ๋œ ์‚ฌ์›์ •๋ณด๋Š” null๋กœ ์ถœ๋ ฅ

     

    EMP ํ…Œ์ด๋ธ”๊ณผ DEPT ํ…Œ์ด๋ธ”์—์„œ DEPT ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ๋ชจ๋“  ์ž๋ฃŒ๋ฅผ ์‚ฌ์›๋ฒˆํ˜ธ, ์ด๋ฆ„, ์—…๋ฌด, EMP ํ…Œ์ด๋ธ”์˜ ๋ถ€์„œ๋ฒˆํ˜ธ, DEPT ํ…Œ์ด๋ธ”์˜ ๋ถ€์„œ๋ฒˆํ˜ธ,๋ถ€์„œ๋ช…,๊ทผ๋ฌด์ง€๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ

     

     

    ์‚ฌ์›๋ช…๊ณผ ๊ด€๋ฆฌ์ž๋ช…, ๊ทธ๋ฆฌ๊ณ  ๊ด€๋ฆฌ์ž์˜ ๊ด€๋ฆฌ์ž๋ช…์„ ์ถœ๋ ฅํ•˜๊ธฐ

     

     

     

    ansi์กฐ์ธ

    ์กฐ์ธ ํ˜•์‹์ด FROM ์ ˆ์—์„œ ์ง€์ •๋œ๋‹ค.

    ์กฐ์ธ์กฐ๊ฑด์„ WHERE์ ˆ์— ์“ฐ์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ์ž‘์„ฑํ•œ๋‹ค.

    WHERE์ ˆ์€ ๊ฒ€์ƒ‰์กฐ๊ฑด์„ ์ง€์ •ํ•  ๋•Œ ์‚ฌ์šฉ.

     

     

    cross ์กฐ์ธ

    SELECT EMPNO, ENAME, DNAME
    FROM DEPT CROSS JOIN EMP;

    ์˜ค๋ผํด ์กฐ์ธ์˜ ์นดํƒ€์‹œ์•ˆ์ด๋ž‘ ๋™์ผํ•œ ์กฐ๊ฑด ์—†๋Š” ์กฐ์ธ ๋ฐฉ๋ฒ•์ด๋‹ค.

    ํ”„๋กฌ์— ์กฐ์ธํ•  ํ…Œ์ด๋ธ”์„ ๋ชจ๋‘ ๋‚˜์—ดํ•˜์ง€ ์•Š๊ณ ,

    ํ”„๋กฌ ๋‹ค์Œ์— ํฌ๋กœ์Šค ์กฐ์ธ ์ ˆ์„ ๋งŒ๋“ค์–ด์ค€๋‹ค.

     

     

    natural ์กฐ์ธ

    SELECT ํ…Œ์ด๋ธ”1.์ปฌ๋Ÿผ, ํ…Œ์ด๋ธ”2.์ปฌ๋Ÿผ
    FROM ํ…Œ์ด๋ธ”1 NATURAL JOIN ํ…Œ์ด๋ธ”2
    [WHERE ๊ฒ€์ƒ‰์กฐ๊ฑด];

    ์ดํ€„์กฐ์ธ๊ณผ ๋™์ผํ•˜๋‹ค. ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์ปฌ๋Ÿผ์— ๊ธฐ๋ฐ˜.

    ์–‘์ชฝ ํ…Œ์ด๋ธ”์— ๋ฐ˜๋“œ์‹œ 1๊ฐœ๋งŒ์˜ ๊ณตํ†ต์ปฌ๋Ÿผ๋ช…๋งŒ ์žˆ์–ด์•ผํ•œ๋‹ค. 2๊ฐœ ์ด์ƒ ์žˆ์œผ๋ฉด ์—‰๋šฑํ•œ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.

    FROM ์ ˆ์—์„œ NATURAL JOIN ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด ์กฐ์ธ ์กฐ๊ฑด์„ ์ ์–ด์ค€๋‹ค.

    WHERE์€ ๊ฒ€์ƒ‰์กฐ๊ฑด์„ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•œ๋‹ค.

    ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์กฐ์ธ ์กฐ๊ฑด๊ณผ ๊ฒ€์ƒ‰์กฐ๊ฑด์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ฐ€๋…์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

     

    SELECT EMPNO, ENAME, DEPTNO
    FROM EMP NATURAL JOIN DEPT
    WHERE DEPTNO = 30;

    ์กฐ์ธ์— ์ฐธ์—ฌํ•˜๋Š” ํ…Œ์ด๋ธ”์— ๋ฐ˜๋“œ์‹œ ํ•œ๊ฐœ์˜ ๊ณตํ†ต์ปฌ๋Ÿผ์ด ์žˆ์–ด์•ผ ์ •ํ™•ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜ํ™˜๋˜๋ฉฐ,

    ๋‘ ๊ฐœ ์ด์ƒ์˜ ๊ณตํ†ต์ปฌ๋Ÿผ์ด ์žˆ๋‹ค๋ฉด ๋‘ ๊ณตํ†ต์ปฌ๋Ÿผ๊ฐ’ ๋ชจ๋‘ ๋งŒ์กฑํ•ด์•ผํ•ด์„œ ์ ์€ ๊ฒฐ๊ณผ๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

    ๊ณตํ†ต์ปฌ๋Ÿผ ์‚ฌ์šฉ์‹œ ๋ณ„์นญ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ์˜ค๋ผํด์ด ์ž๋™์œผ๋กœ ๊ณตํ†ต ์ปฌ๋Ÿผ์„ ์ฐพ์•„์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ„์นญ ์‚ฌ์šฉ ์‹œ ์—๋Ÿฌ ๋ฐœ์ƒ.

     

     

    using ์ ˆ

    SELECT ํ…Œ์ด๋ธ”1.์ปฌ๋Ÿผ, ํ…Œ์ด๋ธ”2.์ปฌ๋Ÿผ
    FROM ํ…Œ์ด๋ธ”1 [INNER] JOIN ํ…Œ์ด๋ธ”2 USING(๊ณตํ†ต์ปฌ๋Ÿผ)
    [WHERE ๊ฒ€์ƒ‰์กฐ๊ฑด];

    natural join์€ ์˜ค๋ผํด์ด ๊ณตํ†ต์ปฌ๋Ÿผ์„ ์ž๋™์œผ๋กœ ์ฐพ์•„์ฃผ๋Š”๋ฐ using์€ ๋‚ด๊ฐ€ ์ง์ ‘ ๊ณตํ†ต์ปฌ๋Ÿผ์„ ๋ช…์‹œํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

    ๊ณตํ†ต์ปฌ๋Ÿผ์ด ์—ฌ๋Ÿฌ๊ฐœ์ธ ๊ฒฝ์šฐ์— ๋‚ด๊ฐ€ ์ง์ ‘ ๋ช…์‹œ์ ์œผ๋กœ ์–ด๋–ค ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ์กฐ์ธํ•  ๊ฑด์ง€ ์ง€์ •ํ•œ๋‹ค. natural join๊ณผ ๊ฐ™์ด ๊ณตํ†ต์ปฌ๋Ÿผ์—๋Š” ๋ณ„์นญ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

    ์˜ค๋ผํด ์กฐ์ธ์˜ ์ดํ€„์กฐ์ธ๊ณผ ๋™์ผํ•œ ์‹คํ–‰๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

     

     

    using์„ ์‚ฌ์šฉํ•ด ๊ณตํ†ต์ปฌ๋Ÿผ์„ ๋ช…์‹œํ•œ๋‹ค

     

     

    on ์ ˆ

    SELECT ํ…Œ์ด๋ธ”1.์ปฌ๋Ÿผ, ํ…Œ์ด๋ธ”2.์ปฌ๋Ÿผ
    FROM ํ…Œ์ด๋ธ”1 [INNER] JOIN ํ…Œ์ด๋ธ”2 ON ์กฐ์ธ์กฐ๊ฑด
    [WHERE ๊ฒ€์ƒ‰์กฐ๊ฑด];

    non-equi ์กฐ์ธ ๋˜๋Š” ์ž„์˜ ์กฐ๊ฑด์œผ๋กœ ์กฐ์ธ์‹œ ์‚ฌ์šฉ

    ์กฐ์ธํ•  ์ปฌ๋Ÿผ์„ ๋ช…์‹œํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

    ๋ณต์žกํ•œ ์กฐ๊ฑด์˜ ์กฐ์ธ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. (์„œ๋ธŒ์ฟผ๋ฆฌ, AND/OR์—ฐ์‚ฐ์ž, EXIST, IN ์—ฐ์‚ฐ์ž)

    FROM์—์„œ JOIN ํ‚ค์›Œ๋“œ ์•ž๋’ค๋กœ ์กฐ์ธํ•  ํ…Œ์ด๋ธ”๋ช… ์ง€์ •ํ•˜๊ณ  ON ์ ˆ์—์„œ ์กฐ์ธ์กฐ๊ฑด์„ ๋ช…์‹œํ•œ๋‹ค

     

    SELECT ENAME, DNAME, E.DEPTNO
    FROM EMP E JOIN DEPT D
    ON E.DEPTNO = D.DEPTNO;

    ๋ณ„์นญ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ON์ ˆ์— ์ดํ€„์กฐ๊ฑด๋„ ์“ธ์ˆ˜ ์žˆ๋‹ค. WHERE ์ ˆ์„ ์‚ฌ์šฉํ•ด ๊ฒ€์ƒ‰์กฐ๊ฑด์„ ์ง€์ •ํ•œ๋‹ค.

     

     

    3๊ฐœ ํ…Œ์ด๋ธ” ์กฐ์ธํ•˜๊ธฐ // ์‚ฌ์›์ •๋ณด, ๋ถ€์„œ์ •๋ณด ๋ฐ ์›”๊ธ‰ ๋“ฑ๊ธ‰ ์กฐํšŒ

     

    ์‚ฌ์›ํ…Œ์ด๋ธ”๊ณผ ๋ถ€์„œ ํ…Œ์ด๋ธ”์„ ON ์ ˆ ์‚ฌ์šฉํ•ด ์กฐ์ธ, ๋‚˜์ค‘์— ์ถ”๊ฐ€๋กœ ๋“ฑ๊ธ‰ ํ…Œ์ด๋ธ”๊ณผ ์กฐ์ธ.

    ๋น„๊ต์—ฐ์‚ฐ์ž ์‚ฌ์šฉํ•˜๋Š” ๋…ผ์ดํ€„์กฐ์ธ์˜ ๊ฒฝ์šฐ ON์ ˆ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

     

     

    SELECT E.ENAME ์‚ฌ์›๋ช…, D.DNAME ๋ถ€์„œ๋ช…, S.GRADE ๋“ฑ๊ธ‰
    FROM EMP E JOIN DEPT D
    USING(DEPTNO)
               JOIN SALGRADE S
    ON E.SAL BETWEEN S.LOSAL AND S.HISAL;

    ๊ณตํ†ต์ปฌ๋Ÿผ์—๋Š” ON์ ˆ ๋Œ€์‹  USING ์ ˆ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.

    SELECT EMPNO, ENAME, DNAME, SAL
    FROM EMP E JOIN DEPT D
    ON E.DEPTNO = D.DEPTNO
    AND SAL IN (800);

    ์ƒ๋Ÿฌ๋ฆฌ๊ฐ€ 800์ธ ์‚ฌ์›์˜ ์ •๋ณด ์ถœ๋ ฅํ•˜๊ธฐ

     

     

    OUTER ์กฐ์ธ

    LEFT / RIGHT / FULL

    SELECT ํ…Œ์ด๋ธ”1.์ปฌ๋Ÿผ, ํ…Œ์ด๋ธ”2.์ปฌ๋Ÿผ
    FORM ํ…Œ์ด๋ธ”1 LEFT|RHINGT|FULL OUTER JOIN ํ…Œ์ด๋ธ”2
    ON ์กฐ์ธ์กฐ๊ฑด | USING(์ปฌ๋Ÿผ)
    [WHERE ๊ฒ€์ƒ‰์กฐ๊ฑด];

    ์ขŒ์ธก/์šฐ์ธก์— ๊ธฐ์ˆ ํ•œ ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ํ–‰๋“ค์„ ์กฐ์ธ์กฐ๊ฑด ์ผ์น˜ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด ๋ชจ๋‘ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค.

    FULL OUTER JOIN ์€ LEFT JOIN๊ณผ RIGHT JOIN ์˜ ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์ง‘ํ•ฉ์œผ๋กœ ์ฒ˜๋ฆฌํ•œ ๊ฒฐ๊ณผ์™€ ๋™์ผํ•˜๋‹ค.

     

    SELECT E.ENAME ์‚ฌ์›๋ช…, M.ENAME ๊ด€๋ฆฌ์ž๋ช…
    FROM EMP E LEFT OUTER JOIN EMP M
    ON E.MGR = M.EMPNO;

    OUTER JOIN์„ ์‚ฌ์šฉํ•ด ์‚ฌ์›๋“ค์˜ ๋งค๋‹ˆ์ € ์ •๋ณด ์ถœ๋ ฅํ•˜๊ธฐ

     

     

     

    ์„œ๋ธŒ์ฟผ๋ฆฌ

    ํ•˜๋‚˜์˜ SELECT ๋งŒ์œผ๋กœ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์—†์„๋•Œ, SELECT ๋‘๋ฒˆ ๋‚ ๋ฆด๊บผ ํ•œ๊บผ๋ฒˆ์— ํ•ด๋ฒ„๋ฆฌ์ž!

    select๋ฌธ ์•ˆ์— ๋˜ ํ•˜๋‚˜์˜ select๋ฌธ์„ ์ค‘์ฒฉํ•˜๋Š” ๊ฒƒ์ด ์„œ๋ธŒ์ฟผ๋ฆฌ์ด๋ฉฐ ๋ฐ”๊นฅ ์ชฝ SELECT๋ฌธ์„ ๋ฉ”์ธ์ฟผ๋ฆฌ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

    ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ๋ฐ˜๋“œ์‹œ ๊ด„ํ˜ธ ์‚ฌ์šฉ

    ๋ฉ”์ธ์ฟผ๋ฆฌ์—์„œ ์„œ๋ธŒ์ฟผ๋ฆฌ ์ปฌ๋Ÿผ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค

    SELECT,FROM,WHERE,HAVING,ORDER BY,UPDATE,INSERT INTO์ ˆ์—๋„ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

    ์„œ๋ธŒ์ฟผ๋ฆฌ์—๋Š” GROUP BY๋Š” ์“ฐ์—ฌ๋„ ORDER BY ๋Š” ์‚ฌ์šฉ๋ถˆ๊ฐ€

     

     

    ์Šค์ฝง๊ณผ ๊ฐ™์€ ๋ถ€์„œ ์‚ฌ๋žŒ๋“ค ์ฐพ๊ธฐ

     

    1. EMPํ…Œ์ด๋ธ”์—์„œ ์Šค์ฝง์˜ ๋ถ€์„œ๋ฒˆํ˜ธ๋ฅผ ์ฐพ๋Š”๋‹ค (์„œ๋ธŒ์ฟผ๋ฆฌ)

    2. EMP ํ…Œ์ด๋ธ”์—์„œ 1๋ฒˆ์—์„œ ์ฐพ์€ ๋ถ€์„œ๋ฒˆํ˜ธ๋ฅผ ๊ฐ€์ง„ ์‚ฌ๋žŒ์˜ ์ด๋ฆ„์„ ์ถœ๋ ฅํ•œ๋‹ค. (๋ฉ”์ธ์ฟผ๋ฆฌ)

     

    ์กฐํšŒ๋œ ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ’์ด ๋‹จ์ผํ–‰์ธ์ง€ ๋ณต์ˆ˜ํ–‰์ธ์ง€์— ๋”ฐ๋ผ ์—ฐ์‚ฐ์ž๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

     

     

    ๋‹จ์ผํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ

    ์„œ๋ธŒ์ฟผ๋ฆฌ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ํ•œ๊ฐœ์˜ ํ–‰์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค

    ๋‹จ์ผํ–‰ ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ (= , > , < , >= , <= , != ์™€ ๊ฐ™์€ ๋น„๊ต์—ฐ์‚ฐ์ž )

    ๊ทธ๋ฃนํ•จ์ˆ˜๋„ ๋‹จ์ผํ–‰ ๋ฆฌํ„ด

    EMP ํ…Œ์ด๋ธ”์—์„œ ์‚ฌ์›๋ฒˆํ˜ธ๊ฐ€ 7521์˜ ์—…๋ฌด์™€ ๊ฐ™๊ณ  ๊ธ‰์—ฌ๊ฐ€ ์‚ฌ์›๋ฒˆํ˜ธ๊ฐ€ 7934๋ณด๋‹ค ๋งŽ์€ ์‚ฌ์›์˜ ์‚ฌ์›๋ฒˆํ˜ธ, ์ด๋ฆ„, ๋‹ด๋‹น์—…๋ฌด,์ž…์‚ฌ์ผ์ž, ๊ธ‰์—ฌ๋ฅผ ์ถœ๋ ฅ

     

     

    ๋ณต์ˆ˜ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ

    ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ํ–‰์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

    ๋ณต์ˆ˜ํ–‰ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•จ. (IN, ANY, ALL, EXISTS)

    ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฐ์‚ฐ์ž๊ฐ€ ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌ๋ถ„ํ•ด์•ผ ํ•œ๋‹ค.

     

     

    IN ์—ฐ์‚ฐ์ž

    ๋ฉ”์ธ์ฟผ๋ฆฌ์˜ ๋น„๊ต์กฐ๊ฑด์ด ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ์ค‘์—์„œ ํ•˜๋‚˜๋ผ๋„ ์ผ์น˜ํ•˜๋ฉด ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ.

    SELECT * FROM EMP
    WHERE SAL IN (SELECT SAL
    		FROM EMP
    		WHERE ENAME IN ('MILLER', 'SCOTT'));

     

     

    ALL์—ฐ์‚ฐ์ž

    ๋ณต์ˆ˜ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ฉ”์ธ ์ฟผ๋ฆฌ์˜ WHERE ์ ˆ์—์„œ ๋ถ€๋“ฑํ˜ธ ์กฐ๊ฑด์œผ๋กœ ๋น„๊ต๋  ๋•Œ ์‚ฌ์šฉ๋œ๋‹ค.

    ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ ๋ฐ˜ํ™˜๋˜๋Š” ํ–‰๋“ค ์ „์ฒด์— ๋Œ€ํ•œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค.

    ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ ๋ฐ˜ํ™˜๋˜๋Š” ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’์„ ๋น„๊ต

    ์ง์—…์ด ์„ธ์ผ์ฆˆ์ธ ์‚ฌ์›์˜ ์ตœ์†Œ ์›”๊ธ‰๋ณด๋‹ค ์ ์€ ์›”๊ธ‰์„ ๋ฐ›๋Š” ์‚ฌ์›๋“ค์˜ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ

     

    ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ๋ฐ˜ํ™˜๋œ ๋ชจ๋“  ๊ฐ’๋ณด๋‹ค ์ž‘์•„์•ผ ์ตœ์†Œ์›”๊ธ‰๋ณด๋‹ค ์ ์€ ์›”๊ธ‰์„ ๋ฐ›๋Š”๋‹ค๋Š” ์กฐ๊ฑด์ด ์ผ์น˜ํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋ž˜์„œ ALL ์—ฐ์‚ฐ์ž๋Š” ์ตœ๋Œ“๊ฐ’ ์ตœ์†Ÿ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋น„๊ตํ•˜๋Š”๋ฐ ์ด์šฉ๋œ๋‹ค.

     

     

    ANY ์—ฐ์‚ฐ์ž

    ALL ์—ฐ์‚ฐ์ž์™€ ์‚ฌ์šฉ๋ฐฉ๋ฒ•์ด ๋น„์Šทํ•˜๋‹ค. 

    ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ ๋ฐ˜ํ™˜๋˜๋Š” ํ–‰๋“ค ์ „์ฒด์— ๋Œ€ํ•ด ํ•˜๋‚˜์˜ ์กฐ๊ฑด๋งŒ ๋งŒ์กฑํ•˜๋ฉด ๋œ๋‹ค.

    ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ’๋“ค ์ค‘ ์–ด๋Š ํ•˜๋‚˜์˜ ๊ฐ’๋ณด๋‹ค ํฌ๊ธฐ๋งŒ ํ•˜๋ฉด ๋œ๋‹ค.

     

    SELECT ENAME, DEPTNO, SAL
    FROM EMP
    WHERE SAL > ANY (SELECT SAL
    		FROM EMP
    		WHERE JOB = "SALESMAN";

    ์‚ฌ์› ํ…Œ์ด๋ธ”์—์„œ ์ง์—…์ด ์„ธ์ผ์ฆˆ์ธ ์‚ฌ์›์˜ ์ตœ์†Œ ์›”๊ธ‰๋ณด๋‹ค ๋งŽ์€ ์›”๊ธ‰์„ ๋ฐ›๋Š” ์‚ฌ์›์˜ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ.

     

     

    EXISTS ์—ฐ์‚ฐ์ž

    ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ์‹คํ–‰๊ฒฐ๊ณผ์— ๋”ฐ๋ผ ๋ฉ”์ธ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์žฅ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ ๊ฒ€์ƒ‰๋œ ๊ฒฐ๊ณผ๊ฐ€ ํ•˜๋‚˜๋„ ์—†์œผ๋ฉด ์ „๋‹ฌ๊ฐ’์ด FALSE์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค.

     

    SELECT * FORM EMP
    WHERE EXISTS ( SELECT EMPNO
    		FROM EMP
                    WHERE COMM IS NOT NULL );

    ์‚ฌ์›๋“ค ์ค‘ ์ปค๋ฏธ์…˜์„ ๋ฐ›๋Š” ์‚ฌ์›์ด ํ•œ ๋ช…์ด๋ผ๋„ ์žˆ์œผ๋ฉด ๋ชจ๋“  ์‚ฌ์› ์ •๋ณด ์ถœ๋ ฅํ•˜๊ธฐ

     

     

    ๋‹ค์ค‘์ปฌ๋Ÿผ ์„œ๋ธŒ์ฟผ๋ฆฌ

    ์„œ๋ธŒ์ฟผ๋ฆฌ์—์„œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ปฌ๋Ÿผ๊ฐ’์„ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๋ฉ”์ธ์ฟผ๋ฆฌ์˜ ์กฐ๊ฑด์ ˆ๊ณผ ๋น„๊ตํ•˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ.

    ๋ฉ”์ธ์ฟผ๋ฆฌ์˜ ์กฐ๊ฑด์ ˆ์—์„œ๋„ ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ์ปฌ๋Ÿผ์ˆ˜๋งŒํผ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค. ์ผ๋Œ€์ผ ๋งค์นญ์ด ๋˜์–ด์•ผํ•จ.

     

    PAIRWISE

    ์ปฌ๋Ÿผ์„ ์Œ์œผ๋กœ ๋ฌถ์–ด์„œ ๋™์‹œ๋น„๊ต

    SELECT DEPTNO, EMPNO, ENAME, SAL
    FROM EMP
    WHERE (DEPTNO, SAL) IN (SELECT DEPTNO, MAX(SAL)
    			FROM EMP
    			GROUP BY DEPTNO);

     

    UNPAIRWISE

    ์ปฌ๋Ÿผ๋ณ„๋กœ ๋‚˜๋ˆ„์–ด ๋น„๊ตํ•˜๊ณ  ๋‚˜์ค‘์— AND ์—ฐ์‚ฐ ์ฒ˜๋ฆฌ

    SELECT DEPTNO, EMPNO, ENAME, SAL
    FROM EMP
    WHERE DEPTNO IN (SELECT DEPTNO
    		FROM EMP
    		GROUP BY DEPTNO)
    AND SAL IN (SELECT MAX(SAL)
    	    FROM EMP
    	    GROUP BY DEPTNO);

     

     

    ์ธ๋ผ์ธ๋ทฐ

    SELECT column_list
    FROM (์„œ๋ธŒ์ฟผ๋ฆฌ) alias
    WHERE ์กฐ๊ฑด์‹;

    FROM ๋’ค์— ํ…Œ์ด๋ธ”๋ช…์ด ์•ˆ์˜ค๊ณ  ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ํ•˜๋‚˜์˜ ๊ฐ€์ƒํ…Œ์ด๋ธ”์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ.

    ํ…Œ์ด๋ธ” 2๊ฐœ๋ฅผ ์กฐ์ธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ฒ€์ƒ‰ํ•ด๋ด์•ผ ํ•  ๋ฐ์ดํ„ฐ ๋ฒ”์œ„๊ฐ€ ์•„์ฃผ ๋Š˜์–ด๋‚œ๋‹ค. ๊ทผ๋ฐ ์ธ๋ผ์ธ๋ทฐ๋กœ ํ•„์š”ํ•œ ํ–‰๊ณผ ์ปฌ๋Ÿผ๋งŒ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ง‘ํ•ฉ์„ ์žฌ์ •์˜ํ•˜๋ฉด ํ›จ์”ฌ ์ ์€ ์ˆ˜์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์กฐ์ธ์— ์ฐธ์—ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ํšจ์œจ์ ์œผ๋กœ ์ฟผ๋ฆฌ๋ฌธ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

     

    SELECT E.DEPTNO, TOTAL_SUM , TOTAL_AVG, CNT
    FROM (SELECT DEPTNO, SUM(SAL) TOTAL_SUM, AVG(SAL) TOTAL_AVG, COUNT(*) CNT
            FROM EMP
            GROUP BY DEPTNO ) E, DEPT D
    WHERE E.DEPTNO = D.DEPTNO;

    ์‚ฌ์› ํ…Œ์ด๋ธ”๊ณผ ๋ถ€์„œ ํ…Œ์ด๋ธ”์—์„œ ๋ถ€์„œ๋ณ„ ์›”๊ธ‰ ์ดํ•ฉ๊ณผ ํ‰๊ท  ๊ทธ๋ฆฌ๊ณ  ๋ถ€์„œ๋ณ„ ์ธ์›์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๊ธฐ

     

     

    ๐Ÿ˜œ NEXT : SQL ์กฐ์ธ๊ณผ ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ์‹ค์Šต๋ฌธ์ œ ํ’€์–ด๋ณด๊ธฐ

    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

๊ฐœ๋ฐœ๊ณต๋ถ€