SQLデータ型

SQL Data Types

概要: このチュートリアルでは、文字列データ型、数値データ型、日付時刻データ型など、最も一般的に使用されるSQLデータ型について学習します。

データベースでは、テーブルの各列には特定のデータ型が設定されています。データ型は、文字列、数値、日付時刻値など、その列が保持できるデータの種類を指定します。

SQLは、テーブルの列を定義するために使用できる基本的なデータ型のセットを提供します。このチュートリアルでは、最も一般的に使用されるSQLデータ型について説明します。

文字列データ型

文字列データ型は、固定長と可変長の文字型を含む文字データ型を表します。

固定長文字データ型

固定長文字データ型は、固定長の文字列を格納します。SQLの固定長文字データ型を以下に示します。

CHARACTER (n)
Code language: SQL (Structured Query Language) (sql)

この構文では、nは列が格納できる文字数を表します。nパラメータはオプションです。省略した場合、データベースシステムはデフォルトで1を使用します。

そのため、次の宣言

CHARACTER
Code language: SQL (Structured Query Language) (sql)

は次の宣言と同等です。

CHARACTER (1)
Code language: SQL (Structured Query Language) (sql)

nの最大値は、データベースシステムの実装によって異なります。

多くのデータベースシステムでは、固定長文字データ型を表すためにCHARACTERではなくCHARを使用します。

CHAR (n)
Code language: SQL (Structured Query Language) (sql)

以下は、最大5文字を格納できる固定長文字データ型を持つ列を定義します。

column_name CHARACTER(5)
Code language: SQL (Structured Query Language) (sql)

長さ2の文字列を上記の列に格納した場合、データベースシステムは文字列に3つのスペースを追加して、列の各値が固定長の5になるようにします。

固定長文字データ型を使用する例としては、すべての州の略称が2文字(例:CA、NY、TX)であるため、州の略称を格納することが挙げられます。

可変長文字またはVARCHAR

列に可変長の文字列を格納するには、可変長文字データ型を使用します。SQL可変長文字の構文を以下に示します。

CHARACTER VARYING (n)
Code language: SQL (Structured Query Language) (sql)

この構文では、nは列が格納できる最大文字数を表します。一部のデータベースシステムでは、列が格納できるバイト数を指定できます。

多くのデータベースシステムでは、MySQLやMicrosoft SQL Serverなど、可変長文字データ型を表すためにVARCHARを使用します。OracleはVARCHAR2VARCHARの両方を使用します。

次の例は、VARCHARデータ型を持つ列を定義します。

first_name VARCHAR(50)
Code language: SQL (Structured Query Language) (sql)

長さ20の値をfirst_name列に格納した場合、データベースシステムはその値をスペースを追加せずに格納します。

ただし、長さ50を超える値を格納しようとすると、データベースシステムがエラーを返す可能性があります。

数値型

数値は、通常NUMBERINTEGERREALDECIMALと呼ばれる数値型の列に格納されます。

SQLの数値データ型を以下に示します。

  • BIT(n)
  • BIT VARYING (n)
  • DECIMAL (p,s)
  • INTEGER
  • SMALLINT
  • BIGINT
  • FLOAT(p,s)
  • DOUBLE PRECISION (p,s)
  • REAL(s)

10進数型

DECIMALデータ型は、データベースに正確な数値(例:金額)を格納するために使用されます。

以下は、DECIMALデータ型を持つ列を定義します。

column_name DECIMAL (p,s)
Code language: SQL (Structured Query Language) (sql)

この構文では

  • pは、有効桁数を表す精度です。
  • sは、小数点以下の桁数を表すスケールです。

psの最大値は、各データベースシステムの実装によって異なります。

以下は、小数点以下4桁を含む12桁のsalary列を定義します。

salary DECIMAL (12,4)
Code language: SQL (Structured Query Language) (sql)

salary列は、最大99,999,999.9999の値を持つ数値を格納できます。

整数

整数データ型は、正と負の両方の整数を格納します。整数の例としては、10、0、-10、2010などがあります。

多くのデータベースシステムでは、整数型を表すためにINTを使用します。

INT 
Code language: SQL (Structured Query Language) (sql)

整数データ型には、BIGINTSMALLINTなどのバリエーションがあります。

浮動小数点データ型

浮動小数点データ型は、近似数値を表します。浮動小数点数の精度とスケールは、可変長で事実上無制限です。

以下は、FLOATデータ型の例です。

FLOAT
FLOAT(10)
FLOAT(50)
Code language: SQL (Structured Query Language) (sql)

日付と時刻の型

日付と時刻のデータ型は、日付と時刻に関する情報を格納するために使用されます。SQLは、次の日付と時刻のデータ型をサポートしています。

  • DATE
  • TIME
  • TIMESTAMP

DATEデータ型

DATEデータ型は、年、月、日の3つの部分を含む日付値を表します。通常、DATEデータ型の範囲は0001-01-01から9999-12-31です。

日付値は一般的に次の形式で指定されます。

'YYYY-DD-MM'
Code language: SQL (Structured Query Language) (sql)

たとえば、次のDATE値は2020年12月31日です。

'2020-12-31' 
Code language: SQL (Structured Query Language) (sql)

TIMEデータ型

TIMEデータ型は、時間、分、秒で表される1日の時刻を表す値を格納します。

TIME値は、次の形式で指定する必要があります。

'HH:MM:SS'
Code language: SQL (Structured Query Language) (sql)

ナノ秒を格納するために、オプションの分数値を使用できます。

'10:59:30.9999'
Code language: SQL (Structured Query Language) (sql)

TIMESTAMPデータ型

TIMESTAMPデータ型は、DATE値とTIME値の両方を含むタイムスタンプ値を表します。

TIMESTAMP値は、次の形式で指定されます。

TIMESTAMP 'YYYY-MM-DD HH:MM:SS'
Code language: SQL (Structured Query Language) (sql)

日付部分と時刻部分の間には、スペース区切り文字があることに注意してください。

これで、文字列データ型、数値データ型、日付時刻データ型を含むSQLデータ型の概要を理解できたはずです。

このチュートリアルは役に立ちましたか?