본문 바로가기
IT/DB

오라클 기본자료형

by 바른롱매 2020. 2. 26.

-- 한줄주석문
/*
범위주석문
*/

-- 자료형
-- java         oracle
-- int      == NUMBER
-- String   == VARCHAR2
-- double   == NUMBER(정수의 자리수 , 소수의 자리수)
-- Date     == Date

--문자열 자료형
--CHAR
CREATE TABLE TB_CHAR(
    COL_CHAR1 CHAR(10 BYTE), -- String COL_CHAR1;(크기)
    COL_CHAR2 CHAR(10 CHAR), 
    COL_CHAR3 CHAR(10)
)
/*
CREATE TABLE 테이블명(
    컬럼명 컬럼의 자료형(크기),
    컬럼명 컬럼의 자료형(크기)
)
*/

INSERT INTO tb_char(COL_CHAR1, COL_CHAR2, COL_CHAR3)
VALUES('ABC','ABC','ABC');  -- 영문크기 : 1BYTE

SELECT * FROM tb_char;

INSERT INTO tb_char(COL_CHAR1, COL_CHAR2, COL_CHAR3)
VALUES('가','가','가');    -- 한글크기 : 3BYTE

INSERT INTO tb_char(COL_CHAR1, COL_CHAR2, COL_CHAR3)
VALUES('가나','가나','가나');    -- 한글크기 : 3BYTE

INSERT INTO tb_char(COL_CHAR1, COL_CHAR2, COL_CHAR3)
VALUES('가나다','가나다','가나다');    -- 한글크기 : 3BYTE

SELECT COL_CHAR1, COL_CHAR2, col_char3,
    LENGTHB(COL_CHAR1),LENGTHB(COL_CHAR2),LENGTHB(COL_CHAR3)
FROM tb_char;

/*
CHAR : 10BYTE 00000 00000
ABC ->        ABC00 00000

10BYTE 가나다->가나다 9바이트

10CHAR
가 3+9 = 12  가0000 00000
가나 3 + 3 + 8 = 가나000 00000
가나다 3+3+3+7 = 가나다00 00000
*/

-- VARCHAR2
CREATE TABLE TB_VARCHAR(
    컴럼1 VARCHAR2(10 BYTE),
    컴럼2 VARCHAR2(10 CHAR),
    컴럼3 VARCHAR2(10)
    );
    
INSERT INTO TB_VARCHAR(컴럼1, 컴럼2, 컴럼3)
VALUES('ABC','ABC','ABC');    -- 한글크기 : 3BYTE

INSERT INTO TB_VARCHAR(컴럼1, 컴럼2, 컴럼3)
VALUES('가나다','가나다','가나다');    -- 한글크기 : 3BYTE

SELECT "컴럼1", "컴럼2", "컴럼3",
    LENGTHB("컴럼1"),LENGTHB("컴럼2"),LENGTHB("컴럼3")
FROM TB_VARCHAR;

CREATE TABLE TB_LONG(
    COL_LONG1 LONG
);

-- 숫자자료형 INTEGER
CREATE TABLE TB_INTEGER(
    COL_INT1 INTEGER,
    COL_INT2 INTEGER
);

-- NUMBER(정수,실수)
CREATE TABLE TB_NUMBER(
    COL_NUM1 NUMBER,
    COL_NUM2 NUMBER(5),
    COL_NUM3 NUMBER(5, 2),
    COL_NUM4 NUMBER(*, 2)
);

INSERT INTO tb_number(COL_NUM1, COL_NUM2, COL_NUM3, COL_NUM4)
VALUES(1234.5678, 12345, 123.456, 1234.56789);

SELECT
    *
FROM tb_number;

INSERT INTO tb_number(COL_NUM1, COL_NUM2, COL_NUM3, COL_NUM4)
VALUES(1234.5678, 12345, 1234.567, 1234.56789); 
                        --3번째 컬럼오류 1234.567 5자리에 소주 2자리까지 이므로 오류가 난다.
                        
--날짜 자료형 DATE
CREATE TABLE TB_DATE(
    COL_DATE1 DATE,
    COL_DATE2 DATE
);

INSERT INTO TB_DATE(COL_DATE1, COL_DATE2)
VALUES(SYSDATE, SYSDATE - 1); 

SELECT
    *
FROM TB_DATE;

INSERT INTO TB_DATE(COL_DATE1, COL_DATE2)
VALUES(SYSDATE, TO_DATE('2019-07-12 10:32:24','YYYY-MM-DD HH:MI:SS')); 

INSERT INTO TB_DATE(COL_DATE1, COL_DATE2)
VALUES('2019-08-15', '2019-07-12'); 

INSERT INTO TB_DATE(COL_DATE1, COL_DATE2)
VALUES(SYSDATE, '2019-07-12 10:32:24');  -- 에러 뜹니다

INSERT INTO TB_DATE(COL_DATE1, COL_DATE2)
VALUES(SYSDATE, TO_DATE('20190712103224','YYYYMMDDHHMISS')); 

--VARCHAR2(문자열) -> DATE(날짜형식) : TO_DATE
--DATE(날짜형식) -> VARCHAR2(문자열) : TO_CHAR

댓글