Oracle SQL/기초 SQL

오라클 기본 자료형(숫자, 날짜)

호두빵 2021. 5. 25. 18:18

앞서 문자열 자료형을 다루는 방법을 익혔으니 이번에는 숫자와 날짜를 다루는 방식을 알아보겠습니다.

숫자를 표현하는 자료형은  INTEGER와 NUMBER로 나뉩니다. 

                     정수(JAVA에서는 int)                         실수(JAVA에서는 double)
INTEGER, NUMBER NUMBER

INTEGER를 먼저 살펴보겠습니다. 정수의 숫자를 표현하기 위해서 자바에서는 int를 썼는데요, 오라클에서는 INTEGER로 사용합니다. 

 

CREATE TABLE TB_INTEGER(
    COL1 INTEGER,
    COL2 INTEGER
);

INSERT INTO tb_integer(COL1, COL2)
VALUES(123,456);

INSERT INTO tb_integer(COL1, COL2)
VALUES('123','456'); --이것도 가능

SELECT * FROM tb_ingeger;

INTEGER 자료형을 갖는 컬럼 2개로 TB_INTEGER 테이블을 만들어왔습니다. 이 안에 자료값으로는 제일 먼저 123과 456을 넣어볼게요. 아무런 문제 없이 실행이 됩니다.

그런데 문자열처럼 작은 따옴표(' ') 을 써도 아무런 에러 없이 다음과 같이 값이 잘 나옵니다. 숫자값(numeric values)에 작은 따옴표(single quotes)를 써도 무방합니다. 그러나 쓸 수 있다는 것이지, 그렇다고 작은 따옴표가 없는 값과 동일한 기능을 한다는 뜻은 아닙니다. 일단 ' ' 안에 들어가게 되면 문자로 취급을 받기 때문입니다. 작은 따옴표가 없이 숫자 자체만 들어가있을때 숫자로 남아있는 것입니다. 그렇지 않은 경우에는 문자열로 바뀌는 것을 명심해야겠습니다. 

CREATE TABLE TB_NUMBER(
    COL1 NUMBER, 
    COL2 NUMBER(5),
    COL3 NUMBER(5,2),
    COL4 NUMBER(*,2)
);

INSERT INTO tb_number(COL1, COL2, COL3, COL4)
VALUES(1234.5678, 12345.12, 123.456, 1234.56789);

SELECT * FROM tb_number;

이번에는 실수형까지 표현할 수 있는 NUMBER 자료형입니다. 테이블을 만들면서 이번에는 각 컬럼에 NUMBER자료형을 넣어주되 자릿수를 각각 다르게 만들어줬습니다. 하나씩 살펴보겠습니다. 

 

COL1 NUMBER -> 자릿수를 설정해주지 않아 입력한 값이 고대로 나옵니다.

COL2 NUMBER(5) -> 정수 5자리까지만 출력하라는 뜻이므로12345.12에서 소숫점자리를 떼고 12345가 나옵니다. 

COL3 NUMBER(5,2) -> 총 5자리까지 출력하는데 대신 소숫점 자릿수가 두 자리 같이 나오게 (123.456 -> 123.46)합니다. 

COL4 NUMBER(*,2) -> 정수 자리는 모두 다 출력하고 소숫점 자리는 2자리까지만 출력합니다. 1234.56789 -> 1234.57

 

--날짜 , DATE
--년, 월, 일, 시, 분, 초

CREATE TABLE TB_DATE(
    COL1 DATE, 
    COL2 DATE
);

--현재 날짜 SYSDATE

INSERT INTO tb_date(COL1, COL2)
VALUES(SYSDATE, SYSDATE -1);

--TO DATE('문자열', '형식')

INSERT INTO tb_date(COL1, COL2) --시간은 0에서 12 사이만
VALUES(SYSDATE, TO_DATE('2021-05-25 02: 25: 35', 'YYYY-MM-DD HH:MI:SS'));

SELECT * FROM tb_date;

마지막으로 날짜입니다. TB_DATE 테이블을 만들면서 DATE 자료형을 가진 컬럼 2개를 넣어줍니다. 여기에 컬럼1에는 오늘 날짜가 나오도록 하고 컬럼2에는 오늘 날짜에서 하루 전 날짜를 나오도록 하겠습니다. 

 

그러면 1번행을 보면 COL1에는 오늘 날짜(5월 25일)이, COL2에는 하루 전인 어제 날짜가 제대로 나오는 것을 확인할 수 있습니다. 두번째 행의 COL1에는 첫번째 했던것처럼 오늘 날짜를 받고 COL2에는 임의로 입력한 문자열이 날짜형으로 나오게끔 만들어줬습니다. TO_DATE는 다른 글에서 더 자세히 다뤄보겠습니다~!