๋ณธ ๊ธ์์ ์ฌ์ฉํ 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 = ํ์์ ๋ณต์ฌํด์ ์์ฑ
: Start transaction; ์ผ๋ก ๋ช ๋ น์ด๋ฅผ ํ๋ฒ์ ์คํํ๊ฒ ๋ค๊ณ ์ ๋ ฅํ ํ,
: ์ ๋ ฅํ ๋ช ๋ น์ด๋ค์ ํ๋ฒ์ ์คํํ๊ณ
: Query OK ๋ผ๋ ์ถ๋ ฅ์ด ์๋ค๋ฉด
: Commit; ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ
EX 6)
๊ฐ์ฅ ๋ง์ด ํ๋งคํ ์ ํ์ ์ด๋ฆ์ ์ถ๋ ฅ ๊ฐ๋ฅํ๊ฐ?
: ์ ํ์ ์ด๋ฆ์ผ๋ก ๊ทธ๋ฃน์ ๋ง๋ค๊ณ
: ๋ด๋ฆผ์ฐจ์์ผ๋ก ํ๋งค์์ ์ ๋ ฌ
: LIMIT์ ๊ฑธ์ด 1๋ฒ๋ถํฐ 1๊ฐ๋ง ์ถ๋ ฅ๋๋๋ก.
→ LIMIT์ ๋ช๊ฐ๋ฅผ ์ถ๋ ฅํ ์ง ์ ํด์ ธ ์๋ ์ํฉ์์๋ง ํ๋๊ฒ ์ข์. ๋ง์ฝ ๋์ผํ ์ต๋์๊ฐ ๋ ์๋ค๋ฉด ๋ค๋ฅธ ์ต๋์๋ ์ถ๋ ฅ์ด ์๋๊ธฐ ๋๋ฌธ
'๐พ SQL_' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[SQLD] ์ค๋ต๋ ธํธ #1 (0) | 2025.02.16 |
---|---|
[SQL] MySQL - Foreign Key & Join (0) | 2025.02.14 |
[SQL] MySQL - ์์ฑํ Table ์์ ๋ฐ ๊ฐ ์ง์ด๋ฃ๊ธฐ (2) | 2025.02.12 |
[SQL] MySQL - User & Table(Attribute)๊น์ง ๋ง๋ค์ด๋ณด๊ธฐ (0) | 2025.02.11 |
[SQLD] ์์ฑ๊ณผ ์ํฐํฐ ์๋ณ์ (0) | 2025.02.10 |