Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- html요소
- 스프링부트
- 자바
- 신입개발자
- position속성
- Java
- 기술면접
- 80 to 443
- Rename to
- Failed to read the 'responseText' property from 'XMLHttpRequest'
- css
- 리캡차
- tcp와 udp의 차이점
- Oracle
- 스프링 부트
- 바닐라js
- css position
- Create
- 네트워크
- multiarray
- CSS display 속성
- 시맨틱 태그
- 속성
- 기술 면접
- database
- 예외처리
- 구글 리캡차
- html
- cs질문
- 자바의 장점
Archives
- Today
- Total
Building value
Oracle SQL 기본 문법[CONSTRAINT(2)] 본문
반응형
4. UNIQUE
Oracle SQL에서 UNIQUE는 특정 칼럼이나 칼럼의 조합이 중복되지 않도록 제약을 거는 것입니다.
즉, 해당 칼럼(들)에는 유일한(unique) 값만 입력할 수 있습니다.
CREATE TABLE DEPT (
DEPTNO NUMBER(2) CONSTRAINT DEPT_DEPTNO_PK PRIMARY KEY,
DNAME VARCHAR2(14) CONSTRAINT DEPT_DNAME_NN NOT NULL,
LOC VARCHAR2(13),
CONSTRAINT DEPT_DNAME_UK UNIQUE(DNAME)
);
위에서 생성한 테이블 DEPT의 DNAME 칼럼에는 NOT NULL 제약 조건과 UNIQUE 제약 조건이 설정되어 있습니다.
따라서 DNAME 컬럼에는 NULL 값을 저장할 수 없으며, 중복된 값을 저장할 수 없습니다.
따라서 INSERT문 실행 시 DNAME 칼럼에 이미 존재하는 값을 저장하거나,
DNAME 컬럼에 NULL 값을 저장하려고 하면 에러가 발생합니다.
아래는 에러가 발생하는 예시 쿼리입니다.
-- 이미 존재하는 값을 저장하는 경우
INSERT INTO DEPT (DEPTNO, DNAME, LOC) VALUES (10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO DEPT (DEPTNO, DNAME, LOC) VALUES (20, 'ACCOUNTING', 'DALLAS');
-- NULL 값을 저장하는 경우
INSERT INTO DEPT (DEPTNO, LOC) VALUES (30, 'CHICAGO');
5. CHECK
CHECK는 해당 칼럼의 데이터 값이 특정 조건을 만족해야 한다는 제약 조건을 설정하는 것입니다.
이를 통해 데이터의 유효성을 보장하고 데이터의 일관성을 유지할 수 있습니다.
예를 들어, 다음과 같은 EMP 테이블이 있다고 가정해 봅시다.
CREATE TABLE EMP (
EMPNO NUMBER(4) CONSTRAINT EMP_EMPNO_PK PRIMARY KEY,
ENAME VARCHAR2(10) CONSTRAINT EMP_ENAME_NN NOT NULL,
JOB VARCHAR2(9),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2) CONSTRAINT EMP_DEPTNO_FK REFERENCES DEPT(DEPTNO),
CONSTRAINT EMP_SAL_CHK CHECK(SAL >= 500)
);
위의 예제에서 EMP 테이블의 SAL 칼럼에 CONSTRAINT CHECK를 설정하여
SAL 값이 500 이상이어야 한다는 조건을 만들었습니다.
이를 통해 잘못된 데이터의 입력을 방지할 수 있습니다.
반응형
'RDBMS > Oracle DB' 카테고리의 다른 글
Oracle SQL 기본 문법[CONSTRAINT(1)] (0) | 2023.03.17 |
---|---|
Oracle SQL 기본 문법[TCL.트랜잭션] (0) | 2023.03.17 |
Oracle SQL 기본 문법[DELETE] (0) | 2023.03.17 |
Oracle SQL 기본 문법[UPDATE] (0) | 2023.03.16 |
Oracle SQL 기본 문법[INSERT] (0) | 2023.03.16 |