ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터베이스 데이터 유형 및 cahr 와 varchar 비교
    카테고리 없음 2019. 8. 28. 19:59

    데이터 유형은 데이터베이스의 테이블에 특정 자료를 입력할 때, 그 자료를 받아들일 공간을 자료의 유형별로 나누는 기준이다. 따라서 선언한 유형이 아닌 다른 종류의 데이터가 들어오려고 하면 데이터베이스는 에러를 발생시킨다.

    데이터베이스의 데이터 유형은 oracle , mysql 등 벤더별로 다양한 형태로 제공된다.

    숫자타입을 예로 NUMERIC type 의 하위 개념으로 NUMERIC, DECIMAL, DEC, SMALLINT, INTEGER, INT, BIGINT, FLOAT, REAL, DOUBLE 등이 있다.
    하지만 oracle은 숫자타입에 대해서 number 한가지 숫자타입의 데이터 유형만 지원한다.

     

     데이터 유형

    설 명 

    CHAR(s) 

    - 고정 길이 문자열 정보

    - s는 기본 길이 1바이트, 최대 길이 Oracle 2000바이트 SQL Server 8000바이트 

    - s만큼 최대 길이를 갖고 고정 길이를 가지고 있으므로 할당도니 변수 값의 길이가 s보다 작을 경우에는 그 차이 길이만큼 공간으로 채워진다.

    VARCHAR(2) 

    - CHARACTER VARYING의 약자로 가변 길이 문자열 정보(Oracle은 VARCHAR2 로 표현, SQL Server는 VARCHAR로 표현)

    - s는 최소 길이 1바이트, 최대 길이 Oracle 4000바이트, SQL Server 8000 바이트

    - s만큼의 최대 길이를 갖지만 가변 길이로 조정이 되기 때문에 할당된 변수값의 바이트만 적용된다. 

    NUMERIC 

    - 정수, 실수 등 숫자 정보 (Oracle은 NUMBER로, SQL Server는 다양한 숫자 타입 지원)

    - Oracle은 처음에 전체 자리 수를 지정하고, 그 다음 소수 부분의 자리 수를 지정한다.

    ex> 정수 부분이 6자리이고 소수점 부분이 2자리인 경우 NUMBER(8,2) 

    DATE

    - 날짜와 시각 정보

    - Oracle은 1초 단위, SQL Server는 3.33ms(millisecond) 단위 관리 


    char 와 varchar의 비교

     

    문자의 경우 char와 varchar 의 차이는 저장 영역과 문자열의 비교방법이다

    varchar유형은 가변 길이이므로 필요한 영역은 실제 데이터 크기뿐이다. 그렇기 때문에 길이가 다양한 컬럼과, 정의된 길이와 실제 데이터 길이에 차이가 있는 컬럼에 적절하다.

    저장측면에서도 char유형보다 작은 영역에 저장할 수 있으므로 장점이 있다.

     

    비교 방법에서도 차이가 있다.

    CHAR 에서는 문자열을 비교할 때 공백을 채워서 비교하는 방법을 사용한다. CHAR(8) 이고 'AA'가 저장되어 있다면, 'AA' 뒤에 공백 6자리를 붙여 8자리로 비교하는 것이다.

    따라서  'AA' = 'AA  ' 은 실제로 'AA      ' = 'AA      ' 가 되어 같다는 결과가 나온다.

     

    반면에 VARCHAR 에서는 공백도 하나의 문자로 취급하므로 끝에 공백이 들어가면 다른 문자로 판단한다.

    같은 예로 들면 'AA' != 'AA '  로 공백이 있어 서로 다른 문자로 판단한다.

     

    출처 : https://hyeonstorage.tistory.com/290

    댓글

Designed by Tistory.