💡DB/Default

[DB,SQLD] 무결성 제약 조건

뇌 리셋은 기본이지 2024. 3. 5. 22:54
ON DELETE CASCADE와 SET NULL 학습을 위해 무결성 제약 조건에 대해 정리하였다.

 

데이터 무결성

데이터를 인가하지 않은 방법으로 변경/삭제 할 수 없도록 보호하는 성질이다.

위 개념으로 무결성 제약조건을 이해해보면 제약하는 조건에 있어 허가된 계정 외에 데이터를 변경/삭제 할 수 없도록 보호하는 설정이라고 볼 수 있다.

 

제약조건 종류

DB의 6가지 제약조건은 다음과 같다.

제약조건 내용
NOT NULL 필수 입력 사항을 의미한다.
해당 필드는 NULL 값을 저장할 수 없게 하는 제약조건이다.

NULL을 허용하지 않는다.
UNIQUE 중복성 배제 즉, 유일한 값으로 존재햐야 함을 의미한다.
중복된 값을 저장할 수 없게 하는 제약조건이다.

NULL을 허용한다.
하나의 테이블에 여러개를 선언할 수 있다.
PRIMARY KEY (기본키) 키본키를 지정하는 제약조건이다.
NOT NULL과 UNIQUE 제약조건의 특성을 모두 가진다.

NULL을 허용하지 않는다.
FOREIGN KEY (외래키) 한 테이블을 다른 테이블과 연결하여 외래키를 지정하는 제약조건이다.
참조하는 테이블에서 존재하는 값만 사용할 수 있음을 의미한다.
DEFAULT 해당 필드의 디폴트 값을 설정할 수 있게 해주는 제약조건이다.
즉, 데이터를 입력하지 않아도 지정된 값이 기본으로 입력된다.

⭐ 값이 직접 명기되면 기본 값은 무시된다.
CHECK 주어진 조건에 해당되는 값만 입력가능함을 의미한다.

NOT NULL

CREATE TABLE emp3(
	ename VARCHAR2(30) CONSTRAINT emp_nm_enmae NOT NULL
);

UNIQUE

ALTER TABLE EMP2
ADD CONSTRAINT EMP2_UK_DEPTNO UNIQUE(deptno);

PRIMARY KEY

-- PK 생성 예제
CREATE TABLE EMP5(
    empno NUMBER CONSTRAINT EMP5_PK_EMPNO PRIMARY KEY
);

-- 테이블 생성 후 ALTER 명령어로 PK 생성하는 예제
ALTER TABLE EMP5 
ADD CONSTRAINT EMP5_PK_EMPNO PRIMARY KEY (empno);

FOREIGN KEY

  • EMP2 테이블의 deptno 컬럼이 dept 테이블의 deptno 컬럼을 참조
-- FK 생성 예제
ALTER TABLE EMP2 ADD CONSTRAINT emp2_fk_deptno
FOREIGN KEY (deptno) REFERENCES TO DEPT(deptno);

DEFAULT

ALTER TABLE 테이블명 ALTER COLUMN 필드값 SET DEFAULT 10;

CHECK

  • EMP2 테이블의 comm 컬럼이 1~100 까지의 값만 가질 수 있도록 체크 제약조건 생성
ALTER TABLE EMP2
ADD CONSTRAINT EMP2_CK_COMM CHECK (comm >= 1 AND comm <= 100);

 

외래키 설정 시 사용되는 구문

ON DELETE SET NULL, ON UPDATE SET NULL

부모 테이블에서 PK 값이 수정 또는 삭제될 경우, 하위 테이블의 참조(reference) 값은 NULL 값으로 변경되면서 참조 무결성을 유지한다.

ON UPDATE CASCADE

부모 테이블에서 PK 값이 수정될 경우, 하위 테이블의 참조(reference)값은 변경된 상위 테이블의 수정된 값을 가지며 참조 무결성을 유지한다.

ON DELETE CASCADE

부모 테이블에서 PK 값이 삭제될 경우, 하위 테이블의 참조(reference)값은 삭제되면서 참조 무결성을 유지한다.\

 

REFERENCE

https://project-notwork.tistory.com/20

https://inpa.tistory.com/entry/DB-%F0%9F%93%9A-%ED%85%8C%EC%9D%B4%EB%B8%94-%EC%A0%9C%EC%95%BD-%EC%A1%B0%EA%B1%B4-%F0%9F%95%B5%EF%B8%8F-%EC%A0%95%EB%A6%AC

'💡DB > Default' 카테고리의 다른 글

[DB] RDB, RDBMS, SQL, NOSQL 개념정리  (0) 2024.06.24
[DB,SQLD] 트랜잭션 특징 ( ACID )  (0) 2024.03.05