- 문자열 자료형
- char(n [byte|char])
- 고정길이 문자열 저장
- 2000byte까지 저장 가능
- 한글 한 글자는 3byte 666글자 저장 가능, 영어 한 글자는 1byte 2000글자 저장 가능
- 기억공간이 남으면 왼쪽에 공백 삽입
- [byte|char]
- n은 기억공간의 크기를 나타냄
- byte는 nbyte를 의미하며 아무것도 작성하지 않을 시 기본으로 byte가 설정된다
- char(20) == char(20 byte)
- char는 n글자를 의미하며 1 글자당 2byte로 설정된다.
- char(5 char) =>10byte의 저장 공간이 생김
- char는 사용하지 않는 것을 추천
- varchar(n [byte|char]), varchar2(n [byte|char])
- 가변 길이 문자열 저장
- 4000byte까지 저장 가능
- 정의된 데이터가 확보된 기억공간 보다 적으면 남은 공간은 시스템이 반납
- 사이즈가 입력된 데이터의 사이즈에 맞게 수정됨(설정한 n값 안에서)
- varchar와 varchar2는 기능적으로 동일하지만 오라클에서는 varchar2 사용을 권장
- long
- 가변 길이 문자열 저장
- 한 테이블에 하나만 사용 가능
- clob로 대체
- 사용 영역의 제한
- Selec문의 Selec절, Update문의 Set절, Insert문의 Values절에만 사용 가능
- clob
- Charactor Large Object의 준말
- 대용량 문자 자료형
- 한 칼럼이 4GB
- 문자열에 관련된 함수의 제약이 있다
- 가변 기억 공간
- long과 다르게 한 테이블에 사용할 수 있는 칼럼 개수는 제한이 없다
- 일부 기능은 DBMS_LOB API의 지원을 받아야 한다
- nchar
- 오라클은 기본적으로 아스키코드로 인코딩을 하는데 한글 등 UTF-8, 16을 사용해야 할 때 사용
- 그냥 char를 사용해도 된다.
- 숫자 자료형
- number[(정밀도)|*[, 스케일]]
- 숫자의 크기를 입력해줄 필요가 없다
- 정밀도 : 전체 자릿수(1~38)
- 스케일 : 소수점 이하의 자릿수
- number(5, 2) => 전체 5자리 중 소수점 이하가 2자리이고 이곳에는 소수점 3자리에서 반올림된 값이 저장. 정수 부분의 자리는 3자리
- 정밀도 > 스케일 => 일반적인 케이스
- 정밀도 < 스케일 => 매우 희귀한 케이스
- 날짜 자료형
- date
- 년, 월, 일, 시, 분, 초 자료를 저장하기 위한 자료형
- 년월일과 시분초로 나누어지며 시분초를 안 쓰면 0시 0분 0초가 됨
- +와 -연산의 대상
- 정수를 더하거나 뺄 때는 day가 변함
- day - day를 하면 두 일자의 차이가 나옴
- sysdate = 시스템에서 제공하는 날짜 정보(우측 하단의 시간과 동일)
- timestamp
- 시간 대역(time zone) 정보를 포함한 날짜 정보를 저장
- 10억 분의 1초 단위 사용
- 종류
- timestamp : 시간대 정보 없음
- timestamp with local time zone : 서버가 설치된 시간대 정보로 보통 timestamp와 동일
- timestamp with time zone : 시간대 정보(대륙명/도시명) 제공
- 기타 자료형
- 2진 자료형 : 2진 데이터를 저장하기 위한 자료형 / 아래 자료형이 거의 비슷하다
- raw
- 상대적으로 작은 2진 자료 저장
- 인덱스 처리 가능
- 최대 2000byte까지 저장 가능
- 16진수, 2진수 저장 가능
- raw(size)
- bfile(가장 많이 사용됨)
- 대상이 되는 2진 자료는 데이터베이스 밖에 저장하고 DB에는 경로와 파일명만 저장
- 4GB까지 저장 가능
- 파일명은 영어 권장
- 디렉터리(폴더)의 별칭은 30byte, 파일명은 256byte까지 사용 가능하다
- 디렉터리 객체를 생성해 줘야 하며 위치 값은 절대 경로로 입력해 준다.
- blob
- 대상이 되는 2진 자료가 테이블 내부에 저장된다
- 4GB까지 저장 가능
- 일반적인 방법으로는 저장이 불가능하고(Insert 사용 불가), declare > begin > end를 사용해서 데이터를 저장해준다.