[Oracle] 데이터 타입의 종류, 문자형 데이터(CHAR, VARCHAR2) [문자형 데이터 타입의 비교(CHAR, VARCHAR2), 문자열 고정길이, 가변길이]

2022. 3. 3. 23:54·▣ SQL : Database/Oracle SQL🏮
728x90


1. 데이터 타입(Data Type)이란?

데이터 타입(Data Type) : 데이터베이스에 저장되는 데이터의 형식(문자, 숫자, 날짜, 이미지 등)

- 오라클에서 지원하는 데이터 타입의 종류

오라클(Oracle)에서 지원하는 데이터 타입의 종류

 

데이터 타입의 종류 의미
CHAR(size) size 크기의 고정길이 문자 데이터 타입
최대크기 : 2,000 Byte
최소크기 : 1 Byte
VARCHAR2(size) ★ size 크기의 가변길이 문자 데이터 타입
최대크기 : 4,000 Byte
최소크기 : 1 Byte
NVARCHAR2(size) 국가별 문자 집합에 따른 size 크기의 문자 또는 바이트의 가변길이 문자 데이터 타입
최대크기 : 4,000 Byte
최소크기 : 1 Byte
NUMBER(p, s) ★ 정밀도(p)와 스케일(s)로 표현되는 숫자 데이터 타입
p : 1 ~ 38
s : -84 ~ 127
DATE ★ 날짜 형식을 저장하기 위한 데이터 타입
ROWID 테이블 내 행의 고유주소를 가지는 64진수 문자 데이터 타입
[행당 6 Byte(제한된 ROWID) 또는 10 Byte(확장된ROWID)]
BLOB 대용량의 바이너리 데이터를 저장하기 위한 데이터 타입
최대크기 : 4GB
CLOB 대용량의 텍스트 데이터를 저장하기 위한 데이터 타입
최대크기 : 4GB
BFILE 대용량의 바이너리 데이터를 파일 형태로 저장하기 위한 데이터 타입
최대크기 : 4GB
TIMESTAMP(n) DATE 데이터 타입의 확장된 형태
최대 9자리(nano second)까지 표현 가능
INTERVAL YEAR TO MONTH 년과 월을 이용하여 기간을 저장
INTERVAL DAY TO SECOND 일, 시, 분, 초를 이용하여 기간을 저장
(두 날짜 값의 정확한 차이를 표현하는데 유용)

2. 문자 데이터 타입(CHAR, VARCHAR2)

1) CHAR 타입(Fixed length character string)

고정 길이의 문자열을 저장하며, 최대 2,000 Byte까지 저장 가능
(지정된 길이보다 짧은 데이터가 입력되는 경우, 나머지 공간은 공백으로 채워진다.)

 

CHAR 데이터 타입

- CHAR 타입의 특징

  • 데이터 입력 시, 사용자가 데이터를 입력하지 않으면 공백으로 채워진다.
  • 주민등록번호와 같이 길이가 일정하거나 비슷한 경우에 사용하는 것이 좋다.
  • 주소 데이터와 같은 편차가 심한 데이터를 입력할 때 사용하면 저장 공간이 낭비될 수 있다.

2) VARCHAR2 타입(Variable length character string)

가변길이의 문자열을 저장하며, 최대 4,000 Byte까지 저장 가능
(지정된 길이보다 짧은 데이터가 입력되는 경우, 나머지 공간은 NULL로 처리된다.)

 

VARCHAR2 데이터 타입

- VARCHAR2 타입의 특징

  • 데이터 입력 시, 사용자가 데이터를 입력하지 않으면 NULL이 입력된다.
  • 입력될 데이터의 편차가 심하거나 NULL이 자주 사용되는 경우에 사용하는 것이 효율적이다.
  • 실무에서는 CHAR 데이터 타입보다 VARCHAR2 데이터 타입을 많이 사용한다.

