SQL Serverでは、データベースに格納するデータの種類を決定するために「データ型」を使用します。
適切なデータ型を選択することで、ストレージの最適化、パフォーマンスの向上、データの整合性を確保することが可能になります。
本記事では、SQL Serverの代表的なデータ型を数値型、文字列型、日付型、その他のデータ型に分類して解説します。
また、最後には理解を深めるための演習問題とその解答例も紹介します。
数値型のデータ型
SQL Serverには、整数や浮動小数点数を扱うための数値型があります。
必要に応じて、メモリ消費や計算の精度を考慮して選択しましょう。
データ型 | 説明 | 範囲 (※主要な範囲のみ記載) |
---|---|---|
INT | 32ビットの整数型 | -2,147,483,648 ~ 2,147,483,647 |
BIGINT | 64ビットの整数型 | 約 -9京 ~ 9京 |
SMALLINT | 16ビットの整数型 | -32,768 ~ 32,767 |
TINYINT | 8ビットの整数型 | 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 | 可変長のバイナリデータ |
XML | XML形式のデータを格納 |
JSON | JSON形式のデータを扱える(SQL Server 2016以降) |
使用例
- BIT型は、フラグ(例:IsActiveのような有効・無効の管理)に使用されます。
- UNIQUEIDENTIFIERは、UUIDのように他のデータと重複しない一意な識別子として役立ちます。
演習問題
問題1: 適切なデータ型を選択
以下のテーブルを作成する場合、適切なデータ型を選びなさい。
- 顧客ID:整数型で、数百万のデータが格納される予定
- 顧客名:可変長の文字列、最大50文字
- 登録日:年月日のみを格納
- 注文金額:少数第2位までの金額を格納
問題2: SQL文の作成
上記の仕様に従って、SQL Serverで次のテーブルを作成するSQL文を書いてください。
- テーブル名:Customers
- カラム:
- CustomerID
- CustomerName
- RegistrationDate
- OrderAmount
解答例
解答1
- CustomerID:BIGINT(数百万件のデータに対応するため、
BIGINT
を使用) - CustomerName:VARCHAR(50)(可変長文字列で最大50文字)
- RegistrationDate:DATE(年月日のみを格納)
- 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のデータ型についてさらに理解を深めるためには、実際の業務やプロジェクトで試してみることが効果的です。
データ型を正しく使いこなして、効率的なデータベース管理を目指しましょう。