개키우는개발자 : )

[오라클] 데이터베이스 객체의 종류-문자 데이터 타입 본문

Oracle SQL Developer/오라클SQL과 PL-SQL

[오라클] 데이터베이스 객체의 종류-문자 데이터 타입

DOGvelopers 2019. 2. 17. 18:04
반응형

문자 데이터 타입


 데이터 타입

 설명

 CAHR(크기[BYTE | CHAR])

 고정길이 문자, 최대 2000byte, 디폴트 값은 1byte

 VARCHAR2(크기[BYTE | CHAR]) 

 가변길이 문자, 최대 4000byte, 디폴트 값은 1byte  

 NCHAR(크기)

 고정길이 유니코드 문자(다국어 입력 가능), 최대 2000byte,

 디폴트 값은 1byte 

 NVARCHAR2(크기)

 가변길이 유니코드 문자(다국어 입력 가능), 최대 4000byte,

 디폴트 값은 1byte 

 LOGN

 최대 2GB 크기의 가변길이 문자형, 잘 사용하지 않음 



데이터 추가,조회


실습) 가변길이,고정길이 차이 확인하기.


- ex2_1테이블의 colum1,colum2 칼럼에 abc문자 데이터 추가


1
INSERT INTO ex2_1(colum1,colum2) VALUES ('abc','abc');
cs


- colum1,colum2 의 길이를 반환하는 LENGTH 함수를 사용하여 데이터의 길이 조회.


1
2
3
SELECT colum1, LENGTH(colum1) as len1,
       colum2, LENGTH(colum2) as len2 
    From ex2_1;
cs



결과


결과값 이미지결과값



- COLUM1 CHAR(10) : 10의 크기가 고정상태로 적용되어 글자길이에 상관없이 

값이 고정되어 있다.


- COLUM2 VARCHAR2(10) : 글자의 길이가 10이하 이면 가변적으로 값이 변한다.



테이블 생성,조회


실습) 영문,한글의 데이터 크기 차이


1
2
3
4
5
CREATE TABLE ex2_2(
    COLUMN1 VARCHAR2(3),
    COLUMN2 VARCHAR2(3 byte),
    COLUMN3 VARCHAR2(3 char)
);
cs


- 영문 데이터 입력


1
INSERT INTO ex2_2 VALUES ('abc','abc','abc');
cs


- 영문 길이 조회


1
2
3
4
SELECT COLUMN1, LENGTH(COLUMN1) AS len1,
       COLUMN2, LENGTH(COLUMN2) AS len2,
       COLUMN3, LENGTH(COLUMN3) AS len3
    FROM ex2_2;
cs


- 결과


결과 이미지영문 길이 결과


영문의 한문자의 크기는 1byte를 차지한다. 크기가 모두 3byte이다.




- 한글 데이터 입력


1
INSERT INTO ex2_2 VALUES ('홍길동','홍길동','홍길동');
cs


- 결과


1
ORA-12899"STUDY_USER"."EX2_2"."COLUMN1" 열에 대한 값이 너무 큼(실제: 6, 최대값: 3)
cs


한글은 한 글자가 2byte이므로 COLUMN1에 입력할 때 오류가 발생했다.

하지만 COLUMN3에서는 byte가 아닌 char를 명시했기 때문에 입력할 수 있다.


- COLUMN3에 한글 데이터 입력


1
INSERT INTO ex2_2(COLUMN3) VALUES ('홍길동');
cs


- COLUMN3에 데이터 길이,크기 조회


1
2
3
SELECT COLUMN3, LENGTH(COLUMN3) AS len3,
       LENGTHB(COLUMN3) AS bytelen
    FROM ex2_2;
cs


- 결과


byte차이 이미지길이와 크기의 차이


문자열의 길이는 같다 하지만 byte 크기는 서로 다른걸 확인할 수 있다. 한글은 설정에 따라서 3byte 를 차지하기도 한다.

반응형
Comments