Bibi's DevLog ๐ค๐
[MySQL] CRUD - INSERT, SELECT, UPDATE, DELETE / JOIN ๋ณธ๋ฌธ
[MySQL] CRUD - INSERT, SELECT, UPDATE, DELETE / JOIN
๋น๋น bibi 2021. 1. 28. 16:01์ด ๊ธ์ ์ธํ๋ฐ ์ํ์ฝ๋ฉ-DATABASE 1&2๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ ๊ฒ์ ๋๋ค.
MySQL CRUD
CRUD = ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฃผ์ 4๊ฐ์ง ๊ธฐ๋ฅ.
โ
Create ๋ฐ์ดํฐ ์์ฑ,
Read ๋ฐ์ดํฐ ์กฐํ,
Update ๋ฐ์ดํฐ ์์ ,
Delete ๋ฐ์ดํฐ ์ญ์
์ด ์ค์์๋ DB๋ผ๋ฉด ๋ฐ๋์ ๊ฐ์ง๊ณ ์๋๊ฐ์ฅ ์ค์ํ ๊ธฐ๋ฅ์? Create์ Read.
์ด๋ค ๋ถ์ผ(ํ๊ณ, ์ญ์ฌ ๋ฑ)์์๋ ๋ฐ์ดํฐ ์์ ๊ณผ ์ญ์ ๊ธฐ๋ฅ์ ์ ํ ์ฌ์ฉํ์ง ์๊ธฐ๋ ํ๋ค.
โป DESC ํ
์ด๋ธ์ด๋ฆ;
: ํด๋น ํ
์ด๋ธ์ ๊ตฌ์กฐ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ช
๋ น์ด.
Create : SQL์ INSERT ๊ตฌ๋ฌธ
ํ์ ํ์ '์ฝ์
'ํ๋ค๋ ์ ์์ INSERT
๋ฅผ ์ฌ์ฉํ๋ค.auto_increment
์ธ ๊ฐ๋ง ์ ์ธํ๊ณ ํญ๋ชฉ๋ค์ ์ ์ด๋ฃ์ผ๋ฉด ๋๋ค.
โ INSERT INTO ํ
์ด๋ธ์ด๋ฆ (์ด1์ด๋ฆ,์ด2์ด๋ฆ...) VALUES('์ด1๊ฐ','์ด2๊ฐ',...);
Read : SQL์ SELECT๊ตฌ๋ฌธ
๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ SQL๋ช
๋ น์ด.
๋ฐ์ดํฐ๋ฒ ์ด์ค= ์ต๋ ์ต ๋จ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์์.
๋ฐ๋ผ์ ์ํ๋ ๋ฐ์ดํฐ๋ง ๊ณจ๋ผ์(select) ์กฐํํ๋ ๊ฒ์ด ์ค์.
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ ๋ค๋ฃฌ๋ค = select๋ฌธ์ ์ ๋ค๋ฃฌ๋ค.
SELECT๋ฌธ์ ์กฐ๊ฑด์ด ๋ณต์กํด์ง์๋ก ์ฌ์คํด์ง๋ฏ๋ก ๊ตฌ๊ธ๋ง์ ํตํด ๊ทธ๋๊ทธ๋ ํ์ํ ๋ช
๋ น์ด&๋ช
๋ น์ด ์์๋ฅผ ์ฐพ์ ์จ์ผ ํ๋ค.
SELECT
~ FROM
~ ๋ฅผ ์ฌ์ฉํ๋ค.FROM
๋ค์๋ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ํ ์ด๋ฆ์ด ์จ๋ค.
SELECT ์ FROM ์ฌ์ด = Projection = ํ์ํ๊ณ ์ถ์ column๋ชฉ๋ก์ด ์จ๋ค. (*
= ์ ๋ถ)
- ํน์ ํ
์ด๋ธ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ์ถ์ ๋.
โSELECT * FROM ํ ์ด๋ธ์ด๋ฆ;
- ํน์ ํ
์ด๋ธ์ ํน์ column๋ค๋ง ๊ฐ์ ธ์ค๊ณ ์ถ์ ๋.
โSELECT column1์ด๋ฆ, column2์ด๋ฆ,.. FROM ํ ์ด๋ธ์ด๋ฆ;
- ํน์ ํ
์ด๋ธ์ ํน์ column์ ํน์ ์กฐ๊ฑด ๋ฐ์ดํฐ๋ง ๊ฐ์ ธ์ค๊ณ ์ถ์ ๋.
โSELECT * FROM ํ ์ด๋ธ์ด๋ฆ WHERE ํน์ column๋ช =์กฐ๊ฑด;
- ํน์ ํ
์ด๋ธ ํน์ column ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ๊ณ ์ถ์ ๋.
โปascending order = ์ค๋ฆ์ฐจ์ = ์ ๋ฐฉํฅ ์ ๋ ฌ. 123, ๊ฐ๋๋ค, ABC..
descending order = ๋ด๋ฆผ์ฐจ์ = ์ญ๋ฐฉํฅ ์ ๋ ฌ. 987, ํํํ, ZYX...
ascending โSELECT * FROM ํ ์ด๋ธ์ด๋ฆ ORDER BY ํน์ column๋ช ASC;
(ASC
๋ ์๋ต๊ฐ๋ฅ-๊ธฐ๋ณธ์ ๋ ฌ)
descending โSELECT * FROM ํ ์ด๋ธ์ด๋ฆ ORDER BY ํน์ column๋ช DESC;
Update : SQL์ UPDATE ๊ตฌ๋ฌธ
โ UPDATE ํ
์ด๋ธ์ด๋ฆ SET column๋ช
=์์ ํ ๊ฐ, column๋ช
=์์ ํ ๊ฐ.. WHERE ์์ ๋์;
์์ ๋์์ ์ฃผ๋ก id=__ ์ ๊ฐ์ด ์๋ณ์๋ฅผ ์
๋ ฅํ๋ค. (์์ ํ ๋ฐ์ดํฐ์ uniqueํ ๊ฐ)
โ ๏ธUPDATE ๊ตฌ๋ฌธ์์ WHERE ~
๋ฅผ ๋น ๋จ๋ฆฌ๋ฉด ์ฌ์์ด ์จ๋ค.. ๋ชจ๋ ๋ฐ์ดํฐ์ ๊ฐ์ด ๋ฐ๋ ์๋ ์๋ค.
Delete : SQL์ DELETE ๊ตฌ๋ฌธ
โ DELETE FROM ํ
์ด๋ธ์ด๋ฆ WHERE ์ญ์ ๋์;
์ญ์ ๋์์ ์ฃผ๋ก id=__ ์ ๊ฐ์ด ์๋ณ์๋ฅผ ์
๋ ฅํ๋ค. (์ญ์ ํ ๋ฐ์ดํฐ์ uniqueํ ๊ฐ)
โ ๏ธDELETE ๊ตฌ๋ฌธ์์ WHERE ~
๋ฅผ ๋น ๋จ๋ฆฌ๋ฉด ์ฌ์์ด ์จ๋ค.. ํด๋น ํ
์ด๋ธ์ ๋ชจ๋ ๊ฐ์ด ์ญ์ ๋ ์๋ ์๋ค.
๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ์์ฑ
๊ด๊ณํ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ํ์ํ๊ฐ?
๋ฐ์ดํฐ๋ค์ ์ค๋ณต์ด ๋ง์์๋ก ์ข์ง ์๋ค. (์ค๋ณต์ ์
์ทจ)
selectํ๊ธฐ ์ด๋ ค์์ ธ์ ๋ฐ์ดํฐ ์กฐํ, ๊ด๋ฆฌ(์ ์ง๋ณด์)๊ฐ ์ด๋ ค์์ง๊ธฐ ๋๋ฌธ.
๋ฐ๋ผ์ ์๋์ ๊ฐ์ด ๊ฐ์ ํ๋ค.
์๋ฅผ ๋ค์ด ์์ ํtopic์ author, profileํญ๋ชฉ์ ์ค๋ณต์ด ๋๋ฌด ๋ง๋ค.
๊ทธ๋์ ์๋์ฒ๋ผ author, topic ์ ๋ ๊ฐ์ ํ๋ก ๋๋์ด ์ ์ฅํ๋ค.
๊ทธ๋ฌ๋ฉด..
โ egoing ์ ์ด๋ฆ์ด ์ด๊ณ ์์ผ๋ก ๋ฐ๋์ด๋ authorํ์์๋ง ๋ฐ๊พธ๋ฉด ๋์ด ํธ๋ฆฌ.
โ ๊ธฐ์กด ์ ์์ ์ด๋ฆ, ํ๋กํ์ด ๊ฐ์ ๋ค๋ฅธ ์๊ฐ๊ฐ ์ถ๊ฐ๋์ด๋ ์๋ณ ๊ฐ๋ฅ.
(์ด๋ฆ์ด egoing, ํ๋กํ์ด developer์ธ ๋๋ช
์ด์ธ์ด ์ถ๊ฐ๋์ด๋ author id๋ ๋ค๋ฅผ ๊ฒ์ด๊ธฐ ๋๋ฌธ)
ํ์ง๋ง ๋จ์ ๋ ์๋ค.
์์ ํ๋ ๋ ์ง๊ด์ ์ด๋ค (ํ๋์ ํ๋ง ๋ณด๋ฉด ๋๋ค)
์๋์ ๋ ํ๋ ์ฐธ์กฐํ๊ฐ ํ์ํ๊ณ , ๋งค๋ฒ ๋น๊ตํด์ ๋ด์ผ ํ๋ ๋ถํธํจ์ด ์๋ค.
โ ์ด ๋ถํธํจ์ ํด๊ฒฐํ ๊ฒ์ด ๋ฐ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ด๋ค.
" ์ ์ฅ์ ๋ถ์ฐํด์, ๋ณด์ฌ์ค ๋ ํฉ์ณ์ ๋ณด์ฌ์ค๋ค ".
ํ ์ด๋ธ ๋ถ๋ฆฌํ๊ธฐ
์์ ์์ ์ฒ๋ผ ํฐ ํ๋์ ํ ์ด๋ธ์ ๋๋ก ๋ถ๋ฆฌํ๋ ์ฐ์ต์ ๋จผ์ ํด ๋ณผ ๊ฒ์ด๋ค.
ํฐ ํ๋์ ํ
์ด๋ธ์์ ์๋ก ๊ด๊ณ์๋ ์ด์ ๊ธฐ์ค์ผ๋ก ๋ถ๋ฆฌํ๋ค.
์๋ฅผ ๋ค์ด..
ํฐ ํ
์ด๋ธ : id, title, description, created, author, profile ์ ์ด์ด ์์
โ๊ฐ์ฅ ๊ด๊ณ์ฑ ๋์์ ๋ถ๋ฆฌํ๊ธฐ ์ข์ author, profile ์ ๋ถ๋ฆฌํ๋ค.
topic : id, title, description, created, authorโauthor_id
author : id, author, profile
(์ค์ต ๋ฐ์ดํฐ ์ฝ๋๋ ์ธ๊ฐ ์์
์๋ฃ์ ์์!)
JOIN - ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฝ
JOIN = ๊ฒฐํฉ.
๋ ํ
์ด๋ธ์ joinํ๊ธฐ ์ํด์๋ ๊ฒฐํฉํ '๊ธฐ์ค'์ด ํ์ํ๋ค.
์ด '๊ธฐ์ค'์ ๋ ํ
์ด๋ธ ๊ฐ์ ๊ฒฐํฉ๊ณ ๋ฆฌ(์ฐ๊ด์ ) ์ ํด๋นํ๋ค.
์๋ฅผ๋ค์ด, ์ ์์ ์ topic-author_id ์ author-id ๊ฐ ์๋ก ์ฐ๊ด๋์ด ์์ผ๋ฉฐ, JOIN ๋ช
๋ น์ด๋ฅผ ์์ฑํ ๋ ์ด๋ฅผ ์ฐธ์กฐํด ๋ช
๋ นํ ์ ์๋ค.
โ SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.id;
์ฆ SELECT * FROM ํ
์ด๋ธ1 LEFT JOIN ํ
์ด๋ธ2 ON ๊ฒฐํฉ๊ธฐ์ค;
.
๋จ์ํ ๋ ํ
์ด๋ธ๋ง ์ฐ๊ด์ง๊ณ ๊ฒฐํฉํ๋ ๊ฒ์ด ์๋, ์ฌ๋ฌ ๊ฐ์ ํ
์ด๋ธ์ ์ฐ๊ด์ง๊ณ ๊ฒฐํฉํ ์ ์๋ค.
์ด๊ฒ์ด ๋ฌด๊ถ๋ฌด์งํ๊ฒ ์์ฉ ๊ฐ๋ฅํ '๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค'์ ํ!JOIN
์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐ์ฅ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ต๊ฒ ํ๋ ๊ฝ์ด๋ค.
JOIN
์ ์ดํดํ๋ฉด ๋น๋ก์ '๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค'์ ์๋ฏธ๋ฅผ ์ดํดํ ์ ์๋ค.
โป** AS ##
โ ** ๋ฅผ ## ๋ก ๋ฐ๊พผ๋ค.
'๐ฅ BE ๋ฐฑ์๋ > Database' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[MySQL] function does not exist ์ค๋ฅ ๋ฐ์ ์ ํด๊ฒฐ๋ฒ / ์ค๋ณต๋๋ ๋ ์ง๊ฐ ์๋๋ก ๋ ์ง ์กฐํํ๊ธฐ (0) | 2021.05.28 |
---|---|
[DB] ํค, ๊ธฐ๋ณธ ํค(Primary Key, PK)์ ์ธ๋ ํค(Foreign Key, FK) (0) | 2021.04.30 |
[DB] 1:1, 1:N, N:M ๊ด๊ณ (0) | 2021.04.30 |
[MySQL] ํ ์ด๋ธ ์์ฑํ๊ธฐ (0) | 2021.01.28 |
[MySQL] MySQL ๊ธฐ๋ณธ (0) | 2021.01.28 |