๐Ÿ€ SQL ํ™œ์šฉ

์ ค๋กœยท2023๋…„ 9์›” 4์ผ
1

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

๋ชฉ๋ก ๋ณด๊ธฐ
4/4
post-thumbnail

โ˜˜๏ธ ํ‘œ์ค€ ์กฐ์ธ

1. NATURAL JOIN

๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์ปฌ๋Ÿผ ์ „์ฒด์— ๋Œ€ํ•œ ๋“ฑ๊ฐ€ ์กฐ์ธ, USING ์กฐ๊ฑด์ ˆ์ด๋‚˜ ON ์กฐ๊ฑด์ ˆ ์‚ฌ์šฉ ๋ถˆ๊ฐ€, ๊ฐ™์€ ๋ฐ์ดํ„ฐ ์œ ํ˜• ์ปฌ๋Ÿผ๋งŒ ์กฐ์ธ ๊ฐ€๋Šฅ, ์•จ๋ฆฌ์–ด์Šค๋‚˜ ํ…Œ์ด๋ธ”๋ช… ์‚ฌ์šฉ ๋ถˆ๊ฐ€

SELECT ์ปฌ๋Ÿผ, ... FROM ํ…Œ์ด๋ธ”1 NATURAL JOIN ํ…Œ์ด๋ธ”2

2. INNER JOIN

ํ–‰์— ๋™์ผํ•œ ๊ฐ’์ด ์žˆ๋Š” ์ปฌ๋Ÿผ ์กฐ์ธ, JOIN์˜ ๋””ํดํŠธ ์˜ต์…˜, USING ์กฐ๊ฑด์ ˆ์ด๋‚˜ ON ์กฐ๊ฑด์ ˆ ํ•„์ˆ˜, CROSS JOIN์ด๋‚˜ OUTER JOIN๊ณผ ๋™์‹œ ์‚ฌ์šฉ ๋ถˆ๊ฐ€, ๋‘ ํ…Œ์ด๋ธ”์— ๋™์ผ ์ด๋ฆ„ ์ปฌ๋Ÿผ์ด ์žˆ์„ ๊ฒฝ์šฐ SELECT์ ˆ์— ์•จ๋ฆฌ์–ด์Šค ํ•„์ˆ˜

SELECT ์ปฌ๋Ÿผ, ... FROM ํ…Œ์ด๋ธ”1 A, ํ…Œ์ด๋ธ”2 B WHERE A.์ปฌ๋Ÿผ = B.์ปฌ๋Ÿผ

SELECT ์ปฌ๋Ÿผ, ... FROM ํ…Œ์ด๋ธ”1 A INNER JOIN ํ…Œ์ด๋ธ”2 B ON A.์ปฌ๋Ÿผ = B.์ปฌ๋Ÿผ 
  • UISING ์กฐ๊ฑด์ ˆ : ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์ปฌ๋Ÿผ ์ค‘ ๋“ฑ๊ฐ€ ์กฐ์ธ ๋Œ€์ƒ ์ปฌ๋Ÿผ ์„ ํƒ, SQL Server์—์„œ๋Š” ์ง€์› X, ์กฐ๊ฑด์ ˆ์— ์•จ๋ฆฌ์–ด์Šค๋‚˜ ํ…Œ์ด๋ธ”๋ช… ๋ถˆ๊ฐ€
SELECT ์ปฌ๋Ÿผ, ... FROM ํ…Œ์ด๋ธ”1 A, ํ…Œ์ด๋ธ”2 B USING (์ปฌ๋Ÿผ๋ช…) 
  • ON ์กฐ๊ฑด์ ˆ : ๋‹ค๋ฅธ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์ปฌ๋Ÿผ ๊ฐ„ ์กฐ์ธ ๊ฐ€๋Šฅ(์•จ๋ฆฌ์–ด์Šค๋‚˜ ํ…Œ์ด๋ธ”๋ช… ํ•„์ˆ˜)
SELECT ์ปฌ๋Ÿผ, ... FROM ํ…Œ์ด๋ธ”1 A INNER JOIN ํ…Œ์ด๋ธ”2 B ON A.์ปฌ๋Ÿผ = B.์ปฌ๋Ÿผ  