3. 문자형 데이터 타입의 비교

문자형 데이터 타입의 비교

- CHAR와 CHAR의 비교

a<>b / CHAR 타입은 빈 문자열을 공백으로 채우기 때문
CHAR 타입은 길이를 동등하게 맞춰야 한다.

- CHAR와 VARCHAR2의 비교

a<>b / CHAR 타입은 빈 문자열을 공백으로 채우기 때문


- CHAR와 VARCHAR2의 비교 예시

-- EX_TYPE 테이블 생성
CREATE TABLE EX_TYPE ( C CHAR(10), V VARCHAR2(10) );

-- CHAR, VARCHAR2 데이터 생성
INSERT INTO EX_TYPE VALUES ('sql', 'sql');

 

테이블 및 CHAR, VARCHAR2 데이터 생성


SELECT * FROM EX_TYPE WHERE C ='sql';
-- true

 

true / CHAR 타입에서 'sql' 질의


SELECT * FROM EX_TYPE WHERE V ='sql';
-- true

 

true / VARCHAR2 타입에서 'sql' 질의


SELECT * FROM EX_TYPE WHERE C ='sql       ';
-- true : CHAR는 빈 문자열을 공백으로 채운다.

 

true / CHAR에서 'sql'과 '    '은 같음


SELECT * FROM EX_TYPE WHERE V ='sql       ';
-- false : VARCHAR2는 빈 문자열을 NULL로 채운다.

 

false / VARCHAR2에서는 'sql'과 '    '은 다름


SELECT * FROM EX_TYPE WHERE C = V;
-- false : CHAR와 VARCHAR2에는 7칸의 공백 차이가 있다.

 

false / 동일한 값 'sql'이 들어갔지만 같지 않다.


SELECT * FROM EX_TYPE WHERE C = V || '       ';
-- true : VARCHAR2에 공백 7칸을 넣어주면 값이 같아진다.

 

true / VARCHAR2에 공백을 넣어주면 같은 값이 됨

728x90
'▣ SQL : Database/Oracle SQL🏮' 카테고리의 다른 글
  • [Oracle] ROWNUM, DUAL [의사열(Pseudo Column), 계산 및 함수 실행을 위한 테스트 테이블]
  • [Oracle] 데이터 타입 : NUMBER, DATE [NUMBER 타입 특징, DATE 타입 산술연산, SYSDATE]
  • [Oracle] DISTINCT, 합성 연산자, 산술 연산자 [중복행 출력 금지, Concatenation('||'), '+', '-', '*', '/']
  • [Oracle] SQL 명령문의 표준 형식 [기본적인 SQL 질의 형식, 칼럼에 대한 별명 부여]
