SQL Serverのデータ型一覧。それぞれの違いとは?
SQL Serverにはデータ型が数多くそろえられています。ここでは、具体的にSQL Serverではどのようなデータ型が用意されているのかまとめました。SQL Serverを使っているが、データ型をまだ理解されていない方など、基礎知識から解説しますのでご参考ください。
- システム
エンジニア - SQL Serverのデータ型はたくさんありますよね。でもありすぎて、どれを使えば良いか分からないです。具体的にどのようなものがあるのでしょうか?
- プロジェクト
リーダー - 数値型でも真数や概数、文字列型でも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秒まで扱えます。
- システム
エンジニア - SQL Serverで使用できるデータ型について確認できました。これからはデータ型にも意識して、変数の宣言を行っていきます。
- プロジェクト
リーダー - データ型を理解するのはプログラミングの基本です。数値、文字列、日付など細かく分ければいろいろな種類のデータ型が用意されています。上手に使いこなして、SQL Serverを活用しましょう!
データ型は上手に使い分けましょう
基本的には、数値型だと「int」や「decimal」、文字列型だと「varchar」or「nvarchar」、日付型だと「date」や「datetime2」をベースにして、設計・開発が行われるかと思います。しかし、時には「char」を利用して、空白スペースを上手に使いこなす必要がある場面や、浮動小数点数を利用するべき場面もあるかと思いますので、データ型は数多く理解しておくことをおすすめします。
FEnet.NETナビ・.NETコラムは株式会社オープンアップシステムが運営しています。
株式会社オープンアップシステムはこんな会社です
秋葉原オフィスには株式会社オープンアップシステムをはじめグループのIT企業が集結!
数多くのエンジニアが集まります。
-
スマホアプリから業務系システムまで
スマホアプリから業務系システムまで開発案件多数。システムエンジニア・プログラマーとしての多彩なキャリアパスがあります。
-
充実した研修制度
毎年、IT技術のトレンドや社員の要望に合わせて、カリキュラムを刷新し展開しています。社内講師の丁寧なサポートを受けながら、自分のペースで学ぶことができます。
-
資格取得を応援
スキルアップしたい社員を応援するために資格取得一時金制度を設けています。受験料(実費)と合わせて資格レベルに合わせた最大10万円の一時金も支給しています。
-
東証プライム上場企業グループ
オープンアップシステムは東証プライム上場「株式会社オープンアップグループ」のグループ企業です。
安定した経営基盤とグループ間のスムーズな連携でコロナ禍でも安定した雇用を実現させています。
株式会社オープンアップシステムに興味を持った方へ
株式会社オープンアップシステムでは、開発系エンジニア・プログラマを募集しています。
年収をアップしたい!スキルアップしたい!大手の上流案件にチャレンジしたい!
まずは話だけでも聞いてみたい場合もOK。お気軽にご登録ください。
SQLServer新着案件New Job
-
蔦屋書新店オープンに関するアプリ開発/Oracle/東京都渋谷区/【WEB面談可】/在宅勤務
月給56万~59万円東京都渋谷区(神泉駅) -
資産運用会社向け残高管理システム運用保守/SQLServer/東京都中央区/【WEB面談可】
月給50万~60万円東京都中央区(銀座駅) -
資産運用会社向け残高管理システム開発のテスター/SQLServer/東京都中央区/【WEB面談可】
月給25万~35万円東京都中央区(銀座駅) -
放射線部門システムパッケージの運用保守/Oracle/東京都港区/【WEB面談可】
月給50万~60万円東京都港区(品川駅) -
放射線部門システムパッケージの開発のテスター/Oracle/東京都港区/【WEB面談可】
月給25万~35万円東京都港区(品川駅) -
営業フロントシステム運用保守/ASP.NET/東京都江東区/【WEB面談可】
月給50万~60万円東京都江東区(木場駅)