3. CROSS JOIN

๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ์กฐํ•ฉ์œผ๋กœ JOIN

SELECT ์ปฌ๋Ÿผ, ... FROM ํ…Œ์ด๋ธ”1, ํ…Œ์ด๋ธ”2

SELECT ์ปฌ๋Ÿผ, ... FROM ํ…Œ์ด๋ธ”1 CROSS JOIN ํ…Œ์ด๋ธ”2

4. OUTER JOIN

์กฐ์ธ ์กฐ๊ฑด์—์„œ ํ–‰์— ๋™์ผํ•œ ๊ฐ’์ด ์—†๋Š” ์ปฌ๋Ÿผ ์กฐ์ธ, USING ์กฐ๊ฑด์ ˆ์ด๋‚˜ ON ์กฐ๊ฑด์ ˆ ํ•„์ˆ˜

  • LEFT OUTER JOIN : ์ขŒ์ธก ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ์กฐํšŒ ํ›„ ์šฐ์ธก ํ…Œ์ด๋ธ” ์กฐ์ธ ๋Œ€์ƒ ๋ฐ์ดํ„ฐ ์กฐํšŒ
SELECT ์ปฌ๋Ÿผ, ... FROM ํ…Œ์ด๋ธ”1 A, ํ…Œ์ด๋ธ”2 B A.์ปฌ๋Ÿผ = B.์ปฌ๋Ÿผ

SELECT ์ปฌ๋Ÿผ, ... FROM ํ…Œ์ด๋ธ”1 A LEFT OUTER JOIN ํ…Œ์ด๋ธ”2 B ON A.์ปฌ๋Ÿผ = B.์ปฌ๋Ÿผ
  • RIGHT OUTER JOIN : LEFT OUTER JOIN์˜ ๋ฐ˜๋Œ€ ๊ฐœ๋…

  • FULL OUTER JOIN : LEFT์™€ RIGHT OUTER JOIN ํฌํ•จ

SELECT ์ปฌ๋Ÿผ, ... FROM ํ…Œ์ด๋ธ”1 A FULL OUTER JOIN ํ…Œ์ด๋ธ”2 B ON A.์ปฌ๋Ÿผ = B.์ปฌ๋Ÿผ  

โ˜˜๏ธ ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž

1. ์ง‘ํ•ฉ ์—ฐ์‚ฐ์ž

์กฐ์ธ ์—†์ด ์—ฌ๋Ÿฌ ํ…Œ์ด๋ธ”์˜ ๊ด€๋ จ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ์—ฐ์‚ฐ์ž

2. UNION (ํ•ฉ์ง‘ํ•ฉ)

์ปฌ๋Ÿผ ์ˆ˜์™€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ๋ชจ๋‘ ๋™์ผํ•œ ํ…Œ์ด๋ธ” ๊ฐ„ ์—ฐ์‚ฐ๋งŒ ๊ฐ€๋Šฅ
UNION ์€ ์ •๋ ฌ O

SELECT ์ปฌ๋Ÿผ, ... FROM ํ…Œ์ด๋ธ” A WHERE ์กฐ๊ฑด์ ˆ UNION SELECT ํ…Œ์ด๋ธ” B WHERE ์กฐ๊ฑด์ ˆ
  • UNION ALL : ์ค‘๋ณต๋œ ํ–‰๋„ ์ „๋ถ€ ์ถœ๋ ฅํ•˜๋Š” ํ•ฉ์ง‘ํ•ฉ, ์ •๋ ฌ X
SELECT ์ปฌ๋Ÿผ, ... FROM ํ…Œ์ด๋ธ” A WHERE ์กฐ๊ฑด์ ˆ UNION ALL SELECT ํ…Œ์ด๋ธ” B WHERE ์กฐ๊ฑด์ ˆ

3. INTERSECT (๊ต์ง‘ํ•ฉ)

