์ž๊ฒฉ์ฆ/SQLD

[SQLD] 5. SQL ํ™œ์šฉ - 1

hello_u 2023. 3. 16. 16:04

 

์ˆœ์ˆ˜ ๊ด€๊ณ„ ์—ฐ์‚ฐ์ž


์…€๋ ‰ํŠธ (Select) ์—ฐ์‚ฐ์ž


๋ฆด๋ ˆ์ด์…˜์—์„œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ํˆฌํ”Œ๋งŒ ์„ ํƒ



ํ”„๋กœ์ ํŠธ (Project) ์—ฐ์‚ฐ์ž


๋ฆด๋ ˆ์ด์…˜์—์„œ ์„ ํƒํ•œ ์†์„ฑ์˜ ๊ฐ’์œผ๋กœ ๊ฒฐ๊ณผ ๋ฆด๋ ˆ์ด์…˜์„ ๊ตฌ์„ฑ




๋””๋น„์ „ (Division) ์—ฐ์‚ฐ์ž


๋ฆด๋ ˆ์ด์…˜์˜ ์†์„ฑ ๊ฐ’์ด ์ง‘ํ•ฉ์œผ๋กœ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰


๋ฆด๋ ˆ์ด์…˜S ์˜ ๋ชจ๋“  ํŠœํ”Œ๊ณผ ๊ด€๋ จ์ด ์žˆ๋Š” ๋ฆด๋ ˆ์ด์…˜R์˜ ํŠœํ”Œ๋“ค์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.




INNER JOIN


EQUI ์กฐ์ธ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ansi ํ‘œ์ค€





FROM emp
INNER JOIN dept
    ON emp.deptno = dept.deptno





emp ํ…Œ์ด๋ธ”๊ณผ dept ํ…Œ์ด๋ธ” ๊ฒฐํ•ฉ





ENAME ์นผ๋Ÿผ์˜ ๊ฐ’์ด HAN์ธ ํ–‰์„ ์ฐพ์œผ๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.




BETWEEN


BETWEEN A AND B : A์™€  B ์‚ฌ์ด์˜ ๋‚ด์šฉ์„ ๊ฒ€์ƒ‰ํ•ด์„œ ๋‚˜ํƒ€๋‚ด๋ผ๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ( A,B ํฌํ•จ )


 

JOIN ์˜ ON ๊ณผ WHERE ์ฐจ์ด

 

 

 


1)์˜ ๊ฒฝ์šฐ๋Š” a์™€ b ํ…Œ์ด๋ธ”์˜ OUTER JOIN์„ ์ˆ˜ํ–‰ํ•œ ํ›„์— b.cc = 7์ธ ๋ฐ์ดํ„ฐ๋“ค์„ ์ถ”์ถœํ•˜์ง€๋งŒ

 

2)์˜ ๊ฒฝ์šฐ๋Š” (a ํ…Œ์ด๋ธ”)๊ณผ (b ํ…Œ์ด๋ธ” ์ค‘ b.cc = 7์ธ ๊ฒฝ์šฐ)๋ฅผ OUTER JOIN ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค.

SQL ๊ฒฐ๊ณผ

 

๊ฒฐ๊ณผ ๊ฑด์— ๋Œ€ํ•œ ํ•„ํ„ฐ๋ง์€ WHERE ์ ˆ์—์„œ ์ˆ˜ํ–‰ 

 

ON ์ ˆ์€ JOIN ํ•  ๋Œ€์ƒ์„ ๊ฒฐ์ •( ๊ธฐ์ค€ ํ…Œ์ด๋ธ”์€ ํ•ญ์ƒ ๋ชจ๋‘ ํ‘œ์‹œ)

 

USING ์กฐ๊ฑด์ ˆ 

 

FROM์ ˆ์˜ USING ์กฐ๊ฑด์ ˆ์„ ์ด์šฉํ•˜๋ฉด ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์ง„ ์ปฌ๋Ÿผ๋“ค ์ค‘์—์„œ ์›ํ•˜๋Š” ์ปฌ๋Ÿผ์— ๋Œ€ํ•ด์„œ๋งŒ EQUI JOIN์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

