MySQL/MariaDB 테이블 제약조건 수정하기

유방현·2024년 11월 7일
0

MySQL/MariaDB 테이블 제약조건 수정하기

제약조건 수정의 기본 개념

테이블의 제약조건 수정은 ALTER TABLE 명령어를 사용합니다. 기존 제약조건을 직접 수정할 수는 없으며, 제거 후 새로 추가하는 방식으로 수정이 이루어집니다.

제약조건 수정 기본 구문

제약조건 추가

ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건_이름 제약조건_유형 (열_이름);

제약조건 삭제

-- FOREIGN KEY나 CHECK 제약조건 삭제
ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건_이름;

-- PRIMARY KEY 삭제
ALTER TABLE 테이블명
DROP PRIMARY KEY;

-- UNIQUE 제약조건 삭제
ALTER TABLE 테이블명
DROP INDEX 제약조건_이름;

구문 요소 설명

  • 제약조건_이름: 제약조건의 식별자 (선택적)
  • 제약조건_유형: PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK 등
  • 열_이름: 제약조건이 적용될 열

실제 사용 예시

1. 테이블 생성

-- 연습용 테이블 생성
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)
);

2. NOT NULL 제약조건 관리

-- NOT NULL 추가
ALTER TABLE dept_n
MODIFY loc VARCHAR(13) NOT NULL;

-- NOT NULL 제거
ALTER TABLE dept_n
MODIFY loc VARCHAR(13) NULL;

3. PRIMARY KEY 제약조건 관리

-- PRIMARY KEY 추가
ALTER TABLE dept_n
ADD CONSTRAINT pk_deptno PRIMARY KEY (deptno);

-- PRIMARY KEY 삭제
ALTER TABLE dept_n
DROP PRIMARY KEY;

4. FOREIGN KEY 제약조건 관리

-- FOREIGN KEY 추가
ALTER TABLE emp_n
ADD CONSTRAINT fk_deptno 
FOREIGN KEY (deptno) REFERENCES dept_n (deptno);

-- FOREIGN KEY 삭제
ALTER TABLE emp_n
DROP CONSTRAINT fk_deptno;

주의사항

  1. 제약조건 수정 시 기존 데이터가 새로운 제약조건을 위반하지 않는지 확인
  2. FOREIGN KEY 추가 시 참조되는 테이블의 해당 열에 PRIMARY KEY나 UNIQUE 제약조건이 있어야 함
  3. 제약조건 이름을 지정하면 나중에 관리가 용이함

결론

ALTER TABLE을 통한 제약조건 수정은 데이터베이스의 구조를 유연하게 관리할 수 있게 해줍니다. 하지만 운영 중인 데이터베이스의 제약조건을 수정할 때는 신중한 검토가 필요합니다.

profile
코딩하는 직장인

0개의 댓글