테이블의 제약조건을 수정할 때는 ALTER TABLE
명령어를 사용합니다. ALTER TABLE
을 사용하면 기존 테이블에 제약조건을 추가하거나 제거할 수 있습니다. 하지만 이미 존재하는 제약조건을 직접 수정하는 기능은 없기 때문에, 제거한 후에 새로 추가해야 합니다.
ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건_이름 제약조건_유형 (열_이름);
ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건_이름; -- `FOREIGN KEY`나 `CHECK` 제약조건 삭제
ALTER TABLE 테이블명
DROP PRIMARY KEY; -- 기본 키 삭제
ALTER TABLE 테이블명
DROP INDEX 제약조건_이름; -- UNIQUE 제약조건 삭제
제약조건_이름
: 제약조건에 사용할 이름 (필수는 아니지만, 이름을 지정하면 나중에 쉽게 삭제 가능).제약조건_유형
: PRIMARY KEY
, FOREIGN KEY
, UNIQUE
, CHECK
등의 유형.열_이름
: 제약조건을 적용할 열 이름.-- 연습용 테이블
CREATE TABLE dept_n (
deptno INT(2),
dname VARCHAR(14),
loc VARCHAR(13)
);
CREATE TABLE emp_n (
empno INT(4)
ename VARCHAR(10),
job VARCHAR(9),
deptno INT(2)
);
NOT NULL
제약조건 추가 및 삭제-- 1. NOT NULL 제약조건 추가
ALTER TABLE dept_n
MODIFY loc VARCHAR(13) NOT NULL;
-- 2. NOT NULL 제약조건 삭제
ALTER TABLE dept_n
MODIFY loc VARCHAR(13) (NULL);
UNIQUE
제약조건 추가 및 삭제-- 1. UNIQUE 제약조건 추가
ALTER TABLE dept_n
ADD CONSTRAINT UNIQUE(deptno);
-- 2. UNIQUE 제약조건 삭제
ALTER TABLE dept_n
DROP CONSTRAINT deptno;
-- 1. PRIMARY KEY 제약조건 추가
ALTER TABLE dept_n
ADD CONSTRAINT PRIMARY KEY (deptno);
-- 2. PRIMARY KEY 제약조건 삭제
ALTER TABLE dept_n
DROP CONSTRAINT PRIMARY KEY (deptno);
-- 단, not null은 자동으로 삭제 되지 않음 - 수동으로 따로 날려주어야.
ALTER TABLE dept_n
MODIFY deptno INT(2)
-- 1. FOREIGN KEY 제약조건 추가 (단, PRIMARY KEY 선지정 필)
ALTER TABLE emp_n
ADD CONSTRAINT fk_emp_deptno FOREIGN KEY (deptno) REFERENCES dept_n (deptno);
-- 2. FOREIGN KEY 제약조건 삭제
ALTER TABLE emp_n
DROP FOREIGN KEY fk_emp_deptno;