SQL Serverで使用できるデータ型について細かい内容がわからなかったのでまとめてみました。
SQLServerで利用できる数値型
データ型 | 説明 |
bigint | 8バイトの整数値(-2^63~2^63-1) |
int | 4バイト整数値(約-21億~約21億) |
smallint | 2バイトの整数値(-32768~32767) |
tinyint | 0~255の整数値 |
bit | 0または1 |
decimal or numeric | 固定長の有効桁数と小数点桁数を持つ数値 |
float | 4バイトまたは8バイトの浮動小数点数値 |
real | 4バイトの浮動小数点数値 |
money | 8バイトの通貨型 |
smallmoney | 4バイトの通貨型 |
数値型の場合は、整数値の場合はint小数点の桁指定などdecimal,小数点の有効桁数の指定が必要ないのであればfloatやrealが主流。
SQL Serverで利用できる文字列型
データ型 | 説明 |
char(n) | 8000文字以内の非unicode固定長文字(nは1~8000) |
varchar(n) | 8000文字以内の非unicode可変長文字(nは1~8000) |
varchar(max) | 1073741823文字(約10億)以内の非unicode可変長文字。 ※同じ内容でtext型があるが将来的には削除される予定 |
nchar(n) | 8000文字以内のunicode固定長文字(nは1~8000) |
nvarchar(n) | 8000文字以内のunicode可変長文字(nは1~8000) |
nvarchar(max) | 1073741823文字(約10億)以内のunicode可変長文字。 ※同じ内容でntext型があるが将来的には削除される予定 |
unicode文字の場合は頭文字にnが付く。unicodeは、全角/半角関係なく1文字を2バイトとして扱っている。項目に入力する値が8000文字を超過する場合は(max)に設定する。
また、SQLでunicode文字を検索する際は、普通シングルクォーテーション”でくくるがシングルクォーテーションの前にNを付加することでunicode文字と認識してくれる。
SQL Serverで利用できるバイナリ型
データ型 | 説明 |
binary(n) | 8000バイト以内の固定長バイナリーデータ(nは1~4000) |
varbinary(n) | 8000バイト以内の可変長バイナリーデータ(nは1~4000) |
varbinary(max) | 2147483647(約20億)以内の可変長バイナリーデータ※ |
※同じ内容でimageがあるが将来削除される予定。
Binary文字列を扱う場面は、画像データなどを扱う場面がほとんど
SQL Serverで利用できる日付と時刻型
データ型 | 説明 | 範囲 | 精度 | 記憶容量 |
time | 1日の時刻 | 00:00:00.0000000~23:59:59:9999999 | 100ナノ秒 | 3~5バイト |
date | 日付 | 1年1月1日~9999年12月31日 | 1日 | 3バイト |
smalldatetime | 日付と時刻 | 1900年1月1日 00:00:00~ 2079年6月6日 23:59:59:59 |
1分 | 4バイト |
datetime | 日付と時刻 | 1753年1月1日00:00:00~ 9999年12月31日23:59:59.997 |
3.33ミリ秒 | 8バイト |
datetime2 | 日付と時刻 | 1年1月1日00:00:00.0000000~ 9999年12月31日23:59:59:9999999 |
100ナノ秒 | 6~8バイト |
日付と時刻型は、秒数まで必要な場合は大体datetime or datetime2が主流
データ型についてのまとめ
SQL Serverで主に使用できるデータ型は、上記のようにたくさんあります。データに入力されうる値を考え、また将来的に入力されうる値を考慮して設定することが必要です。その他にもcursor型やgeographyなど特殊なデータ型がありますが、通常のシステムではあまり利用することはないと思います。
コメント