SELECT ์ปฌ๋Ÿผ, ... FROM ํ…Œ์ด๋ธ” A WHERE ์กฐ๊ฑด์ ˆ INTERSECT SELECT ํ…Œ์ด๋ธ” B WHERE ์กฐ๊ฑด์ ˆ

4. MINUS, EXCEPT (์ฐจ์ง‘ํ•ฉ)

SELECT ์ปฌ๋Ÿผ, ... FROM ํ…Œ์ด๋ธ” A WHERE ์กฐ๊ฑด์ ˆ MINUS SELECT ํ…Œ์ด๋ธ” B WHERE ์กฐ๊ฑด์ ˆ

โ˜˜๏ธ ๊ณ„์ธตํ˜• ์งˆ์˜ (Hierarchical Query)

1. ๊ณ„์ธตํ˜• ์งˆ์˜

๊ณ„์ธตํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

  • ๊ณ„์ธตํ˜• ๋ฐ์ดํ„ฐ : ์—”ํ„ฐํ‹ฐ๋ฅผ ์ˆœํ™˜๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋กœ ์„ค๊ณ„ํ•  ๋•Œ ๋ฐœ์ƒ

  • CONNECT BY : ํŠธ๋ฆฌ ํ˜•ํƒœ์˜ ๊ตฌ์กฐ๋กœ ์ฟผ๋ฆฌ ์ˆ˜ํ–‰ (๋ฃจํŠธ ๋…ธ๋“œ๋ถ€ํ„ฐ ํ•˜์œ„ ๋…ธ๋“œ์˜ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰)

    ยฐ START WITH : ์‹œ์ž‘ ์กฐ๊ฑด ์ง€์ •
    ยฐ CONNECT BY PRIOR : ์กฐ์ธ ์กฐ๊ฑด ์ง€์ • LEVEL : ๊ฒ€์ƒ‰ ํ•ญ๋ชฉ์˜ ๊นŠ์ด, ์ตœ์ƒ์œ„ ๊ณ„์ธต์˜ ๋ ˆ๋ฒจ์€ 1
    ยฐ CONNECT_BY_ROOT : ์ตœ์ƒ์œ„ ๊ณ„์ธต ๊ฐ’ ํ‘œ์‹œ
    ยฐ CONNECT_BY_ISLEAF : ์ตœํ•˜์œ„ ๊ณ„์ธต ๊ฐ’ ํ‘œ์‹œ
    ยฐ SYS_CONNECT_BY_PATH : ๊ณ„์ธต ๊ตฌ์กฐ์˜ ์ „๊ฐœ ๊ฒฝ๋กœ ํ‘œ์‹œ

  • CONNECT BY์ ˆ์˜ ๋ฃจํ”„ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ‚ค์›Œ๋“œ

    ยฐ NOCYCLE : ์ˆœํ™˜๊ตฌ์กฐ์˜ ๋ฐœ์ƒ์ง€์ ๊นŒ์ง€๋งŒ ์ „๊ฐœ
    ยฐ CONNECT_BY_ISCYCLE : ์ˆœํ™˜๊ตฌ์กฐ ๋ฐœ์ƒ์ง€์  ํ‘œ์‹œ(๋ถ€๋ชจ ๋…ธ๋“œ์™€ ์ž์‹ ๋…ธ๋“œ๊ฐ€ ๊ฐ™์„ ๋•Œ 1 ์•„๋‹ˆ๋ฉด 0 ์ถœ๋ ฅ)

  • LPAD
    ๊ณ„์ธตํ˜• ์กฐํšŒ ๊ฒฐ๊ณผ๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ(LEVEL ๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ ์ •๋ ฌ)

2. SQL Server ๊ณ„์ธตํ˜• ์งˆ์˜

CTE(Common Table Expression)๋กœ ์žฌ๊ท€ ํ˜ธ์ถœ


โ˜˜๏ธ ์„œ๋ธŒ์ฟผ๋ฆฌ

ํ•˜๋‚˜์˜ SQL๋ฌธ ์•ˆ์˜ SQL๋ฌธ

1. ์ข…๋ฅ˜

- ๋™์ž‘ ๋ฐฉ์‹์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜

ยฐ ๋น„์—ฐ๊ด€ ์„œ๋ธŒ์ฟผ๋ฆฌ