sql server์—์„œ๋Š” ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค. 

 

SELECT  *
FROM    DEPT JOIN DEPT_TEMP
USING   (DEPTNO) ;

USING ์กฐ๊ฑด์ ˆ์—์„œ๋„ ํ…Œ์ด๋ธ” ์ด๋ฆ„์ด๋‚˜ ALIAS, ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์ผ ์ˆ˜ ์—†๋‹ค.

 

 

 

CROSS JOIN

 

ํ…Œ์ด๋ธ” ๊ฐ„ JOIN ์กฐ๊ฑด์ด ์—†๋Š” ๊ฒฝ์šฐ

 

์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ์˜ ์กฐํ•ฉ /  ๊ฒฐ๊ณผ๋Š” M * N ๊ฑด์˜ ๋ฐ์ดํ„ฐ ์กฐํ•ฉ 

 

 

LEFT OUTER JOIN

 

์™ผ์ชฝ ํ…Œ์ด๋ธ” ๋ชจ๋“  ๋ฐ์ดํ„ฐ + ์ค‘๋ณต๋ฐ์ดํ„ฐ๋“ค์ด ๊ฒ€์ƒ‰๋จ

 

๊ฐ’์ด ์—†๋Š” ๊ฒฝ์šฐ NULL ๊ฐ’์œผ๋กœ ์ฑ„์šด๋‹ค.

 

INNER JOIN : ๊ต์ง‘ํ•ฉ 

 

 

FULL OUTER JOIN (ํ•ฉ์ง‘ํ•ฉ)

 

์ขŒ์ธก,์šฐ์ธก ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด JOIN ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑ

 

LEFT OUTER JOIN ๊ณผ RIGHT OUTER JOIN ์˜ ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์ง‘ํ•ฉ ์ฒ˜๋ฆฌํ•œ ๊ฒƒ

 

 

UNION ALL(์ฟผ๋ฆฌ๋ฌธ ํ•ฉ์น˜๊ธฐ)

 

 UNION ALL ์—ฐ์‚ฐ์ž๋Š” ๊ฐ๊ฐ์— ์ฟผ๋ฆฌ์—์„œ ๋‚˜์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ค‘๋ณต๋˜๋Š” ๊ฐ’๋„ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅ

 

UNION ์—ฐ์‚ฐ์ž๋Š” ์ค‘๋ณต๋˜๋Š” ๋ถ€๋ถ„์€ ํ•˜๋‚˜์— ๋กœ์šฐ๋กœ๋งŒ ์ถœ๋ ฅ

 

UNION ALL ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์นผ๋Ÿผ ALIAS ๋Š” ์ฒซ๋ฒˆ์งธ SQL ๋ชจ๋“ˆ ๊ธฐ์ค€์œผ๋กœ ํ‘œ์‹œ

 

 

 

์˜ค๋ผํด ์•„์šฐํ„ฐ ์กฐ์ธ (+)

 

์˜ค๋ผํด ์•„์šฐํ„ฐ ์กฐ์ธ ์‹œ ๋Œ€์ƒ ์ปฌ๋Ÿผ์— "(+)" ๊ธฐํ˜ธ๋ฅผ ๋ถ™์—ฌ์„œ ์กฐ์ธ์„ ํ•˜๋ฉด๋œ๋‹ค.

 

๋Œ€์ƒ ์ปฌ๋Ÿผ(+) : ๊ธฐ์ค€ํ…Œ์ด๋ธ”์ด ์•„๋‹Œ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ” 

 

ANSI ๋ฌธ์žฅ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” INNER ์ชฝ ํ…Œ์ด๋ธ”์— ์กฐ๊ฑด์ ˆ์„ ON ์ ˆ์— ํ•จ๊ป˜ ์œ„์น˜ 

 

 

 

EXISTS ์—ฐ์‚ฐ์ž

 

EXISTS ์—ฐ์‚ฐ์ž๋Š” ์„œ๋ธŒ์ฟผ๋ฆฌ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ์ฒดํฌํ•˜๊ณ  ์กด์žฌํ•  ๊ฒฝ์šฐ TRUE๋ฅผ ๋ฐ˜ํ™˜

 

 

 

