제약조건(Constraint)

테이블에 원하는 데이터 값만 입력하고, 잘못된 데이터의 입력을 막기 위해 정해두는 규칙

 

 

1.  제약조건 종류 

 

1) NOT NULL : 데이터값이 NULL이 될 수 없다.

2) UNIQUE : 고유키, 중복된 값을 저장할 수 없다.

3) PRIMARY KEY : 기본키(PK)가 되며, NOT NULL과 UNIQUE 제약 조건의 특징을 모두 가진다. (NULL이 될 수 없고, 중복된 값을 가질 수 없다.)

4) FOREIGN KEY : 다른 테이블과 연결할 수 있는 외래키(FK)로 설정한다.

5) DEFAULT : 기본값 설정

6) CHECK: 조건으로 설정된 값만 입력 허용

 

 

2. 제약조건 생성

PRIMARY KEY,  NOT NULL, CHECK, DEFAULT, UNIQUE

CREATE TABLE PERSON(
PNO CHAR(4),
PNAME VARCHAR2(15) NOT NULL,
AGE NUMBER(3) DEFAULT 20,
ADDRESS VARCHAR2(100) UNIQUE,
CONSTRAINT PERSON_PK PRIMARY KEY (PNO),
CONSTRAINT CHECK_AGE CHECK(AGE>=1));

 

NOT NULL, PK, CHECK, DEFAULT, UNIQUE 제약조건을 걸면서 테이블을 생성했다.

컬럼명 옆에 바로 제약조건을 붙여주어도 되고, 컬럼명을 만든 뒤 CONSTRAINT 문장으로 추가해주어도 된다.

제약조건을 위배하는 데이터를 넣게되면 에러가 오류가 발생한다. (check constraint violated)

 

FOREIGN KEY

 

외래키 (Foreign Key) - 부모테이블, 자식테이블 / CASCADE

1. 외래키 (Foreign Key) CONSTRAINT 제약조건명 FOREIGN KEY(컬럼) REFERENCES 부모테이블(컬럼); 외래키는 기본키(Primary Key) 값이 있는 테이블을 다른 테이블을 연결할 때 사용된다. 외래키 제약 조건을 설..

jinaon.tistory.com

 

 

 

2. 제약조건 추가 수정 삭제

제약조건을 주지 않아 추가하거나, 제약조건을 변경, 삭제하기 위해서는 ALTER 명령문을 사용해 테이블을 수정한다.

 

제약조건 추가

ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 제약조건;

 

제약조건 수정

ALTER TABLE 테이블명 MODIFY 컬럼조건

 

ALTER TABLE PERSON ADD CONSTRAINT CHECK_AGE CHECK(AGE>0);

 

 

 

3. 제약조건 조회

모든 제약조건 조회

SELECT * FROM    ALL_CONSTRAINTS; 

 

특정 테이블의 제약조건 조회

SELECT * FROM    ALL_CONSTRAINTS
WHERE    TABLE_NAME = '테이블명';

 

 

 

4. 제약조건 비활성

제약 조건을 삭제하지 않고 제약 조건을 비활성화하여 사용하지 않는 상태로 바꿀 수 있다.

제약조건의 데이터무결성으로 원하는 작업을 하지 못할 경우 잠시 비활성화하고 작업을 처리하고 다시 제약 조건을 활성화 할 수 있다. 

 

 제약 비활성  ALTER TABLE 테이블명 DISABLE CONSTRAINT 제약조건;
 제약 활성  ALTER TABLE 테이블명 ENABLE CONSTRAINT 제약조건; 



5. 제약조건 삭제

ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명;