데이터 타입(DataType)이란컬럼이 저장되는 데이터 유형을 말하며, 오라클에서는 기본적으로 제공되는 기본 데이터 타입(원시 데이터 타입)과 사용자 정의 데이터 타입으로 구분할 수 있다. 사용자 정의 타입이란 사용자가 직접 기본 데이터 타입을 혼합해 만들 수 있는 타입이다. 1. 문자 데이터 타입 문자나 문자열 데이터는 문자형 데이터에 속하며, 오라클에서 제공하는 문자형은 다음과 같다.
특정 컬럼을 VARCHAR2(10)으로 선언하면, 10byte까지 데이터를 입력할 수 있다. 그런데 이 컬럼에 'abc'라고 세 글자만 입력하면 실제 컬럼 길이는 3byte가 된다. 반면 고정길이 CHAR(10)으로 만든 후 'abc'라고 입력하면 세 문자만 입력됐더라도 이 컬럼 길이는 10byte가 된다.
출력결과* 컬럼 타입을 선언할 때 크기(숫자)만 명시하면 디폴트 값인 byte가 적용된다. 영어에서 한 문자는 1byte를, 한글은 2byte(DB설정에 따라 3byte)를 차지한다. LENGTH : 컬럼 길이 반환 LENGTHB : 컬럼의 byte 수 반환 2. 숫자 데이터 타입 숫자 타입은 총 4가지가 있긴 하지만 NUMBER형만 사용할 때가 많다. 다른 DBMS는 INTEGER와 같은 정수형, DECIMAL과 같은 실수형을 제공한다. 오라클도 이런 타입으로 컬럼을 생성할 수 있지만 내부적으로는 모두 NUMBER형으로 변환되어 생성된다.
입력값 : 123.54
출력결과NUMBER형은 크기를 명시하지 않거나 '*'를 명시하면 디폴트 값인 38이 적용, 최대 크기인 22byte를 차지한다. 그리고 NUMBER(p,s) 형식으로 크기를 지정할 수 있는데, p(precision, 정밀도)는 최대 유효숫자 자리수를, s(scale)는 소수점 기준 자릿수를 의미한다. ❶ p는 소수점 기준 모든 유효숫자 자릿수를 의미한다. 만약 p에 명시한 것보다 큰 숫자값을 입력하면 오류가 발생한다. ❷ s가 양수면 소수점 이하, 음수이면 소수점 이상(소수점 기준 왼쪽) 유효숫자 자릿수를 나타낸다. ❸ s에 명시한 숫자 이상의 숫자를 입력하면, s에 명시한 숫자로 반올림 처리한다. ❹ s가 음수이면 소수점 기준 왼쪽 자릿수만큼 반올림한다. ❺ s가 p보다 크면 p는 소수점 이하 유효숫자 자릿수를 의미한다. 3. 날짜 데이터 타입 가장 일반적이고 많이 사용하는 날짜 데이터 타입은 DATE이며 연월일시분초까지 입력 가능하다. TIMESTAMP는 초 단위를 더 세부적으로 입력할 수 있다.
출력결과4. LOB 데이터 타입 LOB는 'Large OBject'의 약자로 대용량 데이터를 저장할 수 있는 데이터 타입이다.
일반적인 정형 데이터(문자, 숫자, 날짜 등 구조화된 데이터)에 비해 텍스트, 그래픽, 이미지, 사운드 등의 비정형 데이터는 그 크기가 매우 큰데, 이런 데이터를 저장하는데에 LOB타입을 사용한다. 문자형 대용량 데이터는 CLOB이나 NCLOB, 나머지 그래픽, 이미지, 동영상 등의 데이터는 BLOB를 사용한다. BFILE은 실제 이진 파일이 아닌 데이터베이스 외부에 있는 파일에 대한 로케이터(해당 파일을 가리키는 포인터)를 저장하며, 실제 파일을 수정할 수는 없고 읽기만 가능하다. NULL NULL은 '값이 없음'을 의미하며 테이블을 생성할 때 컬럼 속성에 기술한다. 디폴트 값이 NULL이므로 별도로 지정하지 않으면 해당 컬럼은 NULL을 허용하게 된다. NULL을 허용하지 않으려면 NOT NULL 구문을 명시해야 한다. NULL 허용이란 해당 컬럼에 값을 넣지 않아도 된다는 의미이며, NOT NULL로 명시한 컬럼에 데이터를 넣지 않으면 해당 로우 INSERT 자체가 불가능하다. SQL문이나 PL/SQL 코드를 작성할 때 개발자가 가장 하기 쉬운 실수 중의 하나가 NULL 처리이다. DBMS 종류에 따라 NULL 처리가 조금씩 달라 여러 DBMS를 사용하는 개발자라면 혼동하기 쉽다. 출처 및 참고 : https://thebook.io/006696/ |