자료형
숫자자료형
- number 로 제공
- 실수, 정수 모두 처리 가능
(사용형식)
NUMBER[(정밀도|*[,스케일])]
- 표현 범위 : 10E-130 ~ 9.9999...9E125
- 정밀도 : 전체자리 수 (1~38)
- 스케일 : 소숫점이하의 자리수
- '*'는 38자리 이내에서 사용자가 입력한 데이터를 저장할 수 있도록 시스템이 자리를 확보
- '스케일'이 생략되면 '0'으로 간주
- 저장은 스케일+1번째 자리에서 반올림 하여 '스케일'자리수까지 저장
- '스케일'이 음수이면 정수부분에서 반올림이 수행
사용 예)
1) 정밀도 > 스케일
- NUMBER;
- NUMBER(*,3);
- NUMBER(10,3);
- NUMBER(10);
------------------------------------------
입력값 선언 저장값
------------------------------------------
12345678.4567 NUMBER(10,2) 12345678.46 --이것과
12345678.4567 NUMBER 12345678.4567 --숫자 안쓰면 사용자가 입력한거 그대로 저장
12345678.8567 NUMBER(10) 12345679 --이것을 잘 알아두자!--(10,0)이 생략 그래서 소수1째자리에서 반올림
12345678.4567 NUMBER(*,2) 12345678.46 --정수부분 컴이 알아서 잡아주니까 고려안해도 됨 소수점이하자리만 2자리 적용
12345678.4567 NUMBER(9,2) 오류 --정수부분을 입력할 기억공간이 부족 정수자리 지금 8자리 근데 9자리??오류발생
2) 정밀도 < 스케일
- 정밀도는 '0'이 아닌 유효숫자의 갯수
- [스케일 - 정밀도] : 소숫점이하에서 맨 처음에 존재하는 '0'의 갯수
- 스케일 : 소숫점이하의 자리수
------------------------------------------
입력값 선언 저장값
------------------------------------------
123.4567 NUMBER(2,4) 오류 --소수점이하에서 0이아닌 유효숫자의 갯수 , 4-2=2 소수점이하 의 0의 갯수
0.23 NUMBER(3,5) 오류
0.023 NUMBER(2,3) 0.023
0.0023 NUMBER( ? ) 0.0023 -- ? = (2,4)
0.0002345 NUMBER(3,6) ? -- ? = 0.000235
3. 날짜 자료형
- 날짜 자료(년, 월, 일, 시, 분, 초) --시분초 안하면 0시0분0초로 자동셋팅
- DATE(기본형), TIMESTAMP(TIME ZONE 정보 처리)
1) DATE
- 기본 날짜형
- '+' 와 '-' 연산이 가능 => 결과는 날짜형으로 반환 --*,/는 쓸 수 없다
(사용 형식)
컬럼명 DATE;
- SYSDATE : 시스템이 제공하는 날짜 데이터를 반환하는 함수
(사용 예)
CREATE TABLE TEMP05(
COL1 DATE, COL2 DATE, COL3 DATE);
INSERT INTO TEMP05
VALUES(SYSDATE,SYSDATE-20, SYSDATE+20);
INSERT INTO TEMP05(COL1,COL2,COL3)
VALUES(SYSDATE,'20201223', TO_DATE('20210120102345','YYYYMMDDHH24MISS'));
SELECT * FROM TEMP05;
SELECT TO_CHAR(COL1,'YYYY-MM-DD HH24:MI:SS'),
TO_CHAR(COL2,'YYYY-MM-DD HH24:MI:SS'),
TO_CHAR(COL3,'YYYY-MM-DD HH24:MI:SS')
FROM TEMP05;
2) TIMESTAMP
- 시간대(TIME ZONE)정보와 10억분의 1초 단위의 정교한 시간 정보저장
(사용 형식)
컬럼명 TIMESTAMP --시간대 정보 제공하지 않음
컬럼명 TIMESTAMP WITH TIME ZONE; --시간대 정보 (대륙명/도시명) 정보 제공
컬럼명 TIMESTAMP WITH LOCAL TIME ZONE; --서버가 설치된 지역의 시간대 정보 제공, 보통 TIMESTAMP 와 동일
사용예)
CREATE TABLE TEMP06(
COL1 DATE,
COL2 TIMESTAMP,
COL3 TIMESTAMP WITH TIME ZONE,
COL4 TIMESTAMP WITH LOCAL TIME ZONE);
INSERT INTO TEMP06
VALUES(SYSDATE,SYSDATE,SYSDATE, SYSDATE);
SELECT * FROM TEMP06;
'DB > SQL(오라클)' 카테고리의 다른 글
오라클(SQL) select 문 예시 (0) | 2021.03.12 |
---|---|
오라클(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 |