๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Certificate/SQLD

Part 3 - 02. SQL ํ™œ์šฉ

โ–ก EQUI ์กฐ์ธ

- ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ” ๊ฐ„์— ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์„ ์กฐ์ธ

- "="์˜ ๋น„๊ต ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉ

- ISO ํ‘œ์ค€ SQL๋กœ INNER JOIN์„ ์‚ฌ์šฉํ•ด์•ผ ํ•จ

 

โ–ก HASH JOIN

- EQUI ์กฐ์ธ์—์„œ๋งŒ ๋‚˜ํƒ€๋‚˜๋Š” ์‹คํ–‰ ๊ณ„ํš

 

โ–ก OUTER JOIN

- ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ” ๊ฐ„์— ๊ต์ง‘ํ•ฉ์„ ์กฐํšŒํ•˜๊ณ  ํ•œ์ชฝ ํ…Œ์ด๋ธ”์—๋งŒ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋„ ํฌํ•จ์‹œ์ผœ์„œ ์กฐํšŒ

- ์™ผ์ชฝ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ํ–‰๋„ ํฌํ•จํ•˜๋ฉด LEFT OUTER JOIN, ์˜ค๋ฅธ์ชฝ ํ…Œ์ด๋ธ”์— ์žˆ๋Š” ํ–‰๋„ ํฌํ•จํ•˜๋ฉด RIGHT OUTER JOIN, ์–‘์ชฝ ๋ชจ๋‘ ํฌํ•จ์‹œํ‚ค๋ฉด FULL OUTER JOIN์ด๋ผ ํ•จ

 

โ–ก CROSS JOIN

- ์กฐ์ธ๊ตฌ๊ฐ€ ์—†์ด ์กฐ์ธ์ด ๋˜๋ฉฐ, ์นดํ…Œ์‹œ์•ˆ ๊ณฑ์ด ๋ฐœ์ƒํ•˜์—ฌ ๋งŽ์€ ํ–‰์ด ์กฐํšŒ

 

โ–ก UNION

- ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ํ•˜๋‚˜๋กœ ํ•ฉ์น˜๋ฉด์„œ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐ / ์ด ๊ณผ์ •์—์„œ ์ •๋ ฌ ๊ณผ์ • ๋ฐœ์ƒ

- ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์˜ ์นผ๋Ÿผ ์ˆ˜, ๋ฐ์ดํ„ฐ ํ˜•์‹ ๋ชจ๋‘ ์ผ์น˜ํ•ด์•ผ ๊ฐ€๋Šฅ

- ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ํ•˜๋‚˜๋กœ ํ•ฉ์น˜๋ฉด์„œ ์ค‘๋ณต๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐ

 

โ–ก UNION ALL

- UNION์ฒ˜๋Ÿผ ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์„ ํ•˜๋‚˜๋กœ ํ•ฉ์น˜๋‚˜, ์ค‘๋ณต๋œ ๊ฒƒ์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ์ •๋ ฌ์„ ์œ ๋ฐœํ•˜์ง€ ์•Š์Œ

 

โ–ก MINUS

- ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ”์—์„œ ์ฐจ์ง‘ํ•ฉ์„ ์กฐํšŒ

- MINUS์™€ ๋™์ผํ•œ ์—ฐ์‚ฐ์€ EXCEPT

 

โ–ก ๊ณ„์ธตํ˜• ์กฐํšŒ(CONNET BY)

- ๊ฐ€์žฅ ์ƒ์œ„ ๋ ˆ๋ฒจ(LEVEL)์˜ ๊ฐ’์€ 1

- LPAD๋Š” ํŠธ๋ฆฌ ํ˜•ํƒœ๋ฅผ ๋ณด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

 

โ–ก ์„œ๋ธŒ์ฟผ๋ฆฌ(Subquery)

- SELECT๋ฌธ ๋‚ด์— ๋‹ค์‹œ SELECT๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” SQL๋ฌธ

- ์ธ๋ผ์ธ ๋ทฐ(View)์™€ ์Šค์นผ๋ผ ์„œ๋ธŒ์ฟผ๋ฆฌ(Scala Subquery) ๋“ฑ์ด ์žˆ์Œ

