Notice
Recent Posts
Recent Comments
Link
«   2025/10   »
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 more
Archives
Today
Total
관리 메뉴

jeongwon

[Oracle] Built-in Data Types 본문

DataBase

[Oracle] Built-in Data Types

jeongwon_ 2022. 6. 5. 15:03

범주 및 형태 개요:

 

 

1. Character -  'nEWlec' 'A' '148'

1) CHAR

2) LONG - variable-length character strings containing up to 2 gigabytes - 1, or 231-1 bytes

최근 대신해 나온 CLOB 이 있어 잘 안 쓴다. 컬럼에 쓴다면 단 하나의 컬럼에만 적용할 수 있다. 

3) CLOB  - 대용량 텍스트 데이터 타입으로 최대 4Gbyte

크기도 더 크고, 여러 컬럼에 적용이 가능하다. 

4) NCLOB - National.

 

 

2. Numeric - 38 3.85 3.85F 137

3. Date - '2013-02-09'

4. TIMESTAMP - '2013-06-03 10.38.29.00000'

 


1. CHAR

 

1) CHAR[(size [BYTE | CHAR])]]

고정길이 데이터. 길이가 들쭉날쭉한 데이터에 적합하지 않음. 메모리 낭비가 일어날 수 있거나 부족할 수 있음.

모든 데이터 크기가 같으므로 검색 속도가 빠르다. (VARCHAR와 비교)

 

2) VARCHAR2(size [BYTE | CHAR])

Variable. 가변길이 데이터. 최대값 지정의 의미로, 사용하지 않는 공간은 반환.

크기가 다른 각 데이터를 구분자를 기록하는 방식으로 저장돼 검색속도가 느리다.

 

3) NCHAR[(size)]

National. 컬럼의 영어/한국어뿐 아니라 각 세계 언어가 들어가야 하는 경우 유용.

문자 하나를 쓰게 될 때 더 많은 byte를 쓰게 된다. 

 

4) NVARCHAR2(size)

National.


 

문자의 개수와 byte 크기를 확인하는 법:

SELECT LENGTH ('ab') FROM DUAL; -- 2
SELECT LENGTHB ('ab') FROM DUAL; --2  (byte)
SELECT LENGTH ('한글') FROM DUAL; -- 2
SELECT LENGTHB ('한글') FROM DUAL; --6 (byte)

각국 언어를 지원하는 환경을 확인하는 법 : 

SELECT * FROM NLS_DATABASE_PARAMETERS

 

예를 들어 AL32UTF8 방식의 인코딩을 사용하고 있다면 한 글자가 3바이트를 사용한다. 

따라서 CHAR(2) 라고 컬럼 값 사이즈를 지정하면 한글 입력이 불가능해진다. 

만약 2글자의 문자를 넣을 수 있도록 지정하고 싶다면 컬럼 생성 조건을 아래처럼 CHAR(2 CHAR)의 형식으로 하면 된다.

 

CREATE TABLE MEMBER
(
--	GENDER CHAR(2)
	GENDER CHAR(2 CHAR) 
);

INSERT INTO MEMBER (GENDER) VALUES ('남성');	-- 6 BYTE 사용

 

하지만 좋은 방식은 아니다. 

 

NCHAR의 경우 AL16UTF16 인코딩방식을 사용해 문자 하나를 표현할 때 2바이트를 사용한다. 

CREATE TABLE MEMBER
(
	GENDER NCHAR(2)
	--GENDER CHAR(2 CHAR) 
);

INSERT INTO MEMBER (GENDER) VALUES ('남성');	--4 BYTE 사용

따라서 이런 경우 위 형식이 더 바람직하다. 

 

환경변수가 STANDARD 면 4000byte  기준으로 MAX 값을 사용할 수 있다.

EXTENDED로 하면 32767 byte까지 사용할 수 있다.

보다 더 큰 내용을 담기 위해서는 CLOB(character large object)를 사용할 수 있다. 

 


2. NUMBER[(P [,S])]

다른 데이터베이스 시스템의 경우 정수, 실수형이 따로 있지만 오라클은 NUMBER만 있다. 

NUMBER(4) --최대 4자 숫자 (ex: 9999)
NUMBER(6,2) -- 소수점 포함 최대 6자리. 반올림하여 소수점 2자리까지 표현. 
NUMBER(6,-2) -- 소수점 포함 최대 6자리. 소수점 왼쪽 기준 2번째자리 기준 반올림. 123.456 이면 100
NUMER -- NUMBER(38,*) 과 같다.
NUMBER(*,5) -- NMBER(38,5)와 같다.

 

 

항목별로 적합한 데이터 유형을 고민하자.

CREATE TABLE MEMBER
(
    ID  VARCHAR2(50),
    PWD NVARCHAR2(50),
    NAME NVARCHAR2(50),
    GENDER VARCHAR2(2),
    AGE NUMBER(3),
    BIRTHDAY CHAR(10), -- 2000-01-02
    PHONE CHAR(13), -- 010-1234-2345
    REGDATE DATE
    );

3. Date 형식

 

1) DATE: 날짜 표현 시 년, 월, 일까지 표현. (4712 BC ~ 9999 AD. )

2) TIMESTAMP: 날짜 표현 시 년, 월, 일 외에도 시, 분, 초까지 표현. 

 

DATE 형식은 기본적으로 숫자형 표현방식. 4712 BC 부터 계산하는데, 지역정보(변수)에 따라 다른 값을 뽑아냄. 

확인은 아래 구문을 통해서 가능. 

SELECT * FROM NLS_DATABASE_PARAMETERS

출처 :

https://www.youtube.com/watch?v=be6pyYAoFJE200