์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Absolute
- AGI
- ai
- AI agents
- AI engineer
- AI researcher
- ajax
- algorithm
- Algorithms
- aliases
- Array ๊ฐ์ฒด
- ASI
- bayes' theorem
- Bit
- Blur
- BOM
- bootstrap
- canva
- challenges
- ChatGPT
- Today
- In Total
A Joyful AI Research Journey๐ณ๐
[55] 230317 SQL Ch. 8 ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ: 34๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ, 35๊ฐ ์ ๊ทํ, 36๊ฐ ํธ๋์ญ์ [K-๋์งํธ ํธ๋ ์ด๋ 55์ผ] ๋ณธ๋ฌธ
[55] 230317 SQL Ch. 8 ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ: 34๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ, 35๊ฐ ์ ๊ทํ, 36๊ฐ ํธ๋์ญ์ [K-๋์งํธ ํธ๋ ์ด๋ 55์ผ]
yjyuwisely 2023. 3. 17. 15:38230317 Thu 55th class
Ch. 8 ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ
์ง๋: p. 312 ~ (๊ต์ฌ: SQL ์ฒซ๊ฑธ์, ์ ์: ์์ฌ์ด ์์ธ ์)
MySQL Workbench Manual: https://dev.mysql.com/doc/workbench/en/
MySQL ํํ ๋ฆฌ์ผ: https://www.tutorialspoint.com/mysql/
SQLD ์์ฝ pdf: https://yurimac.tistory.com/40
์ฑ
์์ฝ (9p) pdf: https://brunch.co.kr/@ydy702/10
์ค๋ ๋ฐฐ์ด ๊ฒ ์ค ๊ธฐ์ตํ ๊ฒ์ ์ ๋ฆฌํ๋ค.
๋ค์ ๊ธฐ์ตํ ๊ฒ
๋ฐ์ดํฐ ์ ํ
- CHAR(s): ๊ณ ์ ๊ธธ์ด ๋ฌธ์์ด ์ ๋ณด, ์ต๋ ๊ธธ์ด๋งํผ ๊ณต๊ฐ ์ฑ์ ‘AA’ = ‘AA ’
- VARCHAR(s) : ๊ฐ๋ณ ๊ธธ์ด ๋ฌธ์์ด ์ ๋ณด, ํ ๋น๋ ๋ณ์ ๊ฐ์ ๋ฐ์ดํธ๋ง ์ ์ฉ ‘AA’ != ‘AA’
- NUMBER: ์ ์, ์ค์ ๋ฑ ์ซ์ ์ ๋ณด
- DATE: ๋ ์ง์ ์๊ฐ ์ ๋ณด
no | a | b | newcol |
1 | 10ABC | 2014-01-01 | NULL |
2 | 20ABC | 2014-01-02 | NULL |
Ch. 8 ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ
์ฑ ์ ๋ชฉ์ฐจ
__34๊ฐ__๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ
1. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ
2. ER๋ค์ด์ด๊ทธ๋จ
__35๊ฐ__์ ๊ทํ
1. ์ ๊ทํ
2. ์ 1์ ๊ทํ
3. ์ 2์ ๊ทํ
4. ์ 3์ ๊ทํ
5. ์ ๊ทํ์ ๋ชฉ์
__36๊ฐ__ํธ๋์ญ์
1. ํธ๋์ญ์
2. ๋กค๋ฐฑ๊ณผ ์ปค๋ฐ
3. ํธ๋์ญ์ ์ฌ์ฉ๋ฒ
34๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ
ํ ์ด๋ธ ID | ํ ์ด๋ธ๋ช | |||||
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ช | ||||||
ํ๊ธ ์นผ๋ผ๋ช
(๋ ผ๋ฆฌ๋ช ) |
์๋ฌธ ์นผ๋ผ๋ช
(๋ฌผ๋ฆฌ๋ช ) |
ํ์ | ๊ธธ์ด | PK ๊ตฌ๋ถ | Not Null ๊ตฌ๋ถ | ์ฐ๊ดํ
์ด๋ธ (์ธ๋ํค) |
An Entity Relationship Diagram(ERD)
: 1:1๊ด๊ณ, 1:๋ค ๊ด๊ณ์ธ์ง ์ด๋ฏธ์งํํด์ ๋ณด์ฌ์ค๋ค.
ERDํด
์ฐธ๊ณ : https://gitmind.com/kr/er-diagram-tool.html
ERD ๋ถ์์ ํ๋ฉด ์
๋ฌด๊ฐ ๋ณด์ธ๋ค.
์์)
- 1๋ช
์ ํ์(member)์ด ์ฌ๋ฌ ๊ฐ์ ๊ฒ์๊ธ(board)์ ์ธ ์ ์๋ค.
- ํ๋์ ๊ฒ์๊ธ(board)์ ์ฌ๋ฌ ๊ฐ์ ๋๊ธ(reply)์ ์ธ ์ ์๋ค.
์ฐธ๊ณ :
34.1 ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ค๊ณํ๋ค: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์คํค๋ง ๋ด์ ํ
์ด๋ธ, ์ธ๋ฑ์ค, ๋ทฐ ๋ฑ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ฒด๋ฅผ ์ ์ํ๋ ๊ฒ์ ๋งํ๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ์ ์ฃผ๋ ๋ด์ฉ: ํ
์ด๋ธ์ ์ด๋ฆ์ด๋ ์ด, ์๋ฃํ์ ๊ฒฐ์ ํ๋ ๊ฒ์ด๋ค.
1) ๋ ผ๋ฆฌ๋ช ๊ณผ ๋ฌผ๋ฆฌ๋ช
Point: ๋ฌผ๋ฆฌ๋ช
์ CREATE TABLE์ ์ง์ ํ๋ ํ
์ด๋ธ ์ด๋ฆ์ด๋ ์ด ์ด๋ฆ์ด๋ค. ex) 'item_master'
๋
ผ๋ฆฌ๋ช
์ ์ค๊ณ์์ ์ด๋ฆ์ด๋ค. ex) '์ํ ๋ง์คํฐ'
๋ฌผ๋ฆฌ๋ช ์ ์๋ชป ์ ํ๋ฉด ๋ณ๊ฒฝํ๊ธฐ ํ๋ค์ง๋ง ๋ ผ๋ฆฌ๋ช ์ ์ธ์ ๋ ๋ฐ๊ฟ ์ ์๋ค.
์ด๋ช | ๋ ผ๋ฆฌ๋ช | ์๋ฃํ | NULL | ๊ธฐ๋ณธ๊ฐ | ๋น๊ต |
item_code | ์ํ์ฝ๋ | CHAR(4) (๊ณ ์ ๊ธธ์ด) |
No | ||
item_name | ์ํ๋ช | VARCHAR(30) (๊ฐ๋ณ๊ธธ์ด) |
Yes | ||
price | ๊ฐ๊ฒฉ | INTEGER | Yes |
2) ์๋ฃํ
3) ๊ณ ์ ๊ธธ์ด์ ๊ฐ๋ณ๊ธธ์ด
Point: ํฐ ๋ฐ์ดํฐ๋ LOB(Large Object) ํ์ผ๋ก ์ ์ฅํ ์ ์๋ค.
4) ๊ธฐ๋ณธํค
34.2 ER๋ค์ด์ด๊ทธ๋จ
erd(๊ฐ์ฒด ๊ด๊ณ๋) ๊ด๊ณ์ ์ข ๋ฅ
์ค์ : ๋ถ๋ชจํ ์ด๋ธpk๊ฐ ์์ ํ ์ด๋ธ fk๊ฐ ๋๋ ๊ฒฝ์ฐ
์ ์ : ๋ถ๋ชจํ ์ด๋ธpk๊ฐ ์์ํ ์ด๋ธ์ ์ผ๋ฐ์์ฑ์ด ๋๋ ๊ฒฝ์ฐ
erd ๊ธฐํธ์ ์ข ๋ฅ
|: 1๊ฐ
<: ์ฌ๋ฌ๊ฐ
o: 0๊ฐ
์ฐธ๊ณ : https://sum0725.tistory.com/12
์๋ ์ด๋ฏธ์ง์์ ์ ์ด ์ค๋ช ๊ณผ ๋ฐ๋๋ก ๋จ.
MySQL์์ EER Diagram์ ๋ง๋ ๋ค.
์ฐธ๊ณ : https://www.webucator.com/article/how-to-create-an-er-diagram-for-a-mysql-database-w/
35๊ฐ ์ ๊ทํ
35.1 ์ ๊ทํ
DB ์ค๊ณ๋จ๊ณ์์ ํ
์ด๋ธ์ ๋ถํ → ๋ฐ์ดํฐ๊ฐ ํ ๊ณณ์๋ง ์ ์ฅ๋๋๋ก
35.2 ์ 1์ ๊ทํ
Point: ๋ฐ๋ณต๋๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ก(์ด ๋ฐฉํฅ)๊ฐ ์๋ ์ธ๋ก(ํ ๋ฐฉํฅ)๋ก ๋๋ฆฌ๋ ๊ฒ์ด ์ 1์ ๊ทํ์ ์ 1๋จ๊ณ์ด๋ค.
Point: ์ 1์ ๊ทํ์์๋ ํ
์ด๋ธ ๋ถํ ๊ณผ ๊ธฐ๋ณธํค ์ง์ ์ด ์ด๋ฃจ์ด์ง๋ค.
35.3 ์ 2์ ๊ทํ
์ 2 ์ ๊ทํ : ๋ถ๋ถ ํจ์ ์ข
์์ฑ์ ์ฐพ์ ํ
์ด๋ธ๋ถํ (PK์์ ์ค๋ณต์ ๊ฑฐ )
35.4 ์ 3์ ๊ทํ
์ 3 ์ ๊ทํ : PK๊ฐ ์๋ ์ผ๋ฐ ์นผ๋ผ์์ ์ค๋ณต ์ ๊ฑฐ
35.5 ์ ๊ทํ์ ๋ชฉ์
Point: ์ ๊ทํ๋ก ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ ํ๋ ๊ฒ์ ํ๋์ ๋ฐ์ดํฐ๊ฐ ํ ๊ณณ์ ์ ์ฅ๋๋๋ก ํ๊ธฐ ์ํจ์ด๋ค.
36๊ฐ ํธ๋์ญ์
ํธ๋์ญ์
์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ
์์ ๋ณํ ์ ์ด ๋ฐ ํ๋ณต ์์
์ ์ฒ๋ฆฌ๋๋ ์์
์ ๋
ผ๋ฆฌ์ ์ธ ๋จ์๋ก ์ฌ์ฉ์๊ฐ ์์คํ
์ ๋ํ ์๋น์ค ์๊ตฌ ์ ์์คํ
์ด ์๋ตํ๊ธฐ ์ํ ์ํ ๋ณํ ๊ณผ์ ์ ์์
๋จ์์ด๋ค. ํ๋์ ํธ๋์ญ์
์ ์ปค๋ฐ(commit) ๋๊ฑฐ๋ ๋กค๋ฐฑ์ด ๋๋ค.
In short, a database transaction is a sequence of multiple operations performed on a database, and all served as a single logical unit of work — taking place wholly or not at all. In other words, there’s never a case that only half of the operations are performed and the results saved.
ํธ๋์ญ์ ์ ์ ์ด
START TRANSACTION
COMMIT
ROLLBACK
ex) ๊ฒ์๊ธ ํด๋ฆญํ์ ๋ ํด๋ฆญ๊ณผ ์
๋ฐ์ดํธ๊ฐ ๋์์ ์งํ๋๋ค.
์๋๋ก ๋ฌถ๋๋ค.
๋ ๋ค ์คํ ๋๋ ๋ ๋ค ์คํX
COMMIT: ์
๋ฐ์ดํธํ๋ผ
ROLLBACK: ์๋๋๋ก ๋์๊ฐ๋ผ
ํธ๋์ญ์
๋ ๊ฐ ์ด์์ sql์ ๋์๋ค๋ฐ๋ก ์คํํ๊ณ ์ ํ ๋ ์ฌ์ฉ
๊ฒ์ํ ์ ๋ชฉ์ ํด๋ฆญ
select * from board where no = 1125;
update board set count=count+1 where no = 1125
start transaction
select * from board where no = 1125;
update board set count = count+1 where no = 1125
select์ update๊ฐ ๋ ๋ค ์ฑ๊ณตํ์ผ๋ฉด commit
select์ update๊ฐ ๋ ์ค ํ๋๋ผ๋ ์คํจํ์ผ๋ฉด rollback ์คํ (์๋ ๋ฐ์ดํฐ๋ก ๋์๊ฐ๋ค.)
36.1 ํธ๋์ญ์
- ๋ฐ์ฃผ ์ฒ๋ฆฌ
์์ 8-1) ๋ฐ์ฃผ์ฒ๋ฆฌ
INSERT INTO ์ฃผ๋ฌธ VALUES(4, '2014-03-01', 1);
INSERT INTO ์ฃผ๋ฌธ์ํ VALUES(4, '0003', 1);
INSERT INTO ์ฃผ๋ฌธ์ํ VALUES(4, '0004', 2);
36.2 ๋กค๋ฐฑ๊ณผ ์ปค๋ฐ
Point: ํธ๋์ญ์
์ ๋กค๋ฐฑ(rollback)ํ๋ฉด ๋ณ๊ฒฝํ ๋ด์ฉ์ด ์ ์ฉ๋์ง ์๋๋ค.
- ์๋์ปค๋ฐ
ํธ๋์ญ์ ์์
START TRANSACTION
ํธ๋์ญ์ ๋ด์์ ์คํํ ๋ช ๋ น์ ์ ์ฉํ ํ ์ข ๋ฃ
COMMIT
ํธ๋์ญ์ ๋ด์์ ์คํํ ๋ช ๋ น์ ํ๊ธฐํ ํ ์ข ๋ฃ
ROLLBACK
์์ 8-1) ํธ๋์ญ์ ๋ด์์์ ๋ฐ์ฃผ์ฒ๋ฆฌ
START TRANSACTION;
INSERT INTO ์ฃผ๋ฌธ VALUES(4, '2014-03-01', 1);
INSERT INTO ์ฃผ๋ฌธ์ํ VALUES(4, '0003', 1);
INSERT INTO ์ฃผ๋ฌธ์ํ VALUES(4, '0004', 2);
COMMIT;
Point: ํธ๋์ญ์ ์ ์ฌ์ฉํด์ ์ฒ๋ฆฌํ๋ ๊ฒ์ผ๋ก ๊ฐ๋จํ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ ์ ์๋ค.
use example;
alter table board modify count int default 0;
desc board;
select * from board where no = 5; -- title ํด๋ฆญํ๋ฉด,
-- update board set count=0;
update board set count=count+1 where no=5;
start transaction;
select * from board where no = 5; -- title ํด๋ฆญํ๋ฉด,
update board set count = count+1 where no=5;
-- ์ ์์ ์ผ๋ก select๋ update๊ฐ ๋จ: ์ ์์ฒ๋ฆฌ ํด์ค์ผ ํจ.(commit)
commit;
-- update,๋ ์ ์์ ์ผ๋ก ์ํ๋์์ผ๋, select๊ฐ ์ ๋๋ก ์๋ํ์ง ์์์.: count๊ฐ์ ์๋๋๋ก ๋๋๋ ค ์ค์ผ ํจ.
rollback;
์ฒ์์ no = 3์ผ๋ก ํ์๋๋ฐ ROLLBACK ์ฝ๋ ์คํํ๋ฉด์ ์ง์์ก๋ค.
36.3 ํธ๋์ญ์
์ฌ์ฉ๋ฒ p. 333
๋ฐ๋์ ์ธํธ๋ก ์คํํ๊ณ ์ถ์ SQL ๋ช
๋ น์ ํธ๋์ญ์
์์ ํ๋๋ก ๋ฌถ์ด ์คํํ๋ค.
์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์๋ ROLLBACK์ ํ๋ฉด ๋ณ๊ฒฝํ ๋ด์ฉ์ ํ๊ธฐ๋๋ค.
์๋ฌ๊ฐ ๋ฐ์ํ๋๋ผ๋ COMMIT์ ํ๋ฉด ๋ฌธ์ ์์ด ์คํ๋ SQL ๋ช
๋ น์ ๋ณ๊ฒฝ์ฌํญ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ทธ๋๋ก ๋ฐ์๋๋ค.
Point: ์ธํธ๋ก ์คํํ๊ณ ์ถ์ SQL ๋ช ๋ น์ ํธ๋์ญ์ ๋ด์์ ์คํํ๋ค.