데이터베이스(DB)/Oracle DB SQL - 뉴렉처 youtube 강의

6강~8강 - MEMBER 테이블 생성 / 오라클 데이터 형식

의그 2021. 9. 13. 21:34

DDL(CREATE / ALTER / DROP)

DML(INSERT / SELECT / UPDATE / DELETE) - CRUD

DCL(GRANT / REVOKE)

 

- 테이블 생성

세미콜론(;) 라인에서 Ctrl + Enter / 또는 실행할 범위 블록 지정 후 Ctrl + Enter

 

오라클 데이터 형식 #1 (문자 형식)

Oracle SQL Data Types
- Oracle Built-in Data Types
- ANSI, DB2, and SQL/DS Data Types
- User-Defined Types
- Oracle-Supplied Types
- Data Type Comparison Rules
- Data Conversion

- Oracle Built-in Data Types
 * Character(문자) 형식 / 'nEWlec', 'A', '148'
 * Numeric 형식 / 38, 3.85, 3.85F, 137
 * Date 형식 / '2013-02-09'
 * TIMESTAMP / '2021-06-01 10.38.29.00000'
 * LOB 형식

# Character 형식 : CHAR(3), VARCHAR2(3), NCHAR(3), NVARCHAR(3), LONG, CLOB, NCLOB
CHAR[(size [BYTE | CHAR])]    VARCHAR2(size [BYTE | CHAR])
size => 1byte 
CHAR은 고정 길이 형식이지만, VARCHAR2은 가변 길이 형식이다.
VARCHAR2는 CHAR보다 검색 속도가 느리다.
성별,핸드폰번호,이름,생일 등은 CHAR로 / ID, 비밀번호 등은 VARCHAR2로.

 

- 남성, 여성 2글자니깐 CHAR(2)로 선언한다?? 오류! -

GENDER      CHAR(2), --남성, 여성 -- 오류 발생

insert into member(gender) values('남성'); -- 최대 크기가 2바이트인데, '남성'은 6바이트이므로 오류

- 바이트 크기를 확인할 수 있는 'LENGTHB' -

SELECT LENGTHB('ab') FROM DUAL; --2
SELECT LENGTHB('한글') FROM DUAL; --6

 

GENDER      CHAR(2 CHAR) -- 2글자라는 의미. 오류는 나지 않지만 바람직하지 않음. 

GENDER      NCHAR(2) -- 공간도 절약되고 바람직함. 4바이트 차지.

 

데이터 형식 최적화 적용

NCHAR[(size)] : 전 세계 각국의 문자 표현 가능,  기본적으로 UTF8로 인코딩(3배 정도의 크기)
NVARCHAR2[(size)]

LONG
CLOB(대용량 텍스트 데이터 타입, 최대 4Gbyte)
NCLOB(대용량 텍스트 유니코드 데이터 타입(최대 4GByte)

 

오라클 데이터 형식 #2 (숫자 형식, 날짜 형식)

# Numeric 형식 -- NUMBER [ (p [, s]) ] 
-- A NUMBER value requires from 1 to 22 bytes.
-- The precision 'p' can range from 1 to 38.
-- The scale 's' can range from -84 to 127
NUMBER(4) --최대 4자로 이루어진 숫자
NUMBER(6,2) --소수점 2자리를 포함하는 최대 6자리의 숫자(소수점 둘쨰 자리에서 반올림)
NUMBER(6, -2) --소수점 -2자리에서 반올림하는 최대 6자리의 숫자
NUMBER --NUMBER(38,*) 디폴트 38
NUMBER(*,5) --NUMBER(38,5)

# Date 형식
DATA -- 4712 BC ~ 9999 AD (EX:01-JAN-99)
TIMESTAMP -- NLS_TIMESTAMP_FORMAT 파라미터에 명시된 값을 따름.
TIMESTAMP WITH TIME ZONE -- NLS_TIMESTAMP_TZ_FORMAT 파라미터에 명시된 값을 따름.
TIMESTAMP WITH LOCAL TIME ZONE -- NLS_TIMESTAMP_FORMAT 파라미터에 명시된 값을 따름.

 

=====

 

https://www.youtube.com/watch?v=qJP6bPTOIJA