오라클 테이블, 컬럼 기본값(Column Default Value) 설정
DEFAULT 키워드를 사용하여 테이블의 컬럼에 기본값을 제공 할 수 있습니다. DEFAULT 키워드는 INSERT INTO 문이 컬럼에 특정 값을 제공하지 않을 때 기본값을 제공합니다. 기본값은 리터럴 값, 표현식 또는 SYSDATE와 같은 SQL 함수일 수 있습니다.
[기본형식]
COLUMN_NAME DATA_TYPE DEFAULT [ON NULL] DEFAULT_VALUE
|
DEFAULT ON NULL 구는 오라클12C 이후에 사용가능하며 컬럼에 NULL 이 입력되는 경우 종해진 기본값을 설정하기 위한 구문 입니다. NULL을 허용하면서 DEFAULT 구문에 의해 기본값이 설정된 컬럼에 NULL이 명시적으로 입력되는 경우 기본값이 적용되지 않았던 문제점을 해결하기 위해 도입된 것 입니다.
<실습에 대한 긴 설명>
실습
기본값 실습을 위해 사번(empno), 이름(ename), 입사일(hire_date) 3개의 컬럼을 가지는 EMP10 테이블을 생성하고 4개의 값을 입력 후 EMP10 테이블을 조회 합니다.
다음과 같은 조건으로 EMP10 테이블을 생성하세요.
|
DROP TABLE EMP10;
CREATE TABLE EMP10 (
EMPNO NUMBER ,
ENAME VARCHAR2(50) ,
HIRE_DATE DATE DEFAULT SYSDATE ,
CONSTRAINTS PK_EMP10 PRIMARY KEY(EMPNO)
);
<실행결과>
Table EMP10이(가) 생성되었습니다.
데이터 4건을 입력하고 EMP10 테이블을 조회합니다.
4건의 행을 입력 합니다. |
INSERT INTO EMP10(EMPNO, ENAME) VALUES (1, '홍길동1');
INSERT INTO EMP10(EMPNO, ENAME, HIRE_DATE) VALUES (2, '홍길동2', DEFAULT);
INSERT INTO EMP10(EMPNO, ENAME, HIRE_DATE) VALUES (3, '홍길동3', '');
INSERT INTO EMP10(EMPNO, ENAME, HIRE_DATE) VALUES (4, '홍길동4', NULL);
입력된 데이터를 확인해 봅시다. |
SELECT * FROM EMP10;
<실행결과>
| EMPNO | ENAME | HIRE_DATE |
1 | 1 | 홍길동1 | 20/12/27 |
2 | 2 | 홍길동2 | 20/12/27 |
3 | 3 | 홍길동3 | (null) |
4 | 4 | 홍길동4 | (null) |
오라클 SYSDATE 함수는 날짜와 시간을 시스템 기준으로 읽어 오는 함수 입니다. HIRE_DATE 컬럼에 아예 값을 입력하지 않으면 기본값인 현재 날짜, 시간이 입력되지만 ‘’ 또는 NULL로 명시적으로 값을 입력하면 기본값이 동작하지 않습니다.
그래서 오라클 12C 이후에는 DEFAULT ON NULL 구를 제공해서 ‘’ 또는 NULL 이 입력되는 경우도 기본값을 적용할 수 있도록 변경 되었습니다. 다음 실습에서 확인해 보세요.
실습
다음과 같은 조건으로 EMP10 테이블을 생성하세요.
|
DROP TABLE EMP10;
CREATE TABLE EMP10 (
EMPNO NUMBER ,
ENAME VARCHAR2(50) ,
HIRE_DATE DATE DEFAULT ON NULL SYSDATE ,
CONSTRAINTS PK_EMP10 PRIMARY KEY(EMPNO)
);
<실행결과>
Table EMP10이(가) 생성되었습니다.
데이터 4건을 입력하고 EMP10 테이블을 조회합니다.
4건의 행을 입력 합니다. |
INSERT INTO EMP10(EMPNO, ENAME) VALUES (1, '홍길동1');
INSERT INTO EMP10(EMPNO, ENAME, HIRE_DATE) VALUES (2, '홍길동2', DEFAULT);
INSERT INTO EMP10(EMPNO, ENAME, HIRE_DATE) VALUES (3, '홍길동3', '');
INSERT INTO EMP10(EMPNO, ENAME, HIRE_DATE) VALUES (4, '홍길동4', NULL);
입력된 데이터를 확인해 봅시다. |
SELECT * FROM EMP10;
<실행결과>
| EMPNO | ENAME | HIRE_DATE |
1 | 1 | 홍길동1 | 20/12/27 |
2 | 2 | 홍길동2 | 20/12/27 |
3 | 3 | 홍길동3 | 20/12/27 |
4 | 4 | 홍길동4 | 20/12/27 |
3, 4번째 행의 HIRE_DATE 컬럼에 ‘’ , NULL 이 입력되었지만 기본값이 적용 되었습니다. 오라클에서는 ‘’ 는 NULL과 동일하게 해석됩니다.
#컬럼기본값, #칼럼기본값, #Column기본값, #오라클, #ORACLE
댓글 없음:
댓글 쓰기