NOT EXISTS ์—ฐ์‚ฐ์ž

 

NOT EXISTS๋Š” EXISTS์™€ ๋ฐ˜๋Œ€๋กœ ์„œ๋ธŒ์ฟผ๋ฆฌ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์กฐํšŒ๋œ๋‹ค.

 

(TRUE → FALSE, FALSE → TRUE) ๋ฐ˜ํ™˜ ๊ฐ’์ด ๋ฐ˜๋Œ€๋กœ ๋ฐ”๋€Œ์–ด์„œ ์„œ๋ธŒ์ฟผ๋ฆฌ์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์กฐํšŒ

 

 

 

EXCEPT (์ฐจ์ง‘ํ•ฉ)

 

์•ž์˜ SQL๋ฌธ์˜ ๊ฒฐ๊ณผ์—์„œ ๋’ค์˜ SQL๋ฌธ์˜ ๊ฒฐ๊ณผ์— ๋Œ€ํ•œ ์ฐจ์ง‘ํ•ฉ 

 

NOT IN , NOT EXISTS ๋กœ ๋Œ€์ฒดํ•˜์—ฌ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ 

 

 

์ง‘ํ•ฉ์—ฐ์‚ฐ์ž(UNION/INTERSECT/MINUS)

 

 

์ •๋ ฌํ•ด์„œ ์ถœ๋ ฅํ•˜๊ธฐ(ORDER BY)

 

SELECT๋ฌธ์„ ์‚ฌ์šฉํ•  ๋•Œ ์ถœ๋ ฅ๋˜๋Š” ๊ฒฐ๊ณผ๋ฌผ์€ ํ…Œ์ด๋ธ”์— ์ž…๋ ฅ๋˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ์ด๋‹ค. 

 

SELECT ๋ฌธ ๋งˆ์ง€๋ง‰์— ์œ„์น˜ 

 

ASC : ์˜ค๋ฆ„์ฐจ์ˆœ(๊ธฐ๋ณธ๊ฐ’)   /    DESC : ๋‚ด๋ฆผ์ฐจ์ˆœ

 

 

 

 

๊ณ„์ธตํ˜• ์ฟผ๋ฆฌ(CONNECT BY)

 

๊ณ„์ธตํ˜• ๊ตฌ์กฐ๋Š” ์ƒํ•˜ ์ˆ˜์ง๊ด€๊ณ„์˜ ํŠธ๋ฆฌํ˜•ํƒœ์˜ ๊ตฌ์กฐ๋กœ ์ด๋ฃจ์–ด์ง„ ํ˜•ํƒœ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์ž๋ฉด ํŠน์ •ํšŒ์‚ฌ์˜ ๋ถ€์„œ, ํŠน์ •ํ•™๊ต์˜ ํ•™๊ณผ๋“ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 

 

๊ณ„์ธตํ˜• ์ฟผ๋ฆฌ๋Š” ํ…Œ์ด๋ธ”์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณ„์ธตํ˜• ๊ตฌ์กฐ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

 

์ˆ˜ํ–‰์ˆœ์„œ

1. START WITH ์ ˆ์— ์‹œ์ž‘ ์กฐ๊ฑด์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

2. CONNECT BY ์ ˆ์— ์—ฐ๊ฒฐ์กฐ๊ฑด์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

 

 

 

 

START WITH : ๋ฃจํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์ •ํ•œ๋‹ค. / ๋ฃจํŠธ ๋…ธ๋“œ์˜ ๋ ˆ๋ฒจ๊ฐ’์€ 0 ์ด๋‹ค. 

 

ORDER SIBLINGS BY : ํ˜•์ œ๋…ธ๋“œ ์‚ฌ์ด์—์„œ ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. 

 

CONNECT BY PRIOR ์ž์‹ = ๋ถ€๋ชจ : ๋ถ€๋ชจ -> ์ž์‹ ์ˆœ๋ฐฉํ–ฅ ์ „๊ฐœ