데이터 무결성
컬럼 단위로 제약조건 적용시키기
널 제약조건
create table emp02(
empno number(4) not null,
ename varchar2(10) not null,
job varchar2(9),
deptno number(2)
);
empno, ename 컬럼은 널이 들어가면 안되게 제약 조건을 설정했다
insert into emp02 values (123, null, 'student', 1);
insert into emp02 values (null, null, 'student', 1);
이렇게 삽입을 하려고 하면 아래처럼 에러가 뜬다
ORA-01400: cannot insert NULL into ("SQL_CLPLAFNUOGZMKAEMGOGGYFFRA"."EMP02"."EMPNO")
ORA-06512: at "SYS.DBMS_SQL", line 1721
유니크 제약조건
CREATE TABLE EMP03(
EMPNO NUMBER(4) UNIQUE,
ENAME VARCHAR2(10) NOT NULL,
JOB VARCHAR2(9),
DEPTNO NUMBER(2)
);
EMPNO는 유일한 값이라 중복해서 들어갈 수 없다 (오라클에서 null은 값으로 취급안해서 null로 여러개는 가능하다)
체크 제약조건
CONSTRAINT EMP07_SAL_CK CHECK(SAL BETWEEN 500 AND 5000),
GENDER VARCHAR2(1)
CONSTRAINT EMP07_GENDER_CK CHECK (GENDER IN('M', 'F'))
);
특정 값이나 범위만 삽입 가능하게 체크 조약조건을 설정할 수 도 있다.
디폴트 제약조건
!시험에 나온다! 컬럼 레벨로 제약 조건명 명시하기
CREATE TABLE EMP04(
EMPNO NUMBER(4) CONSTRAINT EMP04_EMPNO_UK UNIQUE,
ENAME VARCHAR2(10) CONSTRAINT EMP04_ENAME_NN NOT
NULL,
JOB VARCHAR2(9),
DEPTNO NUMBER(2)
);
제약 명을 만들고 제약 타입을 넣어서 제약을 걸 수 있다
constraint 테이블명_칼럼명_제약조건유형 제약 형태로 넣는다
시험에 낼때 무결성 조건이 있을때 특정 쿼리문을 삽입하면 입력이 되는지 안되는지,
안되면 어떤 조건때문에인지로 낸다