

- char, varchar2, long, clob(Character Large Object)
- 고정길이(char) 와 가변길이 (varchar2, long, clob)로 구분
사용 예)
CREATE TABLE TEMP01(
COL1 CHAR(20),
COL2 CHAR(20 BYTE),
COL3 CHAR(20 CHAR)
);
INSERT INTO TEMP01(COL1,COL2,COL3)
VALUES('중구 계룡로','중구 계룡로','중구 계룡로');
SELECT * FROM TEMP01;
SELECT LENGTHB(COL1) AS "COL1",
LENGTHB(COL2) AS "COL2",
LENGTHB(COL3) AS "COL3"
FROM TEMP01;
CREATE TABLE TEMP02(
COL1 VARCHAR2(200),
COL2 VARCHAR2(200 BYTE),
COL3 VARCHAR2(200 CHAR),
COL4 LONG,
COL5 CLOB,
COL6 CLOB
);
INSERT INTO TEMP02 VALUES('대전시 중구 계룡로 846',
'대전시 중구 계룡로 846',
'대전시 중구 계룡로 846',
'대전시 중구 계룡로 846',
'대전시 중구 계룡로 846',
'대전시 중구 계룡로 846');
SELECT * FROM TEMP02;
SELECT LENGTHB(COL1) AS "COL1",
LENGTHB(COL2) AS "COL2",
LENGTHB(COL3) AS "COL3",
--LENGTHB(COL4) AS "COL4",
LENGTH(COL5) AS "COL5",
LENGTH(COL6) AS "COL6"
FROM TEMP02;

- NUMBER[(P [,S])], DECIMAL, INTERGER,...
사용형식)
컬럼명 NUMBER [(P|* [,S])]
사용예)
CREATE TABLE TEMP03(
COL1 NUMBER, --456.73
COL2 NUMBER(3), --456
COL3 NUMBER(3,2), --456.73으로 하면 오류남
COL4 NUMBER(5,2),
COL5 NUMBER(7,1),
COL6 NUMBER(7,-1),
COL7 NUMBER(7,-2),
COL8 NUMBER(*,2),
COL9 NUMBER(4,5),
COL10 NUMBER(4,7),
COL11 NUMBER(3,4),
COL12 NUMBER(4,6)
);
INSERT INTO TEMP03 VALUES(456.73,456.73,6.73,456.73,456.77,50456.73,12456.73,
12456.7393,0.01234,0.0001234,0.0012,0.00123789);
SELECT * FROM TEMP03;
CREATE TABLE TEMP04(
COL1 NUMBER,
COL2 INTEGER,
COL3 DECIMAL,
COL4 BINARY_DOUBLE);
-- 자바에서 쓰려면 조심해야됨. 빅인티저를 써야된다. 넘버(2)라면 -99~99 근데 BYTE는 2바이트라? 아마



- DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP WITH LOCAL TIME ZONE 제공
- 날짜자료는 덧셈과 뺄셈의 대상이 됨.
- 정수 +(-) 날짜 : 정수만큼의 다가올 날의 날짜(+), 정수만큼의 지나온 날의 날짜(-)
- 날짜 - 날짜 : 두 날짜사이의 날수(DAYS) 반환
- SYSDATE, SYSTIMESTAMP 함수로 시스템의 날짜를 반환 받아 사용 가능
사용예)
CREATE TABLE TEMP05(
COL1 DATE,
COL2 DATE,
COL3 TIMESTAMP,
COL4 TIMESTAMP WITH TIME ZONE,
COL5 TIMESTAMP WITH LOCAL TIME ZONE
);
INSERT INTO TEMP05 VALUES(SYSDATE, SYSDATE-10, SYSTIMESTAMP,
SYSTIMESTAMP, SYSTIMESTAMP);
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS' -- 환경변수 변경
SELECT * FROM TEMP05;

사용 예) 키보드로 날짜를 입력 받아 요일을 출력하시오
ACCEPT P_DATE PROMPT '날짜입력(YYYYMMDD) : '
DECLARE
L_DATE DATE := TRUNC(TO_DATE(&P_DATE));
L_DAYS NUMBER := 0;
L_RES VARCHAR2(100);
BEGIN
L_DAYS:=L_DATE - TRUNC(TO_DATE('00010101')) - 1;
IF MOD(L_DAYS,7)=0 THEN L_RES:='일';
ELSIF MOD(L_DAYS,7)=1 THEN L_RES:='월';
ELSIF MOD(L_DAYS,7)=2 THEN L_RES:='화';
ELSIF MOD(L_DAYS,7)=3 THEN L_RES:='수';
ELSIF MOD(L_DAYS,7)=4 THEN L_RES:='목';
ELSIF MOD(L_DAYS,7)=5 THEN L_RES:='금';
ELSE L_RES:='토';
END IF;
DBMS_OUTPUT.PUT_LINE(&P_DATE||'는 '||L_RES||'요일입니다');
END;