๐Ÿ’พ SQL_

[SQL] MySQL - ์ƒ์„ฑํ•œ Table ์ˆ˜์ • ๋ฐ ๊ฐ’ ์ง‘์–ด๋„ฃ๊ธฐ

Joyfullyever 2025. 2. 12. 20:45

๊ธฐ๋ณธ 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๊ฐ’
;

IN ์—ฐ์‚ฐ์ž ์˜ˆ์ œ

: ์œ„์™€ ๊ฐ™์ด 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 ํ•™์ƒ๋“ค์˜ ์ •๋ณด๋งŒ ์ถœ๋ ฅ

โ€ป Major๊ฐ€ Computer์ด๋ฉด์„œ, Score๊ฐ€ 80์  ์ด์ƒ์ธ ํ•™์ƒ๋“ค๋งŒ ์ถœ๋ ฅ

: WHERE ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ and ์„ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๊ฑด 1๊ฐœ๋ฅผ ๋” ์ถ”๊ฐ€ํ•˜์—ฌ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ

: ์ ์ˆ˜๊ฐ€ 70~90์  ์‚ฌ์ด์ธ ํ•™์ƒ์„ ์ฐพ๊ณ  ์‹ถ์„ ๊ฒฝ์šฐ BETWEEN์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ

 

Major๊ฐ€ Computer ์ด๋ฉด์„œ Score๊ฐ€ 80์  ์ด์ƒ์ธ ํ•™์ƒ ์ •๋ณด ์ถœ๋ ฅ
Score ๊ฐ€ 70~90 ์‚ฌ์ด์ธ ํ•™์ƒ ์ •๋ณด ์ถœ๋ ฅ

โ€ป ํŠน์ • ๋‹จ์–ด๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ •๋ณด ์ฐพ๊ธฐ

: 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 ์ถœ๋ ฅํ•  ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜ ํ‘œ์‹œ, ์‹œ์ž‘๋ฒˆ์ง€, ๊ฐœ์ˆ˜ ⇒ ์‹œ์ž‘๋ฒˆ์ง€๋ถ€ํ„ฐ ๊ฐœ์ˆ˜๋งŒํผ ์ถ”์ถœ

 

์ „๊ณต์ด English์ธ ํ•™์ƒ๋“ค์˜ Score ํ‰๊ท 

: ์œ„์™€ ๊ฐ™์ด 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๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’๋“ค์„ ์ง‘์–ด ๋„ฃ์„ ์ˆ˜ ์žˆ์Œ