데이터 타입
숫자형,문자열,날짜,기타로 구분
1. 날짜형
- 고정길이 형식(CHAR)
- 가변길이 형식(VARCHAR, VARCHAR2, LONG, CLOB, NVARCHAR2, NCLOB)
1) CHAR
- 고정길이 문자열을 저장
- 기억공간이 남으면 오른쪽에 공백이 삽입되어 저장
- 데이터가 크면 오류
- 주로 기본키의 데이터 타입으로 사용
- 한글 한 글자는 3BYTE로 처리
- 최대 2000BYTE까지 저장 가능
(사용형식)
컬럼명 CHAR(크기[BYTE|CHAR]);
- 크기 : 1~2000
- BYTE|CHAR : '크기'로 지정된 값이 BYTE 값인지 CHAR 갯수인지 지정
'CHAR' 로 지정되더라도 2000BYTE 를 초과할 수 없으며, default값은 BYTE
사용예)
CREATE TABLE TEMP01(
COL1 CHAR(20 BYTE), COL2 CHAR(20 CHAR), COL3 CHAR(20));
INSERT INTO TEMP01(COL1,COL2,COL3)
VALUES('무궁화 꽃이','무궁화 꽃이','ABCDEFGHIJKLMN');
INSERT INTO TEMP01(COL1,COL2,COL3)
VALUES('무궁화 꽃이','무궁화 꽃이 피었습니다. 무궁화 꽃은','ABCDEFGHIJKLMN');
SELECT * FROM TEMP01;
SELECT LENGTHB(COL1), LENGTHB(COL2), LENGTHB(COL3)
FROM TEMP01;
2) VARCHAR2
- 가변길이 문자열을 저장
- 1~4000 BYTE처리 가능
- 오라클에서만 사용 가능한 데이터 타입(다른 DBMS에서는 VARCHAR를 사용)
(사용형식)
컬럼명 VARCHAR2(크기[BYTE|CHAR]);
- 크기 : 1~4000
- BYTE|CHAR : '크기'로 지정된 값이 BYTE 값인지 CHAR 갯수인지 지정
'CHAR'로 지정되었더라도 4000BYTE 를 초과할 수 없으며, default 값은 BYTE 이다
사용 예)
CREATE TABLE TEMP02(
COL1 VARCHAR2(50), COL2 VARCHAR2(50 CHAR), COL3 VARCHAR2(50 BYTE));
INSERT INTO TEMP02(COL1,COL2,COL3)
VALUES('무궁화 꽃이','무궁화 꽃이','ABCDEFGHIJKLMN');
INSERT INTO TEMP02(COL1,COL2,COL3)
VALUES('무궁화 꽃이','무궁화 꽃이 피었습니다. 무궁화 꽃은','ABCDEFGHIJKLMN');
SELECT * FROM TEMP01;
SELECT LENGTHB(COL1), LENGTHB(COL2), LENGTHB(COL3)
FROM TEMP02;
3) NVARCHAR2, VARCHAR
- VARCHAR 와 VARCHAR2 는 동일 기능 제공
- Oracle 사에서는 VARCHAR2 사용 권고
- NVARCHAR2 는 국제표준코드(다국적 언어)를 사용하여 문자열 저장
- UTF-8(가변길이), UTF-16(고정길이)형식으로 처리
4) LONG
- 대용량 가변길이 자료를 저장
- 2gb까지 처리 가능
- 제약사항 : 한 테이블에 한 컬럼만 LONG타입으로 선언 가능
- CLOB 타입으로 대체(현재 기능 개선이 종료됨)
(사용형식)
컬럼명 LONG;
--오라클에서 LONG 은 긴문자열 자바와 헷갈리지 말자
사용 예)
CREATE TABLE TEMP03(
COL1 LONG, COL2 CLOB, COL3 VARCHAR2(3000));
--LONG, CLOB는 크기지정 안해
INSERT INTO TEMP03(COL1,COL2,COL3)
VALUES('무궁화 꽃이','무궁화 꽃이','ABCDEFGHIJKLMN');
INSERT INTO TEMP03(COL1,COL2,COL3)
VALUES('무궁화 꽃이','무궁화 꽃이 피었습니다. 무궁화 꽃은','ABCDEFGHIJKLMN');
SELECT * FROM TEMP03;
SELECT DBMS_LOB.GETLENGTH(COL2), LENGTHB(COL3)
FROM TEMP03;
5) CLOB --CHAR LARGE OBJECT
- LOB(Large OBJects)타입
- 대용량 자료(4GB)를 저장하기 위한 가변길이 데이터 타입
- 여러 칼럼에서 동시에 사용가능(long 타입 개선)
- 일부기능은 DBMS_LOB API지원을 받아야함 (LENGTH, SUBSTR 등)
- 자료의 크기는 문자열 수로 반환(GETLENGTH), LENGTHB는 사용불가 --LENGTHB 는 BYTE수
(사용형식)
컬럼명 LOB;
사용예)
CREATE TABLE TEMP04(
COL1 CLOB, COL2 CLOB, COL3 VARCHAR2(100));
INSERT INTO TEMP04(COL1,COL2,COL3)
VALUES('무궁화 꽃이','무궁화 꽃이','ABCDEFGHIJKLMN');
INSERT INTO TEMP04(COL1,COL2,COL3)
VALUES('무궁화 꽃이','무궁화 꽃이 피었습니다. 무궁화 꽃은','ABCDEFGHIJKLMN');
SELECT * FROM TEMP04;
SELECT SUBSTR(COL3,2,5) FROM TEMP04;
--COL3에서 2 번째부터 5개를 뽑아라
SELECT DBMS_LOB.SUBSTR(COL2,2,5) FROM TEMP04;
--COL2에 2개 5번째부터 => 위의 SUBSTR과 ()안의 위치가 바뀐다
SELECT LENGTH(COL3) AS "데이터 길이", LENGTH(COL2) FROM TEMP04;
-- " " => 공백이 들어갈때, 날짜같은것 사용자가 정의할때(형식문자열)
SELECT DBMS_LOB.GETLENGTH(COL2)
FROM TEMP04;
SELECT TO_CHAR(SYSDATE,'YYYY"년" MM"월" DD"일" AM')
FROM DUAL;
COMMIT;
'DB > SQL(오라클)' 카테고리의 다른 글
오라클(SQL)기타자료형(그림파일 저장순서, 그림파일저장 BLOCK생성, 그림파일 저장순서) (0) | 2021.03.12 |
---|---|
오라클(SQL)자료형(숫자자료형 ,정밀도,날짜 자료형 ) (0) | 2021.03.12 |
PL/SQL의 종류 Stored procedure (0) | 2021.03.12 |
오라클(SQL)UPDATE문 (0) | 2021.03.12 |
오라클(SQL) DML (Data Manipulation Language) (0) | 2021.03.12 |