예르미(yermi)
예르미(yermi)
끊임없이 제 자신을 계발하는 개발자입니다👨🏻‍💻
  • 예르미(yermi)
    예르미의 코딩노트
    예르미(yermi)
  • 전체
    오늘
    어제
    • 분류 전체보기 (937)
      • ◎ Java (133)
        • Java☕ (93)
        • JSP📋 (26)
        • Applet🧳 (6)
        • Interview👨🏻‍🏫 (8)
      • ◎ JavaScript (48)
        • JavaScript🦎 (25)
        • jQuery🌊 (8)
        • React🌐 (2)
        • Vue.js🔰 (6)
        • Node.js🫒 (3)
        • Google App Script🐑 (4)
      • ◎ HTML5+CSS3 (17)
        • HTML5📝 (8)
        • CSS3🎨 (9)
      • ──────────── (0)
      • ▣ Framework (67)
        • Spring🍃 (36)
        • Spring Boot🍀 (12)
        • Bootstrap💜 (3)
        • Selenium🌕 (6)
        • MyBatis🐣 (10)
      • ▣ Tools (47)
        • API🎯 (18)
        • Library🎲 (15)
        • JitPack🚀 (3)
        • Jenkins👨🏻 (7)
        • Thymeleaf🌿 (4)
      • ▣ Server (32)
        • Apache Tomcat🐱 (14)
        • Apache HTTP Server🛡️ (1)
        • Nginx🧶 (7)
        • OracleXE💿 (4)
        • VisualSVN📡 (4)
      • ▣ OS : 운영체제 (18)
        • cmd : 명령프롬프트💻 (10)
        • Linux🐧 (8)
      • ▣ SQL : Database (56)
        • Oracle SQL🏮 (26)
        • PL SQL💾 (9)
        • MySQL🐬 (6)
        • MariaDB🦦 (6)
        • H2 Database🔠 (3)
        • SQL 실전문제🐌 (6)
      • ────────── (0)
      • ◈ Human Project (86)
        • Mini : Library Service📚 (15)
        • 화면 설계 [HTML]🐯 (10)
        • 서버 프로그램 구현🦁 (15)
        • Team : 여수어때🛫 (19)
        • Custom : Student🏫 (9)
        • Custom : Board📖 (18)
      • ◈ Yermi Project (40)
        • 조사모아(Josa-moa)📬 (5)
        • Riddle-Game🧩 (6)
        • 맛있을 지도🍚 (2)
        • 어디 가! 박대리!🙋🏻‍♂️ (5)
        • 조크베어🐻‍❄️ (4)
        • Looks Like Thirty🦉 (2)
        • Toy Project💎 (12)
        • 오픈소스 파헤치기🪐 (4)
      • ◈ Refactoring (15)
        • Mini : Library Service📚 (8)
        • 서버 프로그램 구현🦁 (1)
        • Team : 여수어때🛫 (0)
        • 쿼리 튜닝일지🔧 (6)
      • ◈ Coding Test (89)
        • 백준(BOJ)👨🏻‍💻 (70)
        • 프로그래머스😎 (2)
        • 코드트리🌳 (7)
        • 알고리즘(Algorithm)🎡 (10)
      • ◈ Study (102)
        • 기초튼튼 개발지식🥔 (25)
        • HTTP 웹 지식💡 (4)
        • 클린코드(Clean Code)🩺 (1)
        • 디자인패턴(GoF)🥞 (12)
        • 다이어그램(Diagram)📈 (4)
        • 파이썬(Python)🐍 (16)
        • 에러노트(Error Note)🧱 (34)
        • 웹 보안(Web Security)🔐 (6)
      • ◈ 공부모임 (39)
        • 혼공학습단⏰ (18)
        • 코드트리 챌린지👊🏻 (2)
        • 개발도서 100독👟 (8)
        • 나는 리뷰어다🌾 (11)
      • ◈ 자격증 공부 (37)
        • 정보처리기사🔱 (16)
        • 정보처리산업기사🔅 (9)
        • 컴퓨터활용능력 1급📼 (12)
      • ─────────── (0)
      • ◐ 기타 (113)
        • 알아두면 좋은 팁(tip)✨ (46)
        • 개발자의 일상🎈 (44)
        • 개발도서 서평🔍 (10)
        • 개발관련 세미나🎤 (2)
        • 블로그 꾸미기🎀 (9)
        • 사도신경 프로젝트🎚️ (2)
  • 인기 글

  • 최근 댓글

  • 태그

    백준 티어
    자바스크립트
    코딩 테스트
    프로그래밍
    Database
    javascript
    Project
    Java
    html
    Error Note
    일상
    CSS
    백준
    코딩
    Oracle
    spring
    jsp
    SQL
    꿀팁
    BOJ
  • 250x250
  • hELLO· Designed By정상우.v4.10.3
예르미(yermi)
[Oracle] 데이터 타입의 종류, 문자형 데이터(CHAR, VARCHAR2) [문자형 데이터 타입의 비교(CHAR, VARCHAR2), 문자열 고정길이, 가변길이]
상단으로

티스토리툴바