
๋ฐ์ดํฐ: ํ์ค ์ธ๊ณ์์ ์์ง๋ ๋จ์ํ ์ฌ์ค๊ณผ ๊ฐ๋ค์ ๋ชจ์ ๋์ ๊ฒ
์ ๋ณด: ๋ฐ์ดํฐ๋ฅผ ํน์ ๋ชฉ์ ์ ์ํด ํด์ํ๊ฑฐ๋ ๊ฐ๊ณตํ ํํ
๐ฑ ๋ฐ์ดํฐ๋ฒ ์ด์ค( database ): ๋ฐ์ดํฐ๋ค์ ์งํฉ
ํ ์กฐ์ง ์์์ ์ฌ๋ฌ ์ฌ์ฉ์์ ์์ฉ ํ๋ก๊ทธ๋จ์ด ๊ณต๋์ผ๋ก ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ค์ ํตํฉํ์ฌ ์ ์ฅํ๊ณ ์ด์ํ๋ ๋ฐ์ดํฐ
ํ์ผ ์ฒ๋ฆฌ ์์คํ
์ ํ๊ณ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์๋ฐ์ดํฐ๋ฒ ์ด์ค ์ข
๋ฅ๐ฑ
RDB( Relational Database ): ๊ด๊ณํ ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก SQL์ ์ด์ฉํด ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌ
NoSQL( Not only SQL ): ๋ฐ์ดํฐ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์ํ์ง ์๊ณ RDB๋ณด๋ค ์ ์ฐํ ๋ชจ๋ธ์ ์ด์ฉ
RDBM( ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค )NoSQLRDB vs NoSQL| RDB | NoSQL |
|---|---|
| ํ๊ณผ ์ด๋ก ๊ตฌ์ฑ๋ ํ ์ด๋ธ๋ก ๋ฐ์ดํฐ ํํ | ๋ฐ์ดํฐ ํํ ๋ฐฉ์์ด ๊ณ ์ ์ ์ด์ง ์์ |
| ๊ด๊ณ ๋ชจ๋ธ์ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ ์ ๋ฆฌ | ์ผ๋ฐ์ ์ผ๋ก ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ RDB๋ณด๋ค ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌ ๊ฐ๋ฅ |
| ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ๊ณผ ์์ ์ฑ์ด ์ค์ํ ๊ฒฝ์ฐ ์ฌ์ฉ | ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๊ฐ ์ผ๊ด์ ์ด์ง ์์ ๋น ๋ฐ์ดํฐ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ |
| MySQL, PostgreSQL, MariaDB ๋ฑ | MongoDB, Redis, Apache Cassandra ๋ฑ |
๊ด๊ณํ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ๊ตฌ์ฑ ์์
๐ฑ ๊ด๊ณ ? ๊ด๊ณ๊ฐ ์๋ค๋ฉด ํ๋์ ์์ฑ์ผ๋ก ํ ์ด๋ธ์ ์ฐ๊ฒฐํ์ฌ ๋ฐ์ดํฐ ์ค๋ณต ์ ์ฅํ์ง ์๊ณ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌ !
!
MySQL๋ฐ์ดํฐ ํ์
| ์๋ฃํ | ์๋ฏธ |
|---|---|
VARCHAR(n) | nBytes ํฌ๊ธฐ์ ๊ฐ๋ณ ๊ธธ์ด ๋ฌธ์์ด ๋ฐ์ดํฐ |
INT | ์ ์ํ ์ซ์ ๋ฐ์ดํฐ( 4Bytes ) |
FLOAT | 4Bytes ํฌ๊ธฐ์ ๋ถ๋ ์์์ ๋ฐ์ดํฐ |
DATETIME | ๋ ์ง์ ์๊ฐ ํํ์ ๊ธฐ๊ฐ ๋ฐ์ดํฐ( YYYY-MM-DD HH:MM:SS ) |
| โฆ | โฆ |
โ MySQL ๋ฐ์ดํฐํ์ ๋ค ํ์ธํ๊ธฐ
ํ
์ด๋ธ ์ ์-- CREATE TABLE ํ
์ด๋ธ๋ช
(์์ฑ1 ๋ฐ์ดํฐํ์
1 ์ ์ฝ์กฐ๊ฑด1, ์์ฑ2 ๋ฐ์ดํฐํ์
2 ์ ์ฝ์กฐ๊ฑด2, ...);
CREATE TABLE customer(
id VARCHAR(10),
name VARCHAR(10),
address VARCHAR(30)
);
์ ์ํ ํ
์ด๋ธ ํ์ธSHOW TABLES; -- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ
์ด๋ธ ๋ชฉ๋ก์ ํ์ธ
DESC ํ
์ด๋ธ๋ช
; -- ํ
์ด๋ธ์ ๊ตฌ์กฐ๋ฅผ ํ์ธ
ํ
์ด๋ธ ์์ -- ์ปฌ๋ผ ์ถ๊ฐ
ALTER TABLE ํ
์ด๋ธ๋ช
ADD COLUMN ์ปฌ๋ผ๋ช
๋ฐ์ดํฐํ์
์ ์ฝ์กฐ๊ฑด;
-- ์ปฌ๋ผ ์์
ALTER TABLE ํ
์ด๋ธ๋ช
MODIFY COLUMN ์ปฌ๋ผ๋ช
๋ฐ์ดํฐํ์
์ ์ฝ์กฐ๊ฑด;
-- ์ปฌ๋ผ ์ด๋ฆ ๋ณ๊ฒฝ
ALTER TABLE ํ
์ด๋ธ๋ช
CHANGE COLUMN ๊ธฐ์กด์ปฌ๋ผ๋ช
์๋ก์ด์ปฌ๋ผ๋ช
๋ฐ์ดํฐํ์
์ ์ฝ์กฐ๊ฑด;
-- ์ปฌ๋ผ ์ญ์
ALTER TABLE ํ
์ด๋ธ๋ช
DROP COLUMN ์ปฌ๋ผ๋ช
๋ฐ์ดํฐํ์
์ ์ฝ์กฐ๊ฑด;
-- ํ
์ด๋ธ ์ด๋ฆ ๋ณ๊ฒฝ
ALTER TABLE ๊ธฐ์กดํ
์ด๋ธ๋ช
RENAME ์๋ก์ดํ
์ด๋ธ๋ช
;
ํ
์ด๋ธ ์ญ์ DROP TABLE ํ
์ด๋ธ๋ช
;
์ ์ฝ์กฐ๊ฑดNOT NULL: NULL ๊ฐ ๋นํ์ฉ, ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ์ง ์์ผ๋ฉด ์๋ฌ ๋ฐ์UNIQUE: ์ค๋ณต ๊ฐ ํ์ฉ X, ๋๊ฐ์ ๊ฐ์ด ์์ ๊ฒฝ์ฐ ์๋ฌ ๋ฐ์, NULL ์ ๋น๊ต ๋ถ๊ฐํ๋ฏ๋ก ์ค๋ณต ๊ฐ๋ฅDEFAULT: ๊ธฐ๋ณธ๊ฐ ์ค์ , ์๋ฌด๋ฐ ๊ฐ์ ์ง์ ํ์ง ์์ ๊ฒฝ์ฐ DEFAULT ๊ฐ์ผ๋ก ์ค์ CHECK: ๊ฐ์ ๋ฒ์๋ฅผ ์ ํํ์ฌ ํน์ ๊ฐ๋ง ํ์ฉ, ์ ํํ ๊ฐ์ด ์๋ ๊ฒฝ์ฐ ์๋ฌ ๋ฐ์CONSTRAINT:// ์ ์ฝ ์กฐ๊ฑด ์ด๋ฆ ์ ์
CONSTRAINT ์ ์ฝ์กฐ๊ฑด์ด๋ฆ ์ ์ฝ์กฐ๊ฑด[UNIQUE, CHECK, ...] (์ ์ฉํ ์์ฑ);
// ์์ฑ๋ ์ ์ฝ ์กฐ๊ฑด ํ์ธ
SELECT * FROM information_schema.table_constraints;
// ์ ์ฝ ์กฐ๊ฑด ์ถ๊ฐ
ALTER TABLE ํ
์ด๋ธ๋ช
ADD CONSTRAINT ์ ์ฝ์กฐ๊ฑด ์ด๋ฆ ์ ์ฝ์กฐ๊ฑด(์์ฑ);
// DEFAULT ์ ์ฝ ์กฐ๊ฑด ์์
ALTER TABLE ํ
์ด๋ธ๋ช
ALTER ์์ฑ SET DEFAULT ๊ธฐ๋ณธ๊ฐ;KEYPrimary Key ( ๊ธฐ๋ณธํค )๐ฑ ์๋ก ๋ค๋ฅธ ํํ์ ์ ์ผํ๊ฒ ์๋ณํ ์ ์๋ ๊ธฐ์ค์ด ๋๋ ์์ฑ
PRIMARY KEYNULL ๊ฐ ๊ฐ์ง ์ ์์Foreign Key ( ์ธ๋ํค )๐ฑ ๋ค๋ฅธ ํ ์ด๋ธ์ ๊ธฐ๋ณธํค๋ฅผ ์ฐธ์กฐํ๋ ์์ฑ์ผ๋ก ํ ์ด๋ธ์ ๊ด๊ณ ์ ์
FOREIGN KEY (์ฐธ์กฐํ ์์ฑ) REFERENCES ์ฐธ์กฐ๋๋ ํ
์ด๋ธ(์ฐธ์กฐ๋๋ ์์ฑ)Composite Key ( ๋ณตํฉํค )๐ฑ ๋ ๊ฐ ์ด์์ ์์ฑ(์ปฌ๋ผ)์ ๊ฒฐํฉํ์ฌ ๊ณ ์ ํ ๊ฐ์ ๋ง๋๋ ๋ฐฉ์์ผ๋ก ํ ์ด๋ธ์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ ์ ์ง
PRIMARY KEY (์์ฑ1, ์์ฑ2, ...)CREATE TABLE customer(
id VARCHAR(10) PRIMARY KEY, // ๊ธฐ๋ณธํค ์ค์
name VARCHAR(10),
address VARCHAR(30)
);
CREATE TABLE oreder_history(
customer_id VARCHAR(10),
order_id VARCHAR(14),
FOREIGN KEY (customer_id) REFERENCES customer(id), // ์ธ๋ํค ์ค์
CONSTAINT order_history_pk PRIMARY KEY (customer_id, order_id) // ๋ณตํฉํค ์ค์
);
๊ทธ ์ธ์ ํค๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด๐ฑ ๊ฐ์ฒด ๋ฌด๊ฒฐ์ฑ: ๊ธฐ๋ณธํค๋
NULL๊ฐ์ด๋ ์ค๋ณต๋ ๊ฐ์ ๊ฐ์ง ์ ์์
์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ: ์ธ๋ํค๋NULL์ด๊ฑฐ๋ ์ฐธ์กฐ๋๋ ๋ฆด๋ ์ด์ ์ ๊ธฐ๋ณธํค ๊ฐ๊ณผ ๋์ผ
NULL ๋ฌด๊ฒฐ์ฑ: ํน์ ์์ฑ๊ฐ์ NULL ๊ฐ์ ๊ฐ์ง ์ ์์( NOT NULL )๋ฐ์ดํฐ ๋ชจ๋ธ๋ง๐ฑ ํ์ค ์ธ๊ณ์ ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์คํ ํ๋ ๊ณผ์
๋ฐ์ดํฐ ๋ชจ๋ธ์ ๊ตฌ์ฑ ์์๐ฑ ํ์ค ์ธ๊ณ์ ๋ฐ์ดํฐ๋ฅผ ๋จ์ํ, ์ถ์ํํ์ฌ ํํํ ๋ชจ๋ธ
๋ฐ์ดํฐ ๋ชจ๋ธ๋ง ๋จ๊ณ
๐ฑ ERD, Entity-Relationship Diagram ( ๊ฐ์ฒด-๊ด๊ณ ๋ค์ด์ด๊ทธ๋จ )

