오라클 테이블 설계 시 데이터 타입을 처음 마주하게 된다. 데이터 추출 시 그리고 PL/SQL을 활용한 함수를 만들 때, 인덱스를 활용할 때 데이터 타입에 대한 이해는 필요하다. 이유를 간략하게 설명을 하자면 테이블 설계를 할 때는 테이블의 컬럼 이름, 데이터 타입이 들어가기 때문에 데이터 타입을 처음 마주하게 될 것이다. PL/SQL을 활용할 때는 인자값을 받고 인자값을 이용하여 SELECT문을 이용하여 데이터를 추출하는 경우가 많다. 이때 SELECT문의 컬럼 데이터 타입과 인자값의 타입이 갖지 않으면 에러가 발생한다. 마지막에 언급한 인덱스를 활용할 때인데 인덱스에 들어가 있는 컬럼이 조건에 들어가 있을 때 컬럼과 찾고자 하는 값의 데이터 타입이 같지 않으면 인덱스를 타지 않는다. ( '1' 과 1은 다른 값이다.)
문자 데이터 타입
문자열 데이터 타입에서 주로 사용하는 타입은 2가지가 있다.
- VARCHAR2 : 문자열 데이터의 사용하며 테이블 컬럼 크기를 10Byte를 할당했을 때 문자열 저장 시 5Byte만 사용하면 5Byte만 할당된다.
- CHAR : VARCHAR2와 같이 문자열에 사용되며 컬럼 사이즈를 10Byte를 할당하면 문자열 저장 시 5Byte를 사용해도 10Byte를 할당한다.
대분의 책, 그리고 실무에서도 VARCHAR2를 사용을 권장한다. CHAR같은 경우는 최초 테이블 설계 시 키값이 적용된 컬럼의 CHAR형을 사용하기도 한다.
숫자/날짜 데이터 타입
- NUMBER : 인자 생략 시 22BYTE 까지 입력이 된다.
- DATE : 연/월/일/시/분/초 범위로 입력이 가능하다.
테이블 설계 시 날짜를 저장하는 경우가 많다. 하지만 DATE형보다는 VARCHAR2에 날짜를 저장한다. 데이터 가공 시 TO_CHAR을 활용하여 VRCHAR2 형을 사용하는 것을 많이 볼 수 있다. (ex)varchar2, 20190310) 이유는 DATE 보다 보기(가독성) 쉽고 사용하기가 쉽다.
NUMBER형 사용시 주의 할 점이 있다. NUMBER(3, 2) 선언 시 두번째 인자 2는 소수점 2번째 자리까지 표시된다. 만약 NUMBER(3, 2) 타입에 10.22을 저장한다면 에러가 발생할 것이다.
NULL
NULL은 값이 없는 것을 의미하며 테이블 설계시 NULL 또는 NOT NULL을 명시함으로써 NULL을 허용하거나 허용하지 않을 수 있다. 데이터 추출 시, 데이터를 가공 할 때 널처리에 주의하자. NULL인 경우 SELECT문 조건을 잘 작성하여도 NULL이 있음을 인지 못하고 데이터를 빼먹기도 하며 데이터 가공 시 실수가 많은 부분이다. NULL 처리는 NVL을 이용한다.
'DB > DB story' 카테고리의 다른 글
[DB] 새로운 속성의 데이터 입력 (0) | 2019.05.03 |
---|---|
[DB] 테이블 설계 시 주의사항 (사례) (0) | 2019.04.05 |
[DB] Sql의 DDL , DML, DCL 이란? (0) | 2019.03.07 |
[DB] 기존 테이블의 새로운 데이터 입력 시 주의사항 (0) | 2019.02.11 |
[DB] 테이블 컬럼추가 시 주의사항 2 (0) | 2019.01.09 |