2020090404 / 특정컬럼 null 값 입력은 안돼(오작성 방지) 제약조건 설정
- ORACLE
- 2020. 4. 30.
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
'ORACLE' 카테고리의 다른 글
2020041004 / [3] ansi join (0) | 2020.04.30 |
---|---|
2020041004 / 5) outer join (0) | 2020.04.30 |
2020041403 /데이터 제어어 DCL(Data Control Language) (0) | 2020.04.30 |
2020041004 / 4) self join (0) | 2020.04.30 |
2020040903 / DICR(Data Integrity Constraint Rule) (0) | 2020.04.30 |