DataBase/DBMS

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

RoarinGom 2021. 2. 18. 21:00

무결성 유지란?

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

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

: 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;