티스토리 뷰

제약 조건(CONSTRAINTS)이란?

테이블에 데이터를 작성(삽입/갱신)할 때 조건에 맞지 않는 데이터를 입력시키지 않기 위한 구조이다.

테이블의 열에 제약을 거는 것으로 데이터베이스측은 데이터의 무결성을 가질 수 있다.

 

무결성 제약조건 종류 5가지

제약명 설명
기본키(Primary Key) 제약 컬럼 값은 반드시 존재해야하며 유일해야함.
UNIQUEm, NOT NULL 제약조건 결합
고유키(Unique Key) 제약 중복값 금지, 해당 컬럼은 유일한 값을 가짐.
NOT NULL 제약 NULL 값 금지
체크(CHECK) 제약 해당 컬럼에 입력할 수 있는 값의 범위나 조건 지정
외부 참조키(Foregin Key) 제약 다른 테이블의 기본 키 또는 고유 키를 참조하는 제약

 

제약 조건을 정의하는 방법

제약을 정의하는 방법으로는 컬럼 제약테이블 제약 2종류가 있다.

 

컬럼 제약 (=열 제약)

컬럼 제약이란 이름대로 테이블의 열(컬럼) 하나하나에 대해 제약을 정의하는 방법을 의미한다.

CREATE TABLE TEST_TABLE
(
    ID		VARCHAR2(10)	PRIMARY KEY,
    NAME	VARCHAR2(10)	NOT NULL,
    TEL		VARCHAR2(10)	UNIQUE,
    AGE		NUMBER(2)	CHECK(AGE BETWEEN 18 AND 65),
    DEPT_CD	CHAR(2)		REFERENCES DEPT_TABLE(DEPT_CD)
);

위의 예제는 TEST_TABLE이라는 테이블을 작성하는 것이다.

컬럼(ID)는 기본키(PK) 제약으로 중복된 값은 설정이 불가능하며 NULL값도 설정이 불가능하다.

컬럼(NAME)은 NOT NULL 제약으로 중복된 값을 설정이 가능하지만 NULL값은 설정이 불가능하다.

컬럼(TEL)은 고유키(UK) 제약으로 중복된 값은 설정이 불가능하지만 NULL값은 설정이 가능하다.

컬럼(AGE)은 CHECK(조건) 제약으로 지정한 조건에 맞지 않는 값은 설정할 수 없다. 여기서는 18에서 65사이의 숫자만 설정이 가능하다.

컬럼(DEPT_CD)은 외부 참조키(FK) 제약으로 외부에 존재하는 DEPT_TALBE이라는 테이블의 DEPT_CD에 설정되어있는 값만 설정할 수 있다.

 


테이블 제약

테이블 제약은 열 제약과 달리 열에 대해서 하나하나 제약을 거는 것이 아니라

"○○제약은 테이블의 XX열에 정의할거야!"라는 식으로 제약을 정의하는 방법을 의미한다.

 

참고로 NOT NULL 제약은 테이블 제약으로 정의할 수 없다. 컬럼 제약으로만 정의가 가능하므로 주의하길..!

특징으로는 정의한 제약에 이름을 붙여 제약 오브젝트로 조작하거나 컬럼을 여러개 지정할 수 있다

※ 컬럼 제약에서도 정의한 제약에는 내부적으로 이름이 붙어있기 때문에 오브젝트로 조작할 수 있음!)

CREATE TABLE TEST_TABLE(
  ID1         VARCHAR2(5),
  ID2         VARCHAR2(10),
  NAME        VARCHAR2(10),
  TEL         VARCHAR2(10),
  AGE         NUMBER(2),
  DEFT_CD     CHAR(2),
  CONSTRAINT  cons_p1 PRIMAEY KEY(ID1, ID2),
  CONSTRAINT  cons_u1 UNIQUE(TEL),
  CONSTRAINT  cons_c1 CHECK(AGE BETWEEN 18 AND 65),
  CONSTRAINT  cons_f1 FOREIGN KEY(DEPT_CD)
                      REFERENCES DEPT_TABLE(DEPTO_CD)
);

각 제약 정의에 대한 설명은 컬럼 제약과 동일하니까 컬럼 제약의 설명을 다시 보길!

 

각 제약에 컬럼명을 콤마(,)로 복수 기술이 가능하다.

위의 예제와 같이 기본키 제약으로 컬럼(ID1)과 컬럼(ID2) 두가지를 지정했을 경우에

그러면 컬럼(ID1)값이 같더라도 컬럼(ID2)가 다르다면 해당 데이터는 제약에 걸리지 않는다.

※ 기본키 제약뿐만 아니라 다른 제약도 마찬가지!


제약 추가

기존 테이블에 제약을 추가하려면 ALTER TABLE ~ ADD CONSTRAINT 문법을 사용하면 된다.

 

제약 추가 기본문법

ALTER TABLE 테이블명 ADD CONSTRAINT 제약명 대상컬럼(컬렴명);
--(예제)test_tab테이블의 컬럼(col1)에 const1이라는 제약명으로 UNIQUE 제약을 설정하기
ALTER TABLE test_tab ADD CONSTRAINT const1 unique(col1);

제약 삭제

기존 테이블에 있는 제약을 삭제하려면 ALTER TABLE ~ DROP CONSTRAINT 문법을 사용하면 된다.

 

제약 삭제 기본문법

LTER TABLE 테이블명 DROP CONSTRAINT 제약명;
--(예제)test_tab 테이블에 설정되어있는 const1라는 제약명을 가진 제약을 삭제한다.
ALTER TABLE test_tab DROP CONSTRAINT const1;

제약 활성화/비활성화

기존 테이블에 있는 제약을

일시적으로 활성화하거나 비활성화 하려면 ALTER TALBE ~ [ENABLE/DISABLE] CONSTRAINT 문법을 사용하면 된다.

 

제약 활성화/비활성화 기본 문법

ALTER TABLE 테이블명 [ENABLE/DISABLE] CONSTRAINT 제약명;
--(예제)test_tab 테이블에 설정된 const1 라는 제약명을 가진 제약을 일시적으로 비활성화한다.
ALTER TABLE test_tab DISABLE CONSTRAINT const1;

--(예제)test_tab 테이블에 설정된 const1 라는 제약명을 가진 제약을 일시적으로 활성화한다.
ALTER TABLE test_tab ENABLE CONSTRAINT const1;
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함