저자 : 아사이 아츠시
출판 : 한빛미디어
발매 : 2015.11.01
1. 테이블 작성시 제약 정의
- CREATE TABLE로 테이블을 작성할 때 제약을 같이 정의. 물론 ALTER TABLE로 제약을 지정하거나 변경할 수 있음. 이 때 NOT NULL 제약 등 하나의 열에 대해 설정하는 제약은 열을 정의할 때 지정.
1 2 3 4 5 6 | -- 특정 열에 NOT NULL 제약과 UNIQUE 제약을 설정. CREATE TABLE sample631 ( a INTEGER NOT NULL, b INTEGER NOT NULL UNIQUE, C VARCHAR(30) ); | cs |
- 이처럼 열에 대해 정의하는 제약을 '열 제약', 복수의 열에 제약을 설정하는 경우를 '테이블 제약'이라 부름.
1 2 3 4 5 6 7 | -- 테이블에 '테이블 제약' 정의 CREATE TABLE sample632 ( no INTEGER NOT NULL, sub_no INTEGER NOT NULL, name VARCHAR(30), PRIMARY KEY (no, sub_no) ); | cs |
- 제약에는 이름을 붙일 수 있음. 제약에 이름을 붙이면 나중에 관리하기 쉬워지므로 가능한 한 이름을 붙임. 제약 이름은 CONSTRAINT 키워드를 사용해서 지정.
1 2 3 4 5 6 7 8 | -- 테이블에 '테이블 제약' 정의 -- 테이블 제약에 이름 붙이기 CREATE TABLE sample632 ( no INTEGER NOT NULL, sub_no INTEGER NOT NULL, name VARCHAR(30), CONSTRAINT pkey_sample PRIMARY KEY (no, sub_no) ===> 기본키 제약 설정 ); | cs |
2. 제약 추가
열 제약 추가
- 기존 테이블에 열 제약을 추가할 경우 ALTER TABLE 명령 사용하여 열 정의를 변경할 수 있음.
- 기존 테이블을 변경할 경우에는 제약을 위반하는 데이터가 있는지 먼저 검사.
1 2 | -- c열에 NOT NULL 제약 걸기 ALTER TABLE sample631 MODIFY c VARCHAR(30) NOT NULL; | cs |
- 만약 c 열에 NULL값이 존재한다면 ALTER TABLE 명령은 에러가 발생함.
테이블 제약 추가
- 테이블 제약은 ALTER TABLE의 ADD 하부명령으로 추가할 수 있음.
1 2 | -- 테이블 제약(기본키 제약) 추가 ALTER TABLE sample631 ADD CONSTRAINT pkey_sample631 PRIMARY KEY(a); | cs |
- 기본키는 테이블에 하나만 설정 가능. 이미 기본키가 설정되어 있는 테이블에 추가로 기본키를 작성할 수 없음.
3. 제약 삭제
열 제약 삭제
- 열 제약의 경우, 제약을 추가할 때와 동일하게 열 정의를 변경.
- 앞서 추가한 c열의 NOT NULL 제약을 삭제하는 ALTER TABLE의 예
1 2 | -- c열에 NOT NULL 제약 없애기 ALTER TABLE sample631 MODIFY c VARCHAR(30); | cs |
테이블 제약 삭제
- 테이블 제약은 ALTER TABLE의 DROP 하부명령으로 삭제 가능. 삭제할 때는 제약명을 지정.
- 기본키는 테이블 당 하나만 설정할 수 있기 때문에 위처럼 굳이 제약명을 지정하지 않고도 2번 처럼삭제할 수 있음.
1 2 3 4 5 6 | -- 테이블 제약 삭제 -- 1. pkey_sample631(제약명으로) 제약 삭제 ALTER TABLE sample631 DROP CONSTRAINT pkey_sample631; -- 2. 기본키 제약 삭제 ALTER TABLE sample631 DROP PRIMARY KEY; ==> MySQL은 이렇게 삭제 | cs |
cf. UNIQUE 제약 조건 삭제
1 2 3 4 5 6 7 | -- MySQL ALTER TABLE sample631 DROP INDEX 열명; -- SQL Server / Oracle / MS Access ALTER TABLE sample631 DROP CONSTRAINT 제약명; | cs |
4. 기본키
- 기본키는 테이블의 행 한 개를 특정할 수 있는 검색키. 기본키로 지정할 열은 NOT NULL 제약이 설정되어 있어야 함.
- 기본키 제약이 설정된 테이블에서는 기본키로 검색했을 때 복수의 행이 일치하는 데이터를 작성할 수 없음. 즉 기본키로 설정된 열이 중복하는 데이터를 값을 가지면 제약에 위반됨.
- 이처럼 열을 기본키로 지정해 유일한 값을 가지도록 하는 구조가 바로 기본키 제약. 행이 유일성을 필요로 한다는 다른 의미에서 '유일성 제약'이라 불리기도 함.
- 복수의 열로 기본키 구성 가능. 복수의 열을 기본키로 지정했을 경우, 키를 구성하는 모든 열을 사용해서 중복하는 값이 있는지 없는지를 검사.
'Study > DB' 카테고리의 다른 글
[SQL 첫걸음] 6장.데이터베이스 객체 작성과 삭제 - 29.인덱스 작성과 삭제 (0) | 2018.09.16 |
---|---|
[SQL 첫걸음] 6장.데이터베이스 객체 작성과 삭제 - 28.인덱스 구조 (0) | 2018.09.16 |
[SQL 첫걸음] 6장.데이터베이스 객체 작성과 삭제 - 26.테이블 작성·삭제·변경 (0) | 2018.09.11 |
[SQL 첫걸음] 6장.데이터베이스 객체 작성과 삭제 - 25.데이터베이스 객체 (0) | 2018.09.11 |
[SQL 첫걸음] 5장.집계와 서브쿼리 - 24.상관 서브쿼리 (0) | 2018.09.10 |