Basic Data Types - 기본적인 데이터 타입들


당신이 이미 알고 있듯이, SQL은 테이블 내에서 조직된 서로 다른 데이터 타입들과 일하기 위해 사용되는 언어입니다.

대개, 테이블에서의 같은 컬럼의 데이터 값은 같은 의미와 타입을 가집니다.

예를 들어, Car 테이블은 이렇게 생겼습니다.

manufacture_year color horsepower price electricity ...
2018 red 283 34.990 TRUE ...
2019 black 313 50.000 FALSE ...
... ... ... ... ... ...

manufacture year 컬럼의 값은 Integer 이며, price의 값은 Decimal(소수) 이며, electricityBoolean 인 것을 볼 수 있습니다.

SQL 데이터베이스들은 보통 데이터베이스 테이블의 각 컬럼에 이름데이터 타입을 가집니다.

컬럼의 데이터 타입 은 컬럼에 저장할 수 있는 값의 집합을 제한시키며, 할 수 있는 운영 행동을 정의했습니다.


ANSI (America National Standard Institute) 표준은 조금 복잡한 데이터 타입의 집합을 정의했습니다.

게다가, 데이터베이스 공급 업체는 대개 그들의 데이터 옵션을 넣는데, 이것은 표준이 아니었습니다.

이 주제에서는, 우리는 가장 간단한 데이터 타입의 하위 집합을 고려 할 겁니다.

Example : INTEGER, FLOAT, DECIMAL, VARCHAR and BOOLEAN


Numerical Data Types - 수와 관련된 데이터 타입들


INTEGER은 수학적 데이터 타입인데, 매우 정확한 수의 일부 영역을 표현합니다. (약 -21억 ~ +21억).

INTEGER 타입은 숫자를 세거나, 숫자 식별자 그리고 당신이 상상하는 크기 영역의 비즈니스 값을 다루는 데 좋습니다.


우리의 일상생활에서, 우리는 소수를 꽤 많이 마주합니다.

Example : 체온을 잴 때 - (36.6도) , 소중한 자산을 셀 때 ($103050.79).

SQL 은 특별한 데이터 타입을 제공하기도 합니다 --> DECIMAL(precision, scale).


이 타입은 두 개의 파라미터를 가지고 있습니다. : precision and scale.

  • Scale 은 오른쪽에 올 소수점의 숫자 개수입니다.
  • Precision 은 숫자의 모든 숫자 개수입니다.
 |    --------| --> scale - 8개
  731.12787000
 |--- --------| --> precision - 11개

 DECIMAL(11, 8)

FLOAT 부동 소수점 데이터 타입에 사용되는 데이터 타입입니다.

FLOAT 데이터 타입으로 아주 크거나 아주 작은 숫자를 저장 할 수 있습니다.

또한, 매우 빠른 연산이 필요한 곳에 사용되기도 합니다.

FLOAT 데이터 타입은 n이라는 선택적인 파라미터를 가지고 있는데, 이는 저장 할 숫자 사이즈를 상세히 할 수 있습니다. (1 ~ 53).

반면에, 가끔씩 SQL에서 REAL이라는 데이터 타입을 마주칠 수 있습니다.

REALFLOAT(24) 이거나, FLOAT에 근사 한 데이터 타입입니다.


Text - 글


당연하게도, 숫자 데이터 외 다른 것을 저장하고 싶을 수도 있습니다.

SQL은 텍스트 데이터를 표현하기 위해 설계 된 데이터 타입들을 지원합니다.

꽤 만능이며, 기초적입니다. - VARCHAR(n).


이 타입은 문자를 나타내는 심볼인데, n을 넘지 않는 다양한 길이를 의미합니다.

예를 들어, VARCHAT(5) 타입에는 apple, plum 그리고 peach가 들어갈 수 있습니다.

orange 그리고 banana 스트링은 길이 제한을 초과하고, 시스템이 끝을 자르거나, 에러를 생성 할 것 입니다.


Boolean - 참 또는 거짓


BOOLEAN 타입은 boolean 로직 값을 표현합니다. : TRUE 이거나, FALSE.

이 간단한 데이터 타입은 어떠한 속성에도 활용 할 수 있는데,

예를 들어, 고객이 경쟁 사이트에 방문했는지 를 예시로 들 수 있습니다.


Who Defines Types and How? - 누가 데이터 타입을 어떻게 정의하는가?


데이터베이스 유저로서, 알맞게 조직하기 위해 활용하는 테이블 컬럼의 타입에 대해서 알아야 합니다.

그러나, 소프트웨어 엔지니어로서, 당신은 어떻게 테이블을 생성하고 컬럼 타입을 정의하는 것에 대해서 알아야 합니다.


다섯 개의 컬럼들과 함께 census라는 테이블을 정의하는 SQL 쿼리 예제를 공부 해 봅시다. :

  • id 의 타입은 INTEGER
  • name의 타입은 VARCHAR(20)
  • birth_place_latitude 타입은 REAL
  • year_income 타입은 DECIMAL(20, 2)
  • is_parent 타입은 BOOLEAN
CREATE TABLE census
(
    id                   INTEGER,
    name                 VARCHAR(20),
    birth_place_latitude REAL,
    year_income          DECIMAL(20, 2),
    is_parent            BOOLEAN
);

하나의 패턴이 보일 겁니다.

CREATE TABLE table_name (
    column_name_1   column_type_1,
    ...,
    column_name_2   column_type_2
);

Conclustion - 결론


데이터는 매우 다양 할 겁니다.

그리고 SQL은 이러한 다양성을 표현하기 위해 확장적인 데이터 타입 집합을 지원합니다.

우리는 기초적인 데이터 타입의 기초 하위 집합에 대해 배웠습니다. 하지만, 아직 더 많은 주제가 남아있습니다.

  • Type Casting
  • Compound Types
  • Special Types for Numeric Data
  • Text
  • Timestamps
  • 등등...