SQL Serverデータ型

SQL Serverデータ型について解説しています。データベースでテーブル作成時は、データ型を必ず定義する必要があります。

公式サイトのドキュメント

数値型

【対象】

  • SQL Server (サポートされているすべてのバージョン)
  • Azure SQL データベース
  • Azure SQL Managed Instance
  • Azure Synapse Analytics
  • Parallel Data Warehouse

整数データ

頻度SqlDbType範囲・説明サイズ用途
bigintInt64-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,8078バイト主キー
intInt32-2,147,483,648 ~ 2,147,483,6474バイト数量、商品数量
smallintInt16-32,768 ~ 32,7672バイトレベル(Lv)
tinyintByte0 ~ 2551バイト年齢
数値型サンプル
数値型サンプル例

金額値または通貨値を表すデータ型。

SqlDbType範囲・説明サイズ
moneyDecimal– 214,748.3648 ~ 214,748.36478バイト
smallmoneyDecimal-922,337,203,685,477.5808 ~ 922,337,203,685,477.58074バイト

※通貨単位の 10,000 の精度はします。

1、0、または NULL の値をとる整数型

SqlDbType範囲・説明サイズ
bitBoolean0、1、NULL のいずれか。※1可変

※1テーブル内で 8 個以下の bit 列がある場合は、列が 1 バイトとして格納されます。 bit 列が 9 ~ 16 ある場合には、列は 2 バイトとして格納されます。

固定長の有効桁数と小数点以下保持桁数を持つ数値データ型

decimalとnumericは同じためどちらを使用してもよい。

頻度SqlDbType範囲・説明サイズ用途
decimal[ ( p[ , s] ) ]Decimal固定長の有効桁数と小数点以下桁数を指定した固定小数点データ。
十進での最大有効桁数は、38桁。デフォルトでは18桁。
例)「10.02」の場合は、「精度:4」「小数桁:2」と入力する


p (precision)精度
格納される 10 進数の桁数の最大合計数。
 この数には、小数点の左右両方が含含まれる。 
有効桁数の値は、1 – 38 (最大有効桁数) にする必要があります。 
既定の有効桁数は 18 です。
可変外貨、合計金額
numeric[ ( p[ , s] ) ]Decimaldecimal型と同様可変
小数点数字型定義例

【サイズ】

precision(精度)サイズ
1-95バイト
10~199バイト
20~2813バイト
29~3817バイト

浮動小数点型(概数)

【対象】

  • SQL Server (サポートされているすべてのバージョン)
  • Azure SQL データベース
  • Azure SQL Managed Instance
  • Azure Synapse Analytics
  • Parallel Data Warehouse
SqlDbType範囲・説明サイズ
float[(n) ]Double倍精度浮動小数点実数。
1.79E + 38 ~ -2.23E – 38,0,2.23E -38 ~ 1.79E + 38
n は、科学的表記法で float 型

の数の仮数を格納するために
使用するビット数。
nは1-53。デフォルトで53。
4 バイト(1<=n<=24)
8 バイト(25<=n<=53)
n は、科学的表記法で

float 型の数の仮数を格納
するために使用する
ビット数。
real– 3.40E+38 ~ -1.18E-38、0、および 1.18E-38 ~ 3.40E+384バイト

日付と時刻

頻度SqlDbType範囲・説明サイズ用途
date0001-01-01~9999-12-31の範囲の日付型3バイト(固定)売上日予定日
time[(p)]1日の時刻を定義します。時刻は24時間形式
日付:1753 年 1 月 1 日~ 9999 年 12 月 31 日
時間:00:00:00 から 23:59:59.997

※有効桁数が規定値のとき5
精度:100 ナノ秒 (Informatica では 1 ミリ秒)
8バイト
datetimeDateTime日付:1753 年 1 月 1 日~ 9999 年 12 月 31 日
時間:00:00:00 から 23:59:59.997
※24 時間形式の時刻 (1 秒未満の秒を含む) と組み合わせた日付を定義します。
8バイトログ、登録日時、更新日時
smalldatetimeDateTime日付が 1900-01-01 ~ 2079-06-06、
時刻が00:00:00 ~ 23:59:59の範囲の日付型秒数は
常にゼロ (:00) で、1 秒未満の秒を持ちません。
精度:1 分
4バイト(固定)
datetime2[(p)]日付が 0001-01-01 ~ 9999-12-31、
時刻が00:00:00 ~ 23:59:59.9999999の範囲の日付型p:秒の小数点以下の有効桁数。0~7 (規定値7)
※24 時間形式の時刻と組み合わせた日付を定義します
精度:100 ナノ秒
有効桁数が 3 より小さい= 6 バイト
有効桁数が 3 または 4 =7 バイト
その他のすべての有効桁数では 8 バイト
datetimeoffset[(p)]日付が 0001-01-01 ~ 9999-12-31、
時刻が00:00:00 ~ 23:59:59.9999999の範囲のタイム ゾーンを認識する日付型タイムゾーンの範囲は-14:00 ~ +14:00。
p:秒の小数点以下の有効桁数。0~7 (規定値7)
精度:100 ナノ秒
既定では 10 バイト固定 (秒部分の既定の有効桁数は 100ns) です。

文字列型

頻度SqlDbType範囲・説明サイズ用途
char [ ( n ) ]StringUnicode ではない固定長の文字列型n:桁数。1 ~ 8,000可変
varchar[ ( n | max ) ]StringUnicode ではない可変長の文字列型n:桁数。1 ~ 8,000
max:最大値。2^31-1 バイト (2 GB)
可変伝票番号(例:001)、主キー
textStringUnicode ではない可変長の文字列型
文字列の最大長は 2^31-1 (2,147,483,647)
サーバー コード ページが 2 バイト文字を使用する場合、格納サイズは、そのまま 2,147,483,647 バイト

Unicode文字列

頻度SqlDbType範囲・説明サイズ用途
nchar [ ( n ) ]StringUnicode固定長文字列。nは、1~4000まで。可変
nvarchar[ ( n | max ) ]StringUnicode の可変長の文字列型n:
桁数。1 ~ 4,000
max:最大値。2^31-1 バイト (2 GB)
可変氏名
商品名
メモ
ntextString2^30 – 1 (1,073,741,823) 文字以内の可変長の
Unicode データを格納するデータ型
可変
文字列型定義例

バイナリ文字列

SqlDbType範囲・説明サイズ
binary [ ( n ) ]Byte[]固定長バイナリデータ。nは、1~8000まで。固定長
varbinary [ ( n| max) ]Byte[]可変長バイナリデータ。nは、1から8000まで。
max の場合の最大ストレージ容量は、2^31-1 bytes。
ストレージサイズは、データ量+2 bytes。
可変
imageByte[]0 ~ 2^31-1 (2,147,483,647) バイト
の可変長のバイナリ型
可変

その他

SqlDbType範囲・説明サイズ
cursorカーソル型。CREATE TABLEの列には使用できない。
timestampByte[]行が更新されたときに値が更新されるタイムスタンプとして
使われることが多い。
自動生成されるバイナリ数のデータ型。

データベース内でのユニーク性が保障されている。
8バイト
sql_varianttext, ntext, image, timestamp, and sql_variant以外の
SQL サーバデータ型をサポートするバリアント型
可変
uniqueidentifierGuid16-byte のGUID (globally unique identifier).16バイト
tableテーブル型の関数のリザルトセットとして、使用される特別なデータ型。
xmlXML valuexmlデータを格納するためのデータ型。
xmlインスタンスまたxml型の変数を列に格納できる。
可変