- WHERE๊ตฌ์— SELECT๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ธŒ์ฟผ๋ฆฌ๋ผ๊ณ  ํ•จ

- FROM๊ตฌ์— SELECT๋ฌธ์„ ์‚ฌ์šฉํ•œ ๊ฒƒ์€ ์ธ๋ผ์ธ ๋ทฐ์ž„

- ์„œ๋ธŒ์ฟผ๋ฆฌ ๋ฐ–์— ์žˆ๋Š” SELECT๋ฌธ์„ ๋ฉ”์ธ์ฟผ๋ฆฌ(Main Query)๋ผ๊ณ  ํ•จ

 

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

- IN: ํ•˜๋‚˜๋งŒ ๋™์ผํ•˜๋ฉด ์ฐธ

- ALL: ๋ชจ๋‘ ๋™์ผํ•˜๋ฉด ์ฐธ
- ANY: ํ•˜๋‚˜ ์ด์ƒ ๋™์ผํ•˜๋ฉด ์ฐธ

- EXISTS: ๊ฒฐ๊ณผ๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ์กด์žฌํ•˜๋ฉด ์ฐธ

 

โ–ก GROUPING

- ROLLUP, CUBE, GROUPING SET์—์„œ ์ƒ์„ฑ๋˜๋Š” ํ•ฉ ๊ฐ’์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ ํ•จ์ˆ˜

 

โ–ก GROUPING SETS

- GROUP BY์— ๋‚˜์˜ค๋Š” ์ปฌ๋Ÿผ์˜ ์ˆœ์„œ์™€ ๊ด€๊ณ„์—†์ด ๋‹ค์–‘ํ•œ ์†Œ๊ณ„๋ฅผ ๋งŒ๋“ค์ˆ˜ ์žˆ๊ณ , ๊ฐœ๋ณ„์ ์œผ๋กœ ์ฒ˜๋ฆฌ

 

โ–ก ROLLUP

- GROUP BY์˜ ์ปฌ๋Ÿผ์— ๋Œ€ํ•˜์—ฌ Subtotal์„ ๋งŒ๋“ฆ

 

โ–ก CUBE

- ๋‹ค์ฐจ์› ์ง‘๊ณ„๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋‹ค์–‘ํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ ๋ถ„์„ ์ˆ˜ํ–‰

- ์กฐํ•ฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋ชจ๋‘ ์กฐํ•ฉ๋˜๋Š” ๊ฒƒ

 

โ–ก ํŒŒํ‹ฐ์…˜(Partition) ๊ธฐ๋Šฅ

- ๋Œ€์šฉ๋Ÿ‰ ํ…Œ์ด๋ธ”์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์— ๋ถ„๋ฆฌํ•ด์„œ ์ €์žฅ

- ์ž…๋ ฅ, ์ˆ˜์ •, ์‚ญ์ œ, ์กฐํšŒ ์„ฑ๋Šฅ ํ–ฅ์ƒ

- ํŒŒํ‹ฐ์…˜ ๋ณ„๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ๊ด€๋ฆฌ๋  ์ˆ˜ ์žˆ์Œ

- ํ…Œ์ด๋ธ” ์ŠคํŽ˜์ด์Šค ๊ฐ„์— ์ด๋™ ๊ฐ€๋Šฅ

- ๋ฐ์ดํ„ฐ ๋ฒ”์œ„๋ฅผ ์ค„์—ฌ ์„ฑ๋Šฅ ํ–ฅ

 

โ–ก ํŒŒํ‹ฐ์…˜ ์ข…๋ฅ˜

- Range Partition: ๊ฐ’์˜ ๋ฒ”์œ„๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ถ„ํ• 

- List Partition: ํŠน์ • ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ๋ถ„ํ• 

- Hash Partition: ํ•ด์‹œํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„ํ• 

 


Reference:

์ž„ํ˜ธ์ง„ ์™ธ 1๋ช…, ใ€ŒSQL ๊ฐœ๋ฐœ์ž ์ด๋ก ์„œ + ๋ฌธ์ œ์ง‘ใ€, ์˜์ง„๋‹ท์ปด(2020)