๐Ÿ’พ SQL_

[SQL] Table ์†์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์ˆ˜์ •ํ•˜๊ธฐ

CodeLoge 2025. 2. 13. 20:11

๋ณธ ๊ธ€์—์„œ ์‚ฌ์šฉํ•  Table & Datas

 

#1 ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ์ •๋ณด๋ฅผ ์ถœ๋ ฅ

Ex 1)

Buy Table์—์„œ Customer ์ด๋ฆ„ ์ค‘ "ํ™ ใ…‡ ๋™" ๊ณผ ๊ฐ™์€ ์œผ๋กœ ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•œ๊ฐ€?

: Table์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์„ ๋ฐ”๊พธ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, ๋‹จ์ˆœ ์ถœ๋ ฅ๋งŒ ์œ„์—์„œ ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—,

๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, SELECT๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅ

SELECT INSERT(Customer,2,1,'O') AS Customer FROM BUY;

// SELECT๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถœ๋ ฅํ•  ์ปฌ๋Ÿผ์„ ์„ ํƒ

INSERT๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ ํƒ๋œ ์ปฌ๋Ÿผ์— ์žˆ๋Š” ๊ฐ’์— ์ง‘์–ด๋„ฃ์Œ

INSERTํ•จ์ˆ˜ = INSERT(๋ฌธ์ž์—ด, ์‹œ์ž‘์œ„์น˜, ๊ธธ์ด, '์‚ฝ์ž…ํ•  ๋ฌธ์ž');
์œ„์™€ ๊ฐ™์ด ์ž…๋ ฅ์„ ํ•˜๊ฒŒ ๋˜๋ฉด ๋ฌธ์ž์—ด์—์„œ ์‹œ์ž‘์œ„์น˜~ ๊ธธ์ด๋งŒํผ์˜ ๋ฌธ์ž๋ฅผ ์ง€์šฐ๊ณ , ์‚ฝ์ž…ํ•  ๋ฌธ์ž๋ฅผ ํ•ด๋‹น ์œ„์น˜์— ์‚ฝ์ž…

์ด๋ฆ„ ์ค‘๊ฐ„์˜ ๊ฐ’ ๋ณ€๊ฒฝ

: Customer๋“ค์˜ ์ด๋ฆ„์—์„œ 2๋ฒˆ์งธ ์ž๋ฆฌ๋ถ€ํ„ฐ 1์ž๋ฆฌ๋ฅผ ์ง€์šฐ๋Š” ๊ฐ’์„ ์ง‘์–ด๋„ฃ๊ณ , 'O' ๋ฅผ ์‚ฝ์ž…ํ•  ๋ฌธ์ž์— ๋„ฃ์–ด ๊ฐ’์„ ๋ณ€๊ฒฝ

 

Ex 2)

Product Table์—์„œ Price๊ฐ€ 40,000 ์ด์ƒ์ธ ๋ฐ์ดํ„ฐ๋งŒ [์ƒํ’ˆ๋ช…(ํ• ์ธ์ƒํ’ˆ)]๊ณผ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•œ๊ฐ€?

: Ex 1)๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ธฐ์— SELECT๋ฅผ ์‚ฌ์šฉํ•จ

SELECT IF(PRICE>=40000, concat(name,'(ํ• ์ธ์ƒํ’ˆ)'),name) FROM PRODUCT;

IF๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ, ๊ฐ’์ด ๋‹ค๋ฅด๊ฒŒ ์ถœ๋ ฅ๋˜๊ฒŒ ์„ค์ •

IFํ•จ์ˆ˜ = (์กฐ๊ฑด์‹,์ฐธ,๊ฑฐ์ง“);
์กฐ๊ฑด์‹์˜ ๊ฐ’์— ๋”ฐ๋ผ ์ฐธ์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๊ฑฐ๋‚˜, ๊ฑฐ์ง“์˜ ๊ฐ’์„ ์ถœ๋ ฅ

CONCATํ•จ์ˆ˜ = (๋ฌธ์ž์—ด1, ๋ฌธ์ž์—ด2);
์ž…๋ ฅํ•œ 2๊ฐœ์˜ ๋ฌธ์ž์—ด์„ ์—ฐ๊ฒฐํ•ด์ฃผ๋Š” ํ•จ์ˆ˜

์„ค์ •๋œ ์ด๋ฆ„ ๋’ค์— ์ถ”๊ฐ€ ๋ฌธ์ž์—ด ์ถ”๊ฐ€

: ๋งŒ์•ฝ ์ด๋ฆ„๊ณผ ๊ฐ™์€ ๋ ˆ์ฝ”๋“œ์— ์žˆ๋Š” Price์˜ ๊ฐ’์ด 40000 ์ด์ƒ์ด๋ผ๋ฉด,

CONCATํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ด๋ฆ„+(ํ• ์ธ์ƒํ’ˆ) ์œผ๋กœ ์ถœ๋ ฅ, ๊ฑฐ์ง“์ด๋ผ๋ฉด ์›๋ž˜์˜ ์ด๋ฆ„๋งŒ ์ถœ๋ ฅ

 

Ex 3)

์›”๋ณ„ ๋งค์ถœํ•ฉ๊ณ„๋ฅผ ์ถœ๋ ฅ ๊ฐ€๋Šฅํ•œ๊ฐ€?

: ๋งค์ถœ์˜ ํ•ฉ๊ณ„๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด์„  Product Table์˜ Sale_amount์™€ Price๋ฅผ ์ฐธ๊ณ 

SELECT DATE-FORMAT(REGISTER_DATE, '%Y-%M') AS MON, SUM(PRICE*SALE_AMOUNT) AS SUM
GROUP BY MON;


// Date-format
: ๋‚ ์งœ๊ฐ€ ์ถœ๋ ฅ๋˜๋Š” ํ˜•์‹์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด
: ์•ž์˜ REGISTER_DATE = ๋‚ ์งœ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ปฌ๋Ÿผ
: %Y-%M = ๋…„๋„-์›” ์˜ ํ˜•์‹์œผ๋กœ ์ถœ๋ ฅ๋˜๋„๋ก ํ˜•์‹ ์ง€์ •

// SUM(PRICE*SALE_AMOUNT)
: ๋จผ์ € ๊ฐ€๊ฒฉ๊ณผ ํŒ๋งค๋Ÿ‰์„ ๊ณฑํ•œ ํ›„ ๋ชจ๋‘ ๋”ํ•˜๊ณ 

// GROUP BY MON
: ์ง€์ •๋œ ๋…„๋„-์›”์˜ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ถœ๋ ฅ

๋…„-์›”์— ๋”ฐ๋ผ ํŒ๋งค๋Ÿ‰์„ ์ถœ๋ ฅ

Ex 4)

Price๊ฐ€ ๊ฐ€์žฅ ๋†’์€(๋น„์‹ผ) ์ƒํ’ˆ ์ถœ๋ ฅ์ด ๊ฐ€๋Šฅํ•œ๊ฐ€?

: ๋ชจ๋“  ์ •๋ณด๋ฅผ ์–ป์–ด์™€์„œ, ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ ํ›„, ์ตœ์ƒ๋‹จ์˜ ๊ฐ’๋งŒ ์ถœ๋ ฅ.

SELECT * FROM PRODUCT
ORDER BY PRICE DESC
LIMIT 0,1;

1๋ฒˆ ํ–‰
: PRODUCT์˜ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์„ ํƒํ•œ๋‹ค

2๋ฒˆ ํ–‰
: ์ •๋ ฌ์˜ ์ˆœ์„œ๋ฅผ ๊ฐ€๊ฒฉ์ˆœ์œผ๋กœ ํ•˜๋ฉฐ, ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ์ •์˜

3๋ฒˆ ํ–‰
: ์ถœ๋ ฅ๋  ์ •๋ณด๋ฅผ 0๋ฒˆ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋ฉฐ, 1๊ฐœ์˜ ๊ฐ’๋งŒ ์ถœ๋ ฅ

๊ฐ€์žฅ ๋น„์‹ผ ์ƒํ’ˆ : ํ”ผํŠธ๋‹ˆ์Šค ์ƒํ•˜์˜
๊ฐ€์žฅ ๋น„์‹ผ ํ’ˆ๋ชฉ ์ •์ƒ ์ถœ๋ ฅ!

Ex 5)

9์›”์— ์ž…๊ณ ๋œ ์žฌ๊ณ  ์ƒํ’ˆ์„ PRODUCT_NON TABLE๋กœ ์ด๋™

PRODUCT_NON TABLE์€ PRODUCT TABLE๊ณผ ๊ฐ™์€ ํ˜•์‹

๊ธฐ์กด PRODUCT TABLE์—์„œ๋Š” ์‚ญ์ œ

Transaction ์‚ฌ์šฉํ•˜๊ธฐ!

 

Transaction์ด๋ž€?

- ํ•˜๋‚˜์˜ ์ž‘์—…์„ ํ•˜๊ธฐ์œ„ํ•œ ๋ช…๋ น์–ด ๋ฌถ์Œ ๋‹จ์œ„

- ์—ฐ๊ด€์žˆ๋Š” ์ž‘์—…๋“ค์˜ ๋ชจ์ž„

- ํ•˜๋‚˜๋ผ๋„ ๋ช…๋ น์–ด๊ฐ€ ์™„๋ฃŒ๋˜์ง€ ๋ชปํ•œ๋‹ค๋ฉด(error) >> ์ทจ์†Œ

