오라클 기본 자료형(숫자, 날짜)
앞서 문자열 자료형을 다루는 방법을 익혔으니 이번에는 숫자와 날짜를 다루는 방식을 알아보겠습니다.
숫자를 표현하는 자료형은 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는 다른 글에서 더 자세히 다뤄보겠습니다~!