๋ฉ”์ธ์ฟผ๋ฆฌ ์ปฌ๋Ÿผ์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ, ๋ฉ”์ธ ์ฟผ๋ฆฌ์— ๊ฐ’์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์ฃผ๋กœ ์‚ฌ์šฉ.

Access Subquery : ์ œ๊ณต์ž ์—ญํ• 
Filter Subquery : ํ™•์ธ์ž ์—ญํ• 
Early filter Subquery : ๋ฐ์ดํ„ฐ ํ•„ํ„ฐ๋ง ์—ญํ• 

ยฐ ์—ฐ๊ด€ ์„œ๋ธŒ ์ฟผ๋ฆฌ

๋ฉ”์ธ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๋ฅผ ์กฐ๊ฑด์ด ๋งž๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์ฃผ๋กœ ์‚ฌ์šฉํ•จ

- ๋ฐ˜ํ™˜ ๋ฐ์ดํ„ฐ ํ˜•ํƒœ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜

ยฐ ๋‹จ์ผ ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ : ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ 1๊ฑด ์ดํ•˜์ธ ์„œ๋ธŒ์ฟผ๋ฆฌ, ๋‹จ์ผ ํ–‰ ๋น„๊ต ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ

ยฐ ๋‹ค์ค‘ ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ : ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฑด์ธ ์„œ๋ธŒ์ฟผ๋ฆฌ, ๋‹ค์ค‘ ํ–‰ ๋น„๊ต ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ

โ€ป ๋‹ค์ค‘ํ–‰ ๋น„๊ต ์—ฐ์‚ฐ์ž

  1. IN : ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ ์ค‘ ํ•˜๋‚˜์˜ ๊ฐ’์ด๋ผ๋„ ๋™์ผํ•˜๋‹ค๋Š” ์กฐ๊ฑด
  2. ANY : ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ ์ค‘ ํ•˜๋‚˜์˜ ๊ฐ’์ด๋ผ๋„ ๋งŒ์กฑํ•œ๋‹ค๋Š” ์กฐ๊ฑด
  3. ALL : ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๋ชจ๋“  ๊ฒฐ๊ณผ ๊ฐ’์„ ๋งŒ์กฑํ•œ๋‹ค๋Š” ์กฐ๊ฑด
  4. EXISTS : ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ์กฑํ•˜๋Š” ๊ฐ’์ด ์กด์žฌํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜๋Š” ์กฐ๊ฑด

ยฐ ๋‹ค์ค‘ ์ปฌ๋Ÿผ ์„œ๋ธŒ์ฟผ๋ฆฌ : ์‹คํ–‰ ๊ฒฐ๊ณผ๋กœ ์—ฌ๋Ÿฌ ์ปฌ๋Ÿผ ๋ฐ˜ํ™˜, ์ฃผ๋กœ ๋ฉ”์ธ์ฟผ๋ฆฌ์˜ ์กฐ๊ฑด๊ณผ ๋น„๊ตํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ(๋น„๊ตํ•˜๊ณ ์ž ํ•˜๋Š” ์ปฌ๋Ÿผ์˜ ๊ฐœ์ˆ˜์™€ ์œ„์น˜๊ฐ€ ๋™์ผํ•ด์•ผ ํ•จ)

2. ์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ

๊ฐ’ ํ•˜๋‚˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ, SELECT์ ˆ์— ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ

3. ๋ทฐ

๊ฐ€์ƒ์˜ ํ…Œ์ด๋ธ”, FROM์ ˆ์— ์‚ฌ์šฉํ•˜๋Š” ๋ทฐ๋Š” ์ธ๋ผ์ธ ๋ทฐ๋ผ๊ณ  ํ•จ

  • ์žฅ์ 
  1. ๋…๋ฆฝ์„ฑ : ํ…Œ์ด๋ธ” ๊ตฌ์กฐ ๋ณ€๊ฒฝ ์ž๋™ ๋ฐ˜์˜
  2. ํŽธ๋ฆฌ์„ฑ : ์ฟผ๋ฆฌ๋ฅผ ๋‹จ์ˆœํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ, ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” SQL๋ฌธ์˜ ํ˜•ํƒœ๋ฅผ ๋ทฐ๋กœ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
  3. ๋ณด์•ˆ์„ฑ : ๋ทฐ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์ปฌ๋Ÿผ์„ ์ œ์™ธํ•  ์ˆ˜ ์žˆ์Œ

