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