[SQL] MySQL - ์์ฑํ Table ์์ ๋ฐ ๊ฐ ์ง์ด๋ฃ๊ธฐ
์์ ๋ฏธ๋ฆฌ ๋ง๋ค์ด๋ ํ ์ด๋ธ์์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํด๋ณด์!
#1 Data ์์
1) Table๋ช ๋ณ๊ฒฝ
: ๊ธฐ๋ณธ์ ์ผ๋ก ํ ์ด๋ธ์ ์ด๋ฆ์ ๋ฐ๊พธ๋ ๊ฒ์ ๊ฐ๋ฅํ์ง๋ง, DB ์์ฒด์ ์ด๋ฆ์ ๋ฐ๊พธ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅ
: ALTER ๋ช ๋ น์ด๋ก๋ ํ ์ด๋ธ์ ์ด๋ฆ์ ๋ณ๊ฒฝํ ์ ์๊ณ , ํ ์ด๋ธ ์์ ๋ฐ์ดํฐ๋ง ๋ณ๊ฒฝ์ด ๊ฐ๋ฅ
RENAME TABLE `๊ธฐ์กด์ ํ
์ด๋ธ๋ช
` to `๋ฐ๊ฟ ํ
์ด๋ธ๋ช
`;
2) Table ์์ ์๋ Data ๊ฐ ๋ณ๊ฒฝ
2-1) ์ํ๋ ์ ๋ณด ๋ณ๊ฒฝ
: Table ์์ ์ ์ฅ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ ๋ณ๊ฒฝ์ด ๊ฐ๋ฅํ๋ฉฐ, UPDATE ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๊ฒ ๋จ
: UPDATE๋ฅผ ํ ๋๋ Key ๊ฐ์ ์ฌ์ฉํ๋๋ฐ, ๊ทธ ์ด์ ๋ ์ค๋ณต๋ ๊ฐ์ด ์๊ธฐ ๋๋ฌธ.
// ๊ธฐ๋ณธ ๊ตฌ์กฐ
UPDATE ํ
์ด๋ธ๋ช
SET
๋ฐ๊ฟ ์ ๋ณด๊ฐ ์๋ ์นผ๋ผ๋ช
= ๋ฐ๊ฟ ๋ด์ฉ
WHERE ๋ฐ๊ฟ๋นํ ๋ด์ฉ์ ํฌํจํ Key๊ฐ์ ์นผ๋ผ๋ช
= ํด๋น Key๊ฐ
;
Ex) leesunsin → ์ด์ฑ๊ณ / sunny → ์์ง๋ฌธ๋
์ ๋ช ๋ น์ด๋ฅผ ํตํด 1003๋ฒ, 1005๋ฒ์ ์ด๋ฆ์ด ์ฑ๊ณต์ ์ผ๋ก ๋ฐ๋ ๊ฒ์ ํ์ธํ ์ ์์
โป 2๊ฐ์ ๊ฐ์ ๋์์ ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด?
: IN ๋๋ OR ์ฐ์ฐ์๋ฅผ ํตํด ๋ฐ๊ฟ ์ ์์ผ๋ฉฐ, IN ์ฐ์ฐ์์ ์๋๊ฐ OR ์ฐ์ฐ์๋ณด๋ค ๋น ๋ฆ
IN / OR ์ฐ์ฐ์ ๋ชจ๋ ์์ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ ๋น์ทํ๋ WHERE ๊ตฌ๋ฌธ์์ ๋ณํ๊ฐ ์์.
IN ์ฐ์ฐ์
WHERE ๋ฐ๊ฟ๋นํ ๋ด์ฉ์ ํฌํจํ Key๊ฐ์ ์นผ๋ผ๋ช
IN (๋ฐ๊ฟ Key๊ฐ1, ๋ฐ๊ฟ Key๊ฐ2)
;
OR ์ฐ์ฐ์
WHERE ๋ฐ๊ฟ๋นํ ๋ด์ฉ์ ํฌํจํ Key๊ฐ์ ์นผ๋ผ๋ช
= ํด๋น Key๊ฐ or ๋ฐ๊ฟ๋นํ ๋ด์ฉ์ ํฌํจํ Key๊ฐ์ ์นผ๋ผ๋ช
= ํด๋น Key๊ฐ
;
: ์์ ๊ฐ์ด Age๊ฐ 21, 23์์ ๋ชจ๋ 20์ผ๋ก ๋ฐ๋ ๊ฒ์ ์ ์ ์์
2-2) ๋์ผํ ๊ฐ ๋ํ๊ธฐ
: Age, Grade์ ๊ฐ์ด ๊ฐ์ ์ปฌ๋ผ์ ์๋ ๊ฐ๋ค์ ๋์ผํ ๊ฐ์ ํ๋ฒ์ ๋ํ๊ธฐ
: Java์ ๊ฐ์ด ์ปฌ๋ผ๋ช += 1 ๊ฐ์ ํ์์ ์ฌ์ฉํ ์ ์์...
UPDATE ํ
์ด๋ธ๋ช
SET
AGE = AGE + 1
;
์ ์ฝ๋์ ๊ฐ์ด, ์ปฌ๋ผ๋ช ์ ๋ค์ ํ๋ฒ ์ ๋ ฅํด์ค์ผ ๋ชจ๋ ๋ฐ์ดํฐ๋ค์ ๋์ผํ ๊ฐ์ด ์ ์ฉ์ด ๋จ
2-3) ๋ฐ์ดํฐ ์ญ์
: ์ํ๋ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๊ธฐ ์ํด์๋ DELETE ๋ช ๋ น์ด๊ฐ ํ์
// ๊ธฐ๋ณธ ๊ตฌ์กฐ
DELETE FROM ํ
์ด๋ธ๋ช
WHERE Primary Key ์ปฌ๋ผ๋ช
= ์ญ์ ํ ๋ฐ์ดํฐ์ Key๊ฐ
;
: Num 5555 ์๋ ์ค์ ์์ฑ๋์ด์๋ Num 6666๋ฒ์ค์ด ๋ชจ๋ ์ฌ๋ผ์ง ๊ฒ์ ํ์ธํ ์ ์์
#2 ๋ณ์นญ
Alias ๋ณ์นญ ์ค์ : as (์ฝ์)
: ๋ณ์นญ ์ค์ ์ ์๋ต์ด ๊ฐ๋ฅ
: ์นผ๋ผ, ํ ์ด๋ธ, ์๋ธ์ฟผ๋ฆฌ,++ ์์ ์ฌ์ฉ์ด ๊ฐ๋ฅ
: ์นผ๋ผ๋ช ์์ ์๋ต์ ์ ํ์ง ์๊ณ , ํ ์ด๋ธ๋ช ์์ ์๋ต์ ํจ
// ๊ธฐ๋ณธ ๊ตฌ์กฐ
SELECT NAME AS '๋ณ์นญ๋ช
', AGE AS '๋ณ์นญ๋ช
' FROM ํ
์ด๋ธ๋ช
;
: ๊ตฌ๋ฌธ ์์ฒด๋ง ์ ์ ๋ฐ๊ฟ์ฃผ๋ ๊ฒ์ผ๋ก, TABLE์ ์ด๋ฏธ ์ง์ ๋์ด ์๋ ์ด๋ฆ์ ๋ฐ๊ฟ์ฃผ์ง๋ ์์
: ํ๊ธ๋ก ์์ฑํ ๊ฒฝ์ฐ์๋ ' '๋ฅผ ๊ผญ ํ๊ธฐํด์ผํ์ง๋ง, ์์ด๋ก ์์ฑํ ๊ฒฝ์ฐ ' '๋ฅผ ์๋ตํ ์ ์์
: ๊ฐ์ด ์ฌ์ฉ๋ SELETE ์ฝ๋๋ ํ ์ด๋ธ์ ์ ์ฅ๋์ด ์๋ ๊ฐ๋ค ์ค ๋ณธ์ธ์ด ์ํ๋ ๊ฐ๋ค๋ง ๋ถ๋ฌ์ฌ ์ ์์
// ๊ธฐ๋ณธ ๊ตฌ์กฐ
SELECT ์ปฌ๋ผ๋ช
, ์ปฌ๋ผ๋ช
, ์ปฌ๋ผ๋ช
FROM ํ
์ด๋ธ๋ช
;
// ๋ชจ๋ ๋ด์ฉ ํ์ธ
SELECT * FROM ํ
์ด๋ธ๋ช
;
2-1) ์ํ๋ ์ ๋ณด ์ถ๋ ฅํ๊ธฐ
โป Major๊ฐ Compter์ธ ํ์๋ค ์ ๋ณด ์ถ๋ ฅํ๊ธฐ
โป Major๊ฐ Computer์ด๋ฉด์, Score๊ฐ 80์ ์ด์์ธ ํ์๋ค๋ง ์ถ๋ ฅ
: WHERE ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ๋ and ์ ์ฌ์ฉํ์ฌ ์กฐ๊ฑด 1๊ฐ๋ฅผ ๋ ์ถ๊ฐํ์ฌ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์
: ์ ์๊ฐ 70~90์ ์ฌ์ด์ธ ํ์์ ์ฐพ๊ณ ์ถ์ ๊ฒฝ์ฐ BETWEEN์ ์ฌ์ฉํ์ฌ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์
โป ํน์ ๋จ์ด๋ก ์์ํ๋ ์ ๋ณด ์ฐพ๊ธฐ
: WHERE ๋ช ๋ น์ด์ LIKE๋ฅผ ๋์์ ์ฌ์ฉํ์ฌ ์ ๋ณด๋ฅผ ์ฐพ์ ์ ์์
: ์์นญํ ๋ ๋ง์ด ์ฌ์ฉ
WHERE ์ปฌ๋ผ๋ช
LIKE '์ ๋ณด์ ์์ ๋จ์ด %'
;
: ๋จ์ด๋ฅผ % ์์ ๋ ๊ฒฝ์ฐ → ๋จ์ด๋ก ์์ํ๋ ์ ๋ณด ์ฐพ์์ ์ถ๋ ฅ
: ๋จ์ด๋ฅผ % ๋ค์ ๋ ๊ฒฝ์ฐ → ๋จ์ด๋ก ๋๋๋ ์ ๋ณด ์ฐพ์์ ์ถ๋ ฅ
: ๋จ์ด๋ฅผ % ์,๋ค๋ก ๋ ๊ฒฝ์ฐ → ์ ๋จ์ด๋ก ์์ํด์ ๋ท ๋จ์ด๋ก ๋๋๋ ์ ๋ณด๋ฅผ ์ฐพ์์ ์ถ๋ ฅ
#3 ์ค๋ณต ์ ๊ฑฐ
: ๊ฐ์ ์ถ๋ ฅํ ๋, DISTINCT๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ณต๋๋ ๊ฐ๋ค์ ์ ์ธํ๊ณ ์ถ๋ ฅํ ์ ์์
: ํด๋น ์นผ๋ผ ํ๋๋ง ์ถ๋ ฅ์ ํด์ผํ๋ฉฐ, ๋ค๋ฅธ ์นผ๋ผ์ ๊ฐ์ด ์ถ๋ ฅํ๋ค๋ฉด ๊ฐ์ด ์๋ฏธ๋ฅผ ๊ฐ์ ธ๋ฒ๋ฆฌ๊ธฐ ๋๋ฌธ์ ์ด๋ค ์ ๋ณด๋ฅผ ๋จ๊ฒจ์ผํ ์ง ๋ชจ๋ฆ
// ๊ธฐ๋ณธ ๊ตฌ์กฐ
SELECT DISTINCT ์นผ๋ผ๋ช
as '๋ณ์นญ' FROM ํ
์ด๋ธ๋ช
;
: Computer๋ฅผ Major๋ก ๊ฐ์ง๋ ํ์์ด 4๋ช ์กด์ฌํ์ง๋ง, ์ค๋ณต๋ ๊ฐ์ ์ ๋ถ ์ ๊ฑฐํ๊ณ 1๊ฐ๋ง ์ถ๋ ฅ์ด ๋จ
#4 ์ง์ฝ๊ณผ ์ ๋ ฌ
: ์ง์ฝ → ์ด์ ๋ฐ์ดํฐ ํฉ๊ณ, ํ๊ท ๊ฐ์ ์ง๊ณ๊ฐ์ ๊ตฌํ๊ธฐ ์ํ ํจ์
COUNT | ๊ฒ์๋ ํ์ ๊ฐ์ |
SUM | ํฉ๊ณ |
AVG | ํ๊ท |
MAX | ์ต๋๊ฐ |
MIN | ์ต์๊ฐ |
GROUP BY | ๊ทธ๋ฃน๋ณ๋ก ๋ฌถ์ |
HAVING | ๊ทธ๋ฃน์ ์กฐ๊ฑด |
ORDER BY | ์ ๋ ฌ(๊ธฐ์ค์ ์ฌ๋ฌ๊ฐ ์ค ์ ์์) → ASC, DESC ⇒ ์๋ฌด๊ฒ๋ ์ ๋ ฅ์ํ ์ ASC๋ก ์๋ ์ค์ |
LIMIT | ์ถ๋ ฅํ ๋ฐ์ดํฐ ๊ฐ์ ํ์, ์์๋ฒ์ง, ๊ฐ์ ⇒ ์์๋ฒ์ง๋ถํฐ ๊ฐ์๋งํผ ์ถ์ถ |
: ์์ ๊ฐ์ด COUNT, SUM, AVG, MAX, MIN ์ ์ฌ์ฉํ ๋๋ ์๊ดํธ ()๋ฅผ ๋ถ์ด๊ณ , ์๊ดํธ ์์ ๊ตฌํ๊ณ ์ถ์ ๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด ๋จ
// GROUP BY, HAVING, ORDER BY, LIMIT ์ ์ฌ์ฉํ ๋ ๊ธฐ๋ณธ ๊ตฌ์กฐ
SELECT ์นผ๋ผ๋ช
FROM ํ
์ด๋ธ๋ช
Where ์กฐ๊ฑด
Group by ์นผ๋ผ
Having ์กฐ๊ฑด
Order by ์นผ๋ผ
limit ์์๋ฒ์ง, ๊ฐ์
;
4-1) ์์
: 1,2,3๋ฑ ์ถ๋ ฅํ๊ธฐ
: ์์ ๊ฐ์ด 6๋ช ์ ํ์์ด ์กด์ฌํ์ง๋ง 0,3 ์ ์ ๋ ฅํ์ฌ 3๋ช ์ ์ ๋ณด๋ง ๋ด๋ฆผ์ฐจ์(DESC)์ผ๋ก ์ถ๋ ฅ
#5 ๋ ผ๋ฆฌ ํจ์
: IF๋ฌธ๊ณผ CASE~WHEN~THEN ๋ฌธ์ด ์์
: CASE~WHEN~THEN๋ฌธ์ JAVA์ SWITCH๋ฌธ๊ณผ ๊ฐ์
// IF๋ฌธ ๊ธฐ๋ณธ ๊ตฌ์กฐ
IF(์กฐ๊ฑด์, ์ฐธ, ๊ฑฐ์ง)
IF(์กฐ๊ฑด์, ์ฐธ, IF(์กฐ๊ฑด์, ์ฐธ, ๊ฑฐ์ง));
๊ฑฐ์ง์ ์๋ฆฌ์ ๋ ๋ค๋ฅธ IF๋ฌธ์ ์ฌ๋ฌ๊ฐ ์ง์ด ๋ฃ์ ์ ์์
// CASE๋ฌธ ๊ธฐ๋ณธ ๊ตฌ์กฐ
Case
When ์กฐ๊ฑด then ๊ฐ → ๋ณ์ or ์์
When ์กฐ๊ฑด then ๊ฐ → ๋ณ์ or ์์
When ์กฐ๊ฑด then ๊ฐ → ๋ณ์ or ์์
Else ๊ฐ → ์์ด๋ ๋จ
End;
: ์์ ๊ฐ์ด ์ด๋ฏธ ์ ์ฅ๋์ด์๋ Score ๋ฐ์ดํฐ๋ค๊ณผ CASE~WHEN~THEN๋ฌธ์ ์ฌ์ฉํ์ฌ ๊ฐ๋ค์ ์ง์ด ๋ฃ์ ์ ์์