์์ ๊ด๊ณ ์ฐ์ฐ์
์
๋ ํธ (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 ํ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
๊ฒฐ๊ณผ ๊ฑด์ ๋ํ ํํฐ๋ง์ 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 ๋ฌธ ๋ง์ง๋ง์ ์์น
๊ณ์ธตํ ์ฟผ๋ฆฌ(CONNECT BY)
๊ณ์ธตํ ๊ตฌ์กฐ๋ ์ํ ์์ง๊ด๊ณ์ ํธ๋ฆฌํํ์ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ง ํํ๋ฅผ ๋งํฉ๋๋ค.
์๋ฅผ ๋ค์๋ฉด ํน์ ํ์ฌ์ ๋ถ์, ํน์ ํ๊ต์ ํ๊ณผ๋ฑ์ด ์์ต๋๋ค.
๊ณ์ธตํ ์ฟผ๋ฆฌ๋ ํ ์ด๋ธ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๊ณ์ธตํ ๊ตฌ์กฐ๋ก ๋ฐํํ๋ ์ฟผ๋ฆฌ๋ฅผ ๋งํฉ๋๋ค.
์ํ์์
1. START WITH ์ ์ ์์ ์กฐ๊ฑด์ ์ฐพ์ต๋๋ค.
2. CONNECT BY ์ ์ ์ฐ๊ฒฐ์กฐ๊ฑด์ ์ฐพ์ต๋๋ค.
START WITH : ๋ฃจํธ ๋ฐ์ดํฐ๋ฅผ ์ง์ ํ๋ค. / ๋ฃจํธ ๋ ธ๋์ ๋ ๋ฒจ๊ฐ์ 0 ์ด๋ค.
ORDER SIBLINGS BY : ํ์ ๋ ธ๋ ์ฌ์ด์์ ์ ๋ ฌ์ ์ํํ๋ค.
CONNECT BY PRIOR ์์ = ๋ถ๋ชจ : ๋ถ๋ชจ -> ์์ ์๋ฐฉํฅ ์ ๊ฐ
'์๊ฒฉ์ฆ > SQLD' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQLD] ์ต์ข ์ ๋ฆฌ (0) | 2023.03.18 |
---|---|
[SQLD] 4. SQL ๊ธฐ๋ณธ - 2 (0) | 2023.03.15 |
[SQLD] 3. SQL ๊ธฐ๋ณธ - 1 (0) | 2023.03.14 |
[SQLD] 2. ๋ฐ์ดํฐ ๋ชจ๋ธ๊ณผ ์ฑ๋ฅ (0) | 2023.03.13 |
[SQLD] 1. ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง์ ์ดํด (0) | 2023.03.06 |