SQLServerのデータ型一覧、サイズをまとめてみました。
SQLServerのデータ型一覧、サイズ
SQLServerのデータ型の範囲とサイズは次の通りです。
型 | 説明 | ストレージ上のサイズ | |
---|---|---|---|
整数型 | bigint | -2^63 (-9,223,372,036,854,775,808) ~ 2^63-1(9,223,372,036,854,775,807) の範囲の整数型 |
8 |
int | -2^31 (-2,147,483,648) ~ 2^31-1(2,147,483,647) の範囲の整数型 |
4 | |
smallint | -2^15 (-32,768) ~ 2^15-1 (32,767) の範囲の整数型 |
2 | |
tinyint | 0 ~ 255 の範囲の整数型 |
1 | |
bit | 1または0 の範囲の整数型 |
||
decimal [(p[ ,s])] |
固定長の有効桁数と小数点以下桁数を持つ数値
-10^38 +1 から 10^38 ?1 p (precision):有効桁数。 s (scale):小数部桁数 (初期値0) |
有効桁数により変動 | |
numeric [(p[ ,s])] |
decimal 型と同機能 | ||
浮動小数点型 | float [(n)] |
– 1.79E+308 ~ 1.79E+308 の範囲の浮動小数点型n:有効桁数。 1~53 (規定値53) |
有効桁数により変動 |
real | – 3.40E+38 ~ 3.40E+38 の範囲の浮動小数点型 |
4 | |
通貨型 | money | -922,337,203,685,477.5808 ~ 922,337,203,685,477.5807 の範囲の通貨型表している通貨単位の 10,000 分の 1 までの精度を持ちます。 |
8 |
smallmoney | – 214,748.3648 ~ 214,748.3647 の範囲の通貨型表している通貨単位の 10,000 分の 1 までの精度を持ちます。 |
4 | |
日付型 | date | 0001-01-01~9999-12-31 の範囲の日付型 |
3 |
time [(p)] |
00:00:00.0000000 ~ 23:59:59.9999999 の範囲の時間型p:秒の小数点以下の有効桁数。 0~7 (規定値7) |
有効桁数が規定値のとき5 | |
datetime | 日付が 1753年1月1日~9999年12月31日、
時刻が00:00:00~23:59:59.997の範囲の日付型 |
8 | |
datetime2 [(p)] |
日付が 0001-01-01 ~ 9999-12-31、
時刻が00:00:00 ~ 23:59:59.9999999 p:秒の小数点以下の有効桁数。0~7 (規定値7) |
有効桁数により変動 (有効桁数が 3 未満の場合は 6 バイト、 有効桁数が 3 および 4 の場合は 7 バイト、 5以上の場合は8バイト) |
|
smalldatetime | 日付が 1900-01-01 ~ 2079-06-06、
時刻が00:00:00 ~ 23:59:59 |
4 | |
datetimeoffset [(p)] |
日付が 0001-01-01 ~ 9999-12-31、
時刻が00:00:00 ~ 23:59:59.9999999 タイムゾーンの範囲は-14:00 ~ +14:00。 p:秒の小数点以下の有効桁数。0~7 (規定値7) |
有効桁数が規定値のとき10 | |
文字列型 | char [(n)] |
Unicode ではない固定長の文字列型
n:桁数。1 ~ 8,000 |
nバイト |
varchar [(n | max)] |
Unicode ではない可変長の文字列型
n:桁数。1 ~ 8,000 |
入力したデータサイズ+2バイト maxを指定した場合は2GB |
|
text | Unicode ではない可変長の文字列型 文字列の最大長は 2^31-1 (2,147,483,647) |
サーバー コード ページが 2 バイト文字を 使用する場合、格納サイズは、 そのまま 2,147,483,647 バイト |
|
Unicode 文字型 | nchar [(n)] |
Unicode の固定長の文字列型
n:桁数。1 ~ 4,000 |
n×2バイト ただし、照合順序のコード ページで 2 バイト文字が使用されている場合、 記憶領域のサイズは n バイト |
nvarchar [(n | max)] |
Unicode の可変長の文字列型
n:桁数。1 ~ 4,000 |
入力したデータサイズ×2+2バイト maxを指定した場合は2GB |
|
ntext | 2^30 – 1 (1,073,741,823) 文字以内の可変長の Unicode データを格納するデータ型 |
入力したデータサイズ×2バイト | |
バイナリ型 | binary [(n)] |
固定長のバイナリ データ
n:桁数。1 ~ 8,000 |
nバイト |
varbinary [(n | max)] |
可変長のバイナリ データ
n:桁数。1 ~ 8,000 |
入力したデータサイズ+2バイト | |
image | 0 ~ 2^31-1 (2,147,483,647) バイト の可変長のバイナリ型 |
入力したデータサイズ |
SQLServerに配列型はない
SQL99では配列型というのがあって、DBMSによっては実装されています。
・http://www.atmarkit.co.jp/fnetwork/tokusyuu/01sql99/sql99_2a.html
しかし、SQL Serverには、配列のデータ型は無いようです。
よって、配列型と同じようなことをするには、文字列型を作って自分で分割・格納するしか方法はありません。
Postgresでは、配列型のデータ型が用意されています。
↓Postgresの配列型
・https://www.postgresql.jp/document/9.4/html/arrays.html
コメント