본문 바로가기
학교 강의/데베기초교양

데베기초 13주차

by hoshi03 2023. 11. 30.

데이터 무결성

 

컬럼 단위로 제약조건 적용시키기

 

널 제약조건

 

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 테이블명_칼럼명_제약조건유형 제약 형태로 넣는다

 

시험에 낼때 무결성 조건이 있을때 특정 쿼리문을 삽입하면 입력이 되는지 안되는지,

안되면 어떤 조건때문에인지로 낸다

'학교 강의 > 데베기초교양' 카테고리의 다른 글

데베기초15주차  (0) 2023.12.14
데베기초 14주차  (0) 2023.12.07
데베기초 12주차  (0) 2023.11.23
데베기초 11주차 DDL  (0) 2023.11.16
데베기초 10주차  (1) 2023.11.09