ALTER TALBE ํ
์ด๋ธ๋ช
ADD : ์ปฌ๋ผ ์ถ๊ฐRENAME COLUMN : ์ปฌ๋ผ ์ด๋ฆ ๋ณ๊ฒฝMODIFY : ์ปฌ๋ผ ๋ฐ์ดํฐ ํ์ ๋ณ๊ฒฝCHANGE : ์ปฌ๋ผ ์ด๋ฆ๊ณผ ๋ฐ์ดํฐ ํ์ ํจ๊ป ๋ณ๊ฒฝDROP COLUMN : ์ปฌ๋ผ ์ญ์ DROP : ์ฌ๋ฌ ๊ฐ ์ปฌ๋ผ ์ญ์ DROP PRIMARY KEY : ๊ธฐ๋ณธํค ์ญ์ DROP CONSTRAINT : ์ ์ฝ์กฐ๊ฑด ์ญ์ student / department ํ
์ด๋ธ![]() | ![]() |
|---|
ํ ํ
์ด๋ธ ์ด๋ฆ ๋ณ๊ฒฝ
ALTER TABLE ๊ธฐ์กดํ
์ด๋ธ๋ช
RENAME ์ํ
์ด๋ธ๋ช
;
ALTER TABLE RENAME TABLE ๊ธฐ์กดํ
์ด๋ธ๋ช
TO ์ํ
์ด๋ธ๋ช
;
์ฌ๋ฌ ํ ์ด๋ธ ์ด๋ฆ ๋ณ๊ฒฝ
ALTER TABLE RENAME TABLE ๊ธฐ์กดํ
์ด๋ธ๋ช
1 TO ์ํ
์ด๋ธ๋ช
1,
๊ธฐ์กดํ
์ด๋ธ๋ช
2 TO ์ํ
์ด๋ธ๋ช
2,
๊ธฐ์กดํ
์ด๋ธ๋ช
3 TO ์ํ
์ด๋ธ๋ช
3,
...;
ALTER TABLE ํ
์ด๋ธ๋ช
ADD ์ปฌ๋ผ์ด๋ฆ;
ALTER TABLE student ADD stdTel VARCHAR(15);
ALTER TABLE student ADD(
stdAge VARCHAR(2),
stdAddress2 VARCHAR(50)
);
DESCRIBE ํ
์ด๋ธ๋ช
DESC ํ
์ด๋ธ๋ช
DESCRIBE student;
DESC student;
ALTER TABLE ํ
์ด๋ธ๋ช
MODIFY ์ปฌ๋ผ๋ช
๋ณ๊ฒฝํ ๋ฐ์ดํฐํ์;
ALTER TABLE student MODIFY stdName VARCHAR(20) NULL;
# ๊ธฐ์กด VARCHAR(30) NOT NULL ์์ VARCHAR(20) NULL ๋ก ๋ณ๊ฒฝ
ALTER TABLE ํ
์ด๋ธ๋ช
RENAME COLUMN ๋ณ๊ฒฝ์ ์ด๋ฆ TO ๋ณ๊ฒฝํ์ด๋ฆ;
ALTER TABLE student RENAME COLUMN stdTel To stdHP;
ALTER TABLE ํ
์ด๋ธ๋ช
CHANGE ์ปฌ๋ผ๋ณ๊ฒฝ์ ์ด๋ฆ ๋ณ๊ฒฝํ์ด๋ฆ ๋ฐ์ดํฐํ์;
ALTER TABLE student CHANGE stdAddress stdAddress1 VARCHAR(30);
# stdAdress ์์ stdAddress1 ์ผ๋ก ์ด๋ฆ๋ณ๊ฒฝ
# VARCHAR(50) ์์ VARCHAR(30) ์ผ๋ก ๋ฐ์ดํฐ ํ์ ๋ณ๊ฒฝ
ALTER TABLE ํ
์ด๋ธ๋ช
DROP COLUMN ์ปฌ๋ผ๋ช
ALTER TABLE ํ
์ด๋ธ๋ช
DROP ์ปฌ๋ผ๋ช
,
DROP ์ปฌ๋ผ๋ช
2,
DROP ์ปฌ๋ผ๋ช
3, ...;
ALTER TABLE student DROP COLUMN stdHP;
ALTER TABLE student DROP stdAge,
DROP stdAddress1,
DROP stdAddress2;
ALTER TABLE ํ
์ด๋ธ๋ช
DROP PRIMARY KEY
ALTER TABLE department DROP PRIMARY KEY;
# department ์ primary key ์ธ dptNo ์ student ํ
์ด๋ธ์ด foreign key ๋ก ์ฌ์ฉํ๊ณ ์์ด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
ALTER TABLE ํ
์ด๋ธ๋ช
DROP CONSTRAINT ์ ์ฝ์กฐ๊ฑด์ด๋ฆ;
ALTER TABLE student DROP CONSTRAINT FK_student_dptNo;
ALTER TABLE ํ
์ด๋ธ๋ช
ADD CONSTRAINT ์ ์ฝ์กฐ๊ฑด์ด๋ฆ PRIMARY KEY (์ปฌ๋ผ๋ช
);
ALTER TABLE ํ
์ด๋ธ๋ช
ADD PRIMARY KEY (์ปฌ๋ผ๋ช
);
ALTER TABLE department ADD CONSTRAINT PK_department_dptNo PRIMARY KEY (dptNo);
ALTER TABLE department ADD PRIMARY KEY (dptNo);
ALTER TABLE ํ
์ด๋ธ๋ช
ADD CONSTRAINT ์ ์ฝ์กฐ๊ฑด์ด๋ฆ FOREIGN KEY (์ปฌ๋ผ๋ช
) REFERENCES ์ฐธ์กฐํ
์ด๋ธ(์ปฌ๋ผ๋ช
);
ALTER TABLE student ADD CONSTRAINT FK_student_dptNo
FOREIGN KEY (dptNo) REFERENCES department(dptNo);

