.net column

.NET開発者のためのブログメディア
データベースのデータ型

SQL Serverのデータ型一覧。それぞれの違いとは?

2020年09月24日

SQL Serverにはデータ型が数多くそろえられています。ここでは、具体的にSQL Serverではどのようなデータ型が用意されているのかまとめました。SQL Serverを使っているが、データ型をまだ理解されていない方など、基礎知識から解説しますのでご参考ください。

SE
SQL Serverのデータ型はたくさんありますよね。でもありすぎて、どれを使えば良いか分からないです。具体的にどのようなものがあるのでしょうか?
PL
数値型でも真数や概数、文字列型でもUnicodeで扱うのかそうでないのかなど、考慮するべき点はありますので、ここで確認していきましょう。

SQL Serverで用意されているデータ型

代表的なデータ型は、数値型、文字列型、日付型などが挙げられます。文字列型の中にも、通常の文字型やUnicode文字列型やバイナリ文字列型などより細かく分類することができます。

数値型:整数(真数)

整数のみを扱うことができる数値型のことを指します。SQL Serverでの整数(真数)は「tinyint」「smallint」「int」「bigint」の4種類がそれぞれ該当します。この4種類の主な違いは、格納できる数値データの範囲が違う点です。

数値型:小数(真数)

代表的なのが、「decimal」と「numeric」です。型名は違いますが、内容は同じです。decimalとは日本語訳で、十進法という意味になります。小数点ありの数値を扱うことができますので、宣言するときに、decimal(Integer part, Decimal part) という様式で桁数を指定して使用します。

また、有効桁数を超えた場合には、小数点以下では、指定した桁数での丸めが発生します。整数部は桁数オーバーフローとなりますので、オーバーフローさせないようにアプリケーション側で何かしらの対応が必要です。

宣言したdecimal(Integer part, Decimal part)で、Integer partに指定するのは整数の桁数ではありません。小数部も合わせた全体の桁数です。ここは注意が必要なポイントです。Decimal partには小数点以下の桁数を指定します。

数値型:小数(概数)

こちらのデータ型では、「float」と「real」が用意されています。上述のdecimalやnumericとの大きな違いは、桁数を指定することができないところです。このことを浮動小数点数といいます。小数点以下の桁数は、データによって変動しますので、このデータ型の取り扱いには注意する必要があります。

文字列

文字列を扱うデータ型には、「char」と「varchar」が用意されています。この2種類の大きな違いは、charは固定長で、varcharは可変長だということです。固定長の場合、例えばchar(10)で指定した変数に、3桁の文字列を設定すると、残りの7桁には空白スペースが自動で設定されます。このようにcharは各々が指定した最大バイト数分すべて使ってしまいます。

また、charとvarcharで設定できるのは、バイト数です。文字数ではありません。半角文字は1文字1バイト、全角文字は1文字2バイトとなります。ですので、指定されたバイト数を超えるデータを設定するとエラーになります。どちらも指定可能な最大バイト数は8000です。これを超えることが想定される場合には、バイト数を指定する箇所にて、「max」を指定しましょう。こうすることで、最大で2GBまでのデータを扱うことが可能になります。

Unicode文字列

Unicodeの文字列型では、「nchar」と「nvarchar」が用意されています。Unicodeでは半角・全角関係なく、1文字を2バイトで扱います。格納できる最大バイト数は8000です。しかし、型を指定する際には「nchar(4000)」のように4000までしか指定できません。

また、標準の日本語環境のまま変更していなければ「Shift_JIS」で扱われます。

SQLをコーディングする際、文字列を指定するにはシングルクォーテーションで囲みますが、シングルクォーテーションの前に「N」を付加させましょう。こうすることで、Unicode文字列だと認識してくれます。

バイナリ文字列

バイナリとは日本語訳にすると、「二進数」です。代表的なのが「binary」と「varbinary」、そして「image」です。
image型については、今後のSQL Serverのバージョンアップ時にサポート切れが予定されていますので、なるべく利用することなく開発を進めることをおすすめします。

バイナリ文字列を使う場面は、画像データなど大容量のデータをSQL Serverに格納する必要がある場合です。その際には、varbinary(max)を利用してみましょう。

日付・時刻型

日付や時刻を扱う際には、代表的なもので、「date」や「datetime2」や「time」が用意されています。date型は年月日だけを格納できます。datetime2は年月日+時分秒+ミリ秒まで扱えますし、時分秒以下は省略することも可能です。time型は、時刻だけを格納できます。0時0分0秒~23時59分59秒まで扱えます。

SE
SQL Serverで使用できるデータ型について確認できました。これからはデータ型にも意識して、変数の宣言を行っていきます。
PL
データ型を理解するのはプログラミングの基本です。数値、文字列、日付など細かく分ければいろいろな種類のデータ型が用意されています。上手に使いこなして、SQL Serverを活用しましょう!

データ型は上手に使い分けましょう

基本的には、数値型だと「int」や「decimal」、文字列型だと「varchar」or「nvarchar」、日付型だと「date」や「datetime2」をベースにして、設計・開発が行われるかと思います。しかし、時には「char」を利用して、空白スペースを上手に使いこなす必要がある場面や、浮動小数点数を利用するべき場面もあるかと思いますので、データ型は数多く理解しておくことをおすすめします。

>>>SQL Serverの案件を探すならFEnet .NET Navi


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)