SQLで使われるデータ型について。数値型・通貨型・文字列型・日付型/時刻型・ブール型・バイナリ型の主要6つの型を解説します。
それぞれ、範囲や形式、そしてSQL文の例を掲載します。
数値型
| データ型名 | カテゴリ | 説明 |
|---|---|---|
| INT | 整数型 | 一般的な整数データ |
| SMALLINT | 整数型 | 範囲が狭い整数データ |
| TINYINT | 整数型 | 非常に小さい整数データ |
| BIGINT | 整数型 | 非常に大きな整数データ |
| FLOAT | 浮動小数点型 | 単精度の浮動小数点数データ |
| REAL | 浮動小数点型 | 倍精度の浮動小数点数データ |
| DECIMAL | 固定小数点型 | 固定小数点数データ。精度指定可能 |
| NUMERIC | 固定小数点型 | 固定小数点数データ。精度指定可能 |
INT(整数型)
①範囲:-2,147,483,648から2,147,483,647
②SQL例:CREATE TABLE Employees (EmployeeID INT);
SMALLINT(整数型)
①範囲:-32,768 から 32,767
②SQL例:CREATE TABLE Employees (DepartmentID SMALLINT);
TINYINT(整数型)
①範囲:0 から 255
②SQL例:CREATE TABLE Products (CategoryID TINYINT);
BIGINT(整数型)
①範囲:-9,223,372,036,854,775,808 から 9,223,372,036,854,775,807
②SQL例:CREATE TABLE Orders (OrderID BIGINT);
FLOAT(浮動小数点型)
①範囲:[-3.402823466E+38 から -1.175494351E-38]、[0]、[1.175494351E-38 から 3.402823466E+38]。精度は約7桁
②SQL例:CREATE TABLE Measurements (Temperature FLOAT);
REAL(浮動小数点型)
①範囲:[-1.7976931348623157E+308 から -2.2250738585072014E-308]、[0]、[2.2250738585072014E-308 から 1.7976931348623157E+308]。精度は約15桁
②SQL例:CREATE TABLE Measurements (Pressure REAL);
DECIMAL(固定小数点型)
①範囲:精度とスケールは指定可能 ※例は10桁と小数以下2桁
②SQL例:CREATE TABLE Financials (Price DECIMAL(10, 2));
NUMERIC (固定小数点型)
①範囲:精度とスケールは指定可能 ※例は12桁と小数以下4桁
②SQL例:CREATE TABLE Financials (TotalCost NUMERIC(12, 4));
通貨型
| データ型名 | カテゴリ | 説明 |
|---|---|---|
| MONEY | 通貨型 | 大きな通貨の値を格納する |
| SMALLMONEY | 通貨型 | 小さな通貨の値を格納する |
MONEY
①範囲:-922,337,203,685,477.5808 から 922,337,203,685,477.5807
②SQL例:CREATE TABLE SalesRecords (TransactionID INT,SaleAmount MONEY);
SMALLMONEY
①範囲:-214,748.3648 から 214,748.3647
②SQL例:CREATE TABLE PettyCash (TransactionID INT,ExpenseAmount SMALLMONEY);
文字列型
| データ型名 | カテゴリ | 説明 |
|---|---|---|
| CHAR | 固定長文字列型 | 固定長の文字列を格納する |
| VARCHAR | 可変長文字列型 | 可変長の文字列を格納する |
| TEXT | 大文字列型 | 非常に大きな文字列を格納する |
| CLOB | 大文字列型 | 非常に大きな文字列を格納する |
CHAR(固定長文字列型)
①最大格納可能文字数:1から255文字まで指定可能 ※例は半角50文字
※最大長はデータベースシステムによって異なる
②SQL例:CREATE TABLE CustomerNames (CustomerName CHAR(50));
VARCHAR(可変長文字列型)
①最大格納可能文字数:約65,535文字まで指定可能 ※例は半角255文字
※最大長はデータベースシステムによって異なる
②SQL例:CREATE TABLE ProductDescriptions (Description VARCHAR(255));
TEXT(大文字列型)
①最大格納可能サイズ数:約2GBまでのテキストデータを格納可能
※最大サイズはデータベースシステムによって異なる
②SQL例:CREATE TABLE Articles (ArticleContent TEXT);
CLOB(大文字列型)
①最大格納可能サイズ数:最大2GB以上を格納可能
※一部のデータベースシステムでは4GB以上
②SQL例:CREATE TABLE LegalDocuments (DocumentContent CLOB);
日付型と時刻型
| データ型名 | カテゴリ | 説明 |
|---|---|---|
| DATE | 日付型 | 日付のみを格納する(年、月、日) |
| TIME | 時刻型 | 時刻のみを格納する(時、分、秒) |
| DATETIME | 日付時刻型 | 日付と時刻の両方を格納する |
| DATETIME2 | 日付時刻型 | DATETIMEの拡張で、より広い範囲と精度を格納する |
| TIMESTAMP | 日付時刻型 | 一意のタイムスタンプを格納する |
DATE(日付型)
①形式:年、月、日を格納する。通常はYYYY-MM-DD
②SQL例:CREATE TABLE Events (EventDate DATE);
TIME(時刻型)
①形式:時、分、秒を格納する。通常はHH:MM:SS
②SQL例:CREATE TABLE Shifts (StartTime TIME);
DATETIME(日付時刻型)
①形式:日付と時刻の両方を格納する。通常はYYYY-MM-DD HH:MM:SS
②SQL例:CREATE TABLE Appointments (AppointmentDateTime DATETIME);
DATETIME2(日付時刻型)
①形式:DATETIMEの拡張で、より広い範囲と高い精度。通常はYYYY-MM-DD HH:MM:SS.sssssss。精度はナノ秒まで。
②SQL例:CREATE TABLE FlightDepartures (DepartureDateTime DATETIME2);
TIMESTAMP(日付時刻型)
①形式:一意のタイムスタンプを格納し、データの追加や更新時に自動的に生成・更新される
※具体的なデータ形式はデータベースシステムによって異なる
②SQL例:CREATE TABLE UserActions (ActionTimestamp TIMESTAMP);
ブール型
| データ型名 | カテゴリ | 説明 |
|---|---|---|
| BOOLEAN | ブール型 | 真 (TRUE) または偽 (FALSE) のいずれかの値を格納する |
BOOLEAN(ブール型)
①形式:真 (TRUE)、偽 (FALSE)、そして未定義 (NULL) の3つの状態
②SQL例(PostgreSQL):CREATE TABLE Users ( UserID INT, IsActive BOOLEAN DEFAULT TRUE );
③SQL例(MySQL):CREATE TABLE Users ( UserID INT, IsActive TINYINT(1) DEFAULT 1 );
バイナリ型
| BINARY | 固定長バイナリ型 | 固定長のバイナリデータを格納する |
| VARBINARY | 可変長バイナリ型 | 可変長のバイナリデータを格納する |
| BLOB | 大バイナリ型 | 大きなバイナリデータ(Binary Large Object)を格納する |
BINARY(固定長バイナリ型)
①最大格納可能サイズ数:データベースシステムによって異なる
- SQL Server:
BINARY型の最大サイズは8,000バイトです。これを超えるサイズを必要とする場合は、VARBINARY(MAX)を使用することで、最大約2GBのデータを格納できます。 - MySQL:
BINARY型の最大サイズは255バイトです(バージョンによっては65,535バイトまで可能)。より大きなバイナリデータを扱うにはVARBINARYまたはBLOB型を使用します。 - PostgreSQL:
BINARY型に相当するBYTEA型には、特定の最大サイズの制限はありませんが、実際の使用可能サイズはシステムのアーキテクチャやデータベースの設定に依存します。
②SQL例:CREATE TABLE UserPasswords (UserID INT, PasswordHash BINARY(64));
VARBINARY(可変長バイナリ型)
①最大格納可能サイズ数:データベースシステムによって異なる
- SQL Server:
VARBINARY(MAX)を使用すると、最大約2GB(2^31-1バイト)のデータを格納できます。VARBINARY型の最大サイズは、VARBINARY(8000)までですが、VARBINARY(MAX)を使用することでより大きなデータを扱うことが可能です。 - MySQL:
VARBINARY型の最大サイズは、最大65,535バイトまでです(MySQLのバージョンによって異なる場合があります)。これを超える場合はBLOB型などの他のデータ型を使用する必要があります。 - PostgreSQL:
VARBINARY型に相当するBYTEA型には、特定の最大サイズの制限はありませんが、使用可能なサイズはシステムのアーキテクチャやデータベースの設定に依存します。
②SQL例:CREATE TABLE UserImages (UserID INT, ProfileImage VARBINARY(MAX));
BLOB(大バイナリ型)
①最大格納可能サイズ数:非常に大きなバイナリデータ(Binary Large Object)を格納
②SQL例:CREATE TABLE ProductCatalogs (ProductID INT, CatalogPDF BLOB);
