1. 데이터 타입 : NUMBER
※ NUMBER(precision, scale)
- precision : 소수점을 포함하는 전체 자리수
- scale : 소수점 이하 자리수
가변길이 데이터 타입으로 숫자를 저장하며, 최대 38자리까지 저장 가능
(저장 가능한 숫자의 범위 : 1.0 × 10^-130 ~ 96.9 … × 10^125)
- NUMBER 타입의 특징
- 정수는 NUMBER(precision), 소수는 NUMBER(precision, scale)의 형식으로 입력한다.
- NUMBER 데이터 타입은 지정된 자리 이하에서 반올림되어 저장된다.
- precision을 지정하지 않고 숫자를 입력하는 경우, 입력되는 숫자값의 크기만큼 저장공간이 할당된다.
- scale을 지정하지 않고 소수점을 입력하는 경우, 소수점이 반올림되어 정수값만 저장된다.
-- NUMBER 데이터 타입
SELECT 3.14 FROM DUAL;
CREATE TABLE EX (
A NUMBER(3, 2),
B NUMBER(5),
C NUMBER(5, -2)
);
INSERT INTO EX VALUES (3.14, 3.14, 3.14);
-- A: 3.14, B: 3, C: 0 출력
- 에러 노트(Error Note)
2. 데이터 타입 : DATE
날짜와 시간 정보를 저장하기 위한 데이터 타입(세기, 년도, 월, 일, 시간, 분, 초)
→ 날짜 데이터 입력 시, 월, 일을 지정하지 않으면 입력되는 시점을 기준으로 해당 월과 1일이 입력, 시간을 지정하지 않으면 12:00:00로 입력된다.
-- DATE 타입의 날짜 반올림
SELECT
ROUND(SYSDATE, 'YY') Y, -- 년 반올림
ROUND(SYSDATE, 'MM') M, -- 월 반올림
ROUND(SYSDATE, 'DD') D -- 일 반올림, 'DD' 생략 가능
FROM DUAL;
-- 시간 생략 시, 00:00:00으로 초기화
SELECT TO_CHAR(TO_DATE('94/11/02'), 'YY/MM/DD HH24:MI:SS') FROM DUAL;
- DATE 타입 간 산술 연산
SELECT
TO_CHAR(SYSDATE, 'YY/MM/DD HH24:MI:SS') "NOW", -- 현재 시간
TO_CHAR(SYSDATE + 3, 'YY/MM/DD HH24:MI:SS') "3DAY_AFTER", -- 3일 뒤
TO_CHAR(SYSDATE + 3 / 24, 'YY/MM/DD HH24:MI:SS') "3HOURS_AFTER", -- 3시간 뒤
TO_CHAR(SYSDATE + 30 / 24 / 60, 'YY/MM/DD HH24:MI:SS') "30MINUTES_AFTER", -- 30분 뒤
TO_CHAR(SYSDATE + 30 / 24 / 60 / 60, 'YY/MM/DD HH24:MI:SS') "30SECONDS_AFTER", -- 30초 뒤
TO_CHAR(SYSDATE + 3 * 365, 'YY/MM/DD HH24:MI:SS') "3YEARS_AFTER", -- 3년 뒤
ADD_MONTHS(TO_DATE('22/01/31'), 1) "1MONTH_AFTER" -- 1달 뒤
FROM DUAL;
-- 태어난 날 조회
SELECT STUDNO, NAME, BIRTHDATE, SYSDATE, ROUND(SYSDATE - BIRTHDATE) LIFE
FROM STUDENT;
- SYSDATE : 시스템의 현재 날짜와 시간을 반환하는 함수
-- 현재 시간 출력(시스템 기준)
SELECT SYSDATE FROM DUAL;