๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ๐ŸŒฎ ๐Ÿ’ฌ
๐Ÿ“œ ์ž๊ฒฉ์ฆ/SQLD

[๋…ธ๋ž‘์ด] ์˜ค๋‹ต | ๊ณผ๋ชฉ 2 | SQL ๊ธฐ๋ณธ ๋ฐ ํ™œ์šฉ 51-98

by ๋ฐ”์ฟ„๋ฆฌ 2024. 2. 23.

 

51. ๋‹ค์ค‘ ์ปฌ๋Ÿผ(Multi Column) ์„œ๋ธŒ์ฟผ๋ฆฌ

: ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋กœ ์—ฌ๋Ÿฌ ์นผ๋Ÿผ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ๋ฉ”์ธ์ฟผ๋ฆฌ์˜ ์กฐ๊ฑด์ ˆ์— ์—ฌ๋Ÿฌ ์นผ๋Ÿผ์„ ๋™์‹œ์— ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค. ์„œ๋ธŒ์ฟผ๋ฆฌ์™€ ๋ฉ”์ธ์ฟผ๋ฆฌ์—์„œ ๋น„๊ตํ•˜๊ณ ์ž ํ•˜๋Š” ์นผ๋Ÿผ ๊ฐœ์ˆ˜์™€ ์นผ๋Ÿผ์˜ ์œ„์น˜๊ฐ€ ๋™์ผํ•ด์•ผ ํ•œ๋‹ค.

 

53. SET OPERATOR

- ํ•ฉ์ง‘ํ•ฉ : UNION

- ๊ต์ง‘ํ•ฉ : INTERSECTION

- ์ฐจ์ง‘ํ•ฉ : MINUS / EXCEPT

 

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

์ง‘ํ•ฉ(SET) ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ SQL์˜ ORDER BY ์ ˆ์€ ์ตœ์ข… ๊ฒฐ๊ณผ๋ฅผ ์ •๋ ฌํ•˜๋ฉฐ, ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ์ค„์— ํ•œ๋ฒˆ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

61. ์˜ค๋ผํด ๊ณ„์ธตํ˜• ์งˆ์˜์—์„œ ๋ฃจํŠธ ๋…ธ๋“œ์˜ LEVEL ๊ฐ’์€ 1์ด๋‹ค.

+ START WITH ์ ˆ์€ ๊ณ„์ธต ๊ตฌ์กฐ ์ „๊ฐœ์˜ ์‹œ์ž‘ ์œ„์น˜๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ตฌ๋ฌธ์ด๋‹ค. ์ฆ‰, ๋ฃจํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์ •ํ•œ๋‹ค. (์—‘์„ธ์Šค)

+ ORDER SIBLINGS BY : ํ˜•์ œ ๋…ธ๋“œ(๋™์ผ LEVEL) ์‚ฌ์ด์—์„œ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

 

63. ๊ณ„์ธตํ˜• ์งˆ์˜๋ฌธ

ํ…Œ์ด๋ธ”์— ๊ณ„์ธตํ˜• ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ณ„์ธตํ˜• ์งˆ์˜(Hierarchical Query)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ณ„์ธตํ˜• ๋ฐ์ดํ„ฐ๋ž€ ๋™์ผ ํ…Œ์ด๋ธ”์— ๊ณ„์ธต์ ์œผ๋กœ ์ƒ์œ„์™€ ํ•˜์œ„ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋งํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์› ํ…Œ์ด๋ธ”์—์„œ๋Š” ์‚ฌ์›๋“ค ์‚ฌ์ด์— ์ƒ์œ„ ๊ด€๊ณ„(๊ด€๋ฆฌ์ž)๊ณผ ํ•˜์œ„ ์‚ฌ์› ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•˜๊ณ  ์กฐ์ง ํ…Œ์ด๋ธ”์—์„œ๋Š” ์กฐ์ง๋“ค ์‚ฌ์ด์— ์ƒ์œ„ ์กฐ์ง๊ณผ ํ•˜์œ„ ์กฐ์ง ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹ค.

