SQL Serverのデータ型の完全ガイド – 基本から応用まで

SQL Serverでは、データベースに格納するデータの種類を決定するために「データ型」を使用します。

適切なデータ型を選択することで、ストレージの最適化、パフォーマンスの向上、データの整合性を確保することが可能になります。

本記事では、SQL Serverの代表的なデータ型を数値型、文字列型、日付型、その他のデータ型に分類して解説します。

また、最後には理解を深めるための演習問題とその解答例も紹介します。


数値型のデータ型

SQL Serverには、整数や浮動小数点数を扱うための数値型があります。

必要に応じて、メモリ消費や計算の精度を考慮して選択しましょう。

データ型説明範囲 (※主要な範囲のみ記載)
INT32ビットの整数型-2,147,483,648 ~ 2,147,483,647
BIGINT64ビットの整数型約 -9京 ~ 9京
SMALLINT16ビットの整数型-32,768 ~ 32,767
TINYINT8ビットの整数型0 ~ 255
DECIMAL (NUMERIC)固定小数点数桁数と小数点以下の桁数を指定
FLOAT浮動小数点数(8バイト)±1.79E+308までの数値
REAL浮動小数点数(4バイト)±3.40E+38までの数値

使用例

  • INT型は、顧客IDや注文番号など、整数のID管理に最適です。
  • DECIMAL型は、金融系システムで誤差を許さない通貨計算に使用されます。

注意:FLOAT型は浮動小数点のため、誤差が生じることがあります。


文字列型のデータ型

文字列を扱う場合、SQL Serverでは以下の文字列型を使用します。

固定長か可変長か、文字エンコーディングが必要かを考慮して選択しましょう。

データ型説明サイズ
CHAR(n)固定長の文字列 (n文字)最大8,000文字
VARCHAR(n)可変長の文字列 (最大n文字)最大8,000文字
VARCHAR(MAX)最大2GBの可変長文字列動的データに使用
NCHAR(n)固定長のUnicode文字列最大4,000文字
NVARCHAR(n)可変長のUnicode文字列最大4,000文字
NVARCHAR(MAX)最大2GBのUnicode文字列大量のテキストに使用

使用例

  • CHARは、郵便番号や国コードなどの固定長のデータに適しています。
  • VARCHARは、ユーザ名や住所など、長さが変わる文字列に便利です。
  • NVARCHARは、マルチバイト文字(例:中国語、日本語)を含む場合に推奨されます。

注意:CHARやNCHARを使う場合、指定した長さより短い文字列が入ると空白で埋められます。


日付型のデータ型

日付や時間を扱うためのデータ型は、イベントの記録や履歴の管理に使用されます。

データ型説明範囲
DATE年月日を格納0001-01-01 ~ 9999-12-31
DATETIME年月日と時間を格納1753-01-01 ~ 9999-12-31
DATETIME2精度の高い年月日と時間を格納0001-01-01 ~ 9999-12-31
TIME時間のみを格納00:00:00 ~ 23:59:59.9999999
SMALLDATETIME年月日と時間を低精度で格納1900-01-01 ~ 2079-06-06

使用例

  • DATE型は、誕生日や登録日を管理する場合に適しています。
  • DATETIME型は、正確な日時が必要なログ情報に使用します。

その他のデータ型

SQL Serverでは、数値や文字列、日付以外にも特殊な用途のためのデータ型が用意されています。

データ型説明
BIT真偽値(0または1)
UNIQUEIDENTIFIERグローバル一意識別子 (GUID)
BINARY固定長のバイナリデータ
VARBINARY可変長のバイナリデータ
XMLXML形式のデータを格納
JSONJSON形式のデータを扱える(SQL Server 2016以降)

使用例

  • BIT型は、フラグ(例:IsActiveのような有効・無効の管理)に使用されます。
  • UNIQUEIDENTIFIERは、UUIDのように他のデータと重複しない一意な識別子として役立ちます。

演習問題

問題1: 適切なデータ型を選択

以下のテーブルを作成する場合、適切なデータ型を選びなさい。

  1. 顧客ID:整数型で、数百万のデータが格納される予定
  2. 顧客名:可変長の文字列、最大50文字
  3. 登録日:年月日のみを格納
  4. 注文金額:少数第2位までの金額を格納

問題2: SQL文の作成

上記の仕様に従って、SQL Serverで次のテーブルを作成するSQL文を書いてください。

  • テーブル名:Customers
  • カラム:
    • CustomerID
    • CustomerName
    • RegistrationDate
    • OrderAmount

解答例

解答1

  1. CustomerID:BIGINT(数百万件のデータに対応するため、BIGINTを使用)
  2. CustomerName:VARCHAR(50)(可変長文字列で最大50文字)
  3. RegistrationDate:DATE(年月日のみを格納)
  4. OrderAmount:DECIMAL(10, 2)(通貨の計算のため、少数第2位まで保持)

解答2: SQL文

CREATE TABLE Customers (
    CustomerID BIGINT PRIMARY KEY,
    CustomerName VARCHAR(50),
    RegistrationDate DATE,
    OrderAmount DECIMAL(10, 2)
);

まとめ

本記事では、SQL Serverで使用される主要なデータ型をカテゴリごとに紹介しました。

適切なデータ型を選ぶことは、システムのパフォーマンスとデータの正確性に直結します。

また、演習問題を通して、基本的なデータ型の選定とSQL文の作成手順を学びました。

SQL Serverのデータ型についてさらに理解を深めるためには、実際の業務やプロジェクトで試してみることが効果的です。

データ型を正しく使いこなして、効率的なデータベース管理を目指しましょう。