์ค๋ต๋ ธํธ
[01๋ฒ] ์ ๋ต โฃ / ๋ด ์ ๋ต โ
[ํด์ค] ๋๋ฉ์ธ : ๊ฐ ์์ฑ์ด ๊ฐ์ง ์ ์๋ ๊ฐ์ ๋ฒ์
์ํฐํฐ ๋ด์์ ์์ฑ์ ๋ํ ๋ฐ์ดํฐ ํ์ /ํฌ๊ธฐ/์ ์ฝ์กฐ๊ฑด์ ์ง์ ํ๋ค.
[์ ํ๋ ธ๋?] ๋๋ฉ์ธ ๊ฐ๋ ์์ง ๋ถ์กฑ
[07๋ฒ] ์ ๋ต โฃ / ๋ด ์ ๋ต โ
[ํด์ค] ํ์์๋ ๋ถ๋ถ๊น์ง ๋ชจ๋ ์กฐํ
โก ์ธ๋ํค๊ฐ ์ฃผํค๋ฉด ์๋ณ๊ด๊ณ, ๊ทธ๋ฅ ์์ฑ์ด๋ฉด ๋น์๋ณ๊ด๊ณ์ด๋ค.
[์ ํ๋ ธ๋?] ๋ฐ์ ๊ทํ ๊ฐ๋ ์์ง ๋ถ์กฑ
[11๋ฒ] ์ ๋ต โก / ๋ด ์ ๋ต โฃ
[ํด์ค] TURNCATE๋ ํ ์ด๋ธ ์ ์ฒด๋ฅผ ์ญ์ ํ๋ค.
[์ ํ๋ ธ๋?] TURNCATE, DELETE, DROP ์ฐจ์ด์ ์์ง ๋ถ์กฑ
TRUNCATE | DROP | DELETE |
DDL | DDL | DML |
๋ฐ์ดํฐ, ์ธ๋ฑ์ค ์ญ์ (ํ ์ด๋ธ ์ต์ด ์์ฑ ์ด๊ธฐ์ํ๋ก ๋ง๋ฌ) |
ํ
์ด๋ธ, ์ธ๋ฑ์ค ์ญ์ (ํ ์ด๋ธ ๊ตฌ์กฐ ์์ฒด ์ญ์ ) |
๋ฐ์ดํฐ๋ง ์ญ์ |
๊ตฌ์กฐ ๋จ๋๋ค | ๊ตฌ์กฐ ์ญ์ | ๊ตฌ์กฐ, ๋ก๊ทธ ๋จ๋๋ค |
์ฌ์ฉ๊ณต๊ฐ ๋ฐ๋ฉ | ์ฌ์ฉ๊ณต๊ฐ ๋ฐ๋ฉ | ์ฌ์ฉ๊ณต๊ฐ ๋จ์์์ |
Auto COMMIT | Auto COMMIT | COMMIT์ด์ ROLLBACK ๊ฐ๋ฅ |
[12๋ฒ] ์ ๋ต โฃ / ๋ด ์ ๋ต โก
[ํด์ค] โก SELECT * FROM TABLE ORDER BY 2; -> SELECT์ ์ ์ง์ ๋ 2๋ฒ์งธ ์นผ๋ผ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ฒ ๋ค
[์ ํ๋ ธ๋?] โฃ SELECT N1 FROM TABLE ORDER BY 2; -> SELECT์ ์ ์นผ๋ผ์ด ํ๋๋ง ์ง์ ๋์๋๋ฐ, 2๋ฒ์งธ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๋ผ๋ ์ฟผ๋ฆฌ๋ฌธ
[13๋ฒ] ์ ๋ต โ / ๋ด ์ ๋ต โข
[ํด์ค] ํธ๋ฆฌ๊ฑฐ๋ ์์ฑ ํ ์๋ ์คํ๋๋ค.
[์ ํ๋ ธ๋?] ํ๋ก์์ , ํธ๋ฆฌ๊ฑฐ์ ์ฐจ์ด์ ์์ง ๋ถ์กฑ
ํ๋ก์์ : BEGIN~END COMMIT์ ๋ด์ ROLLBACK๊ณผ ๊ฐ์ ํธ๋์ญ์
์ข
๋ฃ ๋ช
๋ น์ด ์ฌ์ฉ๊ฐ๋ฅ. EXECUTE ๋ช
๋ น์ด๋ก ์คํ
ํธ๋ฆฌ๊ฑฐ : BEGIN~END์ ๋ด์ ์ฌ์ฉ ๋ถ๊ฐ. ์์ฑ ํ ์๋ ์คํ
[15๋ฒ] ์ ๋ต โข / ๋ด ์ ๋ต โฃ
[ํด์ค] SELECT ์ ์๋ช , ํ๋ช , ์ฐ๋ด FROM ORDER BY ์ ์๋ช ASC, ํ๋ช , 3 DESC; -> ์ ์๋ช ์ค๋ฆ์ฐจ์, ํ๋ช ๊ธฐ๋ณธ๊ฐ(์ค๋ฆ์ฐจ์), SEELCT์ ์ 3๋ฒ์งธ ์นผ๋ผ ์ฐ๋ด์ ๋ด๋ฆผ์ฐจ์
โฃ DESC ์ฐ๋ด -> ์ฐ๋ด DESC๊ฐ ๋์ด์ผํ๋ค.
[์ ํ๋ ธ๋?] ORDER BY์ ์ซ์ ๋ค์ด๊ฐ๋ ๋๋์ง ๋ชฐ๋์
[17๋ฒ] ์ ๋ต โข / ๋ด ์ ๋ต โ
[ํด์ค] Count(*) ์ ์ธํ ๋ชจ๋ ๊ธฐ๋ณธ ์ง๊ณํจ์๋ NULL ์ ์ธํ๊ณ ๊ณ์ฐ
[์ ํ๋ ธ๋?] 4๊น์ง๋ ์ ์ถ๋ ฅํ์ผ๋ SUM(COL1) + SUM(COL2) ์ฐ์ฐ ๊ฐ๋ ์์ง ๋ฏธํก
[19๋ฒ] ์ ๋ต โข / ๋ด ์ ๋ต โฃ
[ํด์ค] ํด์์์ START WITH(๋ฃจํธ๋ ธ๋ ์ง์ ) -> CONNECT BY -> WHERE
N1 | N2 | C1 | C2 |
1 | NULL | A | NULL |
2 | 1 | B | A |
4 | 2 | D | B |
5 | 4 | E | D |
3 | 1 | C | A |
โ N2์์ ๋ฃจํธ๋ ธ๋ ์ ํ -> (1, NULL, A, NULL)
CONNECT BY PRIOR N1 = N2 (PRIOR ์ = ๋ถ)์ด๋ฏ๋ก ์๋ฐฉํฅ ์ ๊ฐ. N2=4๊น์ง ๋ชจ๋ ์ ํ. N2์ ๋ง์ง๋งํ์ N1=1์ธ ํ์ด ์๋จ์ ์์ด ์ ํ๊ฐ๋ฅ
WHERE N1 = 4์ด๋ฏ๋ก (4, 2, D, B) ์ถ๋ ฅ
โก C2 = 'B'์์ ๋ฃจํธ๋ ธ๋ ์์ -> (4, 2, D, B) ์ ํ
PROPR N1 = N2 -> (4, 2, D, B,), (5, 4, E, D), ๋ค์N2 = 5๊ฐ ์์ผ๋ ์ข ๋ฃ
C2 <> D -> C2๋ D๊ฐ ์๋๋ค
(4, 2, D, B)
โข C1 = B๋ถํฐ ์์ (2, 1, B, A) ์ ํ
PRIOR N1 = N2 (์๋ฐฉํฅ ์ ๊ฐ)
PRIOR C2 = B (ํ์ฌ ๊ฒ์ฌํ๋ ํ์ ์ด์ ํ์ธ C2๊ฐ B์ธ๊ฐ?)
ํ์ฌ ๊ฒ์ฌํ (4, 2, D, B) ์ ํ์ C2๋ A์ด๋ฏ๋ก ์ ํ ๋ถ๊ฐ
(2, 1, B, A)
โฃ N1 = 2๋ถํฐ ์์ (2, 1, B, A)์ ํ
PRIOR N1 = N2 ์๋ฐฉํฅ ์ ๊ฐ -> (4, 2, D, B) ์ ํ ๊ฐ๋ฅ.
PRIOR N1 = 2 -> ๋ถ์ผ์นํ๋ฏ๋ก ์ ๊ฐ ์ข ๋ฃ
C1 <> B์ด๋ฏ๋ก (2, 1, B, A) ์ ๊ฑฐ
(4, 2, D, B)
[23๋ฒ] ์ ๋ต โ / ๋ด ์ ๋ต โก
[ํด์ค] HAVING COUNT(*) > 4๋ก 4์ด๊ณผํ๋ ๊ฒ์ ์ ํ -> ๊ฒฐ๊ณผ๊ฐ์ '์๋ค(NULL)' (0๊ณผ ๊ณต์งํฉ์ ๋ค๋ฆ)
[์ ํ๋ ธ๋?] 0๊ณผ ๊ณต์งํฉ ์ถ๋ ฅ๊ฒฐ๊ณผ ์์ง ๋ฏธํก
[24๋ฒ] ์ ๋ต โข
[ํด์ค] ํธ๋์ญ์ ์ ํน์ง
1. ์์์ฑ : ์ฐ์ฐ๋ค์ด ๋ชจ๋ ์ฑ๊ณต OR ์ ํ ์คํX
2. ์ผ๊ด์ฑ : ํธ๋์ญ์ ์คํ ์ DB๋ด์ฉ์ด ์๋ชป๋์ง ์์ผ๋ฉด ์คํ ํ๋ ์๋ชป๋์ง ์์
3. ๊ณ ๋ฆฝ์ฑ : ํธ๋์ญ์ ์คํ ๋์ค ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ํฅ์ ๋ฐ์ ์๋ชป๋ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค์ด์๋ ์ ๋จ
4. ์ง์์ฑ : ์ฑ๊ณต์ ์ผ๋ก ์ํ๋๋ฉด DB ๋ด์ฉ์ ์๊ตฌ์ ์ผ๋ก ์ ์ฅ
[25๋ฒ] ์ ๋ต โฃ / ๋ด ์ ๋ต โข
[ํด์ค] (1, 2, 3, 5, 6) UNION ALL (1, 2, 2, 4, 5) = (1, 1, 2, 2, 2, 3, 4, 5, 5, 6)์ผ๋ก 10๊ฐ
[์ ํ๋ ธ๋? UNION ALL์ฐ์ฐ ์ค์ํด์ (1, 2, 2, 3, 4, 5, 5, 6)=8๊ฐ๋ก ๊ณ์ฐ
[26๋ฒ] ์ ๋ต โ / ๋ด ์ ๋ต โฃ
[ํด์ค] T1 = T2(+)๋ LEFT JOIN -> (1, 2, 3, 4)
T2 = T3(+)๋ LEFT JOIN -> (1, 2, 3, NULL)
T3 = T4(+)๋ LEFT JOIN -> (1, 5)
(1, 2, 3, 4) AND (1, 2, 3, NULL) AND (1, 5) ๋ 1์ด๋ฏ๋ก COUNT(*) = 1
[์ ํ๋ ธ๋?] (+) ํ์ ํด์ ์ค์
* (+)ํ์๊ฐ ๋ฑํธ(=)์ ์ค๋ฅธ์ชฝ์ ๋ถ์ผ๋ฉด left outer join, ์ผ์ชฝ์ ๋ถ์ผ๋ฉด right outer join
AND์ฐ์ฐ์ ํด์ ์ค์* AND : ๋ ๊ฐ์ง ์กฐ๊ฑด์ ๋ชจ๋ ๋ง์กฑํ๋ ๊ฒ (=๊ต์งํฉ)
[27๋ฒ] ์ ๋ต โก / ๋ด ์ ๋ต โ
[ํด์ค] ๋ณธ๋ฌธ์ DEPT_ID๋ณ, SALATY ๋ง์ ์์ผ๋ก ์ ๋ ฌ. WHERE RN = 1๋ก ์ธํด ์๊ธ ๋ง์ 1๋ฑ์ด ์ถ๋ ฅ
โ RANK() -> DEPT_NM = 10์์ ๊ธ์ฌ 1500์ธ 1๋ฑ์ด 2๋ช ์ถ๋ ฅ
โก DEPT_ID๋ณ๋ก ๋ฌถ๊ณ , MAX(SALARY)๋ก ์๊ธ ๊ฐ์ฅ ๋ง์ ์ฌ๋์ ๊ธ์ฌ์ DEPT_ID ์ถ๋ ฅ
โข ROWNUM = 1 -> ์์ 1๊ฐ ํ ๊ฐ์ ธ์ค๋ ๊ฒ (≠ROW_NUMBER)
โฃ ๊ฐ์ฅ ๋์ ์๊ธ์ ๊ณ ๋ฅด๊ณ , ID์ ์๊ธ์ ์ถ๋ ฅ
[์ ํ๋ ธ๋?] ๋ณธ๋ฌธ DESCํด์ ์ค์ํด์ ๋ถ์๋ณ ์ฐ๋ด ์ ์ผ ์์ ์ฌ๋ ๊ตฌํ์
[31๋ฒ] ์ ๋ต โ / ๋ด ์ ๋ต โก
[ํด์ค] ๋ณธ๋ฌธ์ '01์ ๊ณ ๊ฐID, ์ด์ฉ์ผ์ UNION 02์ ๊ณ ๊ฐID, ์ด์ฉ์ผ์' -> FULL OUTER JOIN
โ A, B ๊ณ ๊ฐID, ์ด์ฉ์ผ์ ์ค๋ณต์์ด ๋ชจ๋ ์ ํํด์ -> CROSS JOIN
โก A, B ๊ณ ๊ฐID, ์ด์ฉ์ผ์ ์ ๋ถ ์ ํํด์ -> FULL OUTER JOIN
โข A์ ๊ณ ๊ฐID, ์ด์ฉ์ผ์ ์ ๋ถ ์ ํํด์ UNION B์ ๊ณ ๊ฐID, ์ด์ฉ์ผ์ ์ ๋ถ ์ ํ
โฃ A์ ๊ณ ๊ฐID, ์ด์ฉ์ผ์ ์ ํํ๋ B์ ๊ฐ์ ๊ณ ๊ฐID ํ์ฉX
* SELECT์ X๋ ๋ฌด์ํด๋ ๋๋ ์กฐ๊ฑด
[์ ํ๋ ธ๋?] UNION๊ฐ๋ ํท๊ฐ๋ ค์ FULL OUTER JOIN์ด๋ผ๊ณ ํด์ ๋ชปํจ
[36๋ฒ] ์ ๋ต โ / ๋ด ์ ๋ต โข
[ํด์ค] ํญ์ 4๊ฐ์ธ๋ฐ, 3๊ฐ ๊ฐ๋ง INSERT
[์ ํ๋ ธ๋?] ๋ณธ๋ฌธ INSERT๋ฌธ์์ ์นผ๋ผ ๋ช ์ํ ๊ฑธ ๋ชป ๋ณด๊ณ ์ค์
[37๋ฒ] ์ ๋ต โ / ๋ด ์ ๋ต โก
[ํด์ค] ORDER BY์ ์ ๊ธฐ๋ณธ ์ค๋ฆ์ฐจ์(์์ ๊ฒ๋ถํฐ)
SELECT์ ์์ ์ฌ์ฉ๋์ง ์์ ๊ฒ๋ ORDER BY๊ฐ๋ฅ
ORDER BY COL1, ORDER BY 1 ํผ์ฉ ๊ฐ๋ฅ
Oracle NULL : ∞ / SQL Server NULL : -∞
[์ ํ๋ ธ๋?] ์ค๋ฆ์ฐจ์, ๋ด๋ฆผ์ฐจ์ ์ ์ ํท๊ฐ๋ฆผ
[39๋ฒ] ์ ๋ต โ / ๋ด ์ ๋ต โข
[ํด์ค]
NL JOIN | Sort Merge JOIN | Hash JOIN |
๋๋ค ์์ธ์ค | ๋ฑ๊ฐ, ๋น๋ฑ๊ฐ JOIN๊ฐ๋ฅ | ๋ฑ๊ฐJOIN |
๋์ฉ๋ SORT์์ ์ ๋ฆฌ | JOIN KEY๊ธฐ์ค ์ ๋ ฌ | ๋๋ ์์ ์ ๋ฆฌ |
ํจ์ ์ฒ๋ฆฌ ์ ํํ ์ด๋ธ ์์ ๋ณ๋ ์ ์ฅ๊ณต๊ฐ ํ์ ์ธ๋ฑ์ค ์์ผ๋ฉด ์ ๋ฆฌ |
||
[์ ํ๋ ธ๋?] HASH JOIN์ ๋ํ ๋ฐฐ๊ฒฝ์ง์ ์์
[45๋ฒ] ์ ๋ต MAX / ๋ด ์ ๋ต -
[ํด์ค] ์ต๋๊ฐ๋ณด๋ค ์์ ์๊ธ์ ๊ตฌํ๋ฉด ๋๋ค
[์ ํ๋ ธ๋?] ๋ณธ๋ฌธ DESC๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ํด์ํจ. WHERE 1 = 1 ๋ณ๋ ์กฐ๊ฑด์๋ ์ค ์๊ณ ๋ง์ค์.
[47๋ฒ] ์ ๋ต 54800 / ๋ด ์ ๋ต -
[ํด์ค] WITH๋ฌธ : ์ด๋ฆ์ ๊ฐ์ง ์๋ธ์ฟผ๋ฆฌ๋ฅผ ์ ์ํ๊ณ ์ฌ์ฉ, ์ฟผ๋ฆฌ์ ๊ฐ๋ ์ฑ์ ๋์ด๊ณ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅ
WITH ๋ณ๋ช AS (SUBQUERY)
[์ ํ๋ ธ๋?] WITH๋ฌธ๋ฒ ๋ชจ๋ฆ
[48๋ฒ] ์ ๋ต 3 / ๋ด ์ ๋ต 2
[ํด์ค] MGR_ID IS NULL AND COED = 'B' ์ฐ์ฐ๊ฒฐ๊ณผ ์๋ฌด๊ฒ๋ ์์
SALATY > 200 OR NULL์ด๋ฏ๋ก SALARY > 200์ธ ๊ฒ ์ ํํ๋ฉด 3๊ฑด ์ถ๋ ฅ
[์ ํ๋ ธ๋?] AND ์ฐ์ฐ์ (๊ต์งํฉ) ํด์ ์ค์
[49๋ฒ] ์ ๋ต NTILE / ๋ด ์ ๋ต -
[ํด์ค] 10๊ฑด์ ๋ฐ์ดํฐ๊ฐ 4๊ฑด(3, 3, 2, 2)์ผ๋ก ๋๋์ด์ง.
NTILE : ์ ์ฒด ๊ฑด์๋ฅผ ์ธ์ ๊ฐ์ผ๋ก N๋ฑ๋ถํจ
[์ ํ๋ ธ๋?] NTILE๋ฌธ๋ฒ ๋ชจ๋ฆ
[50๋ฒ] ์ ๋ต 2 / ๋ด ์ ๋ต -
[ํด์ค] LAG๋ ์ด์ N๋ฒ์งธ ํ์, LEAD๋ ์ดํ N๋ฒ์งธ ํ์ ๋ถ๋ฌ์ด.
BEFORE_SALARY์์ ์ด์ 2๋ฒ์งธ ํ์ ๊ฐ์ ๊ฐ์ ธ์จ ๊ฒ์ ์ ์ ์์ผ๋ฏ๋ก ์ ๋ต์ 2
[์ ํ๋ ธ๋?] LAG, LEAD ์ธ์๊ฐ ๋ฌธ๋ฒ ๋ชจ๋ฆ
'๊ฐ์ธ๊ณต๋ถ > SQL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
115. SQL200์ (016~029) ๋ฌธ์ํจ์, ๋ ์ง๊ณ์ฐํจ์ (0) | 2022.02.01 |
---|---|
114. SQL200์ (001~015) (0) | 2022.01.31 |
54. SQLD ๊ธฐ์ถ๋ฌธ์ 1๊ณผ๋ชฉ ์ค๋ต๊ฐ๋ ์ ๋ฆฌ (0) | 2021.11.17 |
53. SQLD ๊ธฐ์ถ๋ฌธ์ 2๊ณผ๋ชฉ 2์ฅ ์ค๋ต๋ ธํธ (0) | 2021.11.15 |
52. SQLD ๊ธฐ์ถ๋ฌธ์ 2๊ณผ๋ชฉ 1์ฅ ์ค๋ต๋ ธํธ (0) | 2021.11.14 |