본문 바로가기

DataBase/DBMS

9.제약조건 : 데이터 추가, 수정, 삭제하는 가운데 DB의 무결성 유지

무결성 유지란?

데이터의 정확성, 일관성, 유효성이 유지되는 것을 말한다. 사전 보호막을 설치하는 것이 제약 조건이다.

(데이터 추가, 수정, 삭제하는 가운데 데이터 무결성 지켜지도록)

: NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, CHECK, DEFAULT

- 필요한 정보는 꼭 입력되어야만 하도록, (NOT NULL) NN ex)이름

- 고유한 값만 입력되어야하는것은 중복되지 않도록, (UNIQUE) UK ex)주민번호

- 고유한 값이 꼭 입력되도록, (PRIMARY) PK ex)id, 회원번호, 물품번호

- 참조할 수 있는 값만 입력되도록 (FOREIGN) FK

ex)PK에 있는 값들을 참조하여 사용할 수 있다(사용하기위해서 PK에 등록이 되어있어야한다)

- 의도된 값 중에 입력이 되도록(CHECK) CK ex) 남녀

- 값이 입력되지않을 때 기본값이 지정되도록 (DEFAULT) 

 

입력 방식

-테이블을 생성할 때(CREATE)

 

컬럼 LABEL 방식 테이블 생성할 때 컬럼 입력할 때 같이 입력해주는 방식

ex)

CREATE TABLE EMP05(
		EMPNO NUMBER PRIMARY KEY,
    	ENAME VARCHAR2(20) NOT NULL UNIQUE,
    	JOB VARCHAR2(20),
    	DEPTNO NUMBER REFERENCES DEPARTMENTS(DEPARTMENT_ID),
        GENDER CHAR(1) CHECK(GENDER IN ('남','여'))
        LOC VARCHAR2(20) DEFAULT '대한민국'
);

 

 

테이블 LABEL 방식 테이블 생성을 다한 후에 입력

-(컬럼명 다쓰고 콤마 꼭 쓰기), 

-CONSTRAINT 이름(테이블명_컬럼명_제약조건) 제약조건(컬럼명) 의 문법

ex)

CREATE TABLE EMP(
	EMPNO NUMBER,
    ENAME VARCHAR2(20) NOT NULL,
    JOB VARCHAR2(20),
    DEPTNO NUMBER,--콤마 꼭 써줘야한다
    CONSTRAINT EMP_EMPNO_PK PRIMARY KEY(EMPNO),
    CONSTRAINT EMP_DEPTNO_FK FOREIGN KEY(DEPTNO) REFERENCES DEPARTMENTS(DEPARTMENT_ID)
);

 

-테이블을 수정할 때(ALTER -ADD, MODIFY)

 

문법: ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건이름 제약조건(칼럼명) ;

 

다른 제약조건은 이 문법을 쓰는데 NOT NULL은 다름 

문법: ALTER TABLE 테이블명 MODIFY (칼럼명 CONSTRAINT 제약조건이름 NOT NULL) ;

이유는 칼럼에 기본값으로 허용되어 있는 NULL 값을 NOT NULL로 변경하는 것이라서

MODIFY를 사용해서 설정



출처: https://hayleyfish.tistory.com/47

CREATE TABLE EMP(
	EMPNO NUMBER,
    ENAME VARCHAR2(20),
    JOB VARCHAR2(20),
    DEPTNO NUMBER
    );
    
 --테이블 생성 후
 
 ALTER TABLE EMP
 	ADD CONSTRAINT EMP_EMPNO_PK PRIMARY KEY(EMPNO);
 ALTER TABLE EMP
 	ADD CONSTRAINT EMP_DEPTNO_FK FOREIGN KEY(DEPTNO) REFERENCES DEPARTMENTS(DEPARTMENT_ID);
 ALTER TABLE EMP
 	ADD CONSTRAINT EMP_JOB_UK UNIQUE(JOB);
 
 ALTER TABLE EMP
 	MODIFY ENAME CONSTRAINT EMP_ENAME_NN NOT NULL;

-제약조건 삭제(ALTER -DROP)

ALTER TABLE 테이블명

    DROP CONSTRAINT 제약조건이름;

ALTER TABLE EMP
	DROP CONSTRAINT EMP_EMPNO_PK;

 

-제약조건 삭제(ALTER -DROP)

ALTER TABLE 테이블명

    DROP CONSTRAINT 제약조건이름;

ALTER TABLE EMP
	DROP CONSTRAINT EMP_EMPNO_PK;