【SQL Server】データ型の種類

SQL Server において、よく使うデータ型の種類をまとめます。

文字列型

SQL Server の文字列型は主に下記の4種類あります。

  • char
  • varchar
  • nchar
  • nvarchar

char / varchar

char と varchar は文字列データを格納するためのデータ型です。
char は固定長文字列、varchar は可変長文字列です。

固定長文字列と可変長文字列の違い

char(10)とvarchar(10)を例にして説明します。

固定長文字列は、定義したバイト数分の領域を使用します。
半角1文字(1バイト)で登録しようとすると、残りの9バイトが余白として10バイトのデータとして登録されます。

可変長文字列は、登録するデータ分の領域のみ使用します。
半角1文字(1バイト)で登録しようとすると、1バイトのデータとして登録されます。

ncahr / nvarchar

nchar と nvarchar も文字列データを格納するためのデータ型です。
nchar は固定長文字列、nvarchar は可変長文字列です。

charとnchar、varcharとnvarchar の違い

nが付かない char や varchar はShift-JISです。
つまり、半角だと1文字1バイトで、全角だと1文字2バイトになります。
char(10)や varchar(10)は最大10バイトまでという意味になります。

nが付く nchar や nvarchar はUnicodeです。
つまり、半角全角にかかわらず、1文字2バイトになります。
nchar(10)や nvarchar(10)は最大10文字までという意味になります。

また、Unicodeであるnchar や nvarchar は外国の文字を格納することが可能です。
Shift-JISであるchar や varchar に外国の文字を格納すると、文字化けします。
下記画像はハングル文字を格納した結果です。

バイナリ文字列型

SQL Server の バイナリ文字列型 は主に下記の2種類あります。

  • binary
  • varbinary

binary / varbinary

binary と varbinary はバイナリ文字列を格納するためのデータ型です。
binary は固定長、varbinary は可変長です。

varbinary(max)で定義すると、最大で2GBまで格納することができます。

整数型

SQL Server の整数型は主に下記の4種類あります。

  • tinyint
  • smallint
  • int
  • bigint

tinyint

tinyint は0 ~ 255までの数値扱うデータ型です。
使用する領域は1バイト(8ビット)です。

smallint

smallint は-32,768 ~ 32,767までの数値を扱うデータ型です。
使用する領域は2バイト (16ビット)です。

int

int は-2,147,473,648 ~ 2,147,473,647までの数値を扱うデータ型です。
使用する領域は4バイト (32ビット)です。

bigint

bigint は-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 までの数値を扱うデータ型です。
使用する領域は8バイト (64ビット)です。

少数型

SQL Server の少数型は主に下記の3種類あります。

  • decimal
  • real
  • float

decimal

decimal は少数のデータを格納するためのデータ型です。

deciaml(10, 3)のように定義すると、全体の桁数が10、小数点以下の桁数が3までという意味になります。
4桁目以降の数値は四捨五入されます。

この場合に1.1111 という数値を入ると、少数第4位が切り捨てされ1.111となります。
また、1.1115という数値を入れると、少数第4位が切り上げされ1.112となります。

real / float

real と float は少数のデータを格納するためのデータ型です。
decimalとは異なり、小数点以下の桁数を指定することができません。

real は整数部と小数部の合計桁数が7桁まで、float は15桁までとなっています。

日付型

SQL Server の日付型は主に下記の3種類あります。

  • datetime
  • smalldatetime
  • date

datetime

datetime は 日付と、300分の1秒単位までの時刻を扱います。

例)2021-09-09 00:00:00.000

smalldatetime

smalldatetime は 日付と、1秒単位までの時刻を扱います。

例)2021-09-09 00:00:00

date

date は 日付を扱います。

例)2021-09-09

Leave a Reply

Your email address will not be published. Required fields are marked *