Oracle SQL 강좌
오라클 데이터 타입 39 12 99,999+

by 김정식 DATA TYPE VARCHAR2 CHAR NUMBER LONG CLOB [2002.05.19]


- 관계형 데이터베이스에서 제공하는 데이터 타입은 대개 CHAR, VARCAHR2, NUMBER, DATE, LONG, RAW, LONG RAW, ROWID 타입으로 분류한다.

- 원하는 정보를 가장 효율적으로 처리하기 위해서 적절한 데이터 타입의 선정이 필요 하다.

- 적절하지 못한 데이터 타입은의 선정은 수행속도를 나쁘게 하고 불필요한 자원을 낭비를 가져온다.

VARCHAR2 타입

  • - 가변길이 문자형 데이터 타입
  • - 최대 길이 : 2000 바이트(반드시 길이 지정)
  • - 다른 타입에 비해 제한이 적다
  • - 일부만 입력시 뒷부분은 NULL
  • - 입력한 값의 뒷부분에 있는 BLANK도 같이 입력
  • - 전혀 값을 주지 않으면 NULL 상태 입력
  • - 지정된 길이보다 길면 입력시 에러 발생
  • - 컬럼 길이의 편차가 심한 경우, NULL 로 입력되는 경우가 많은 경우 VARCHAR2 사용

NUMBER 타입

  • - 숫자형 데이타 타입, 음수, ZERO, 양수 저장
  • - 전체 자리수는 38자리를 넘을 수 없다
  • - 소수점이 지정되지 않았을 때 소수점이 입력되거나, 지정된 소수점자리 이상 입력되면 반올림되어 저장
  • - 지정한 정수 자리수 이상 입력시 에러 발생
  • - 연산이 필요한 컬럼은 NUMBER타입으로 지정한다.
  • - NUMBER(p,s) 로 지정시 p는 s의 자리수를 포함한 길이므로 감안하여 P의 자리수를 결정
  • - NUMBER 타입은 항상 가변길이므로 충분하게 지정할 것

DATE 타입

  • - 일자와 시간을 저장하는 날짜형 타입
  • - 일자나 시간의 연산이 빈번한 경우 사용
  • - 포함정보 : 세기, 년도, 월, 일, 시간, 분, 초
  • - NLS_DATE_FORMAT을 이용하여 국가별 특수성을 해결
  • - 특별히 시간을 지정하지 않으면 00:00:00로 입력 됨
  • - 특별히 일자를 지정하지 않았다면 현재월의 1일로 지정 됨
  • - SYSDATE는 현재일과 시간을 제공

LONG 타입

  • - 2기가 바이트의 가변길이 문자 저장
  • - VARCHAR2와 유사한 특징을 가진나 아래와 같은 제한사항이 있다.
    • * 하나의 테이블에 하나의 LONG 타입만 사용 가능
    • * (NOT) NULL을 제외한 다른 제약 조건은 지정할 수 없다
    • * 인덱스를 만들 수 없다
    • * PROCEDUREStored FUNCTION에서 LONG 타입의 변수를 받을 수 없다
    • * Stored FUNCTIONLONG 타입 출력불가
    • * SELECT문 내에서 WHERE, GROUP BY, ORDER BY, CONNECT BY, DISTINCT불가
    • * SQL Function(SUBSTR,REPLACE,..) 사용 불가
    • * CREATE TABLE .. AS SELECT.. 사용불가

RAW, LONG RAW, ROWID 타입

  • - 그래픽 IMAGE 나 디지탈 SOUND를 저장
  • - HEXA-DECIMAL 형태로 RETURN
  • - RAWVARCHAR2와 유사
  • - LONG RAWLONG과 유사하나 아래와 같은 제한사항이 있다.
    • * 저장과 추출만 가능하고, DATA를 가공할 수 없다.
    • * LONG RAWLONG과 같은 제한 사항을 같는다.

참고자료

참고링크

- 강좌 URL : http://www.gurubee.net/lecture/1380

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by 吳君 [2005.06.18 17:07:23]
NLS 데이터 형이 뭐죠?

by 지나가다 [2005.10.11 12:01:10]
SELECT * FROM DICT
WHERE COMMENTS LIKE '%NLS%'
결과
NLS_DATABASE_PARAMETERS
NLS_INSTANCE_PARAMETERS
NLS_SESSION_PARAMETERS
GV$NLS_PARAMETERS
GV$NLS_VALID_VALUES
V$NLS_PARAMETERS
V$NLS_VALID_VALUES

by smile [2005.11.09 20:42:28]
퍼갑니다. ^^

by puhaha [2006.03.30 16:16:14]
내셔널 랭기지 시스템 이랍니다~

by onyx [2006.08.23 17:42:43]
퍼갈께욤~ 좋은내용이네욤

by 쌩쌩이엄마 [2006.11.29 14:16:38]
MS만 해봤는데 많이 다르네요 ^^;;

by 姜君 [2007.03.06 16:55:42]
LOB type을 사용하는 방법을 좀더 자세히 알고 싶어요
object지원이라 되어있는데 String같은 자바의 오브젝트르 그대로 저장할 수 있는건가요?

by 마인드힐링 [2008.04.06 21:34:37]
date형 쓰면 1968-01-09 이렇게 년 표시를 하고 싶은대
68-01-09 이렇게 나오내요 어떻게 하면 다 표기 할수 있나요?

by 왕초짜 [2008.11.17 14:34:17]
YYYY-MM-DD 이런식으로 하시면 년월일로 나와용 ^^

by 강동호 [2010.03.19 12:11:39]
DATE 컬럼 00:00:00 일 경우 시간포함되지 않습니다.
서버에 리턴될때도 시,분,초 들어가지 않구요~
00:00:01 이상일 경우에만 들어감

by 서병준 [2012.10.08 11:40:30]
잘보았습니다~

by 지금이순간 [2015.10.08 13:43:00]

감사합니다~

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입