๐SQL ๋ฌธ๋ฒ - ํ ์ด๋ธ ์์ฑ(CREATE TABLE)๊ณผ ์ ์ฝ์กฐ๊ฑด(Constraint)

๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ค๋ฉด ๋จผ์ ๊ทธ๋ฆ(ํ
์ด๋ธ)์ ๋ง๋ค์ด์ผ๊ฒ ์ฃ ?
์ด๋ฒ ๊ธ์์๋ SQL์์ ํ
์ด๋ธ์ ์์ฑ(CREATE)ํ๋ ๋ฐฉ๋ฒ๊ณผ,
์ ์ฝ ์กฐ๊ฑด(Constraint)์ ํตํด ๋ฐ์ดํฐ๋ฅผ ์์ ํ๊ฒ ๊ด๋ฆฌํ๋ ๋ฒ์ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค!
๐ CREATE TABLE
๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํด์๋ ํ ์ด๋ธ์ ๋ง๋ค์ด์ผ ํฉ๋๋ค.
โ CREATE TABLE ๊ธฐ๋ณธ ๋ฌธ๋ฒ
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 | ์ค์ํ ์ซ์ |
๐ ์ ์ฝ ์กฐ๊ฑด(CONSTRAINT)
SQL์์ ๋ฐ์ดํฐ๋ฅผ ์ ํํ๊ณ ์์ ํ๊ฒ ๋ค๋ฃจ๊ธฐ ์ํด ๊ผญ ํ์ํ ๊ฒ ๋ฐ๋ก ์ ์ฝ ์กฐ๊ฑด์ด์์.
ํ
์ด๋ธ์ ๋ง๋ค ๋ ์ปฌ๋ผ์ ์ด๋ค ๊ฐ์ด ๋ค์ด์ฌ ์ ์๋์ง, ๋๋ ์ด๋ค ๊ฐ์ ๋ฐ๋์ ์์ด์ผ ํ๋์ง๋ฅผ ์ ํํด์ค๋๋ค.
โ ์ ์ฝ ์กฐ๊ฑด์ด๋?
ํ ์ด๋ธ์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ์ ๋ํด ๊ท์น์ ์ค์ ํด์
์๋ชป๋ ๋ฐ์ดํฐ๊ฐ ๋ค์ด์ค๋ ๊ฒ์ ๋ฐฉ์งํ๋ ์ฅ์น์์.
์ ์ฝ ์กฐ๊ฑด | ์ค๋ช |
| ํ ์ด๋ธ์ ๊ณ ์ ์๋ณ์ (์ค๋ณต โ, NULL โ) |
| ๋ฐ๋์ ๊ฐ์ด ์์ด์ผ ํจ |
| ์ค๋ณต ๋ถ๊ฐ (๋จ, NULL์ ์ฌ๋ฌ ๋ฒ ํ์ฉ๋จ) |
| ๊ฐ์ ์ ๋ ฅํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ด ์๋ ์ ๋ ฅ๋จ |
| ์กฐ๊ฑด์์ ๋ง์กฑํด์ผ ํจ ( |
| ๋ค๋ฅธ ํ ์ด๋ธ์ ํค๋ฅผ ์ฐธ์กฐ (์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ ์ ์ง) |
๐ ์์ฃผ ์ฌ์ฉํ๋ ์ ์ฝ ์กฐ๊ฑด ์์ ํ ์ด๋ธ
์ ์ฝ ์กฐ๊ฑด | ์ปฌ๋ผ ์ ์ ์์ | ์๋ฏธ / ์ค๋ช |
|
| ๊ธฐ๋ณธ ํค๋ก ์ง์ . ์ค๋ณต โ, NULL โ |
|
| ๋ฐ๋์ ๊ฐ์ด ์์ด์ผ ํจ |
|
| ์ค๋ณต๋ ๊ฐ ํ์ฉ โ. ๋จ, |
|
| ์ ๋ ฅํ์ง ์์ผ๋ฉด ํ์ฌ ๋ ์ง๊ฐ ์๋ ์ ๋ ฅ |
|
| ๊ฐ์ด ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ์ ์ฅ ๊ฐ๋ฅ |
|
| ์ธ๋ ํค. ๋ค๋ฅธ ํ ์ด๋ธ์ ๊ฐ๋ง ์ฐธ์กฐ ๊ฐ๋ฅ |
๐งช ์ค์ ์์ : ํ์ ํ ์ด๋ธ ๋ง๋ค๊ธฐ
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 ์ปฌ๋ผ๋ช
;
๐ง ๋ง๋ฌด๋ฆฌ
๊ตฌ๋ถ | ํต์ฌ ๋ด์ฉ |
| ํ ์ด๋ธ์ ์๋ก ์์ฑํ๋ ๋ช ๋ น์ด |
๋ฐ์ดํฐ ํ์ |
|
์ฃผ์ ์ ์ฝ ์กฐ๊ฑด |
|
์ ์ฝ ์กฐ๊ฑด ์ญํ | ๊ฐ์ ์ค๋ณต ๋ฐฉ์ง, ํ์ ๊ฐ ์ ๋ ฅ, ๊ธฐ๋ณธ๊ฐ ์ง์ , ์กฐ๊ฑด ๋ง์กฑ ์ฌ๋ถ ํ์ธ, ์ฐธ์กฐ ๊ด๊ณ ์ค์ |
์ ์ฝ ์กฐ๊ฑด ์์ |
|
ํ ์ด๋ธ ์์ |
|
ํ ์ด๋ธ ์ญ์ |
|
์ค์ ์์ ํ ์ด๋ธ |
|
์ฌ์ฉ ํ | ์ธ๋ ํค๋ |
๐ ํ์ต ํ
โข ๊ธฐ๋ณธ ํค๋ NOT NULL + UNIQUE์ ์กฐํฉ์ด๊ธฐ๋ ํด์.
โข ์ธ๋ ํค๋ JOIN๊ณผ ํจ๊ป ์์ฃผ ์ฐ์ด๋ ํ์คํ ์ตํ๋์ธ์!
โข CHECK๋ ์ฑ๋ณ IN ('M', 'F') ๊ฐ์ ์กฐ๊ฑด์๋ ํ์ฉํ ์ ์์ด์.