1. ์๋ธ์ฟผ๋ฆฌ
์๋ธ์ฟผ๋ฆฌ ๊ฐ์
์๋ธ์ฟผ๋ฆฌ์ ๊ธฐ์ด ๊ฐ๋
- ์ฟผ๋ฆฌ(Query) = ํ๋์ ๋ช ๋ น ๋ฌธ์ฅ = ๋ฉ์ธ์ฟผ๋ฆฌ
- ์๋ธ์ฟผ๋ฆฌ = ๋ช ๋ น ๋ฌธ์ฅ ์์ ๋ ๋ค๋ฅธ ๋ช ๋ น ๋ฌธ์ฅ์ด ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ ๊ฒ = ๋ด๋ถ์ฟผ๋ฆฌ, ์ค์ฒฉ์ฟผ๋ฆฌ
- ๋ณต์กํ ์ฟผ๋ฆฌ๋ฅผ ๋จ์ํ, ํน์ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ํํฐ๋ง/๊ณ์ฐํ ๋ ์ฌ์ฉ
- ๋ฉ์ธ์ฟผ๋ฆฌ์ ๊ตฌ๋ถ ์ํด ๊ดํธ๋ก ๊ฐ์ธ๋ฉฐ, ๋ฉ์ธ์ฟผ๋ฆฌ์ WHERE, FROM, SELECT ์ ๋ฑ์์ ์ฌ์ฉ
์ธ์ ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋๊ฐ?
- WHERE ์ ์์ ์กฐ๊ฑด์ ์ถ๊ฐํ๊ณ ์ถ์ ๋
- ๋ฐ์ดํฐ๋ฅผ ์ข ๋ ๋ณต์กํ ์กฐ๊ฑด์ผ๋ก ํํฐ๋งํ๊ณ ์ถ์ ๋
- ์๋ ๋ฐ์ดํฐ์ ์กด์ฌํ์ง ์๋ ๊ณ์ฐ๋ ์นผ๋ผ์ ์์ฑํ๊ณ ์ถ์ ๋ (SELECT ๋ฌธ์์ ์ฌ์ฉ)
- DB์ ํ ์ด๋ธ์ ๋ง๋ค์ง ์๊ณ , ์ฟผ๋ฆฌ ์์์๋ง ์์๋ก FROM ์ ์ ํ ์ด๋ธ์ ๋ง๋ค์ด ์ฌ์ฉ (IN-LINE-VIEW)
- ์ผ๋ถ ์์ ์ ์๋ธ์ฟผ๋ฆฌ๊ฐ ์กฐ์ธ๋ณด๋ค ๊ฐ๋จ. (ํนํ EXISTS ๋๋ IN์ฒ๋ผ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ ๊ฒฝ์ฐ)
์๋ธ์ฟผ๋ฆฌ์ ์ข ๋ฅ
- ๋์ํ๋ ๋ฐฉ์์ ๋ฐ๋ฅธ ์๋ธ์ฟผ๋ฆฌ
- ์ฐ๊ด(Correlated) ์๋ธ์ฟผ๋ฆฌ
- ๋ฉ์ธ์ฟผ๋ฆฌ์ ์นผ๋ผ์ ์ฐธ์กฐํ๋ ์๋ธ์ฟผ๋ฆฌ
- ๋ฉ์ธ์ฟผ๋ฆฌ์ ๊ฐ ํ์ ๋ํด ์๋ธ์ฟผ๋ฆฌ๊ฐ ์คํ๋จ
- ๋ฉ์ธ์ฟผ๋ฆฌ์ ์นผ๋ผ ๊ฐ์ ์ด์ฉํด ์๋ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ฅผ ๊ณ์ฐ
- ๋ฉ์ธ์ฟผ๋ฆฌ์ ๊ฐ ํ๋ง๋ค ์คํ๋๋ฏ๋ก ์ฒ๋ฆฌ ์๊ฐ์ด ๋ ์์๋จ
- ๋น ์ฐ๊ด(Un-Correlated) ์๋ธ์ฟผ๋ฆฌ
- ๋ฉ์ธ์ฟผ๋ฆฌ์ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ ์๋ธ์ฟผ๋ฆฌ
- ๋ฉ์ธ์ฟผ๋ฆฌ์ ์นผ๋ผ์ ์ฐธ์กฐํ์ง ์์
- ์๋ธ์ฟผ๋ฆฌ๊ฐ ๋จผ์ ์คํ๋๊ณ , ๊ทธ ๊ฒฐ๊ณผ๊ฐ ๋ฉ์ธ์ฟผ๋ฆฌ์์ ์ฌ์ฉ๋จ
- ๋ณดํต ํ ๋ฒ๋ง ์คํ๋จ
- ์ฐ๊ด(Correlated) ์๋ธ์ฟผ๋ฆฌ
- ๋ฐํ๋๋ ๋ฐ์ดํฐ์ ํํ์ ๋ฐ๋ฅธ ์๋ธ์ฟผ๋ฆฌ
- ๋จ์ผํ(Single Row) ์๋ธ์ฟผ๋ฆฌ
- ๋ค์คํ(Multi Row) ์๋ธ์ฟผ๋ฆฌ
- ๋ค์ค์นผ๋ผ(Multi Column) ์๋ธ์ฟผ๋ฆฌ
์๋ธ์ฟผ๋ฆฌ ์ข ๋ฅ
๋จ์ผํ ์๋ธ์ฟผ๋ฆฌ
- ์ค์ง ํ๋์ ํ(row)๋ง์ ๋ฐํํ๋ ์๋ธ์ฟผ๋ฆฌ(0ํ์ผ ๊ฒฝ์ฐ ์๋ธ์ฟผ๋ฆฌ์ ๋ฐํ๊ฐ์ NULL๋ก ๊ฐ์ฃผ)
- ํ๋์ ํ์ ๋ฐํํ๋ฉฐ, ๋ฉ์ธ์ฟผ๋ฆฌ์์ ํ๋์ ๊ฐ์ฒ๋ผ ์ฌ์ฉ
- ์ฃผ๋ก ๋น๊ต ์ฐ์ฐ์ ๋ฐ ์ง๊ณ ํจ์์ ํจ๊ป ์ฌ์ฉ
๋ค์คํ ์๋ธ์ฟผ๋ฆฌ
- ํ๋ ์ด์์ ํ์ ๋ฐํํ๋ ์๋ธ์ฟผ๋ฆฌ
- ๋ค์คํ ์ฐ์ฐ์(IN, ANY, ALL, EXISTS ๋ฑ)์ ํจ๊ป ์ฌ์ฉ
- IN: ์๋ธ์ฟผ๋ฆฌ๊ฐ ๋ฐํํ ์ฌ๋ฌ ํ ์ค ํ๋๋ผ๋ ์ผ์นํ๋ฉด ์กฐ๊ฑด์ ๋ง์กฑ
- ANY ๋๋ SOME: ์๋ธ์ฟผ๋ฆฌ๊ฐ ๋ฐํํ ์ฌ๋ฌ ํ ์ค ํ๋๋ผ๋ ์ผ์นํ๋ฉด ์กฐ๊ฑด์ ๋ง์กฑ
- ALL: ์๋ธ์ฟผ๋ฆฌ๊ฐ ๋ฐํํ ๋ชจ๋ ํ์ด ์กฐ๊ฑด์ ๋ง์กฑ
- EXISTS: ์๋ธ์ฟผ๋ฆฌ๊ฐ ํ ํ์ด๋ผ๋ ๋ฐํํ๋ฉด ์กฐ๊ฑด์ ๋ง์กฑ
- ํ๋ ์ด์์ ํ์ ๋ฐํํ๋ฏ๋ก ๋จ์ผํ ์ฐ์ฐ์(=, >, <, >=, <=, <>)๋ฅผ ์ง์ ์ฌ์ฉํ ์ ์์
๋ค์ค์นผ๋ผ ์๋ธ์ฟผ๋ฆฌ
- ์๋ธ์ฟผ๋ฆฌ์์ ์ฌ๋ฌ ์นผ๋ผ์ ๋ฐํํ์ฌ ๋ฉ์ธ์ฟผ๋ฆฌ์ ์กฐ๊ฑด๊ณผ ๋น๊ตํ๋ ์๋ธ์ฟผ๋ฆฌ
- ์ผ๋ฐ์ ์ผ๋ก ๋ ๊ฐ ์ด์์ ์นผ๋ผ์ ๋น๊ตํ ๋ ์ฌ์ฉ๋๋ฉฐ, ๋น๊ต ์ฐ์ฐ์๋ก IN, EXISTS ๋ฑ์ ์ฌ์ฉ
์ฐ๊ด ์๋ธ์ฟผ๋ฆฌ
- ๋ฉ์ธ ์ฟผ๋ฆฌ์ ๊ฐ ํ์ ๋ํด ์๋ธ์ฟผ๋ฆฌ๊ฐ ํ ๋ฒ์ฉ ์คํ๋๋ ์๋ธ์ฟผ๋ฆฌ
- ์๋ธ์ฟผ๋ฆฌ๋ ๋ฉ์ธ์ฟผ๋ฆฌ์ ๊ฐ ํ๊ณผ ๊ด๋ จ๋์ด ์์ผ๋ฉฐ, ๋ฉ์ธ์ฟผ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐ
- ์๋ธ์ฟผ๋ฆฌ๋ ๋ฉ์ธ์ฟผ๋ฆฌ์ ํ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํ์ฌ ๊ฐ ํ์ ๋ํด ์กฐ๊ฑด์ ํ๊ฐ
- ์๋ธ์ฟผ๋ฆฌ๋ ๋ฉ์ธ์ฟผ๋ฆฌ์ ๊ด๋ จ๋ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์ ์ผ๋ก ์คํ
๋ทฐ(VIEW)
- ๋ทฐ๋ ํ๋ ์ด์์ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๋ SQL ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๋ ๊ฐ์ ํ ์ด๋ธ
- ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์๊ณ , ๊ธฐ๋ณธ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ๋์ ์ด๋ฉฐ ์ฝ๊ธฐ ์ ์ฉ์ ๋ฐ์ดํฐ ์งํฉ ์ ๊ณต
- ๋ทฐ ํ์: SELECT ๋ฌธ์ ๊ธฐ๋ณธ์ผ๋ก, ๊ฐ์ฅ ์ฒซ ์ค์ CREATE VIEW๋ฅผ ์ ๊ณ ๋ทฐ ์ด๋ฆ์ ์ง์
CREATE VIEW ๋ทฐ์ด๋ฆ
SELECT
์นผ๋ผ1
, ์นผ๋ผ2
, ...
FROM
ํ
์ด๋ธ
WHERE
์กฐ๊ฑด;
- ๋ทฐ๋ฅผ ์ฌ์ฉํ๋ ์ด์
- ๋ฐ์ดํฐ ์ค๋ณต ๋ฐฉ์ง
- ๋ฐ์ดํฐ ์ผ๊ด์ฑ
- ๋ณด์ ๊ฐํ
- ๋ณต์กํ ์ฟผ๋ฆฌ ๋จ์ํ
- ์ ์ฐ์ฑ
- ์ฑ๋ฅ ์ต์ ํ
- ๋ ผ๋ฆฌ์ ๋ฐ์ดํฐ ๋ ๋ฆฝ์ฑ
- ์ ์ฅ ๊ณต๊ฐ ์ ์ฝ
- ์์คํ ์นดํ๋ก๊ทธ ๊ด๋ฆฌ ์ฉ์ด
- ๋ทฐ์ ํ ์ด๋ธ์ ์ฃผ์ ์ฐจ์ด์
ํน์ฑ | ํ ์ด๋ธ(Table) | ๋ทฐ(View) |
๋ฐ์ดํฐ ์ ์ฅ | ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ ์ฅ | ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์๊ณ , ์ฟผ๋ฆฌ ์ ์๋ง ์ ์ฅ |
์์ฑ ๋ฐฉ์ | CREATE TABLE ๋ฌธ์ผ๋ก ์์ฑ | CREATE VIEW ๋ฌธ์ผ๋ก ์์ฑ (SELECT ๋ฌธ ๊ธฐ๋ฐ) |
๋ฐ์ดํฐ ์์ | ์ง์ ์ ์ธ INSERT, UPDATE, DELETE ๊ฐ๋ฅ | ์ผ๋ฐ์ ์ผ๋ก ์ฝ๊ธฐ ์ ์ฉ (ํน์ ์กฐ๊ฑด์์ ์์ ๊ฐ๋ฅ) |
์ฉ๋ | ๋ฐ์ดํฐ์ ๊ธฐ๋ณธ ์ ์ฅ์ | ๋ฐ์ดํฐ ์ ๊ทผ ์ ์ด, ์ฟผ๋ฆฌ ๋จ์ํ, ๋ฐ์ดํฐ ์์ฝ |
์ฑ๋ฅ | ์ง์ ์ ๊ทผ์ผ๋ก ์ผ๋ฐ์ ์ผ๋ก ๋น ๋ฆ | ์ฟผ๋ฆฌ ์คํ ์ ๊ณ์ฐ๋์ด ์ฝ๊ฐ์ ์ค๋ฒํค๋ ๊ฐ๋ฅ |
๋ ๋ฆฝ์ฑ | ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌ | ํ๋ ์ด์์ ํ ์ด๋ธ์ ์ข ์์ |
์ธ๋ฑ์ค | ์ธ๋ฑ์ค ์์ฑ ๊ฐ๋ฅ | ์ง์ ์ ์ธ ์ธ๋ฑ์ค ์์ฑ ๋ถ๊ฐ (์ผ๋ถ DBMS ์์ธ) |
์ ์ฅ ๊ณต๊ฐ | ์ค์ ๋ฐ์ดํฐ๋งํผ์ ๊ณต๊ฐ ํ์ | ์ฟผ๋ฆฌ ์ ์๋ง ์ ์ฅํ์ฌ ์ต์ํ์ ๊ณต๊ฐ ํ์ |
๋ฐ์ดํฐ ์ค๋ณต | ๋ฐ์ดํฐ ์ค๋ณต ๊ฐ๋ฅ์ฑ ์์ | ๋ฐ์ดํฐ ์ค๋ณต ์์ |
๋ฐ์ดํฐ ์ผ๊ด์ฑ | ์ง์ ๊ด๋ฆฌ ํ์ | ํญ์ ์ต์ ๋ฐ์ดํฐ ๋ฐ์ |
๋ณด์ | ํ ์ด๋ธ ์์ค์ ๋ณด์ | ์นผ๋ผ ๋๋ ํ ์์ค์ ์ธ๋ฐํ ๋ณด์ ๊ธฐ๋ฅ |
2. ์งํฉ ์ฐ์ฐ์
์งํฉ ์ฐ์ฐ์ ๊ฐ์
์งํฉ ์ฐ์ฐ์ ๊ธฐ์ด ๊ฐ๋
- ์งํฉ ์ฐ์ฐ์(Set Operators): ๋ ๊ฐ ์ด์์ SELECT ๋ฌธ์์ ๋ฐํ๋ ๊ฒฐ๊ณผ ์งํฉ์ ๊ฒฐํฉํ์ฌ ํ๋์ ๊ฒฐ๊ณผ ์งํฉ์ผ๋ก ๋ง๋๋๋ฐ ์ฌ์ฉ
- ๋ชจ๋ SELECT๋ฌธ์ ๋์ผํ ์์ ์นผ๋ผ์ ๋ฐํํด์ผ ํ๋ฉฐ, ๊ฐ ์นผ๋ผ์ ๋ฐ์ดํฐ ํ์ ์ ํธํ ๊ฐ๋ฅํด์ผ ํจ
- ๋ณต์กํ ๋ฐ์ดํฐ ์กฐ์ ์ํ ๊ฐ๋ฅ
์งํฉ ์ฐ์ฐ์ ์ข ๋ฅ
UNION
- ๋ SELECT ๋ฌธ์ ๊ฒฐ๊ณผ ์งํฉ์ ๊ฒฐํฉํ๊ณ , ์ค๋ณต๋ ํ ์ ๊ฑฐ
- FULL OUTER JOIN๊ณผ ์ ์ฌํ์ง๋ง, ์ค๋ณต๋ ํ์ ์ ๊ฑฐํด์ ์ถ๋ ฅํ๋ค๋ ์ ์์ ์ฐจ์ด๊ฐ ์์
UNION ALL
- ๋ SELECT ๋ฌธ์ ๊ฒฐ๊ณผ ์งํฉ์ ๊ฒฐํฉํ๊ณ , ์ค๋ณต๋ ํ๋ ๋ชจ๋ ํฌํจ
INTERSECT
- ๋ SELECT ๋ฌธ์ ๊ฒฐ๊ณผ ์งํฉ์์ ๊ณตํต๋ ํ๋ง ๋ฐํ(๊ต์งํฉ)ํ๊ณ , ์ค๋ณต๋ ํ ์ ๊ฑฐ
MINUS/EXCEPT
- ์ฒซ ๋ฒ์งธ SELECT ๋ฌธ์ ๊ฒฐ๊ณผ ์งํฉ์์ ๋ ๋ฒ์งธ SELECT ๋ฌธ์ ๊ฒฐ๊ณผ ์งํฉ์ ์๋ ํ๋ง ๋ฐํ(์ฐจ์งํฉ)ํ๊ณ , ์ค๋ณต๋ ํ ์ ๊ฑฐ
- MINUS/EXCEPT๋ ๋์ผํ ๊ธฐ๋ฅ
์ฐธ๊ณ
์ด์งํจ์ค 2025 SQLD SQL ๊ฐ๋ฐ์
โ ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ๊ณต๋ถ๋ฅผ ์ํ SQLD ์ํ์ ๋ฐฉ๋ํ SQL ๊ด๋ จ ์ด๋ก ์ SQLD ์ถ์ ๊ฒฝํฅ์ ๋ง์ถฐ ์๊ธฐ ์ฝ๊ฒ ์ ๋ฆฌํ์ฌ ์๊ฐ์ ์ซ๊ธฐ๋ ์ํ์๋ค์ด ์ต๋ํ ๊ณต๋ถ ํจ์จ์ ๋์ผ ์ ์๋๋ก ๊ตฌ์ฑํ์ต๋๋ค. โ ์ด์ฌ์, ๋น์ ๊ณต์๋ฅผ ์ํด ์ดํดํ๊ธฐ ์ฝ๊ฒ ํ์ด ์ด SQLD ์ํ์ SQL์ ์ฒ์ ์ ํ๋ ์ด์ฌ์๋ ๋น์ ๊ณต์๊ฐ ์ดํดํ๊ธฐ ์ฝ๋๋ก ์์ธํ๊ฒ ์ค๋ช
ํ์ต๋๋ค. ์์ธ๋ฌ ์ถ์ ๊ฒฝํฅ๊ณผ ์ค์๋๋ฅผ ์๋ดํ๋ ‘TIP-BOX’, ํ๋ถํ ์ค๋ช
์ ๋ด์ ‘์ฐธ๊ณ -BOX’๋ฅผ ํ์ฉํ์ฌ
- ์ ์
- ์ ์ฉ๋ฌธ
- ์ถํ
- ์ํค๋ถ์ค
- ์ถํ์ผ
- 2025.02.04
728x90