파게로그
테이블 생성, Oracle DB 자료형 본문
CREATE
Oracle data type을 이용해야 한다.
CREATE TABLE MEMBER (
ID VARCHAR2(50),
PWD VARCHAR2(50),
NAME VARCHAR2(50),
GENDER VARCHAR2(50),
AGE NUMBER,
BIRTHDAY VARCHAR2(50),
PHONE VARCHAR2(50),
REGDATE DATE
);
세미콜론 위치에서 Ctrl + Enter로 해당 문장 실행 가능 또는 드래그로 범위 블록 실행 가능
Oracle SQL Data Types
• ANSI, DB2, and SQL/DS Data Types (표준 또는 다른 DB와의 호환)
• User-defined types
• Oracle-supplied types
• Data type comparision rules
• Data conversion
• Oracle Built-in Data Types
· Character: 'tiStory', 'ABC', '5714'
· Numeric: 6712, 3.14, 3.14F
· Date: '2021-02-22'
· TIMESTAMP: '2021-02-22 18.20.14.00000'
Character 형식
CHAR
· CHAR [(size [BYTE|CHAR])]
· size : 1 byte per 1 character
· ex: CHAR(50)
· 배열처럼 주소 계산해서 바로 데이터를 찾을 수 있다.
VARCHAR2 (Variable Character)
· VARCHAR2(size [BYTE | CHAR])
· 데이터를 구분자로 구분하기에 O(n)
· eg. VARCHAR2(100) (가변. 최대 100글자. 나머지 공간은 반환)
NCHAR (National Character)
· NCHAR [(size)}
· size : 2 or 3 bytes per 1 character
· 바이트 수는 AL16UTF16 인코딩 사이즈의 2배, UTF8 인코딩 사이즈의 3배까지 커질 수 있다
· eg. SELECT LENGTHB('한글') FROM DUAL; -- 6
DROP TABLE MEMBER;
CREATE TABLE MEMBER (
ID VARCHAR2(50),
PWD VARCHAR2(50),
NAME VARCHAR2(50),
GENDER CHAR(2), --남성, 여성
AGE NUMBER,
BIRTHDAY CHAR(10), --2000-01-23
PHONE CHAR(13), --010-1234-5678
REGDATE DATE
);
INSERT INTO MEMBER(GENDER) VALUES('남성');
명령의 14 행에서 시작하는 중 오류 발생 -
INSERT INTO MEMBER(GENDER) VALUES('남성')
오류 보고 -
ORA-12899: "BERRY"."MEMBER"."GENDER" 열에 대한 값이 너무 큼(실제: 6, 최대값: 2)
CHAR(6)을 하든지..
CHAR(2 CHAR): 2바이트 X 2글자가 됨. -> '남자' 가능 -> A;32ITF16 -- 3바이트 x 2 = 6바이트
그러나 바람직하지않다.
NCHAR(2)을 쓰는 것이 바람직. -> AL16UTF16-- 1글자를 2바이트로 표현 가능
NVARCHAR2
· NVARCHAR2(size)
· max size
4000 bytes or characters if MAX_STRING_SIZE = STANDARD
32767 bytes or characters if MAX_STRING_SIZE = EXTANDED
LONG
· 가변 길이 문자열
· 2GB-1 또는 2^31-1 바이트까지 포함
· 테이블에서 하나의 컬럼에만 LONG을 사용할 수 있음
CLOB
· 대용량 텍스트 데이터 타입(최대 4GB)
NCLOB
· 대용량 텍스트 유니코드 데이터 타입(최대 4GB)
Numeric 형식
NUMBER
· NUMBER [ (p [, s]) ]
· 1~22bytes
· precision p: 1~38
· scale s: -84~127
NUMBER(3) 최대 3자로 이루어진 숫자
NUMBER(5, 3) 소수점 3자리를 포함하는 최대 5자리 숫자(소수점 셋째자리에서 반올림)
NUMBER(5, -3) 소수점 -3자리에서 반올림하는 최대 5자리 숫자
NUMBER NUMBER(38, *)
NUMBER(*, 5) NUMBER(38, 5)
Date 형식 (기본적으로 ms 단위 숫자)
DATE
· 4712 B.C. ~ 9999 A.D.
· ex. 01-JAN-99
TIMESTAMP
NLS_TIMESTAMP_FORMAT 파라미터에 명시된 값을 따름
TIMESTAMP WITH ZONE
NLS_TIMESTAMP_TZ_FORMAT 파라미터에 명시된 값을 따름
TIMESTAMP WITH LOCAL TIME ZONE
NLS_TIMESTAMP_FORMAT 파라미터에 명시된 값을 따름
SELECT * FROM NLS_DATABASE_PARAMETERS
LOB 형식
CLOB
· 문자형 대용량 객체 고정길이와 가변길이 문자집합 지원
NCLOB
· 유니코드를 지원하는 문자형 대용량 객체
BLOB
· 이진형 대용량 객체
BFILE
· 대용량 이진 파일에 대한 위치, 이름 저장
'콤퓨타 왕기초 > Oracle DB' 카테고리의 다른 글
TRANSACTION, COMMIT, ROLLBACK (0) | 2021.03.12 |
---|---|
테이블 수정 (0) | 2021.02.23 |
오라클 계정 (0) | 2021.02.22 |
오라클 데이터베이스 기본 (0) | 2021.02.20 |
큰 그림 (0) | 2021.02.20 |