
概要: このチュートリアルでは、文字列データ型、数値データ型、日付時刻データ型など、最も一般的に使用される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はVARCHAR2
とVARCHAR
の両方を使用します。
次の例は、VARCHAR
データ型を持つ列を定義します。
first_name VARCHAR(50)
Code language: SQL (Structured Query Language) (sql)
長さ20の値をfirst_name
列に格納した場合、データベースシステムはその値をスペースを追加せずに格納します。
ただし、長さ50を超える値を格納しようとすると、データベースシステムがエラーを返す可能性があります。
数値型
数値は、通常NUMBER
、INTEGER
、REAL
、DECIMAL
と呼ばれる数値型の列に格納されます。
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は、小数点以下の桁数を表すスケールです。
p
とs
の最大値は、各データベースシステムの実装によって異なります。
以下は、小数点以下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)
整数データ型には、BIGINT
やSMALLINT
などのバリエーションがあります。
浮動小数点データ型
浮動小数点データ型は、近似数値を表します。浮動小数点数の精度とスケールは、可変長で事実上無制限です。
以下は、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データ型の概要を理解できたはずです。