SQL ์๋ฆฌ์ฆ (4์ฅ) ๐ชด
<SQL ์ฒซ๊ฑธ์> ์ ๋ณด๊ณ ์ง์ ํ์ตํ๊ณ ๊ธฐ๋กํ๋ ํฌ์คํธ! ๐ฅ
DATABASE ๋ง์คํฐ๋ฅผ ๊ฟ๊พธ๋ฉฐ...๐ฅ
๐งก 4์ฅ ์ ๋ ฌ๊ณผ ์ฐ์ฐ
๐งก 16๊ฐ ํ ์ถ๊ฐํ๊ธฐ - INSERT
- ์ค์ ์ฐ์ต์ ์ํด ์ง๋ ํ๋ก์ ํธ์๋ hoxylush DB๋ฅผ ๊ฐ์ง๊ณ ์ฐ์ต!
- ์ด ์ฅ์์๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ์ ๊ณต๋ถํ ๊ฒ! INSERT ๋ช ๋ น์ ๊ฐ์ง๊ณ ! ๐ฆ
๐งก insert into ํ
์ด๋ธ๋ช
values(๊ฐ1, ๊ฐ2, ...) ๐งก
- ์ง๊ธ๊น์ง ๋ด๊ฐ ๋ฐฐ์ด select ๋ช ๋ น์ ๋ฐ์ดํฐ ๊ฒ์์ ์ํ ๊ฒ์!
- ์ด๋ฒ์๋ ์น ํ์ด์ง์์ '์ ๊ท๋ฑ๋ก'์ด๋ '์ถ๊ฐ'์ ๊ฐ์ ๋ฒํผ์ ํด๋ฆญํ์ ๋ ์ฒ๋ฆฌ๋๋ ๋ฐ์ดํฐ ์ถ๊ฐ ๊ธฐ๋ฅ์ด๋ผ ์๊ฐํ๋ฉด ์ดํด๊ฐ ์ฝ์ฐ! ๐ฆ
- Insert๋ก ํ ์ถ๊ฐํ๊ธฐ
-
RDBMS์์๋ Insert ๋ช ๋ น์ ์ฌ์ฉํด ํ ์ด๋ธ์ ํ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํจ.
-
๋๋ tags ํ ์ด๋ธ์ ๊ฐ์ง๊ณ ์ฐ์ต์ ํด๋ณผ ์์ !
-
tags ํ ์ด๋ธ์ id, name ์ด๋ ๊ฒ 2๊ฐ์ ์ด์ด ์์! (name์ varchar(100) ๋ฌธ์ํ ์๋ฃํ์) ์ฌ๊ธฐ๋ค๊ฐ insert ๋ช ๋ น์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ค๊ฒ! (์ด๋ฏธ ๋ฐ์ดํฐ๊ฐ ๋ค์ด๊ฐ์๊ธดํ๋ฐ, ๊ทธ๋ฅ ์ด๊ฒ์ ๊ฒ ๋ ๋ฃ์ด์ค์ผ์ง! 4๋ฒ์งธ ์ด๋ถํฐ ๋ฃ์ด์ฃผ๋ฉด ๋ ๋ฏ ใ ใ )
-
๋ด๊ฐ ๊ณ์ ์ค๋ฅ๊ฐ ๋ฌ๋ ์ด์ ๊ฐ -> id ๊ฐ์ ๋ฐ๋ก ์ง์ ์ํด์ฃผ๊ฑฐ๋, ์ด๋ฏธ ์๋ id ๊ฐ์ ์ง์ ํด์ค์ ๊ณ์ ์๋ฌ๊ฐ ๋ด๋คใ ใ ์ด๊ฑฐ ์ฃผ์ํด์ insert into ํด์ค ๊ฒ ! ๐
-
ํ๋ฒ๋ง ๋ ํด๋ณด์ฅ ! ์ด๋ฒ์๋ order_itemsํ ์ด๋ธ!
-
๋ค์ฏ๋ฒ์งธ์ ๊ฐ์ ๋ฃ์ด์ค๊บผ์ผ!
์๋ ๊ฒ! ์ง๋โฃ๏ธ
- ๊ฐ์ ์ ์ฅํ ์ด ์ง์ ํ๊ธฐ
- insert ๋ช ๋ น์ผ๋ก ํ์ ์ถ๊ฐํ ๊ฒฝ์ฐ ๊ฐ์ ์ ์ฅํ ์ด๋ ์ง์ ํ ์ ์์ !
๐งก insert into order_items(price, quantity) values('23000.00', 2); ๐งก
- ์ด๋ฐ์์ผ๋ก price์ quantity์ด์๋ง ๊ฐ์ ๋ฃ์ด์ฃผ๋๊ฑฐ๊ณ ๋๋จธ์ง๋ ๊ทธ๋ฌ๋ฉด NULL๊ฐ ์ฒ๋ฆฌ๋จ!
- NOT NULL ์ ์ฝ
- ํ์ ์ถ๊ฐํ ๋ ์ ํจํ ๊ฐ์ด ์๋ ์ํ(NULL)๋ก ๋๊ณ ์ถ์ ๊ฒฝ์ฐ์๋ values๊ตฌ์์ NULL๋ก ๊ฐ์ ์ง์ ํ ์ ์์ต๋๋ค. ์ค์ ๋ก sub_categoriesํ ์ด๋ธ์ ๋ชจ๋ ๊ฐ์ด NULL์ด ๋๋๋ก ํด๋ณด์ฅ!
๐งก insert into sub_categories(id, sub_title, category_id) values(NULL, NULL, NULL);๐งก
- ์๋ฌ๊ฐ ๋ฌ๋ค. ์? NULL๊ฐ์ ํ์ฉํ์ง ์๋ NOT NULL ์ ์ฝ์ด ๊ฑธ๋ ค์๊ธฐ ๋๋ฌธ์!
-> NOT NULL ์ ์ฝ์ด ๊ฑธ๋ ค์๋ ์ด์ NULL ๊ฐ์ ํ์ฉํ์ง ์์!
๐งก insert into sub_categories(id, sub_title, category_id) values(70, '๋นจ๊ฐํดํธ'); ๐งก
- ๋๋ถ๋ถ์ ํ ์ด๋ธ๋ค์ NOT NULL ์ ์ฝ์ ์ด๋ฏธ ๊ฑธ์ด๋ ์ํ๋ผ ๋ช ๋ น์ด ์ฐ๊ธฐ๊ฐ ์ฝ์ง์๋ค..! ์ผ๋จ ์ด๋ก ์ ์ผ๋ก ์์๋๊ณ ์ค์ ์ฌ์ฉํ ๋ NOT NULL ์ ์ฝ ์๋ ํ ์ด๋ธ์์ ๋ค์ ํ ๋ฒ ์ฐ์ตํด๋ด์ผํ ๊ฒ ๊ฐ๋ค!
- DEFAULT
- ์ด๋ฐ์์ผ๋ก Default๊ฐ์ NULL๋ก ์ค ์ ์์ -> ๊ฐ์ ์๋ตํ๋ฉด ์ด๊น๊ฐ์ผ๋ก NULL์ ์ ์ฅํจ.
๐งก insert into status(id)values(5); ๐งก
- ๋ช
๋ น์ด๋ ์ด๊ฒ ๋ง๋๊ฒ "insert into status(id)values(5);
ERROR 1364 (HY000): Field 'name' doesn't have a default value" ์๊พธ ์๋ฐ ์๋ฌ๊ฐ ๋ฌ๋ค ์์ผ๊น? name์ ์์์ ๋ณด๋ฏ default๋ก NULL๊ฐ์ ๊ฐ์ง๊ณ ์๋๋ฐ... ๊ถ๊ธ๋จ...
-> ์ด์ ์ง์ ํ์ง ์์ผ๋ฉด ๋ํดํธ๊ฐ์ผ๋ก ํ์ด ์ถ๊ฐ๋๋ค!
๐งก 17๊ฐ ์ญ์ ํ๊ธฐ - DELETE
๐งก delete from ํ
์ด๋ธ๋ช
where ์กฐ๊ฑด์ ๐งก
- DELETE๋ก ํ ์ญ์ ํ๊ธฐ
- RDBMS์์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ ๋, delete from orders; ์ด๋ฐ์์ผ๋ก delete ๋ช ๋ น์ ์คํํ๋ฉด ํ ์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์ญ์ ๋จ.
- ์ด๋, where๊ตฌ๋ฅผ ์ง์ ํ์ฌ ํด๋น ์กฐ๊ฑด์์ ๋ง๋ ํ๋ง ์ญ์ ํ ์ ์์.
- where ๊ตฌ์ ์กฐ๊ฑด์ ์ง์ ํด์ ํ์ ์ญ์ ํด๋ณด์ฅ ! โ๏ธ 5๋ฒ์งธ ํ ์ญ์ ํ ๊บผ!
๐งก delete from order_items where id = 5; ๐งก
์๋ ๊ฒ ์ญ์ !!!
- ์ค์ํ๊ฑด select ๊ตฌ๋ฌธ์ฒ๋ผ ์ด๋ง ์ง์ ํด์ ์ญ์ ํ ์ ๋ ์๋ค๋ ๊ฒ !
- delete ๋ช ๋ น ๊ตฌ
- where๊ตฌ์์ ๋์์ด ๋๋ ํ์ ๊ฒ์ํ๋ ๊ฒ์ select ๋ช ๋ น์์๋ delete ๋ช ๋ น์์๋ ๊ฐ์!
- ๋จ์ง, select ๋ช ๋ น์์๋ ์กฐ๊ฑด์ ๋ง๋ ํ์ ๊ฒฐ๊ด๊ฐ์ด ํด๋ผ์ด์ธํธ๋ก ๋ฐํ / delete ๋ช ๋ น์์๋ ์กฐ๊ฑด์ ๋ง๋ ํ์ด ์ญ์ ๋๋ค๋ ๊ฒ๋ง ๋ค๋ฆ!
๐งก delete from order_items where id = 5 or id = 4; ๐งก
-> ์๋ ๊ฒ๋ ๊ฐ๋ฅ!
- order by๊ตฌ๋ ์ฌ์ฉ ๋ถ๊ฐ! ์ด๋ค ํ๋ถํฐ ์ญ์ ํ ๊ฒ์ธ์ง๋ ์ค์ํ์ง ์์ผ๋ฉฐ ์๋ฏธ ์๋ธ!
๐งก 18๊ฐ ๋ฐ์ดํฐ ๊ฐฑ์ ํ๊ธฐ - UPDATE
- UPDATE๋ก ๋ฐ์ดํฐ ๊ฐฑ์ ํ๊ธฐ
๐งก update ํ
์ด๋ธ๋ช
set ์ด๋ช
= ๊ฐ where ์กฐ๊ฑด์ ๐งก
- delete์ ๋ฌ๋ฆฌ update๋ ์ ๋จ์๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐฑ์ ํ ์ ์์.
- where๊ตฌ์ ์กฐ๊ฑด์ ์ง์ ํ๋ฉด, ๊ทธ์ ์ผ์นํ๋ ํ์ ๊ฐฑ์ ๊ฐ๋ฅ!
- update ๊ฐ๋ ์์ ์ค์ํ ๊ฒ์ ๐ฉ SET ๊ตฌ! ๐ฉ
- "SET ์ด๋ช = ๊ฐ" (์ฌ๊ธฐ์ '='๋ ๋น๊ต ์ฐ์ฐ์๊ฐ ์๋, ๋์ ์ฐ์ฐ์!)
- orders ํ
์ด๋ธ์ ๊ฐ์ง๊ณ update ์ฐ์ต์ ํด๋ณด์ฅ!
๐งก update orders SET address = '์ผ์ก๋ ์ฐ๋ฆฌ์ง' where id = 1; ๐งก
์๋ ๊ฒ ๋ฐ๋ ใ ใ ์ ๊ธฐ์ฐ!
- ์ฐ์ต ๋ ํด๋ณด๊ธฐ~~
-> update ๋ช ๋ น์์๋ where ์กฐ๊ฑด์ ์ผ์นํ๋ '๋ชจ๋ ํ'์ด ๊ฐฑ์ ๋จ!
- update๋ก ๊ฐฑ์ ํ ๊ฒฝ์ฐ ์ฃผ์์ฌํญ
- ๋ง์ฝ, update ๋ช ๋ น์ ์๋ ๊ฒ ์คํํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น....?๐ฅ
๐งก update orders SET order_status_id = order_status_id +1; ๐งก
์๋ ๊ฒ๋ ๋ฐ๋๋น ^^
- ๋ง์น ํ๋ก๊ทธ๋๋ฐ ์์ ์ ์์ฃผ ๋ฑ์ฅํ๋ ์ฆ๊ฐ ์ฐ์ฐ๊ณผ ๊ฐ์ ํ์์ ์ทจํจ!
- ๋ณต์์ด ๊ฐฑ์
- update ๋ช ๋ น์ set ๊ตฌ์์๋ ํ์์ ๋ฐ๋ผ ์ฝค๋ง(,)๋ก ๊ตฌ๋ถํ์ฌ ๊ฐฑ์ ํ ์ด์ ์ฌ๋ฌ ๊ฐ ์ง์ ํ ์ ์์!
๐งก update ํ
์ด๋ธ๋ช
set ์ด๋ช
1 = ๊ฐ1, ์ด๋ช
2 = ๊ฐ2, ... where ์กฐ๊ฑด์ ๐งก
ex)
update locations set name = '์ผ์ก์ญ', code = 'SSS' where id = 2;
-
id=2์ ๋ํ ๋ฐ์ดํฐ๋ฅผ update ํด๋ณด์ฅ!
-
์์ ๊ฐ์ด ๋ ๊ตฌ๋ฌธ์ผ๋ก ๋๋์ด์ update ๋ช ๋ น์ ์คํํ๋ ๊ฒ๋ณด๋ค(name, code ์ด๋ ๊ฒ ๋ฐ๋ก!) ํ๋๋ก ๋ฌถ์ด์ ์คํํ๋ ํธ์ด ๋ ํจ์จ์ !
-
SET๊ตฌ์ ์คํ ์์! (์ค์ํ!)
1) update locations SET no = no + 1, a = no;
2) update locations SET a = no, no = no + 1;
- MySQL์์๋ 1)์ ์คํํ์ ๋, no ์ด๊ณผ a ์ด์ ๊ฐ์ ๊ฐ์์ง๋ค ํ์ง๋ง 2)๋ฅผ ์คํํ๋ฉด no ์ด๊ณผ a์ด์ ๊ฐ์ ์๋ก ๋ฌ๋ผ์ง. -> ์ฒ๋ฆฌ ์์๋ฅผ ๊ณ ๋ คํ ํ์๊ฐ ์๋ฐ!
- NULL๋ก ๊ฐฑ์ ํ๊ธฐ
- UPDATE๋ช ๋ น์ผ๋ก ์ ๊ฐ์ NULL๋ก ๊ฐฑ์ ํ ์ ์์. 'update locations set name = NULL'๊ณผ ๊ฐ์ด ๊ฐฑ์ ํ ๊ฐ์ผ๋ก NULL์ ์ง์ ํ๋ฉด ๋จ. -> 'NULL ์ด๊ธฐํ'๋ผ๊ณ ๋ถ๋ฆ!
- ๋ค๋ง, NOT NULL ์ ์ฝ์ด ์ค์ ๋์ด ์๋ ๊ฒฝ์ฐ์๋ NULLํ์ฉ ์๋จ. update ๋ช
๋ น์ ์์ด์๋ NOT NULL ์ ์ฝ์ ์ ํจ!
๐งก 19๊ฐ ๋ฌผ๋ฆฌ์ญ์ ์ ๋ ผ๋ฆฌ์ญ์
- ๋ฐ์ดํฐ ์ญ์ ๋ฐฉ๋ฒ์ธ ๋ฌผ๋ฆฌ์ญ์ ์ ๋ ผ๋ฆฌ์ญ์ .
- ๋ ์ข ๋ฅ์ ์ญ์ ๋ฐฉ๋ฒ
- ์ด๊ฑด ์ญ์ ์ ๋ ๊ฐ์ง ๋ช
๋ น ๋ฐฉ๋ฒ์ด ์๋ ๋ ๊ฐ์ง ์ฌ๊ณ ๋ฐฉ์์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋จ.
1) ๋ฌผ๋ฆฌ์ญ์ : SQL์ delete๋ช ๋ น์ ์ฌ์ฉํด์ ์ง์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ ์ฌ๊ณ ๋ฐฉ์
2) ๋ ผ๋ฆฌ์ญ์ : ํ ์ด๋ธ์ '์ญ์ ํ๋๊ทธ'์ ๊ฐ์ ์ด์ ๋ฏธ๋ฆฌ ์ค๋นํด ๋ . ์ฆ, ํ ์ด๋ธ์์ ์ค์ ๋ก ํ์ ์ญ์ ํ๋ ๋์ update ๋ช ๋ น์ ์ด์ฉํด '์ญ์ ํ๋๊ทธ'์ ๊ฐ์ ์ ํจํ๊ฒ ๊ฐฑ์ ํด๋์๋ ๋ฐ์์ ์ํ ์ญ์ ๋ฐฉ๋ฒ. ์ค์ ํ ์ด๋ธ ์์ ๋ฐ์ดํฐ๋ ๋จ์์์ง๋ง, ์ฐธ์กฐํ ๋ '์ญ์ ํ๋๊ทธ'๊ฐ ์ญ์ ๋ก ์ค์ ๋ ํ์ ์ ์ธํ๋ select ๋ช ๋ น์ ์คํ. ๊ฒฐ๊ณผ์ ์ผ๋ก ํด๋น ํ์ด ์ญ์ ๋ ๊ฒ์ฒ๋ผ ๋ณด์.(๋ญ์๋ฆฌ์ผ..........๐ถ)
-> ์ค์ํ ๊ฒ์ '์ญ์ ํ๋๊ทธ'๋ฅผ ์ฌ์ฉํ๋ ๊ฒ !
-> ๋ ผ๋ฆฌ์ญ์ ์ ์ฅ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ญ์ ๋๊ธฐ ์ ์ ์ํ๋ก ๊ฐ๋จํ ๋๋๋ฆด ์ ์๋ค๋ ๊ฒ !
-> ๋ ผ๋ฆฌ์ญ์ ์ ๋จ์ ์ ์ญ์ ๋ฅผํด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๊ณต๊ฐ์ด ๋์ด๋์ง ์๋๋ค๋ ์ (์ง์ง ์ญ์ ๋๋๊ฒ ์๋๋๊น!), ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ๊ฒ์์๋๊ฐ ๋จ์ด์ง๋ ์ .
- ์ญ์ ๋ฐฉ๋ฒ ์ ํํ๊ธฐ
- SNS ์๋น์ค์ฒ๋ผ ์ฌ์ฉ์์ ๊ฐ์ธ์ ๋ณด๋ฅผ ๋ค๋ฃจ๋ ์์คํ -> ๋ฌผ๋ฆฌ์ญ์
- ์ผํ ์ฌ์ดํธ์ ๊ฒฝ์ฐ์ฒ๋ผ ์ฌ์ฉ์๊ฐ ์ฃผ๋ฌธ์ ์ทจ์ํ ๊ฒฝ์ฐ -> ๋
ผ๋ฆฌ์ญ์
(์ฃผ๋ฌธ์ด ์ทจ์๋์๋ค๊ณ ํด๋ ๋ฐ์ฃผ๋ ๋ ๊ฒ์ผ๋ก ํด๋น ์ ๋ณด๊ฐ ์์ ํ ํ์์๋ค๊ณ ๋ ๋ณผ ์ ์์ผ๋๊น!)
๐ insert, delete, update ์ฐ์ต ์ฐ์ต ์ฐ์ต ! ๐
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(SQL ์๋ฆฌ์ฆ (4์ฅ) ๐ชด), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@majaeh43/SQL-์๋ฆฌ์ฆ-4์ฅ์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค