2020090404 / 특정컬럼 null 값 입력은 안돼(오작성 방지) 제약조건 설정

03교시 수업내용

-- 컬럼 레벨 제약 조건 지정

-- [1] Not null 제약 조건을 설정하지 않고 테이블 생성

drop table emp01 purge;


create table emp01(

     empno     number(4),

     ename     varchar2(20),

     job          varchar2(20),

     deptno     number(2)

);


--[null 데이터 입력 연습] 생성한 테이블의 순서와 일치하게 만들어줘야 한다

insert into emp01 values(null, null, 'salesman', 40);

select * from emp01;


04교시 수업내용

-- 특정컬럼 null 값 입력은 안돼(오작성 방지) 제약조건 설정

-- [2] not null 제약 조건을 설정하고 테이블 생성 방법

-- 최소한 사원번호와 이름은 null 값이 삽입되면 안된다

create table 테이블명( [컬럼명] [자료형()] not null, 컬럼명] [자료형()] not null);

create table emp02(

     empno     number(4) not null,

     ename     varchar2(20) not null,

     job          varchar2(20),

     deptno     number(2)

);


insert into emp02 values(null, null, 'salesman', 40); -- error

insert into emp02 values(null, '홍길동', 'salesman', 40); -- error

insert into emp02 values(1234, '홍길동', 'salesman', 10); -- 성공

select * from emp02;



-- [3] Unique 제약 조건을 설정하여 데이블 생성 방법 (절대로 중복되면 안되는 데이터에 사용)

create table 테이블명( [컬럼명] [자료형()] unique);

create table emp03(

     empno     number(4) unique,

     ename     varchar2(20) not null,

     job          varchar2(20),

     deptno     number(2)

);


insert into emp03 values(1234, '홍길동', 'salesman', 40); -- 성공

select * from emp03; -- 확인

insert into emp03 values(1234, '홍길동', 'salesman', 10); -- error

명령의 50 행에서 시작하는 중 오류 발생 -

insert into emp03 values(1234, '홍길동', 'salesman', 10)

오류 보고 -

ORA-00001: unique constraint (SCOTT.SYS_C007003) violated

select * from emp03;


-- [4] 컬럼 레벨로 조건명 명시

create table 테이블명( [컬럼명] [자료형()] constraint [테이블명_컬럼명_uk] unique); uk 임의적인 약자이다

create table emp04(

     empno     number(4) constraint emp04_empno_uk unique,

     ename     varchar2(20) constraint emp04_ename_nn not null,

     job          varchar2(20),

     deptno     number(2)

);

insert into emp04 values(1234, '홍길동', 'salesman', 40);

insert into emp04 values(1234, '홍길동', 'salesman', 10);


명령의 64 행에서 시작하는 중 오류 발생 -

insert into emp04 values(1234, '홍길동', 'salesman', 10)

오류 보고 -

ORA-00001: unique constraint (SCOTT.EMP01_EMPNO_UK) violated



-- [5] Primary key(기본키) 제약조건 설정하기

--      : not null + unique

create table 테이블명( [컬럼명] [자료형()] constraint [테이블명_컬럼명_pk] primary key);

create table emp05(

     empno     number(4) constraint emp05_empno_pk primary key,

     ename     varchar2(20) constraint emp05_ename_nn not null,

     job          varchar2(20),

     deptno     number(2)

);


insert into emp05 values(null, '홍길동', 'salesman', 40); -- error

명령의 74 행에서 시작하는 중 오류 발생 -

insert into emp05 values(null, '홍길동', 'salesman', 40)

오류 보고 -

ORA-01400: cannot insert NULL into ("SCOTT"."EMP05"."EMPNO")


insert into emp05 values(1234, '홍길동', 'salesman', 10); -- 성공

1 행 이(가) 삽입되었습니다.


insert into emp05 values(1234, '홍길동', 'salesman', 40); -- error

명령의 76 행에서 시작하는 중 오류 발생 -

insert into emp05 values(1234, '홍길동', 'salesman', 40)

오류 보고 -

ORA-00001: unique constraint (SCOTT.EMP05_EMPNO_PK) violated









댓글

Designed by JB FACTORY