+ SQL Server์—์„œ์˜ ๊ณ„์ธตํ˜• ์งˆ์˜๋ฌธ์€ CTE(Common Table Expression)๋ฅผ ์žฌ๊ท€ ํ˜ธ์ถœํ•จ์œผ๋กœ์จ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ์ „๊ฐœํ•œ๋‹ค.

+ SQL Server์—์„œ์˜ ๊ณ„์ธตํ˜• ์งˆ์˜๋ฌธ์€ ์•ต์ปค ๋ฉค๋ฒ„๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๊ธฐ๋ณธ ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์„ ๋งŒ๋“ค๊ณ  ์ดํ›„ ์žฌ๊ท€ ๋ฉค๋ฒ„๋ฅผ ์ง€์†์ ์œผ๋กœ ์‹คํ–‰ํ•œ๋‹ค.

+ ์˜ค๋ผํด ๊ณ„์ธตํ˜• ์งˆ์˜๋ฌธ์—์„œ PRIOR ํ‚ค์›Œ๋“œ๋Š” SELECT, WHERE ์ ˆ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

+ PRIOR ์ž์‹ = ๋ถ€๋ชจ : ๋ถ€๋ชจ → ์ž์‹ : ์ˆœ๋ฐฉํ–ฅ

+ PRIOR ๋ถ€๋ชจ = ์ž์‹ : ์ž์‹ → ๋ถ€๋ชจ : ์—ญ๋ฐฉํ–ฅ

 

65. Natural Join

Natural Join์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ณตํ†ต๋œ ์†์„ฑ์„ ์ฐพ์•„ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ–๋Š” ํ•ญ๋ชฉ๋ผ๋ฆฌ ๊ฒฐํ•ฉ์‹œ์ผœ์ค€๋‹ค.

๋งŒ์•ฝ ๊ฐ™์€ ๊ฐ’์„ ๊ฐ–๋Š” ํ•ญ๋ชฉ์ด ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ํ•ญ๋ชฉ์€ ์ œ์™ธํ•œ๋‹ค.

 

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

- ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ๋‹จ์ผ ํ–‰(Single Row) ๋˜๋Š” ๋ณต์ˆ˜ ํ–‰(Multi Row) ๋น„๊ต ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

- ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” SELECT ์ ˆ, FROM ์ ˆ, HAVING ์ ˆ, ORDER BY ์ ˆ ๋“ฑ์—์„œ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

- ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ณต์ˆ˜ ํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” IN, ALL, ANY ๋“ฑ์˜ ๋ณต์ˆ˜ ํ–‰ ๋น„๊ต ์—ฐ์‚ฐ์ž์™€ ์‚ฌ์šฉํ•˜์—ฌ์•ผ ํ•œ๋‹ค.

- ์—ฐ๊ด€(Correlated) ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ๋ฉ”์ธ์ฟผ๋ฆฌ ์นผ๋Ÿผ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ํ˜•ํƒœ์˜ ์„œ๋ธŒ์ฟผ๋ฆฌ์ด๋‹ค.

- ๋‹ค์ค‘ ์ปฌ๋Ÿผ ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๋กœ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์นผ๋Ÿผ์ด ๋ฐ˜ํ™˜๋˜์–ด ๋ฉ”์ธ ์ฟผ๋ฆฌ์˜ ์กฐ๊ฑด๊ณผ ๋น„๊ต๋˜๋Š”๋ฐ, SQL Server์—์„œ๋Š” ํ˜„์žฌ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

 

69. ํ•จ์ˆ˜ ์ •๋ฆฌ

- PERCENT_RANK : ํŒŒํ‹ฐ์…˜๋ณ„ ์œˆ๋„์šฐ์—์„œ ์ œ์ผ ๋จผ์ € ๋‚˜์˜ค๋Š” ๊ฒƒ์„ 0์œผ๋กœ, ์ œ์ผ ๋Šฆ๊ฒŒ ๋‚˜์˜ค๋Š” ๊ฒƒ์„ 1๋กœ ํ•˜์—ฌ, ๊ฐ’์ด ์•„๋‹Œ ํ–‰์˜ ์ˆœ์„œ๋ณ„ ๋ฐฑ๋ถ„์œจ์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

