[Day 12 | DB] 제약조건 수정하기

y♡ding·2024년 10월 29일
0

데브코스 TIL

목록 보기
76/163

테이블의 제약조건을 수정할 때는 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;

PRIMARY KEY 제약조건 추가 및 삭제

-- 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)

FOREIGN KEY 제약조건 추가 및 삭제

-- 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;

0개의 댓글

관련 채용 정보