MySQL、SQL Server、およびMS AccessのSQLデータ型
列のデータ型は、列が保持できる値(整数、文字、金額、日付と時刻、バイナリなど)を定義します。
SQLデータ型
データベース テーブルの各列には、名前とデータ型が必要です。
SQL開発者は、テーブルを作成するときに、各列に格納するデータの型を決定する必要があります。データ型は、SQLが各列内で期待されるデータの型を理解するためのガイドラインであり、SQLが格納されたデータとどのように相互作用するかも識別します。
注:データベースが異なれば、データ型の名前が異なる場合があります。また、名前が同じでも、サイズやその他の詳細が異なる場合があります。常にドキュメントをチェックしてください!
MySQLデータ型(バージョン 8.0)
MySQLには、文字列、数値、日付と時刻の3つの主なデータ型があります。
文字列データ型
|
データ・タイプ |
説明 |
|---|---|
| CHAR(size) | 固定長の文字列 (文字、数字、および特殊文字を含めることができます)のサイズパラメータは列の長さを文字数で指定します。 0から255まで。デフォルトは1です。 |
| VARCHAR(size) | 可変長文字列 (文字、数字、および特殊文字を含めることができます) のサイズパラメータは最大文字列を指定します。 文字の長さは、0から65535の範囲で指定できます。 |
| BINARY(size) | CHAR() と同じですが、バイナリ バイト文字列を格納します。サイズパラメータは、列の長さをバイト単位で指定します。デフォルトは 1 です。 |
| VARBINARY(size) | VARCHAR() と同じですが、バイナリバイト文字列を格納します。サイズパラメータは、列の最大長をバイト単位で指定します。 |
| TINYBLOB | BLOB(バイナリ ラージ オブジェクト)の場合。最大長:255バイト |
| TINYTEXT | 最大長255文字の文字列を保持します。 |
| TEXT(size) | 最大長65,535バイトの文字列を保持します。 |
| BLOB(size) | BLOB (バイナリ ラージ オブジェクト) の場合。最大 65,535 バイトのデータを保持します。 |
| MEDIUMTEXT | 最大長16,777,215文字の文字列を保持します。 |
| MEDIUMBLOB | BLOB(バイナリ ラージ オブジェクト)の場合。最大16,777,215バイトのデータを保持します。 |
| LONGTEXT | 最大長4,294,967,295文字の文字列を保持します。 |
| LONGBLOB | BLOB(バイナリ ラージ オブジェクト)の場合。最大4,294,967,295バイトのデータを保持します。 |
| ENUM(val1、val2、val3、...) | 可能な値のリストから選択された値を 1 つだけ持つことができる文字列オブジェクト。 ENUMリストには最大65535個の値をリストできます。リストにない値が挿入されると、空白の値が挿入されます。 値は入力順にソートされます。 |
| SET(値 1、値 2、値 3、...) | 0個以上の値を持つことができる文字列オブジェクト。SETリストには最大64個の値を列挙することができます。 |
数値データ型
|
データ・タイプ |
説明 |
|---|---|
| BIT(サイズ) | ビット値型。値ごとのビット数は、サイズ. のサイズパラメータは 1 から 64 までの値を保持できます。デフォルトは value サイズは1です。 |
| TINYINT(サイズ) | 非常に小さい整数。符号付きの範囲は、-128~127です。符号なしの範囲は、 0~255です。サイズパラメータは最大表示幅(255)を指定します。 |
| BOOL | 0はFalseと見なされ、0以外の値はTrueと見なされます。 |
| BOOLEAN | BOOLに等しい。 |
| SMALLINT(サイズ) | 小さい整数。符号付きの範囲は、-32768~32767です。符号なしの範囲は、 0~65535です。サイズパラメータは最大表示幅 (255)を指定します。 |
| MEDIUMINT(サイズ) | 中間の整数。符号付きの範囲は、-8388608~8388607です。符号なしの 範囲は0~16777215です。サイズパラメータは 最大表示幅 (255)を指定します。 |
| INT(サイズ) | 中間の整数。符号付き範囲は、-2147483648~2147483647です。 符号なしの範囲は、0~4294967295です。サイズパラメータ 最大表示幅 (255) を指定します。 |
| INTEGER(サイズ) | INT(サイズ)に等しい。 |
| BIGINT(サイズ) | 大きな整数。符号付き範囲は、-9223372036854775808~ 9223372036854775807。符号なしの範囲は、0~18446744073709551615 です。サイズパラメータは、最大表示幅(255)を指定します。 |
| FLOAT(サイズ、d) | 浮動小数点数。総桁数はサイズで指定する。小数点以下の桁数は dパラメータで指定。この構文は、MySQL 8.0.17では非推奨です。 将来のMySQLバージョンでは削除される予定です。 |
| FLOAT(p) | 浮動小数点数。 MySQL はp値を使用して、 結果のデータ型にFLOATまたはDOUBLEのどちらを使用するかを決定します。pが0~24の場合、データ型はFLOAT()になります。pが25〜 53の場合、データ型はDOUBLE()になります。 |
| DOUBLE(サイズ、d) | 通常サイズの浮動小数点数。総桁数はサイズで指定する。小数点以下の桁数は dパラメータで指定する。 |
| DOUBLE PRECISION(サイズ、d) | |
| DECIMAL(サイズ、d) | 正確な固定小数点数。総桁数はサイズで指定する。小数点以下の桁数は dパラメータで指定する。サイズの最大数は65です。 dの最大数は30です。サイズのデフォルト値は10です。dのデフォルト値は0です。 |
| DEC(サイズ、d) | DECIMAL(サイズ,d)に等しい。 |
注:すべての数値データ型には、UNSIGNEDまたはZEROFILLという追加のオプションがあります。 UNSIGNEDオプションを追加すると、MySQLは列に負の値を許可しません。ZEROFILLオプションを追加すると、MySQLは自動的にUNSIGNED属性も列に追加します。
日付と時刻のデータ型
|
データ・タイプ |
説明 |
|---|---|
| DATE | 日付フォーマット:YYYY-MM-DD。サポートされる範囲は 「1000-01-01」 から 「9999-12-31」までです。 |
| DATETIME(fsp) | 日付と時刻の組み合わせ。形式: YYYY-MM-DD hh:mm:ss。サポートされている範囲は、「1000-01-01 00:00:00」から「9999-12-31 23:59:59」です。 列定義にDEFAULTとON UPDATE を追加して、自動化する。 初期化と現在の日付と時刻への更新を行います。 |
| TIMESTAMP((fsp) | タイムスタンプ。TIMESTAMP値はUnixエポック('1970-01-01 00:00:00' UTC)からの秒数として格納されます。フォーマットYYYY-MM-DD hh:mm:ss。サポートされる範囲は「1970-01-01 00:00:01」UTCから「2038-01-09 03:14:07」UTCまでです。カラム定義でDEFAULT CURRENT_TIMESTAMPとON UPDATE CURRENT_TIMESTAMPを使用して、現在の日付と時刻への自動初期化と更新を指定することができます。 |
| TIME(fsp) | 時間。フォーマット: hh:mm:ss.サポートされている範囲は「-838:59:59」から「838:59:59」です。 |
| YEAR | 4桁形式の年。4桁の形式で使用できる値: 1901~2155、および0000。 MySQL8.0は、2桁形式の年をサポートしていません。 |
SQL Serverのデータ型
文字列データ型
|
データ・タイプ |
説明 |
最大サイズ |
ストレージ |
|---|---|---|---|
| char(n) | 固定長文字列 | 8,000文字 | 定義された幅 |
| varchar(n) | 可変幅文字列 | 8,000文字 | 2バイト + 文字数 |
| varchar(最大) | 可変幅文字列 | 1,073,741,824文字 | 2バイト+文字数 |
| text | 可変幅文字列 | 2GBのテキストデータ | 4バイト+文字数 |
| nchar | 固定幅のUnicode文字列 | 4,000文字 | 規定幅×2 |
| nvarchar | 可変幅のUnicode文字列 | 4,000文字 | |
| nvarchar(最大) | 可変幅のUnicode文字列 | 536,870,912 文字 | |
| ntext | 可変幅のUnicode文字列 | 2GBのテキストデータ | |
| binary(n) | 固定幅のバイナリ文字列 | 8,000バイト | |
| varbinary | 可変幅のバイナリ文字列 | 8,000バイト | |
| varbinary(最大) | 可変幅のバイナリ文字列 | 2GB | |
| image | 可変幅のバイナリ文字列 | 2GB |
数値データ型
| データ・タイプ |
説明 |
ストレージ |
|---|---|---|
| bit | 0、1、またはNULLの整数 | |
| tinyint | 0から255までの整数を使用できます。 | 1バイト |
| smallint | -32,768から32,767 までの整数を使用できます | 2バイト |
| int | -2,147,483,648 から 2,147,483,647 までの整数を使用できます | 4バイト |
| bigint | -9,223,372,036,854,775,808から9,223,372,036,854,775,807までの整数を使用できます。 | 8バイト |
| decimal(p、s) | 精度と位取りの固定数値。 -10^38 +1から10^38 -1までの数値を使用できます。 p パラメータは、格納できる最大合計桁数を示します(小数点の左側と右側の両方)。pは1から 38までの値でなければなりません。デフォルトは18です。 sパラメータは、小数点の右側に格納される最大桁数を示します。sは0からpまでの値でなければなりません。デフォルト値は0です。 |
5~17バイト |
| numeric(p,s) | 精度と位取りの固定数値。 -10^38+1から10^38 -1までの数値を使用できます。 pパラメータは、格納できる最大合計桁数を示します(小数点の左側と右側の両方)。pは1から 38までの値でなければなりません。デフォルトは18です。 sパラメータは、小数点の右側に格納される最大桁数を示します。 sは0からpまでの値でなければなりません。デフォルト値は0です。 |
5~17バイト |
| smallmoney | -214,748.3648から214,748.3647までの金額データ。 | 4バイト |
| money | -922,337,203,685,477.5808から922,337,203,685,477.5807までの金額データ | 8バイト |
| float(n) | -1.79E+308 から1.79E+308までの浮動小数点数データ。 nパラメータは、フィールドが 4バイトまたは 8バイトのどちらを保持する必要があるかを示します。 float(24)は4バイトのフィールドを保持し、float(53)は8バイトのフィールドを保持します。nのデフォルト値は53です。 |
4または8バイト |
| real | -3.40E+38から3.40E+38までの浮動小数点数データ。 | 4バイト |
日付と時刻のデータ型
|
データ・タイプ |
説明 |
ストレージ |
|---|---|---|
| datetime | 1753年1月1日から9999年12月31日まで、3.33ミリ秒の精度で | 8バイト |
| datetime2 | 0001年1月1日から9999年12月31日まで、100ナノ秒の精度で。 | 6~8バイト |
| smalldatetime | 1900年1月1日から2079年6月6日まで、1分の精度で。 | 4バイト |
| date | 日付のみを格納します。0001年1月1日から9999年12月31日まで。 | 3バイト |
| time | 時間を100ナノ秒の精度で保存する | 3~5バイト |
| datetimeoffset | タイムゾーンオフセットを追加したdatetime2と同じ。 | 8~10バイト |
| timestamp | 行が作成または変更されるたびに更新される一意の番号を格納します。タイムスタンプ値は内部クロックに基づいており、リアルタイムには対応していません。各テーブルには、タイムスタンプ変数を1つだけ含めることができます。 |
その他のデータ型
|
データ・タイプ |
説明 |
|---|---|
| sql_variant | text、ntext、timestampを除く、さまざまなデータ型の最大8,000 バイトのデータを格納します。 |
| uniqueidentifier | グローバル一意識別子(GUID)を格納します。 |
| xml | XML形式のデータを格納します。最大2GB |
| cursor | データベース操作に使用されるカーソルへの参照を格納します。 |
| table | 後で処理するために結果セットを保存します。 |
MS Accessのデータ型
| データ・タイプ | 説明 |
ストレージ |
|---|---|---|
| Text | テキストまたはテキストと数字の組み合わせに使用します。最大255文字 | |
| Memo | メモは大量のテキストに使用されます。最大65,536文字を格納します。注:メモ欄はソートできません。ただし、それらは検索可能です。 | |
| Byte | 0 から 255 までの整数を使用できます。 | 1バイト |
| Integer | -32,768から32,767 までの整数を使用できます。 | 2バイト |
| Long | -2,147,483,648から2,147,483,647までの整数を使用できます。 | 4バイト |
| Single | 単精度浮動小数点。殆どの小数を扱う事が出来ます。 | 4バイト |
| Double | 倍精度浮動小数点。殆どの小数を扱うことが出来ます。 | 8バイト |
| Currency | 通貨に使用します。ドル全体の最大15桁と小数点以下4桁を保持します。ヒント:使用する国の通貨を選択できます。 | 8バイト |
| AutoNumber | オートナンバー型フィールドは、各レコードに独自の番号を自動的に付けます。通常は1から始まります。 | 4バイト |
| Date/Time | 日付と時刻に使用。 | 8バイト |
| Yes/No | 論理フィールドは、Yes/No、True/False、または On/Off として表示できます。コードでは、定数TrueおよびFalse(-1および0に相当)を使用します。注:Yes/NoフィールドにNull値は使用できません。 | 1ビット |
| Ole Object | 写真、オーディオ、ビデオ、またはその他のBLOB(バイナリ ラージ オブジェクト)を保存できます。 | 最大1GB |
| Hyperlink | Webページを含む他のファイルへのリンクを含む。 | |
| Lookup Wizard | オプションのリストを入力して、ドロップダウンリストから選択できます。 | 4バイト |