SELECT * FROM information_schema.table_constraints
WHERE CONSTRAINT_SCHEMA='testdb2';
๊ธฐ์กด ์ ์ฝ์กฐ๊ฑด ์ญ์ ํ ๋ค์ ์ค์
ON DELETE RESTRICT ON UPDATE RESTRICT
ON DELETE CASCADE ON UPDATE CASCADE
ํ์ฌ student ํ
์ด๋ธ์ department ์ ๊ธฐ๋ณธํค์ธ deptNo ์ ์ธ๋ํค๋ก ๊ฐ์ง๊ณ ์๋ค. ๋ฐ๋ผ์ ์๋์ ์ฝ๋๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
DELETE FROM `testdb2`.`department` WHERE (`dptNo = '3');
student ํ
์ด๋ธ์ ์ธ๋ํค ์ ์ฝ์กฐ๊ฑด ์ญ์ ํ ON DELETE CASCADE ๋ฅผ ์๋ ์ธ๋ํค ์ ์ฝ์กฐ๊ฑด์ผ๋ก ๋ค์ ์ค์ ํ๋ค.ALTER TABLE student DROP CONSTRAINT FK_student_dptNo;
ALTER TABLE student ADD CONSTRAINT FK_student_dptNo
FOREIGN KEY(dptNo)
REFERENCES department(dptNo) ON DELETE RESTRICT ON UPDATE CASCADE;
CASCADE ํ์ฌ Update ๊ฐ ์ ์ฉ๋๋ค.UPDATE `testdb2`.`department` SET `dptNo` = '10' WHERE (`dptNo` = '3');
SELECT * FROM information_schema.table_constraints;CONSTRAINT_TYPE ์ด CHECK์ธ ํ์์ CONSTRAINT_NAME ํ์ธSELECT * FROM information_schema.table_constraints
WHERE CONSTRAINT_SCHEMA='testdb2' AND TABLE_NAME='student'
AND CONSTRAINT_TYPE='CHECK';

DEFAULT๊ฐ CHECK ์กฐ๊ฑด์ด ์ ์ฉ๋ ๊ฒฝ์ฐ : stdYear ์ด 1~4 ๋ฒ์๋ง ์
๋ ฅ ๊ฐ๋ฅํ๋ 5์ธ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ค๋ ๊ฒฝ์ฐ, ์๋ฌ ๋ฐ์ํ๋ค. ๋ฐ๋ผ์, ์ ์ฝ์กฐ๊ฑด ์ญ์ ํ ๋ฐ์ดํฐ ์ฝ์
, ๊ทธ ํ ์ ์ฝ์กฐ๊ฑด์ ๋ค์ ์ถ๊ฐํ๋ค.student_chk_1 ์ด๋ผ๋ CHECK CONSTRAINT ์๋ฐ์ด๋ค.Executing:
INSERT INTO `testdb2`.`student` (`stdNo`, `stdName`, `stdYear`, `stdBirthDay`, `dptNo`) VALUES ('2022', '๋ฐฉ์', '5', '2000-01-10', '1');
ERROR 3819: 3819: Check constraint 'student_chk_1' is violated.
SQL Statement:
INSERT INTO `testdb2`.`student` (`stdNo`, `stdName`, `stdYear`, `stdBirthDay`, `dptNo`)
VALUES ('2022', '๋ฐฉ์', '5', '2000-01-10', '1')
CHECK ์ ์ฝ์กฐ๊ฑด ์ญ์ ALTER TABLE student DROP CONSTRAINT student_chk_1;
CHECK ์ ์ฝ์กฐ๊ฑด ์ถ๊ฐALTER TABLE student ADD CHECK(stdYear >= 1 AND stdYear <= 5);