4. WITH

์„œ๋ธŒ์ฟผ๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ทฐ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ตฌ๋ฌธ


โ˜˜๏ธ ๊ทธ๋ฃน ํ•จ์ˆ˜

1. ANSI/ISO ํ‘œ์ค€ ๋ฐ์ดํ„ฐ ๋ถ„์„ ํ•จ์ˆ˜

์ง‘๊ณ„ํ•จ์ˆ˜, ๊ทธ๋ฃน ํ•จ์ˆ˜, ์œˆ๋„์šฐ ํ•จ์ˆ˜

2. ๊ทธ๋ฃน ํ•จ์ˆ˜

ํ•ฉ๊ณ„ ๊ณ„์‚ฐ ํ•จ์ˆ˜, NULL์„ ๋นผ๊ณ  ์ง‘๊ณ„ํ•จ, ๊ฒฐ๊ณผ๊ฐ’ ์—†๋Š” ํ–‰์€ ์ถœ๋ ฅ ์•ˆํ•จ

  • ROLLUP : GROUP BY๋กœ ๋ฌถ์ธ ์ปฌ๋Ÿผ์˜ ์†Œ๊ณ„ ๊ณ„์‚ฐ, ๊ณ„์ธต ๊ตฌ์กฐ๋กœ GROUP BY์˜ ์ปฌ๋Ÿผ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ๋ฉด ๊ฒฐ๊ณผ ๊ฐ’ ๋ฐ”๋€œ
GROUP BY ROLLUP(A,B)

A์™€ B๋ณ„ ์†Œ๊ณ„ / A ์†Œ๊ณ„ / ์ดํ•ฉ๊ณ„
  • CUBE : ์กฐํ•ฉ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ๊ฐ’์— ๋Œ€ํ•ด ๋‹ค์ฐจ์› ์ง‘๊ณ„
GROUP BY CUBE(A,B)

A์™€ B๋ณ„ ์†Œ๊ณ„ / A ์†Œ๊ณ„ / B์†Œ๊ณ„ / ์ดํ•ฉ๊ณ„
  • GROUPING SETS : ํŠน์ • ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์†Œ๊ณ„ ๊ณ„์‚ฐ, GROUP BY์˜ ์ปฌ๋Ÿผ ์ˆœ์„œ์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ๊ฐœ๋ณ„์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•จ
GROUP BY GROUPING SETS(A,B)

A๋ณ„ ์†Œ๊ณ„ / B๋ณ„ ์†Œ๊ณ„

3. GROUPING

๊ทธ๋ฃน ํ•จ์ˆ˜์—์„œ ์ƒ์„ฑ๋˜๋Š” ํ•ฉ๊ณ„๋ฅผ ๊ตฌ๋ถ„ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜, ์†Œ๊ณ„๋‚˜ ํ•ฉ๊ณ„๊ฐ€ ๊ณ„์‚ฐ๋˜๋ฉด 1 ์•„๋‹ˆ๋ฉด 0 ๋ฐ˜ํ™˜


โ˜˜๏ธ ์œˆ๋„์šฐ ํ•จ์ˆ˜

์—ฌ๋Ÿฌ ํ–‰ ๊ฐ„์˜ ๊ด€๊ณ„์ •์˜ ํ•จ์ˆ˜, ์ค‘์ฒฉ ๋ถˆ๊ฐ€

