rueki

SQL CHAR와 VARCHAR2의 차이 본문

SQL

SQL CHAR와 VARCHAR2의 차이

륵기 2020. 4. 24. 09:07
728x90
반응형

테이블 생성할 때 보통은 VARCHAR2를 많이 볼 수가 있다. 

문자열 타입에는 CHAR와 VARCHAR2가 있는데 이의 차이점을 소개하고자 한다.

 

Char는 고정형 타입이고, Varchar2는 가변형 타입이다.

이는 고정크기의 배열과 동적 배열의 차이로 이해하면 더 쉬울 것이다.

 

 

똑같이 크기를 10으로 주었다고 가정하고, 숫자 10을 입력했다고 하자.

그러면 메모리 할당된 것은 아래와 같이 표현할 수가 있다.

char(10)

1 0                

고정형은 처음에 지정한 크기대로 크기가 지정되게 된다.

 

 

varchar2(10)

1 0

가변형은 입력되는 데이터가 지정한 크기보다 작으면 나머지 공간을 회수하기 때문에

저장공간을 절약할 수가 있다.

그러나 Varchar2로 만들고 2자리 입력하고 나중에 2자리의 데이터를 2자리 이상의 데이터로 갱신하면

Row migration 현상이 일어난다.

 

Ex )

create table emp500

(ename varchar2(10),

 deptno varchar2(10));

 

Create table dept500

(deptno char(10),

Loc varchar2(10));

 

insert into emp500 values('scott','10');

insert into emp500 values('allen','20');

commit;

 

insert into dept500 values('10','dallas');

insert into dept500 values('20','chicago');

commit;

 

생성한 두 테이블을 조인해보자.

select e.ename, d.loc

from emp500 e, dept500 d

where e.deptno = d.deptno;

 

아무런 결과가 나오지 않는 것을 볼 수가 있다.

조인하는 연결고리의 컬럼의 데이터 타입은 반드시 varchar2로 일치시키거나

char로 일치 시켜야한다.

728x90
반응형

'SQL' 카테고리의 다른 글

SQLD 최적화 기본 원리 정리  (0) 2020.05.21
SQL에서의 정규표현식(Regular Expression)  (0) 2020.04.24
SQL INDEX  (0) 2020.04.21
SQL Table, View  (0) 2020.04.17
SQL 계층형 질의문, SELECT 문의 서브쿼리  (0) 2020.04.14
Comments