1. NATURAL JOIN
๊ฐ์ ์ด๋ฆ์ ๊ฐ์ง ์ปฌ๋ผ ์ ์ฒด์ ๋ํ ๋ฑ๊ฐ ์กฐ์ธ, USING ์กฐ๊ฑด์ ์ด๋ ON ์กฐ๊ฑด์ ์ฌ์ฉ ๋ถ๊ฐ, ๊ฐ์ ๋ฐ์ดํฐ ์ ํ ์ปฌ๋ผ๋ง ์กฐ์ธ ๊ฐ๋ฅ, ์จ๋ฆฌ์ด์ค๋ ํ ์ด๋ธ๋ช ์ฌ์ฉ ๋ถ๊ฐ
SELECT ์ปฌ๋ผ, ... FROM ํ
์ด๋ธ1 NATURAL JOIN ํ
์ด๋ธ2
2. INNER JOIN
ํ์ ๋์ผํ ๊ฐ์ด ์๋ ์ปฌ๋ผ ์กฐ์ธ, JOIN์ ๋ํดํธ ์ต์ , USING ์กฐ๊ฑด์ ์ด๋ ON ์กฐ๊ฑด์ ํ์, CROSS JOIN์ด๋ OUTER JOIN๊ณผ ๋์ ์ฌ์ฉ ๋ถ๊ฐ, ๋ ํ ์ด๋ธ์ ๋์ผ ์ด๋ฆ ์ปฌ๋ผ์ด ์์ ๊ฒฝ์ฐ SELECT์ ์ ์จ๋ฆฌ์ด์ค ํ์
SELECT ์ปฌ๋ผ, ... FROM ํ
์ด๋ธ1 A, ํ
์ด๋ธ2 B WHERE A.์ปฌ๋ผ = B.์ปฌ๋ผ
SELECT ์ปฌ๋ผ, ... FROM ํ
์ด๋ธ1 A INNER JOIN ํ
์ด๋ธ2 B ON A.์ปฌ๋ผ = B.์ปฌ๋ผ
SELECT ์ปฌ๋ผ, ... FROM ํ
์ด๋ธ1 A, ํ
์ด๋ธ2 B USING (์ปฌ๋ผ๋ช
)
SELECT ์ปฌ๋ผ, ... FROM ํ
์ด๋ธ1 A INNER JOIN ํ
์ด๋ธ2 B ON A.์ปฌ๋ผ = B.์ปฌ๋ผ
3. CROSS JOIN
๊ฐ๋ฅํ ๋ชจ๋ ์กฐํฉ์ผ๋ก JOIN
SELECT ์ปฌ๋ผ, ... FROM ํ
์ด๋ธ1, ํ
์ด๋ธ2
SELECT ์ปฌ๋ผ, ... FROM ํ
์ด๋ธ1 CROSS JOIN ํ
์ด๋ธ2
4. OUTER JOIN
์กฐ์ธ ์กฐ๊ฑด์์ ํ์ ๋์ผํ ๊ฐ์ด ์๋ ์ปฌ๋ผ ์กฐ์ธ, USING ์กฐ๊ฑด์ ์ด๋ ON ์กฐ๊ฑด์ ํ์
SELECT ์ปฌ๋ผ, ... FROM ํ
์ด๋ธ1 A, ํ
์ด๋ธ2 B A.์ปฌ๋ผ = B.์ปฌ๋ผ
SELECT ์ปฌ๋ผ, ... FROM ํ
์ด๋ธ1 A LEFT OUTER JOIN ํ
์ด๋ธ2 B ON A.์ปฌ๋ผ = B.์ปฌ๋ผ
RIGHT OUTER JOIN : LEFT OUTER JOIN์ ๋ฐ๋ ๊ฐ๋
FULL OUTER JOIN : LEFT์ RIGHT OUTER JOIN ํฌํจ
SELECT ์ปฌ๋ผ, ... FROM ํ
์ด๋ธ1 A FULL OUTER JOIN ํ
์ด๋ธ2 B ON A.์ปฌ๋ผ = B.์ปฌ๋ผ
1. ์งํฉ ์ฐ์ฐ์
์กฐ์ธ ์์ด ์ฌ๋ฌ ํ ์ด๋ธ์ ๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ์ฐ์ฐ์
2. UNION (ํฉ์งํฉ)
์ปฌ๋ผ ์์ ๋ฐ์ดํฐ ํ์
์ด ๋ชจ๋ ๋์ผํ ํ
์ด๋ธ ๊ฐ ์ฐ์ฐ๋ง ๊ฐ๋ฅ
UNION ์ ์ ๋ ฌ O
SELECT ์ปฌ๋ผ, ... FROM ํ
์ด๋ธ A WHERE ์กฐ๊ฑด์ UNION SELECT ํ
์ด๋ธ B WHERE ์กฐ๊ฑด์
SELECT ์ปฌ๋ผ, ... FROM ํ
์ด๋ธ A WHERE ์กฐ๊ฑด์ UNION ALL SELECT ํ
์ด๋ธ B WHERE ์กฐ๊ฑด์
3. INTERSECT (๊ต์งํฉ)
SELECT ์ปฌ๋ผ, ... FROM ํ
์ด๋ธ A WHERE ์กฐ๊ฑด์ INTERSECT SELECT ํ
์ด๋ธ B WHERE ์กฐ๊ฑด์
4. MINUS, EXCEPT (์ฐจ์งํฉ)
SELECT ์ปฌ๋ผ, ... FROM ํ
์ด๋ธ A WHERE ์กฐ๊ฑด์ MINUS SELECT ํ
์ด๋ธ B WHERE ์กฐ๊ฑด์
1. ๊ณ์ธตํ ์ง์
๊ณ์ธตํ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ธฐ ์ํด ์ฌ์ฉ
๊ณ์ธตํ ๋ฐ์ดํฐ : ์ํฐํฐ๋ฅผ ์ํ๊ด๊ณ ๋ฐ์ดํฐ ๋ชจ๋ธ๋ก ์ค๊ณํ ๋ ๋ฐ์
CONNECT BY : ํธ๋ฆฌ ํํ์ ๊ตฌ์กฐ๋ก ์ฟผ๋ฆฌ ์ํ (๋ฃจํธ ๋ ธ๋๋ถํฐ ํ์ ๋ ธ๋์ ์ฟผ๋ฆฌ๋ฅผ ์คํ)
ยฐ START WITH : ์์ ์กฐ๊ฑด ์ง์
ยฐ CONNECT BY PRIOR : ์กฐ์ธ ์กฐ๊ฑด ์ง์ LEVEL : ๊ฒ์ ํญ๋ชฉ์ ๊น์ด, ์ต์์ ๊ณ์ธต์ ๋ ๋ฒจ์ 1
ยฐ CONNECT_BY_ROOT : ์ต์์ ๊ณ์ธต ๊ฐ ํ์
ยฐ CONNECT_BY_ISLEAF : ์ตํ์ ๊ณ์ธต ๊ฐ ํ์
ยฐ SYS_CONNECT_BY_PATH : ๊ณ์ธต ๊ตฌ์กฐ์ ์ ๊ฐ ๊ฒฝ๋ก ํ์
CONNECT BY์ ์ ๋ฃจํ ์๊ณ ๋ฆฌ์ฆ ํค์๋
ยฐ NOCYCLE : ์ํ๊ตฌ์กฐ์ ๋ฐ์์ง์ ๊น์ง๋ง ์ ๊ฐ
ยฐ CONNECT_BY_ISCYCLE : ์ํ๊ตฌ์กฐ ๋ฐ์์ง์ ํ์(๋ถ๋ชจ ๋
ธ๋์ ์์ ๋
ธ๋๊ฐ ๊ฐ์ ๋ 1 ์๋๋ฉด 0 ์ถ๋ ฅ)
LPAD
๊ณ์ธตํ ์กฐํ ๊ฒฐ๊ณผ๋ฅผ ๋ช
ํํ ํ๊ธฐ ์ํด ์ฌ์ฉ(LEVEL ๊ฐ์ ์ด์ฉํ์ฌ ๊ฒฐ๊ณผ ๋ฐ์ดํฐ ์ ๋ ฌ)
2. SQL Server ๊ณ์ธตํ ์ง์
CTE(Common Table Expression)๋ก ์ฌ๊ท ํธ์ถ
ํ๋์ SQL๋ฌธ ์์ SQL๋ฌธ
1. ์ข ๋ฅ
- ๋์ ๋ฐฉ์์ ๋ฐ๋ฅธ ๋ถ๋ฅ
ยฐ ๋น์ฐ๊ด ์๋ธ์ฟผ๋ฆฌ
๋ฉ์ธ์ฟผ๋ฆฌ ์ปฌ๋ผ์ ๊ฐ์ง๊ณ ์์ง ์๋ ์๋ธ์ฟผ๋ฆฌ, ๋ฉ์ธ ์ฟผ๋ฆฌ์ ๊ฐ์ ์ ๊ณตํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ์ฃผ๋ก ์ฌ์ฉ.
Access Subquery : ์ ๊ณต์ ์ญํ
Filter Subquery : ํ์ธ์ ์ญํ
Early filter Subquery : ๋ฐ์ดํฐ ํํฐ๋ง ์ญํ
ยฐ ์ฐ๊ด ์๋ธ ์ฟผ๋ฆฌ
๋ฉ์ธ์ฟผ๋ฆฌ์ ๊ฒฐ๊ณผ๋ฅผ ์กฐ๊ฑด์ด ๋ง๋์ง ํ์ธํ๊ธฐ ์ํ ๋ชฉ์ ์ผ๋ก ์ฃผ๋ก ์ฌ์ฉํจ
- ๋ฐํ ๋ฐ์ดํฐ ํํ์ ๋ฐ๋ฅธ ๋ถ๋ฅ
ยฐ ๋จ์ผ ํ ์๋ธ์ฟผ๋ฆฌ : ์คํ ๊ฒฐ๊ณผ๊ฐ 1๊ฑด ์ดํ์ธ ์๋ธ์ฟผ๋ฆฌ, ๋จ์ผ ํ ๋น๊ต ์ฐ์ฐ์์ ํจ๊ป ์ฌ์ฉ
ยฐ ๋ค์ค ํ ์๋ธ์ฟผ๋ฆฌ : ์คํ ๊ฒฐ๊ณผ๊ฐ ์ฌ๋ฌ ๊ฑด์ธ ์๋ธ์ฟผ๋ฆฌ, ๋ค์ค ํ ๋น๊ต ์ฐ์ฐ์์ ํจ๊ป ์ฌ์ฉ
โป ๋ค์คํ ๋น๊ต ์ฐ์ฐ์
ยฐ ๋ค์ค ์ปฌ๋ผ ์๋ธ์ฟผ๋ฆฌ : ์คํ ๊ฒฐ๊ณผ๋ก ์ฌ๋ฌ ์ปฌ๋ผ ๋ฐํ, ์ฃผ๋ก ๋ฉ์ธ์ฟผ๋ฆฌ์ ์กฐ๊ฑด๊ณผ ๋น๊ตํ๊ธฐ ์ํด ์ฌ์ฉ(๋น๊ตํ๊ณ ์ ํ๋ ์ปฌ๋ผ์ ๊ฐ์์ ์์น๊ฐ ๋์ผํด์ผ ํจ)
2. ์ค์นผ๋ผ ์๋ธ์ฟผ๋ฆฌ
๊ฐ ํ๋๋ฅผ ๋ฐํํ๋ ์๋ธ์ฟผ๋ฆฌ, SELECT์ ์ ์ฌ์ฉํ๋ ์๋ธ์ฟผ๋ฆฌ
3. ๋ทฐ
๊ฐ์์ ํ ์ด๋ธ, FROM์ ์ ์ฌ์ฉํ๋ ๋ทฐ๋ ์ธ๋ผ์ธ ๋ทฐ๋ผ๊ณ ํจ
4. WITH
์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ๋ทฐ๋ก ์ฌ์ฉํ ์ ์๋ ๊ตฌ๋ฌธ
1. ANSI/ISO ํ์ค ๋ฐ์ดํฐ ๋ถ์ ํจ์
์ง๊ณํจ์, ๊ทธ๋ฃน ํจ์, ์๋์ฐ ํจ์
2. ๊ทธ๋ฃน ํจ์
ํฉ๊ณ ๊ณ์ฐ ํจ์, NULL์ ๋นผ๊ณ ์ง๊ณํจ, ๊ฒฐ๊ณผ๊ฐ ์๋ ํ์ ์ถ๋ ฅ ์ํจ
GROUP BY ROLLUP(A,B)
A์ B๋ณ ์๊ณ / A ์๊ณ / ์ดํฉ๊ณ
GROUP BY CUBE(A,B)
A์ B๋ณ ์๊ณ / A ์๊ณ / B์๊ณ / ์ดํฉ๊ณ
GROUP BY GROUPING SETS(A,B)
A๋ณ ์๊ณ / B๋ณ ์๊ณ
3. GROUPING
๊ทธ๋ฃน ํจ์์์ ์์ฑ๋๋ ํฉ๊ณ๋ฅผ ๊ตฌ๋ถํด์ฃผ๋ ํจ์, ์๊ณ๋ ํฉ๊ณ๊ฐ ๊ณ์ฐ๋๋ฉด 1 ์๋๋ฉด 0 ๋ฐํ
์ฌ๋ฌ ํ ๊ฐ์ ๊ด๊ณ์ ์ ํจ์, ์ค์ฒฉ ๋ถ๊ฐ
1. ์์ ํจ์
2. ์ผ๋ฐ ์ง๊ณ ํจ์
SUM, MAX, MIN, AVG, COUNT
3. ํ ์์ ํจ์
4. ๋น์จ ๊ด๋ จ ํจ์
PARTITION BY : ๊ทธ๋ฃนํ ๊ธฐ์ค
ORDER BY : ์์ ์ง์ ๊ธฐ์ค
์๋์ ์ : ํจ์์ ๋์์ด ๋๋ ํ ๋ฒ์ ์ง์
ยฐ BETWEEN A AND B : ๊ตฌ๊ฐ ์ง์
ยฐ ROWS, RANGE : ํ ์ง์ , ๊ฐ์ ๋ฒ์ ์ง์
GRANT ๊ถํ ON ์ค๋ธ์ ํธ TO ์ ์ ๋ช
REVOKE ๊ถํ ON ์ค๋ธ์ ํธ TO ์ ์ ๋ช
์ ์ฐจํ SQL
์ผ๋ฐ์ ์ธ ๊ฐ๋ฐ์ธ์ด์ฒ๋ผ ์ ์ฐจ์งํฅ์ ์ธ ํ๋ก๊ทธ๋จ์ ์์ฑํ ์ ์๋๋ก ์ ๊ณตํ๋ ๊ธฐ๋ฅ
SQL ๋ฌธ์ ์ฐ์์ ์ธ ์คํ ๋ฐ ์กฐ๊ฑด์ ๋ฐ๋ฅธ ๋ถ๊ธฐ์ฒ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ํน์ ๊ธฐ๋ฅ์ ์ํํ๋ ์ ์ฅ ๋ชจ๋ ์์ฑ ๊ฐ๋ฅ
PL/SQL
๋ธ๋ก๊ตฌ์กฐ : ๋ธ๋ก ๋ด์ DML, ์ฟผ๋ฆฌ, IF๋ LOOP ๋ฑ์ ์ฌ์ฉํ ์ ์์
ยฐ Declare(์ ์ธ๋ถ) : ๋ธ๋ก์์ ์ฌ์ฉํ ๋ณ์๋ ์ธ์์ ๋ํ ์ ์
ยฐ Begin(์คํ๋ถ) : ์ฒ๋ฆฌํ SQL๋ฌธ ์ ์
ยฐ Exception(์์ธ ์ฒ๋ฆฌ๋ถ) : ๋ธ๋ก์์ ๋ฐ์ํ ์๋ฌ ์ฒ๋ฆฌ ๋ก์ง ์ ์, ์ ์ผํ ์ ํ ํญ๋ชฉ
T-SQL
์ฌ์ฉ์ ์ ์ ํจ์
์ ์ฐจํ SQL์ ๋ก์ง๊ณผ ํจ๊ป DB๋ด์ ์ ์ฅํด ๋์ ๋ช ๋ น๋ฌธ ์งํฉ, RETURN์ ํตํด ๋ฐ๋์ ํ๋์ ๊ฐ ๋ฐํ
ํธ๋ฆฌ๊ฑฐ
DML๋ฌธ์ด ์ํ๋์์๋ ์๋์ผ๋ก ๋์ํ๋ ํ๋ก๊ทธ๋จ
DCL๊ณผ TCL ์คํ ๋ถ๊ฐ
ํ๋ก์์
ํ๋ก์์ ๋ ํธ๋ฆฌ๊ฑฐ์ ๋ค๋ฅด๊ฒ EXECUTE๋ก ์คํ
DCL๊ณผ TCL ์คํ ๊ฐ๋ฅ