๋ชจ๋“  ๋ช…๋ น์–ด๊ฐ€ ์™„๋ฃŒ๋˜์–ด์•ผ ๋‹ค์Œ ์ง„ํ–‰์ด ๊ฐ€๋Šฅ

์™„๋ฃŒ์™€ ์ทจ์†Œ๋ฅผ ๋‚˜์ค‘์— ๊ฒฐ์ •ํ•˜๋Š” ๊ฐœ๋…

๋ฐ์ดํ„ฐ์˜ ์•ˆ์ „์„ฑ ํ™•๋ณด๋ฅผ ์œ„ํ•œ ๋ฐฉ๋ฒ•

์“ฐ๋Š” ๊ฒฝ์šฐ๋Š” ์ ์Œ >> JAVA๊ฐ€ ์žˆ์–ด์„œ

// ๊ธฐ๋ณธ ๊ตฌ์กฐ
START TRANSATION;
๋ช…๋ น์–ด 1;
๋ช…๋ น์–ด 2;
COMMIT; or ROLLBACK;

๋ช…๋ น์–ด๋“ค์€ DML์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ
DDL/DCL์€ ํฌํ•จ ์•ˆ๋จ

COMMIT = ์ž‘์—… ์™„๋ฃŒ
ROLLBACK = ์œ„์— ์ž‘์„ฑํ•œ ๋ช…๋ น์–ด ๋ชจ๋‘ ์ทจ์†Œ

 

: ๋ฐ์ดํ„ฐ๋ฅผ ์˜ฎ๊ธฐ๊ธฐ ์ „, ํ…Œ์ด๋ธ”์„ ๋จผ์ € ์ƒ์„ฑํ•ด์•ผํ•จ

CREATE TABLE IF NOT EXISTS PRODUCT_NON2
LIKE PRODUCT
;

// IF NOT EXISTS = ๋งŒ์•ฝ ๋™์ผํ•œ ์ด๋ฆ„์ด ์—†๋‹ค๋ฉด ์ƒ์„ฑ
// LIKE = ํ˜•์‹์„ ๋ณต์‚ฌํ•ด์„œ ์ƒ์„ฑ

PRODUCT์—์„œ ์˜ฎ๊ธธ ๋ฐ์ดํ„ฐ
PRODUCT_NON2์— ์ถ”๊ฐ€๋œ ๋ฐ์ดํ„ฐ, PRODUCT์—์„  ์‚ญ์ œ๋œ ๋ฐ์ดํ„ฐ

: Start transaction; ์œผ๋กœ ๋ช…๋ น์–ด๋ฅผ ํ•œ๋ฒˆ์— ์‹คํ–‰ํ•˜๊ฒ ๋‹ค๊ณ  ์ž…๋ ฅํ•œ ํ›„,

: ์ž…๋ ฅํ•œ ๋ช…๋ น์–ด๋“ค์„ ํ•œ๋ฒˆ์— ์‹คํ–‰ํ•˜๊ณ 

: Query OK ๋ผ๋Š” ์ถœ๋ ฅ์ด ์žˆ๋‹ค๋ฉด

: Commit; ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ

 

EX 6)

๊ฐ€์žฅ ๋งŽ์ด ํŒ๋งคํ•œ ์ œํ’ˆ์˜ ์ด๋ฆ„์„ ์ถœ๋ ฅ ๊ฐ€๋Šฅํ•œ๊ฐ€?

: ์ œํ’ˆ์˜ ์ด๋ฆ„์œผ๋กœ ๊ทธ๋ฃน์„ ๋งŒ๋“ค๊ณ 

: ๋‚ด๋ฆผ์ฐจ์ˆœ์œผ๋กœ ํŒ๋งค์ˆœ์„ ์ •๋ ฌ

: LIMIT์„ ๊ฑธ์–ด 1๋ฒˆ๋ถ€ํ„ฐ 1๊ฐœ๋งŒ ์ถœ๋ ฅ๋˜๋„๋ก.

 

→ LIMIT์€ ๋ช‡๊ฐœ๋ฅผ ์ถœ๋ ฅํ• ์ง€ ์ •ํ•ด์ ธ ์žˆ๋Š” ์ƒํ™ฉ์—์„œ๋งŒ ํ•˜๋Š”๊ฒŒ ์ข‹์Œ. ๋งŒ์•ฝ ๋™์ผํ•œ ์ตœ๋Œ€์ˆ˜๊ฐ€ ๋” ์žˆ๋‹ค๋ฉด ๋‹ค๋ฅธ ์ตœ๋Œ€์ˆ˜๋Š” ์ถœ๋ ฅ์ด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