1. ์ˆœ์œ„ ํ•จ์ˆ˜

  • RANK : ์ค‘๋ณต ์ˆœ์œ„ ํฌํ•จ
  • DENSE_RANK : ์ค‘๋ณต ์ˆœ์œ„ ๋ฌด์‹œ(์ค‘๊ฐ„ ์ˆœ์œ„๋ฅผ ๋น„์šฐ์ง€ ์•Š์Œ)
  • ROW_NUMBER : ๋‹จ์ˆœํžˆ ํ–‰ ๋ฒˆํ˜ธ ํ‘œ์‹œ, ๊ฐ’์— ๋ฌด๊ด€ํ•˜๊ฒŒ ๊ณ ์œ ํ•œ ์ˆœ์œ„ ๋ถ€์—ฌ

2. ์ผ๋ฐ˜ ์ง‘๊ณ„ ํ•จ์ˆ˜

SUM, MAX, MIN, AVG, COUNT

3. ํ–‰ ์ˆœ์„œ ํ•จ์ˆ˜

  • FIRST_VALUE, LAST_VALUE : ์ฒซ ๊ฐ’, ๋ ๊ฐ’
  • LAG, LEAD : ์ด์ „ ํ–‰, ์ดํ›„ ํ–‰ ๋ž™๋ฆฟ

4. ๋น„์œจ ๊ด€๋ จ ํ•จ์ˆ˜

  • PERCENT_RANK() : ๋ฐฑ๋ถ„์œจ ์ˆœ์„œ
  • CUME_DIST() : ํ˜„์žฌ ํ–‰ ์ดํ•˜ ๊ฐ’์„ ํฌํ•จํ•œ ๋ˆ„์  ๋ฐฑ๋ถ„์œจ
  • NTILE(A) : ์ „์ฒด ๋ฐ์ดํ„ฐ A๋“ฑ๋ถ„
  • RATIO_TO_REPORT : ์ดํ•ฉ๊ณ„์— ๋Œ€ํ•œ ๊ฐ’์˜ ๋ฐฑ๋ถ„์œจ

โ˜˜๏ธ ์œˆ๋„์šฐ ํ•จ์ˆ˜ ๋ฌธ๋ฒ•

  • PARTITION BY : ๊ทธ๋ฃนํ•‘ ๊ธฐ์ค€

  • ORDER BY : ์ˆœ์œ„ ์ง€์ • ๊ธฐ์ค€

  • ์œˆ๋„์ž‰ ์ ˆ : ํ•จ์ˆ˜์˜ ๋Œ€์ƒ์ด ๋˜๋Š” ํ–‰ ๋ฒ”์œ„ ์ง€์ •

    ยฐ BETWEEN A AND B : ๊ตฌ๊ฐ„ ์ง€์ •

    1. N PRECEDING, N FOLLWING : N๋ฒˆ์งธ ์•ž ํ–‰, N๋ฒˆ์งธ ๋’ค ํ–‰
    2. UNBOUNDED PRECEDING, UNBOUNDED FOLLOWING : ์ฒซ ํ–‰, ๋ ํ–‰
    3. CURRENT ROW : ํ˜„์žฌ ํ–‰

    ยฐ ROWS, RANGE : ํ–‰ ์ง€์ •, ๊ฐ’์˜ ๋ฒ”์œ„ ์ง€์ •


โ˜˜๏ธ DCL

  1. DCL : ์œ ์ €๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๊ถŒํ•œ์„ ์ œ์–ดํ•˜๋Š” ๋ช…๋ น์–ด
  • GRANT : ๊ถŒํ•œ๋ถ€์—ฌ
GRANT ๊ถŒํ•œ ON ์˜ค๋ธŒ์ ํŠธ TO ์œ ์ €๋ช…
  • REVOKE : ๊ถŒํ•œ์ œ๊ฑฐ