- DENSE_RANK : ์ˆœ์œ„๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜๋กœ ๋™์ผํ•œ ์ˆœ์œ„๋ฅผ ํ•˜๋‚˜์˜ ๋“ฑ์ˆ˜๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.

- CUME_DIST : ํŒŒํ‹ฐ์…˜๋ณ„ ์œˆ๋„์šฐ์˜ ์ „์ฒด๊ฑด์ˆ˜์—์„œ ํ˜„์žฌ ํ–‰๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฑด์ˆ˜์— ๋Œ€ํ•œ ๋ˆ„์  ๋ฐฑ๋ถ„์œจ์„ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

- RANK : ํŒŒํ‹ฐ์…˜ ๋‚ด์˜ ORDER BY์— ์˜ํ•œ ์ˆœ์œ„๋ฅผ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜๋กœ, ๋™์ผํ•œ ์ˆœ์œ„์— ๋Œ€ํ•ด์„œ๋Š” ๋™์ผํ•œ ์ˆœ์œ„๋ฅผ ๋ถ€์—ฌํ•œ๋‹ค.

- RATIO_TO_REPORT : ํŒŒํ‹ฐ์…˜ ๋‚ด์˜ ์ฃผ์–ด์ง„ ์นผ๋Ÿผ ๊ฐ’์˜ ํ•ฉ๊ณ„์— ๋Œ€ํ•œ ํ–‰๋ณ„ ๋ฐฑ๋ถ„์œจ์„ ์†Œ์ˆ˜์ ์œผ๋กœ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

- NTILE : ํŒŒํ‹ฐ์…˜๋ณ„ ์ „์ฒด ๊ฑด์ˆ˜๋ฅผ ์ฃผ์–ด์ง„ ์ธ์ž๋กœ N ๋“ฑ๋ถ„ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

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

- ๋‹จ์ผ ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๋น„๊ต ์—ฐ์‚ฐ์ž๋กœ๋Š” =, <, <=, >, >=, <>๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค. IN, ALL ๋“ฑ์˜ ๋น„๊ต ์—ฐ์‚ฐ์ž๋Š” ๋‹ค์ค‘ ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๋น„๊ต์—ฐ์‚ฐ์ž์ด๋‹ค.

- ๋‹จ์ผ ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๋น„๊ต์—ฐ์‚ฐ์ž๋Š” ๋‹ค์ค‘ ํ–‰ ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๋น„๊ต ์—ฐ์‚ฐ์ž๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์ง€๋งŒ, ๋ฐ˜๋Œ€์˜ ๊ฒฝ์šฐ๋Š” ๊ฐ€๋Šฅํ•˜๋‹ค.

- ๋น„ ์—ฐ๊ด€ ์„œ๋ธŒ์ฟผ๋ฆฌ๊ฐ€ ์ฃผ๋กœ ๋ฉ”์ธ์ฟผ๋ฆฌ์— ๊ฐ’์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

- ๋ฉ”์ธ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ€ ์„œ๋ธŒ์ฟผ๋ฆฌ๋กœ ์ œ๊ณต๋  ์ˆ˜๋„ ์žˆ๊ณ , ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ฉ”์ธ์ฟผ๋ฆฌ๋กœ ์ œ๊ณต๋  ์ˆ˜๋„ ์žˆ์œผ๋ฏ€๋กœ ์‹คํ–‰ ์ˆœ์„œ๋Š” ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค.

 

75. ๋ทฐ View ์˜ ์žฅ์ 

- ๋…๋ฆฝ์„ฑ : ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋˜์–ด๋„ ๋ทฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

- ํŽธ๋ฆฌ์„ฑ : ๋ณต์žกํ•œ ์งˆ์˜๋ฅผ ๋ทฐ๋กœ ์ƒ์„ฑํ•˜์—ฌ ๊ด€๋ จ ์งˆ์˜๋ฅผ ๋‹จ์ˆœํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ํ•ด๋‹น ํ˜•ํƒœ์˜ SQL์„ ์ž์ฃผ ์‚ฌ์šฉํ•  ๋•Œ ๋ทฐ๋ฅผ ์ด์šฉํ•˜๋ฉด ํŽธ๋ฆฌํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

