꺄르륵
[Oracle SQL Developer] 기초 II - DATA TYPE 본문
1. 데이터 타입
- 문자열, 숫자, 날짜, 기타로 분류 (ORACLE은 BOOLEAN 타입이 없다.)
- ORACLE도 AUTOCASTING을 지원한다.
- VARCHAR, NUMBER, DATE, OTHER
1) 문자열 자료
- 문자자료는 ' ' 으로 묶어서 처리한다.
- 오라클에서 하나의 문자를 표현하는 JAVA의 CHAR 같은 문자자료가 존재하지 않음.
- 모두 문자열로 취급된다.
- 사용되는 타입 : CHAR, VARCHAR, VARCHAR2, LONG, CLOB, NVARCHAR2, NCLOB 타입이 존재한다.
- 앞에 N이붙은 타입은 NATIONAL의 약자로 국제 표준 문자코드를 이용한다. 유니코드 형식으로 저장된다. UTF-8 또는 UTF-16
*1. CHAR(n)
- 고정 길이 문자열을 처리한다.
- 문자열 자료를 왼쪽에서 오른쪽 순서로 저장하고 남는 기억공간은 공백이 PADDING(추가되어 들어감) 된다.
- 해당 기억장소보다 긴 문자열 자료를 입력하면 ERROR 발생.
- 2000byte까지 사용가능
- 한글 한 글자는 3byte 소요
* 사용형식
컬럼명 CHAR(n [CHAR|BYTE])
- 'CHAR|BYTE'가 생략되어 있다면 기본값인 BYTE로 처리
- CHAR이 사용되더라도 2000byte를 초과할 수 없음.
- CHAR이 사용되는 경우는 기본키를 설정할때 주로 사용된다. 고정길이로 사용한다.
- 단점은 사용되지 않는 byte수는 쓸모없는 저장을 하게 된다.
예시)
CREATE TABLE TEMP01 (
COL1 CHAR(10),
COL2 CHAR(10 CHAR),
COL3 CHAR(5 CHAR)
);
INSERT INTO TEMP01 (COL1, COL2, COL3) VALUES ('ABHIJ','열글자려고쓰는','다섯다');
INSERT INTO TEMP01 (COL1, COL2, COL3) VALUES ('일포스',' 열 글 자 려쓰는','다 섯 다');
SELECT * FROM TEMP01;
-- LENGTH
-- 고정길이가 있는 경우 나머지 byte는 영문자 기준으로 1byte씩 처리되어 작성된 길이 + 나머지길이가 더해져서 계산된다.
-- 공백을 포함하여 모든 자리가 채워진 경우는 공백(1byte) + 입력한 문자의 byte가 계산된다.
SELECT LENGTHB (COL1),LENGTHB (COL2),LENGTHB (COL3) FROM TEMP01;
EX)
COL1 CHAR(15) <= '홍길동' : '홍길동 ' 으로 저장된다.
IF('홍길동'=COL1) -> 원래는 FALSE 였지만 자동으로 TRIM이 적용되어 TRUE로 인식됨.
*2. VARCHAR2(n)
- 가변길이 문자열을 처리 VAR = VARIABLE의 약어
- 글자수를 고정하지않고 사용자가 입력한 만큼 저장된다.
- 정의된 크기의 공간에서 문자열 자료를 왼쪽에서 오른쪽 순서로 저장하고 남는 기억공간은 공백은 처리하지 않는다.
- 최대 4000byte까지 저장된다. ( 한글은 1333.333333 자리까지 )
*사용형식
컬럼명 VARCHAR2 (n [byte|char])
예시)
CREATE TABLE TEMP02(
COL1 VARCHAR2 (4000),
COL2 VARCHAR2 (4000 CHAR)
);
INSERT INTO TEMP02(COL1,COL2) VALUES ('무궁화',' 우리나라 꽃 입니다. ');
INSERT INTO TEMP02(COL1,COL2) VALUES ('12345678','TOM');
SELECT * FROM TEMP02;
-- 빈공간이 발생하지않고 입력받은 데이터만큼을 저장한다.
-- AS 다음에 "NAME" 컬럼의 별칭을 바꿔준다.
SELECT LENGTHB (COL1) AS "컬럼크기(BYTE)",
LENGTHB (COL2) AS "컬럼크기(CHAR)",
LENGTH (COL1) AS "컬럼크기(CHAR)",
LENGTH (COL2) AS "컬럼크기(CHAR)"
FROM TEMP02;
*3. VARCHAR(n)
- VARCHAR2와 동일한 방법으로 자료를 처리한다.
- VARCHAR2를 사용할 것을 권고(Company.Oracle)
*4. LONG(n)
- 가변길이 문자열 처리
- 최대 2GB까지 처리한다.
- 크기를 지정하지 않는다.
- 나머지 사항은 VARCHAR2와 동일하다.
- 제약사항
. ★ 한 테이블에 한 컬럼에서만 사용가능
. SELECT문의 SELECT절, UPDATE문의 SET절, INSERT문의 VALUES절에서만 사용 가능하다.
. CLOB 타입으로 대체
* 사용형식
컬럼명 LONG
CREATE TABLE TEMP03 (
COL1 LONG,
COL3 VARCHAR2(100)
);
INSERT INTO TEMP03 VALUES ('대 한 민 국',' 대한민국 ');
SELECT * FROM TEMP03;
'프로그래밍 > DB' 카테고리의 다른 글
[Oracle SQL Developer] 기초 V - 숫자 함수 (0) | 2019.10.08 |
---|---|
[Oracle SQL Developer] Import (0) | 2019.10.07 |
[Oracle SQL Developer] 기초 IV - SELECT 문 (0) | 2019.10.07 |
[Oracle SQL Developer] 기초 III - 숫자 자료형, 날짜 타입 (0) | 2019.10.07 |
[Oracle SQL Developer] 기초 I - TABLE (0) | 2019.10.04 |