ALTER TABLE은 기존 테이블의 구조를 변경할 때 사용하는 SQL 명령어다.
즉, 이미 만들어진 테이블에 컬럼이나 제약 조건을 추가, 수정, 삭제할 수 있다.
2. 제약 조건 추가하기
테이블 생성 후에도 ALTER TABLE을 통해 다양한 **제약 조건(CONSTRAINT)**을 추가할 수 있다.
2.1 PRIMARY KEY 추가
특정 컬럼을 기본 키로 지정해, 중복과 NULL을 허용하지 않도록 설정한다.
ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건명 PRIMARY KEY (컬럼명);
ALTER TABLE 학생
ADD CONSTRAINT PK_학생_학번 PRIMARY KEY (학번);
PK_학생_학번은 제약 조건 이름이며, 관리 편의를 위해 의미 있게 짓는 것이 좋다.
2.2 FOREIGN KEY 추가
다른 테이블의 기본 키를 참조하도록 설정해, 참조 무결성을 보장한다.
ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건명 FOREIGN KEY (컬럼명)
REFERENCES 참조테이블명 (참조테이블PK컬럼명);
ALTER TABLE 수강
ADD CONSTRAINT FK_수강_학번 FOREIGN KEY (학번)
REFERENCES 학생 (학번);
수강 테이블의 학번은 학생 테이블의 학번을 참조한다.
2.3 UNIQUE 제약 조건 추가
중복된 값을 허용하지 않도록 설정한다.
ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건명 UNIQUE (컬럼명);
ALTER TABLE 교수
ADD CONSTRAINT UQ_교수_이메일 UNIQUE (이메일);
이메일은 중복되면 안 되므로 UNIQUE 제약을 걸어준다.
2.4 CHECK 제약 조건 추가
특정 조건을 만족하는 값만 입력되도록 제한한다.
ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건명 CHECK (조건식);
ALTER TABLE 직원
ADD CONSTRAINT CK_직원_나이 CHECK (나이 >= 18 AND 나이 <= 65);
나이는 18세 이상 65세 이하만 허용한다.
3. 제약 조건 삭제하기
제약 조건을 제거할 때도 ALTER TABLE을 사용한다.
ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건명;
ALTER TABLE 학생
DROP CONSTRAINT CK_학생_나이;
지정한 제약 조건 이름을 사용해야 한다.
3.1 PRIMARY KEY 삭제
기본 키는 다음과 같이 삭제할 수 있다.
ALTER TABLE 테이블명
DROP PRIMARY KEY;
ALTER TABLE 학생
DROP PRIMARY KEY;
ㅇ 활용 예시
학생 테이블에 이메일 컬럼을 추가하고 중복 방지를 위해 UNIQUE 제약 추가:
ALTER TABLE 학생
ADD 이메일 VARCHAR2(50);
ALTER TABLE 학생
ADD CONSTRAINT UQ_학생_이메일 UNIQUE (이메일);
기능 SQL 문법 예시
| 기본 키 추가 | ADD CONSTRAINT ... PRIMARY KEY | PK_학생_학번 |
| 외래 키 추가 | ADD CONSTRAINT ... FOREIGN KEY | FK_수강_학번 |
| 고유 제약 추가 | ADD CONSTRAINT ... UNIQUE | UQ_교수_이메일 |
| 조건 제약 추가 | ADD CONSTRAINT ... CHECK | CK_직원_나이 |
| 제약 삭제 | DROP CONSTRAINT 이름 | DROP CONSTRAINT CK_학생_나이 |
| 기본키 삭제 | DROP PRIMARY KEY | DROP PRIMARY KEY |
'DBMS > 개념' 카테고리의 다른 글
| 14_ NULL과 NVL() 함수 (0) | 2025.10.05 |
|---|---|
| 13_ 시퀀스 (0) | 2025.10.03 |
| 11_ 제약 조건 (0) | 2025.09.29 |
| 10_ 설계의 3단계 (0) | 2025.09.27 |
| 09_ 날짜와 시간 함수 (0) | 2025.09.25 |