- ๋ณด์•ˆ์„ฑ : ์ง์›์˜ ๊ธ‰์—ฌ์ •๋ณด์™€ ๊ฐ™์ด ์ˆจ๊ธฐ๊ณ  ์‹ถ์€ ์ •๋ณด๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด, ๋ทฐ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ•ด๋‹น ์นผ๋Ÿผ์„ ๋นผ๊ณ  ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ •๋ณด๋ฅผ ๊ฐ์ถœ ์ˆ˜ ์žˆ๋‹ค.

 

79. ์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ๋‹จ์ผ ํ–‰ ๋˜๋Š” ๋ณต์ˆ˜ ํ–‰ ๋น„๊ต ์—ฐ์‚ฐ์ž์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋‹จ์ผ ํ–‰ ๋น„๊ต ์—ฐ์‚ฐ์ž๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜๋“œ์‹œ 1๊ฑด ์ดํ•˜์—ฌ์•ผ ํ•˜๊ณ , ๋ณต์ˆ˜ ํ–‰ ๋น„๊ต ์—ฐ์‚ฐ์ž๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ์˜ ๊ฒฐ๊ณผ ๊ฑด์ˆ˜์™€ ์ƒ๊ด€์—†๋‹ค.

# ์˜ˆ์‹œ
SELECT EMPNO, SAL
FROM EMP
WHERE SAL >= (SELECT MAX(SAL) FROM EMP GROUP BY DEPTNO);

# -> '๋‹จ์ผ ํ–‰ ํ•˜์œ„ ์งˆ์˜์— 2๊ฐœ ์ด์ƒ์˜ ํ–‰์ด ๋ฆฌํ„ด๋˜์—ˆ์Šต๋‹ˆ๋‹ค.' ์˜ค๋ฅ˜ ๋ฐœ์ƒํ•œ๋‹ค.

 

84. ์œˆ๋„์šฐ ํ•จ์ˆ˜ Window function

- PARTITION BY ์ ˆ๊ณผ GROUP BY ์ ˆ์€ ์˜๋ฏธ์ ์œผ๋กœ ์œ ์‚ฌํ•˜๋‹ค.

- PARTITION BY ์ ˆ์ด ์—†์œผ๋ฉด ์ „์ฒด ์ง‘ํ•ฉ์„ ํ•˜๋‚˜์˜ Partition์œผ๋กœ ์ •์˜ํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•˜๋‹ค.

- ์œˆ๋„์šฐ ํ•จ์ˆ˜๋Š” ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ํ•จ์ˆ˜์ฒ˜๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ ๊ฑด์ˆ˜๋Š” ์ค„์ง€ ์•Š๋Š”๋‹ค.

- ์œˆ๋„์šฐ ํ•จ์ˆ˜ ์ ์šฉ ๋ฒ”์œ„๋Š” Partition์„ ๋„˜์„ ์ˆ˜ ์—†๋‹ค.

 

90. LAG ํ•จ์ˆ˜

LAG ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด ํŒŒํ‹ฐ์…˜๋ณ„ ์œˆ๋„์šฐ์—์„œ ์ด์ „ ๋ช‡ ๋ฒˆ์งธ ํ–‰์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ์ดํ›„ ๋ช‡ ๋ฒˆ์งธ ํ–‰์˜ ๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์€ LEAD ํ•จ์ˆ˜์ด๋ฉฐ, SQL Server์—์„œ๋Š” ์ง€์›ํ•˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜์ด๋‹ค.

 

91. REVOKE ๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ถŒํ•œ์„ ์ทจ์†Œํ•˜๋ฉด ๊ถŒํ•œ์„ ์ทจ์†Œ๋‹นํ•œ ์‚ฌ์šฉ์ž๊ฐ€ WITH GRANT OPTION์„ ํ†ตํ•ด์„œ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ—ˆ๊ฐ€ํ–ˆ๋˜ ๊ถŒํ•œ๋“ค๋„ ๋ชจ๋‘ ์—ฐ์‡„์ ์œผ๋กœ ์ทจ์†Œ๋œ๋‹ค.