관계형 데이터베이스
- 변수라는 개념이 없다. > SQL은 프로그래밍 언어가 아니다.
- SQL은 대화형 언어이다. > DB와 대화를 목적으로 하는 언어
- 자료형은 데이터를 저장하는 규칙으로 쓰이며, 테이블 정의할 때 사용된다(컬럼의 자료형 정의)
ANSI-SQL 자료형 - 오라클 자료형
1. 숫자형
a. number
- (유효자리)39자리 이하의 숫자를 표현하는 자료형
- 12345678901234567890123456789012345678 > 38자리
- 5~22byte (가변적)
- 1x10^-130 ~ 9.9999x10^125
- number : 정수 & 실수
- number(precision) : 전체 자릿수. 정수로 저장이 된다.(소수는 반올림되어 저장)
- number(precision, scale) : 전체 자릿수, 소수이하 자릿수. 실수 저장 가능
숫자형 예제 코드
CREATE table tblType (
num number
num number(3) -- 범위 : -999 ~ 999 + 정수
num number(4,2) -- 범위 : -99.99 ~ 99.99 > 실수자리 포함 전체 자리
);
INSERT into tblType (num) values (100); --정수 리터럴
INSERT into tblType (num) values (3.14); --실수 리터럴
INSERT into tblType (num) values (3.99); --반올림o
2. 문자형
- 문자열(문자+문자열)
- char vs nchar : n의 의미?
- char vs varchar : var의 의미? > 저장 공간 차이
var : 가변크기로 할당된 공간보다 작은 데이터가 들어왔을 때, 남은 공간을 버린다. ex) 10바이트 할당된 공간에 3바이트 데이터가 들어오면 7바이트는 버린다.
a. char
- 고정 자릿수 문자열 > 공간(컬럼)의 크기가 불변
- char(n) : 최대 n바이트까지 문자열
- char(n char) : 최대 10글자까지의 문자열
- 최소 크기 : 1바이트
- 최대 크기 : 2,000바이트
b. nchar
> 활용성이 많이 떨어지므로 존재정도만 알기
- n : national > 오라클 인코딩과 상관없이 해당 컬럼을 UTF-16 동작하게 설정한다.
- char(n) : 최대 n바이트까지 문자열
- 최소 크기 : 1바이트
- 최대 크기 : 2,000바이트
c. varchar2
- 가변 자릿수 문자열 > 공간(컬럼)의 크기가 가변
- varchar2(n): 최대 n바이트 문자열
- varchar2(n char)
- 최소 크기 : 1바이트
- 최대 크기 : 4,000바이트
d. nvarchar2
- n : national > 오라클 인코딩과 상관없이 해당 컬럼을 UTF-16 동작하게
- 가변 자릿수 문자열 > 공간(컬럼)의 크기가 가변
- varchar2(n): 최대 n자리 문자열
- 최소 크기 : 1바이트
- 최대 크기 : 2,000바이트
e. clob
, nclob
- 대용량 텍스트
- character large object
- 최대 128TB 저장
- 참조형 > 접근 속도가 느리다
<예전>
- 고정 자릿수 문자열 > 주민등록번호, 전화번호 > char
- 가변 자릿수 문자열 > 주소, 자기소개 > varchar2
<현재> varchar2로 통일
문자형 예제 코드
CREATE table tblType (
--txt char(10) -- 범위 : 최대 10바이트까지의 문자열 / -txt char(10 byte) byte가 생략
--txt char(10 char) -- 범위 : 최대 10글자까지의 문자열(잘 쓰지않는다.)
--txt varchar2(10)
--txt1 char(10),
--txt2 varchar2(10)
INSERT into tblType (txt) values (100);
INSERT into tblType (txt) values ('홍길동');
--오라클 인코딩 : UTF-8 > 영어(1바이트), 한글(3바이트)
--INSERT into tblType (txt) values ('홍길동입니다.'); --(actual: 19, maximum: 10)
);
3. 날짜/시간형
a. date
> 가장 많이 사용됨
- 년월일시분초
- 7byte
- 기원전 4712년 1월 1일 ~ 9999년 12월 31일
b. timestamp
c. interval
4. 이진 데이터형
- 비 텍스트 데이터
- 이미지, 영상, 음악 등등
- 잘 사용하지 않는다.
ex) 게시판-첨부파일, 회원가입(사진) > 파일명만 (문자열)저장, 첨부파일은 폴더에 따로 저장
a. blob
- 최대 128TB 저장
자료형 별 잘 쓰는 자료형
- 숫자 >
number
- 문자 >
varchar2
+ char
- 날짜 >
date