sqld 2๊ณผ๋ชฉ ์ ๋ฆฌ(SQL ํ์ฉ)
1) JOIN : ํ ์ด๋ธ ๊ฐ์ ๊ฒฐํฉ / ์งํฉ๊ณผ ์ ์ฌํจ!
*๊ต์งํฉ & ํฉ์งํฉ
- INNER JOIN
- LEFT (OUTER) JOIN
- RIGHT (OUTER) JOIN
- (FULL) OUTER JOIN
* ํฉ์งํฉ
- UNION (ALL)
* ์ฐจ์งํฉ
- MINUS (#orable) = EXCEPT (#SQL Server)
* ๊ฒฐํฉ๋๋ ๋์๊ฐ์ ์ผ์น ์ ๋
- EQUI ์กฐ์ธ <> non-EQUI ์กฐ์ธ
* ์กฐ๊ฑด๊ตฌ ์๋ CROSS JOIN(์ํธ ๊ฒฐํฉ)
INNER JOIN
INNER JOIN ํํ ๋ฐฉ์ 2๊ฐ์ง
1๋ฒ
SELECT A.*, B.์ฐ๋ น
FROM GENDER A INNER JOIN AGE B
ON A.ํ์์ฝ๋ = B.ํ์์ฝ๋
WHERE A.์ฑ๋ณ = 'F';
2๋ฒ.
SELECT A.*, B.์ฐ๋ น
FROM GENDER A, AGE B
WHERE A.ํ์์ฝ๋ = B.ํ์์ฝ๋
AND A.์ฑ๋ณ = 'F';
LEFT (OUTER) JOIN
LEFT (OUTER) JOIN ํํ๋ฐฉ์ 2๊ฐ์ง
1๋ฒ
SELECT A.*, B.์ฐ๋ น
FROM GENDER A LEFT JOIN AGE B
ON A.ํ์์ฝ๋ = B.ํ์์ฝ๋;
2๋ฒ
SELECT A.*, B.์ฐ๋ น
FROM GENDER A, AGE B
WHERE A.ํ์์ฝ๋ = B.ํ์์ฝ๋(+);
RIGHT (OUTER) JOIN
RIGHT (OUTER) JOIN ํํ๋ฐฉ์ 2๊ฐ์ง
1๋ฒ
SELECT B.ํ์์ฝ๋, ์ฑ๋ณ, ์ฐ๋ น
FROM GENDER A RIGHT JOIN AGE B
ON A.ํ์์ฝ๋ = B.ํ์์ฝ๋;
2๋ฒ
SELECT B.ํ์์ฝ๋, ์ฑ๋ณ, ์ฐ๋ น
FROM GENDER A, AGE B
WHERE A.ํ์์ฝ๋(+) = B.ํ์์ฝ๋;
(FULL) OUTER JOIN
(FULL) OUTTER JOIN ํํ๋ฐฉ์ 2๊ฐ์ง
1๋ฒ.
SELECT A.*, B.์ฐ๋ น
FROM GENDER A FULL OUTER JOIN AGE B
ON A.ํ์์ฝ๋ = B.ํ์์ฝ๋;
2๋ฒ.
SELECT A.*, B.์ฐ๋ น
FROM GENDER A , AGE B
WHERE A.ํ์์ฝ๋(+) = B.ํ์์ฝ๋(+);
# Oracle9 ๋ฒ์ ์ดํ๋ถํฐ๋ ์์ชฝ์ (+) ๊ฐ๋ฅ
์์ 1)
=> ์ ๋ต!!
SELECT *
FROM T1 [ LEFT OUTER JOIN ] T2
ON T1.c2 = T2.c2;
UNION, UNION ALL - ๋ ํ๋ซํผ ๊ธฐ์ ์ด ํฉ๋ณํ ๋!
์์ 2)
=> ์ ๋ต!!
A. JOIN
B. UNION
์์ 3)
์์ 4)
MINUS - A ํ์ฌ์๋ง ์๋ ๊ณ ๊ฐ ์ ๋ณด๋ฅผ ์ถ๋ฆฌ๋ ค๊ณ ํ๋ค!!!
EQUI JOIN, non-EQUI JOIN
CROSS JOIN - A ํ ์ด๋ธ์ ๋ชจ๋ ํ๊ณผ B ํ ์ด๋ธ์ ๋ชจ๋ ํ์ ์กฐ์ธ(A ๋ ์ฝ๋ ์ * B ๋ ์ฝ๋ ์)
2) ๊ณ์ธตํ ์กฐํ & ๊ทธ๋ฃน ํจ์
๊ณ์ธตํ ์กฐํ : ํธ๋ฆฌํํ์ ๋ฐ์ดํฐ์ ๋ํด ์กฐํ๋ฅผ ์ํํ๋ ๊ฒ
>> ์์ ๋ ธ๋๊ฐ ์๋ ๋ฐ์ดํฐ : LEAF ๋ ธ๋
์์ 1)
=> ์ ๋ต!! 12
๊ณ์ธตํ ์กฐํ ๋ฌธ์ ๋...
์กฐํ๋ฅผ ํตํด ์ด๋ป๊ฒ ๋ ์ฝ๋๊ฐ ์ฌ๋ฐฐ์น ๋๋์ง ํ์ ํ๋ ๊ฒ์ด ์ค์!!
1. ์์์ ์ก๊ธฐ
START WITH : ๊ณ์ธต ๊ตฌ์กฐ๊ฐ ์์๋๋ ์ง์ (ROOT NODE)์ ์๋ ค์ค, ์ฌ๊ธฐ์ ์ ํ ์กฐ๊ฑด์ ๋ง๋ ๋ ์ฝ๋๊ฐ ROOT(๋ถ๋ชจ), ํ ๋ฌธ์ ์์๋ ์ฒซ๋ฒ์งธ ๋ ์ฝ๋๊ฐ ํธ๋ฆฌ ๊ตฌ์กฐ์ ROOT NODE
2. ์ฌ๋ฐฐ์น ๊ธฐ์ค
CONNECT BY, PRIOR : ๋ค์ ๋ ์ฝ๋๊ฐ ์ด๋ค ๊ฒ์ด ์ฌ์ง ์๋ ค์ค
- CONNECT BY PRIOR a = b
- CONNECT BY a = PRIOR b
๋ชจ๋ ๋ ์ฝ๋์ ๋ํ์ฌ ๊ด๊ณ์ฑ(๊ณ์ธต ๊ตฌ์กฐ)๋ฅผ ํ์ ํ์ฌ ํ ์ด๋ธ์ ์ฌ๋ฐฐ์นํ๊ธฐ ์ํจ
1) a์ปฌ๋ผ๊ณผ b์ปฌ๋ผ์ด ๋์ผํ ๋ ์ฝ๋๋ฅผ ๊ฐ์ ๊ณ์ธตํ๊ฐ ๋ฐ์(a=b)
2) ์์ (PRIOR) ๋ ์ฝ๋์ a์ปฌ๋ผ๊ณผ ๋์ผํ b์ปฟํ์ ๊ฐ์ง ๋ ์ฝ๋๋ค์ด ๋ค์ ์จ๋ค
CONNECT BY PRIOR a = b : ์์ ๋ ์ฝ๋์ a = b์ด๋ค
ํ ๋ฌธ์ ์์๋
1) col1๊ณผ col2๊ฐ ๋์ผํ ๋ ์ฝ๋๋ฅผ ๊ฐ์ ๊ณ์ธตํ๊ฐ ๋ฐ์ํ๋ค
2) ใฑ์ col1๊ณผ ๋์ผํ col2๋ฅผ ๊ฐ์ง ๋ ์ฝ๋๊ฐ ๋ค์ ์์์ ์จ๋ค
๊ทธ๋ผ ใด, ใท ์ค์ ๋ญ๊ฐ ๋จผ์ ์ฌ์ง ์ด๋ป๊ฒ ์?? =? ORDER SIBLINGS BY ๊ฐ ํด๊ฒฐํด์ค!!
ORDER SIBLINGS BY col3
: col3 ๊ธฐ์ค, ์ค๋ฆ์ฐจ์์ผ๋ก ๋ฐฐ์น ์์ ๊ฒฐ์
>> col3 : [ใด] 12 < [ใท] 13
์์ 2)
GROUP ํจ์
GROUP BY ์ฑ๋ณ, ์ฐ๋ น | 1. ์ฑ๋ณ * ์ฐ๋ น ๋ณ ์๊ณ |
GROUP BY GROUPING SETS( ์ฑ๋ณ, ์ฐ๋ น) |
1. ์ฑ๋ณ ๋ณ ์๊ณ 2. ์ฐ๋ น ๋ณ ์๊ณ * ๊ดํธ ๋ฌถ์ ์งํฉ๋ณ ์ง๊ณ ๊ฐ๋ฅ |
GROUP BY ROLLUP(์ฑ๋ณ, ์ฐ๋ น) |
1. ์ฑ๋ณ * ์ฐ๋ น ๋ณ ์๊ณ 2. ์ฑ๋ณ ๋ณ ์๊ณ 3. ์ ์ฒด ์ง๊ณ |
GROUP BY CUBE(์ฑ๋ณ, ์ฐ๋ น) |
1. ์ฑ๋ณ * ์ฐ๋ น ๋ณ ์๊ณ 2. ์ฑ๋ณ ๋ณ ์๊ณ 3. ์ฐ๋ น ๋ณ ์๊ณ 4. ์ ์ฒด ์ง๊ณ * ๊ทธ๋ฃนํ๋ ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ๋ํด ์์ฑ |
ex) QUERY ์ฌ๋ก
SELECT ์ฑ๋ณ, ์ฐ๋ น, SUM(๊ฒฐ์ ๊ธ์ก)
FROM ๊ฒฐ์
GROUP BY GROUPING SETS(์ฑ๋ณ, ์ฐ๋ น๋);
์ธ์ฐ๊ธฐ!!!
- Grouping Sets (set1, set2) :๊ทธ๋ฃนํ ์ธํธ ์ธํธ(UNION ALL๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ)
- Rollup(์, ๋ค) : ๋กค์ ์๋ค
- CUBE(๋ชจ๋ ๊ฒฝ์ฐ) : ํ๋ธ
์์ 3)
=> ์ ๋ต!! 2๋ฒ
CUBE๋ ๊ฐ๋ฅํ ๋ชจ๋ ์กฐํฉ์ ๊ฒฝ์ฐ
์์ 4)
=> ์ ๋ต!! 1, 2๋ฒ
1๋ฒ => ROLLUP์ ํด๋นํ๋ ์ค๋ช
2๋ฒ => ์ง๊ณ ๋์ ์ปฌ๋ผ ๊ฐ์ NULL์ด ์๋๋ผ ๊ธฐ์ค์ด ๋๋ ๊ฐ์ผ๋ก ์ค์ ํด์ผ ํ๋ค
3) TOP(N) ์ฟผ๋ฆฌ
: ํ ์ด๋ธ์์ N ๊ฐ์ ํ๋ง ๊ฐ์ ธ์ค๊ณ ์ถ๋ค!
1. ORACLE ๊ธฐ์ค : ROWNUM ์๋ ์นผ๋ผ
=> ์ปฌ๋ผ๊ณผ ๋น์ทํ ์ฑ๊ฒฉ์ Pseudo Column ์ผ๋ก์, SQL ์ฒ๋ฆฌ๊ฒฐ๊ณผ ์งํฉ์ ๊ฐ ํ์ ๋ํด ์์์ ์ผ๋ก ๋ถ์ฌ๋๋ ์ผ๋ จ๋ฒํธ
SELECT *
FROM C_INFO
WHERE ROWNUM <= 100;
** (์ค๋ฅ) C_INFO ํ ์ด๋ธ์์ ๋์ด๊ฐ ์ด๋ฆฐ 100๋ช ์ ์กฐํํ๋ ค๋ฉด?
SELECT *
FROM C_INFO
WHERE ROWNUM <= 100
ORDER BY AGE;
=> C_INFO์์ ๋ฌด์์๋ก ์ถ์ถ๋ 100๊ฐ์ ๋ ์ฝ๋๋ฅผ AGE ์์ผ๋ก ์ ๋ ฌํ ๊ฒ๊ณผ ๊ฐ๋ค
** (์ ๋ต) C_INFO ํ ์ด๋ธ์์ ๋์ด๊ฐ ์ด๋ฆฐ 100๋ช ์ ์กฐํํ๋ ค๋ฉด?
=> ์ธ๋ผ์ธ ๋ทฐ์์ ๋จผ์ ์ ๋ ฌํ๊ธฐ!
SELECT *
FROM (SELECT *
FROM C_INFO
ORDER BY AGE)
WHERE ROWNUM <= 100;
2. SQL SERVER ๊ธฐ์ค : TOP ์
** C_INFO ํ ์ด๋ธ์์ ๋์ด๊ฐ ์ด๋ฅธ 100๋ช ์ ์กฐํํ๋ ค๋ฉด?
SELECT TOP(100)
NAME, AGE
FROM C_INFO
ORDER BY AGE;
** WITH TIES
=> TOP N์ ๋ง์ง๋ง ํ๊ณผ ๋์ผํ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ ์ถ๊ฐ ํ์ด ์ถ๋ ฅ๋จ
SELECT TOP(2) WITH TIES
NAME, AGE
FROM C_INFO
ORDER BY AGE;
=> C_INFO ํ ์ด๋ธ์์ AGE๊ฐ ๋ฎ์ 2๋ช ์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ถ๋ ฅํ๋๋ฐ, ๊ฐ์ AGE์ธ ๊ณ ๊ฐ์ด ์์ผ๋ฉด ๊ฐ์ด ์ถ๋ ฅํ๋ค
=> ORDER BY๊ฐ ์ง์ ๋ ๊ฒฝ์ฐ์๋ง ์ฌ์ฉ ๊ฐ๋ฅ
3. ROW LIMITING ์ (ANSI ํ์ค SQL)
** C_INFO ํ ์ด๋ธ์์ ๋์ด๊ฐ ์ด๋ฆฐ 100๋ช ์ ์กฐํํ๋ ค๋ฉด?
SELECT NAME, AGE
FROM C_INFO
ORDER BY AGE FETCH FIRST 100 ROWS ONLY;
* FETCH : ๋ฐํํ ๊ฒ ์ง์ ํด์ค
* ONLY : ์ง์ ํ ๋งํผ(with ties ๋ง์ง๋งํ ๋์์ ํฌํจ)
- ORACLE
SELECT *
FROM (SELECT *
FROM C_INFO
ORDER BY AGE )
WHERE ROWNUM <= 100;
- SQL SERVER
SELECT TOP(100)
NAME, AGE
FROM C_INFO
ORDER BY AGE;
**์์ 100๊ฐ ํ์ ๊ฑด๋๋ด ์ดํ์ ์ ์ฒด ํ ๋ฐํํ๋ ค๋ฉด?
SELECT NAME, AGE FROM C_INFO ORDER BY AGE OFFSET 100 ROWS;
* OFFSET : ๊ฑด๋๋ธ ๊ฒ ์ง์ ํด์ค
3. ์๋์ฐ ํจ์ & ํํฐ์
WINDOW ํจ์
: ๋ ์ฝ๋(ํ) ์ฌ์ด์ ๊ด๊ณ๋ฅผ ์ฝ๊ฒ ์ ์ํ๊ธฐ ์ํ ํจ์
๋งค์ฅ ์ฝ๋ | ์ง์ญ๋ช | ๋ฉ๋ด๋ช | ํ๋งค๋ | ํ๋งค์์ |
101 | ์์ธ | ์ฐ์ด์ค์ | 500 | 1 |
101 | ์์ธ | ์ฐธ์น์ค์ | 400 | 2 |
101 | ์์ธ | ์๊ท | 300 | 3 |
102 | ๋ถ์ฐ | ์ฐ์ด์ค์ | 600 | 1 |
102 | ๋ถ์ฐ | ํ๊น | 300 | 2 |
SELECT WINDOW_FUNCTION (ARGUMENTS) OVER ( [PARTITON BY ์ปฌ๋ผ๋ช ] [ORDER BY ์ปฌ๋ผ๋ช ] [WINDOWING] ) FROM ํ ์ด๋ธ๋ช ;
- WINDOW_FUNCTION : ์๋์ฐ ํจ์
- ARGUMENTS : ์ธ์(์ปฌ๋ผ๋ช ๋ฑ ํจ์์ ์์ ์ด ์ด๋ค์ง๋ ๋์)
- PARTITION BY : ํ ์ด๋ธ์ ๋ ์ฝ๋๋ค์ ์ชผ๊ฐ๋ ๊ธฐ์ค
- ORDER BY : ์ชผ๊ฐ์ง ๋ ์ฝ๋๋ค ๋ด์์ ํน์ ์ ์ฒด ํ ์ด๋ธ์์ ๋ ์ฝ๋๋ค์ ์ด๋ค ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ ์ง
- WINDOWING : ํจ์์ ์ฐ์ฐ ๋์์ด ๋๋ ๋ ์ฝ๋์ ๋ฒ์๋ฅผ ์ ํจ
* WINDOW_FUNCTION ์ข ๋ฅ
- ๊ทธ๋ฃน ๋ด ์ง๊ณ ํจ์ : COUNT, SUM, MIN, MAX, AVG๋ฑ
- ๊ทธ๋ฃน ๋ด ์์(RANK) ํจ์
- ๊ทธ๋ฃน ๋ด ๋น์จ ๊ด๋ จ ํจ์
- ๊ทธ๋ฃน ๋ด ํ ์์ ํจ์
WINDOW ํจ์ - ๊ทธ๋ฃน ๋ด RANK ํจ์
RANK | - ๋์ผํ ์์์ ๋ํด ๋์ผํ ์์๋ฅผ ๋ถ์ฌํ๋ค - ๋์ผํ ์์๋ฅผ ํ๋์ ๊ฑด์๋ก ๊ณ์ฐํ์ง ์๋๋ค (1 / 2, 2 / 4) |
DENSE_RANK | - ๋์ผํ ์์์ ๋ํด ๋์ผํ ์์๋ฅผ ๋ถ์ฌํ๋ค - ๋์ผํ ์์๋ ํ๋์ ๊ฑด์๋ก ๊ณ์ฐํ๋ค (1 / 2, 2 / 3) |
ROW_NUMBER | - ๋์ผํ ์์์ ๋ํด ๊ณ ์ ํ ์์๋ฅผ ๋ถ์ฌํ๋ค (1 / 2 / 3 / 4 ) |
**RANK์ DENSE_RANK ์ฐจ์ด ๋น๊ต!!
์์1)
=> ์ ๋ต!!
A : DENSE_RANK
B : RANK
C : ROW_NUMBER
์์2)
=> ์ ๋ต!! 1๋ฒ (์ฌํ SQL๋ฌธ๊ณผ ๋์ผํ๊ฒ ORDER BY๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ฆ์ฐจ์, ๋ด๋ฆผ์ฐจ์ ์ถ๋ ฅ์ด ๊ฐ๋ฅ / ์์๋ก ์๋์ผ๋ก ์ ๋ ฌ๋๋ ๊ฒ์ ์๋)
์์ 3)
=> ์ ๋ต!!
SELECT ๋งค์ฅ ์ฝ๋, ์ง์ญ๋ช , ๋ฉ๋ด๋ช , ํ๋งค๋
, DENSE_RANK () OVER (PARTITION BY ์ง์ญ๋ช ORDER BY ํ๋งค๋ DESC) AS
ํ๋งค์์
FROM ํ๋งค
Window ํจ์ - ๊ทธ๋ฃน ๋ด ๋น์จ ํจ์
PERCENT_RANK | - ๊ฐ์ด ์๋, ์์๋ฅผ ๋์์ผ๋ก, ํํฐ์ ๋ด์์์ ์์๋ณ ๋ฐฑ๋ถ์จ์ ์กฐํํจ |
NTILE(n) | - ํํฐ์ ๋ณ๋ก ์ ์ฒด ๊ฑด์๋ฅผ n๋ฑ๋ถํ ๊ฐ์ ๋ฐํํ๋ค. n=4์ด๋ฉด 4๋ฑ๋ถํ ๊ฒ ๋ด์์ ๋ช์ธ์ง ์กฐํ |
CUME_DIST | - ํํฐ์
๋ด ์ ์ฒด์์ ํ์ฌ ํ์ ๊ฐ ์ดํ์ธ ๋ ์ฝ๋ ๊ฑด์์ ๋ํด ๋์ ๋ฐฑ๋ถ์จ์ ์กฐํ - ๋์ ๋ถํฌ ์์ 0~1 ๊ฐ์ ๊ฐ์ง |
WIndow ํจ์ - ๊ทธ๋ฃน ๋ด ํ ์์ ํจ์
FIRST_VALUE | - ํํฐ์
๋ด์์ ๊ฐ์ฅ ์ฒ์ ๋์ค๋ ๊ฐ ๋ฐํ - MIN๊ณผ ๋์ผํ ๊ฒฐ๊ณผ |
LAST_VALUE | - ํํฐ์
๋ด์์ ๊ฐ์ฅ ๋ง์ง๋ง์ ๋์ค๋ ๊ฐ ๋ฐํ - MAX์ ๋์ผํ ๊ฒฐ๊ณผ |
LAG(์ปฌ๋ผ๋ช , ๋ ์ฝ๋ ์์น ์ฐจ์ด๊ฐ) | - ์ด์ ํ์ ๊ฐ์ ธ์จ๋ค |
LEAD(์ปฌ๋ผ๋ช , ๋ ์ฝ๋ ์์น ์ฐจ์ด๊ฐ, null์ผ ๊ฒฝ์ฐ ๋์ฒด๊ฐ) | - ๋ค์(ํน์ ์์น์) ํ์ ๊ฐ์ ธ์จ๋ค - default๋ 1์ด๋ค |
์์ 4)
=> ์ ๋ต (ใฑ : E, ใด : E)
Window ํจ์ ์ค WINDOWING
SELECT WINDOW _FUNCTION (ARGUMENTS) OVER ( [PARTITION BY ์ปฌ๋ผ๋ช ] [ORDER BY ์ปฌ๋ผ๋ช ] [WINDOWING] ) FROM ํ ์ด๋ธ๋ช ;
- WINDOWING : ํจ์์ ์ฐ์ฐ ๋์์ด ๋๋ ๋ ์ฝ๋์ ๋ฒ์๋ฅผ ์ ํจ
RANGE | ex ) RANGE BETWEEN 100 AND 200 ๋ฒ์๋ฅผ ์ง์ ํด์ค ๋ ์ฌ์ฉ |
BETWEEN a AND b | a๋ถํฐ b๊น์ง ์๋์ฐ๊ฐ ์ ์ฉ๋จ |
UNBOUNDED PRECEDING | ์๋์ฐ์ ์์ ์์น = ์ฒซ ๋ฒ์งธ ํ |
UNBOUNDED FOLLOWING | ์๋์ฐ์ ๋ง์ง๋ง ์์น = ๋ง์ง๋ง ํ |
CURRENT ROW | ์๋์ฐ ์์ ์์น๊ฐ ํ์ฌ ํ |
์์ 5)
=> ์ ๋ต!! UNBOUNDED PRECEDING
ํ ์ด๋ธ ํํฐ์
- ๋์ฉ๋์ ํ ์ด๋ธ์ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ ํ์ผ์ ๋ถ๋ฆฌํ์ฌ ์ ์ฅํ๋ ๊ฒ
๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถ๋ฆฌ๋ ๋ฐ์ดํฐ ํ์ผ์ ์ ์ฅ๋์ด ์ ๋ ฅ / ์์ / ์ญ์ / ์กฐํ ์ฑ๋ฅ์ด ํฅ์๋๊ณ , ๋ ๋ฆฝ์ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅ
์กฐํ์ ๋ฒ์๋ฅผ ์ค์ด๋ ํจ๊ณผ๊ฐ ์์ด ์ฑ๋ฅ์ด ํฅ์๋จ
** ๋ง ์์ฒญ ์ค์ํ์ง ์์;;
RANGE PARTITION | ๊ฐ์ ๋ฒ์๋ฅผ ๊ธฐ์ค์ผ๋ก ํํฐ์
์ ๋๋ ์ ์ฅํ๋ ๋ฐฉ๋ฒ ex) ๋งค์ถ์ก์ 50000 ์ด์์ธ ๋ ์ฝ๋์ ๋ฏธ๋ง์ธ ๋ ์ฝ๋๋ฅผ ๋ณ๋๋ก ์ ์ฅ |
LIST PARTITION | ํน์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ถํ ex) ํน์ ๊ฐ์ด 100์ผ ๋์ 250์ผ ๋ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ฐ์ดํฐํ์ผ์ ์ ์ฅ |
HASH PARTITION | ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ด๋ฆฌ ์์คํ ์ด ์์ฒด์ ์ผ๋ก ํด์ ํจ์๋ฅผ ์ฌ์ฉํด ๋ถํ ํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐฉ์ |