무결성 제약조건
데이터가 추가, 수정, 삭제되는 과정에서도 데이터의 결함 생기지 않도록 유지하는 것을 데이터 무결성이라고 하는데, DB의 데이터 무결성
을 지키기 위한 수단이 바로 제약조건
이다.
📍제약 조건의 종류
1. NOT NULL
2. UNIQUE
3. PRIMARY KEY = NOT NULL & UNIQUE
: 두 개로 설정한 경우 둘 다 같아야만 같은 프라이머리 키를 가진 것으로 식별된다.
ALTER table emp11
ADD CONSTRAINT emp10_empno_ename_pk
PRIMARY KEY(empno, ename);
4. FOREIGN KEY
: 디폴트는 참조하는 데이터들이 있을 경우 Foreign Key로 지정한 컬럼은 삭제할 수 없다.
📝 삭제하는 방법
1) 아무도 참조하지 않도록 바꾼 후 삭제
2) 제약 조건 자체를 삭제 -> 데이터 무결성에 문제가 생길 수도 있음
3) 해당 컬럼을 삭제하는 경우 이를 참조하는 모든 행을 함께 삭제
CREATE TABLE 테이블명(
deptno NUMBER REFERENCES 참조테이블(참조컬럼명)
ON DELETE CASCADE,
...
)
5. CHECK : 의도된 데이터만 입력 받기 위함
CREATE TABLE emp08(
empno NUMBER PRIMARY KEY, --이렇게 옆에 제약조건을 바로 써주는 것을 <컬럼 레벨 방식>이라고 함
ename VARCHAR(20) NOT NULL,
job VARCHAR2(20),
deptno NUMBER,
gender char(1) CHECK(gender IN('M', 'F'))
)
6. DEFAULT : 데이터를 삽입하지 않은 경우 default로 설정한 값 삽입
CREATE TABLE emp09(
empno NUMBER PRIMARY KEY,
ename VARCHAR(20) NOT NULL,
job VARCHAR2(20),
deptno NUMBER,
loc varchar2(20) DEFAULT 'Seoul'
)
📍제약 조건의 이름 명시하기
< 제약 조건 이름의 형식 >
테이블 이름_컬럼 이름_제약 조건
- 테이블 레벨 방식으로 제약 조건 이름을 명시
CREATE TABLE emp05(
empno NUMBER,
ename VARCHAR(20) NOT NULL,
job VARCHAR2(20),
deptno NUMBER,
CONSTRAINT emp06_empno_pk PRIMARY KEY(empno),
CONSTRAINT emp06_deptno_fk
FOREIGN KEY(deptno)
REFERENCES departments(department_id)
)
- 테이블 수정 방식
테이블 생성 후 테이블을 수정하는 방식으로 제약 조건을 추가할 수도 있는데, 이 방법을 더 많이 사용한다.
ALTER TABLE emp07
ADD CONSTRAINT emp07_deptno_fk
FOREIGN KEY(deptno)
REFERENCES departments(department_id);
ALTER TABLE emp07
MODIFY ename CONSTRAINT emp07_ename_nn NOT NULL;
ALTER TABLE emp_const
ADD CONSTRAINT empconst_sal_chk
CHECK(sal BETWEEN 1000 AND 9999);
- 컬럼 레벨 방식으로 제약 조건의 이름 명시
CREATE TABLE DEPT_CONST (
DEPTNO NUMBER(2) CONSTRAINT DEPTCONST_DEPTNO_PK PRIMARY KEY,
DNAME VARCHAR2(14) CONSTRAINT DEPTCONST_DNAME_UNQ UNIQUE,
LOC VARCHAR2(13) CONSTRAINT DEPTCONST_LOC_NN NOT NULL
);
📍제약 조건 삭제
ALTER TABLE emp10
DROP CONSTRAINT EMP10_EMPNO_ENAME_PK;
📍쿼리를 통해 제약 조건 확인
SELECT TABLE_NAME, CONSTRAINT_NAME, CONSTRAINT_TYPE
FROM USER_CONSTRAINTS
WHERE TABLE_NAME IN ( 'EMP_CONST', 'DEPT_CONST' )
ORDER BY CONSTRAINT_NAME;
Author And Source
이 문제에 관하여(무결성 제약조건), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@bahar-j/제약조건저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)