REVOKE ๊ถŒํ•œ ON ์˜ค๋ธŒ์ ํŠธ TO ์œ ์ €๋ช…
  1. ๊ถŒํ•œ
  • SELECT, INSERT, UPDATE, ALTER, ALL
  • REFERENCES : ์ง€์ •๋œ ํ…Œ์ด๋ธ”์„ ์ฐธ์กฐํ•˜๋Š” ์ œ์•ฝ์กฐ๊ฑด์„ ์ƒ์„ฑํ•˜๋Š” ๊ถŒํ•œ
  • INDEX : ์ง€์ •๋œ ํ…Œ์ด๋ธ”์—์„œ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ถŒํ•œ
  1. Oracle์˜ ์œ ์ €
  • SCOTT : ํ…Œ์ŠคํŠธ์šฉ ์ƒ˜ํ”Œ ์œ ์ €
  • SYS : DBA ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋œ ์ตœ์ƒ์œ„ ์œ ์ €
  • SYSTEM : DB์˜ ๋ชจ๋“  ์‹œ์Šคํ…œ ๊ถŒํ•œ์ด ๋ถ€์—ฌ๋œ DBA
  1. ROLE
    ๊ถŒํ•œ์˜ ์ง‘ํ•ฉ, ๊ถŒํ•œ์„ ์ผ์ผ์ด ๋ถ€์—ฌํ•˜์ง€ ์•Š๊ณ  ROLE๋กœ ํŽธ๋ฆฌํ•˜๊ฒŒ ์—ฌ๋Ÿฌ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Œ

โ˜˜๏ธ ์ ˆ์ฐจํ˜• SQL

์ ˆ์ฐจํ˜• SQL

  • ์ผ๋ฐ˜์ ์ธ ๊ฐœ๋ฐœ์–ธ์–ด์ฒ˜๋Ÿผ ์ ˆ์ฐจ์ง€ํ–ฅ์ ์ธ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋Šฅ

  • SQL ๋ฌธ์˜ ์—ฐ์†์ ์ธ ์‹คํ–‰ ๋ฐ ์กฐ๊ฑด์— ๋”ฐ๋ฅธ ๋ถ„๊ธฐ์ฒ˜๋ฆฌ๋ฅผ ์ด์šฉํ•˜์—ฌ ํŠน์ • ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ €์žฅ ๋ชจ๋“ˆ ์ƒ์„ฑ ๊ฐ€๋Šฅ

  • PL/SQL
    ๋ธ”๋ก๊ตฌ์กฐ : ๋ธ”๋ก ๋‚ด์— DML, ์ฟผ๋ฆฌ, IF๋‚˜ LOOP ๋“ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

    ยฐ Declare(์„ ์–ธ๋ถ€) : ๋ธ”๋ก์—์„œ ์‚ฌ์šฉํ•  ๋ณ€์ˆ˜๋‚˜ ์ธ์ˆ˜์— ๋Œ€ํ•œ ์ •์˜
    ยฐ Begin(์‹คํ–‰๋ถ€) : ์ฒ˜๋ฆฌํ•  SQL๋ฌธ ์ •์˜
    ยฐ Exception(์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ถ€) : ๋ธ”๋ก์—์„œ ๋ฐœ์ƒํ•œ ์—๋Ÿฌ ์ฒ˜๋ฆฌ ๋กœ์ง ์ •์˜, ์œ ์ผํ•œ ์„ ํƒ ํ•ญ๋ชฉ

  • T-SQL

์‚ฌ์šฉ์ž ์ •์˜ ํ•จ์ˆ˜

์ ˆ์ฐจํ˜• SQL์„ ๋กœ์ง๊ณผ ํ•จ๊ป˜ DB๋‚ด์— ์ €์žฅํ•ด ๋†“์€ ๋ช…๋ น๋ฌธ ์ง‘ํ•ฉ, RETURN์„ ํ†ตํ•ด ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ ๊ฐ’ ๋ฐ˜ํ™˜

ํŠธ๋ฆฌ๊ฑฐ

DML๋ฌธ์ด ์ˆ˜ํ–‰๋˜์—ˆ์„๋•Œ ์ž๋™์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ
DCL๊ณผ TCL ์‹คํ–‰ ๋ถˆ๊ฐ€

ํ”„๋กœ์‹œ์ €

ํ”„๋กœ์‹œ์ €๋Š” ํŠธ๋ฆฌ๊ฑฐ์™€ ๋‹ค๋ฅด๊ฒŒ EXECUTE๋กœ ์‹คํ–‰
DCL๊ณผ TCL ์‹คํ–‰ ๊ฐ€๋Šฅ

profile
Back-End Developer ๐Ÿ๐ŸŽ

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด