
๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ค๋ฉด ๋จผ์ ๊ทธ๋ฆ(ํ
์ด๋ธ)์ ๋ง๋ค์ด์ผ๊ฒ ์ฃ ?
์ด๋ฒ ๊ธ์์๋ SQL์์ ํ
์ด๋ธ์ ์์ฑ(CREATE)ํ๋ ๋ฐฉ๋ฒ๊ณผ,
์ ์ฝ ์กฐ๊ฑด(Constraint)์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ๊ด๋ฆฌํ๋ ๋ฒ์ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค!
๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด์๋ ํ ์ด๋ธ์ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
CREATE TABLE ํ
์ด๋ธ๋ช
(
์ปฌ๋ผ๋ช
๋ฐ์ดํฐํ์
[์ ์ฝ์กฐ๊ฑด],
...
);
๐ ์์:
CREATE TABLE Customer ( custid INT PRIMARY KEY, name VARCHAR(30) NOT NULL, address VARCHAR(100), phone CHAR(11) UNIQUE );
- custid๋ ๊ธฐ๋ณธํค (์ค๋ณต โ, NULL โ)
- name์ ๋ฐ๋์ ๊ฐ์ด ์์ด์ผ ํจ
- phone์ ์ค๋ณต ๋ถ๊ฐ
| ํ์ | ์ค๋ช |
|---|---|
| INT | ์ ์ํ |
| VARCHAR(n) | ๊ฐ๋ณ ๊ธธ์ด ๋ฌธ์์ด (์ต๋ n์) |
| CHAR(n) | ๊ณ ์ ๊ธธ์ด ๋ฌธ์์ด |
| DATE | ๋ ์ง (ํ์: YYYY-MM-DD) |
| FLOAT, DOUBLE | ์ค์ํ ์ซ์ |
| ์ ์ฝ ์กฐ๊ฑด | ์ค๋ช |
|---|---|
PRIMARY KEY | ํ ์ด๋ธ์ ๊ณ ์ ์๋ณ์ (์ค๋ณต โ, NULL โ) |
NOT NULL | ๋ฐ๋์ ๊ฐ์ด ์์ด์ผ ํจ |
UNIQUE | ์ค๋ณต ๋ถ๊ฐ (๋จ, NULL์ ์ฌ๋ฌ ๋ฒ ํ์ฉ๋จ) |
DEFAULT | ๊ฐ์ ์ ๋ ฅํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ด ์๋ ์ ๋ ฅ๋จ |
CHECK | ์กฐ๊ฑด์์ ๋ง์กฑํด์ผ ํจ (CHECK(age >= 18) ๋ฑ) |
FOREIGN KEY | ๋ค๋ฅธ ํ ์ด๋ธ์ ํค๋ฅผ ์ฐธ์กฐ (์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ง) |
SQL์์ ๋ฐ์ดํฐ๋ฅผ ์ ํํ๊ณ ์์ ํ๊ฒ ๋ค๋ฃจ๊ธฐ ์ํด ๊ผญ ํ์ํ ๊ฒ ๋ฐ๋ก ์ ์ฝ ์กฐ๊ฑด์ด์์.
ํ
์ด๋ธ์ ๋ง๋ค ๋ ์ปฌ๋ผ์ ์ด๋ค ๊ฐ์ด ๋ค์ด์ฌ ์ ์๋์ง, ๋๋ ์ด๋ค ๊ฐ์ ๋ฐ๋์ ์์ด์ผ ํ๋์ง๋ฅผ ์ ํํด์ค๋๋ค.
ํ ์ด๋ธ์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ์ ๋ํด ๊ท์น์ ์ค์ ํด์
์๋ชป๋ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋ ๊ฒ์ ๋ฐฉ์งํ๋ ์ฅ์น์์.
| ์ ์ฝ ์กฐ๊ฑด | ์ปฌ๋ผ ์ ์ ์์ | ์๋ฏธ / ์ค๋ช |
|---|---|---|
PRIMARY KEY | custid INT PRIMARY KEY | ๊ธฐ๋ณธ ํค๋ก ์ง์ . ์ค๋ณต โ, NULL โ |
NOT NULL | name VARCHAR(50) NOT NULL | ๋ฐ๋์ ๊ฐ์ด ์์ด์ผ ํจ |
UNIQUE | email VARCHAR(100) UNIQUE | ์ค๋ณต๋ ๊ฐ ํ์ฉ โ. ๋จ, NULL์ ์ฌ๋ฌ ๊ฐ ๊ฐ๋ฅ |
DEFAULT | reg_date DATE DEFAULT CURRENT_DATE | ์ ๋ ฅํ์ง ์์ผ๋ฉด ํ์ฌ ๋ ์ง๊ฐ ์๋ ์ ๋ ฅ |
CHECK | age INT CHECK (age >= 18) | ๊ฐ์ด ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ์ ์ฅ ๊ฐ๋ฅ |
FOREIGN KEY | deptid INT, FOREIGN KEY (deptid) REFERENCES Department(deptid) | ์ธ๋ ํค. ๋ค๋ฅธ ํ ์ด๋ธ์ ๊ฐ๋ง ์ฐธ์กฐ ๊ฐ๋ฅ |
CREATE TABLE Member (
id INT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
age INT CHECK (age >= 18),
email VARCHAR(100) UNIQUE,
join_date DATE DEFAULT CURRENT_DATE,
deptid INT,
FOREIGN KEY (deptid) REFERENCES Department(deptid)
);
DROP TABLE ํ
์ด๋ธ๋ช
;
ALTER TABLE ํ
์ด๋ธ๋ช
ADD ์ปฌ๋ผ๋ช
๋ฐ์ดํฐํ์
;
ALTER TABLE ํ
์ด๋ธ๋ช
MODIFY ์ปฌ๋ผ๋ช
์_๋ฐ์ดํฐํ์
;
ALTER TABLE ํ
์ด๋ธ๋ช
DROP COLUMN ์ปฌ๋ผ๋ช
;
| ๊ตฌ๋ถ | ํต์ฌ ๋ด์ฉ |
|---|---|
CREATE TABLE | ํ ์ด๋ธ์ ์๋ก ์์ฑํ๋ ๋ช ๋ น์ด |
| ๋ฐ์ดํฐ ํ์ | INT, VARCHAR(n), CHAR(n), DATE, FLOAT ๋ฑ |
| ์ฃผ์ ์ ์ฝ ์กฐ๊ฑด | PRIMARY KEY, NOT NULL, UNIQUE, DEFAULT, CHECK, FOREIGN KEY |
| ์ ์ฝ ์กฐ๊ฑด ์ญํ | ๊ฐ์ ์ค๋ณต ๋ฐฉ์ง, ํ์ ๊ฐ ์ ๋ ฅ, ๊ธฐ๋ณธ๊ฐ ์ง์ , ์กฐ๊ฑด ๋ง์กฑ ์ฌ๋ถ ํ์ธ, ์ฐธ์กฐ ๊ด๊ณ ์ค์ |
| ์ ์ฝ ์กฐ๊ฑด ์์ | age INT CHECK (age >= 18), email VARCHAR UNIQUE, FOREIGN KEY (id) REFERENCES ... |
| ํ ์ด๋ธ ์์ | ALTER TABLE๋ก ์ปฌ๋ผ ์ถ๊ฐ/์์ /์ญ์ ๊ฐ๋ฅ |
| ํ ์ด๋ธ ์ญ์ | DROP TABLE ํ
์ด๋ธ๋ช
; |
| ์ค์ ์์ ํ ์ด๋ธ | Member ํ
์ด๋ธ: ๋ค์ํ ์ ์ฝ์กฐ๊ฑด ํฌํจ |
| ์ฌ์ฉ ํ | ์ธ๋ ํค๋ JOIN๊ณผ ํจ๊ป ์์ฃผ ์ฌ์ฉ, CHECK๋ ์ ํจ์ฑ ๊ฒ์ฌ ์กฐ๊ฑด์ผ๋ก ์์ฃผ ์ฌ์ฉ๋จ |
๐ ํ์ต ํ
โข ๊ธฐ๋ณธ ํค๋ NOT NULL + UNIQUE์ ์กฐํฉ์ด๊ธฐ๋ ํด์.
โข ์ธ๋ ํค๋ JOIN๊ณผ ํจ๊ป ์์ฃผ ์ฐ์ด๋ ํ์คํ ์ตํ๋์ธ์!
โข CHECK๋ ์ฑ๋ณ IN ('M', 'F') ๊ฐ์ ์กฐ๊ฑด์๋ ํ์ฉํ ์ ์์ด์.