はじめに
MySQLデータ型 MySQLデータベースの作成と操作を開始する前に、理解しておくことが重要です。各列を適切に割り当てると、データベースが最適化され、データが安全に保存されるようになります。
このチュートリアルでは、さまざまなMySQLデータ型について学習します。

MySQLのデータ型とは何ですか?
名前とデータ型は、データベーステーブルの各列を定義します。指定されたデータ型は、MySQLが格納する値の種類、必要なスペースの量、およびこの種類のデータで実行できる操作の種類をMySQLに通知します。
MySQLデータ型
MySQLテーブルに保存できるさまざまなデータ型があります。
それらは5つの主要なカテゴリに分類されます:
- 数値データ型
- 日付と時刻のデータ型
- 文字列データ型
- 空間データ型
- JSONデータ型
各グループの詳細と、グループに含まれるデータ型を確認するために読んでください。
数値データ型
データベース列に数値を格納するときは、数値データ型の1つを使用してください。 MySQLは、正確な数値データ型と概算の数値データ型の両方をサポートしています。
数値カテゴリは、さらに次のグループに分類されます。
- 整数データ型
- 浮動小数点データ型
- 固定小数点データ型
- ビット値データ型

整数型
整数データ型 整数(整数)に使用されます。それらには、正の値と負の値の両方が含まれます。ただし、小数は処理しません。
したがって、30や-5435などの数値は整数データ型として格納できますが、5、3、または1/5は格納できません。
整数型は符号付きまたは符号なしです。サイズに基づいてさらに細かく分類され、長さと範囲が異なります。
バイト | 範囲(署名なし) | 範囲(署名済み) | |
---|---|---|---|
TINYINT | 1 | 0から255まで | -128から127まで |
SMALLINT | 2 | 0から65535まで | -32768から32767まで |
MEDIUMINT | 3 | 0から16777215まで | -8388608から8388607まで |
INT | 4 | 0から4294967295まで | -2147483648から2147483647まで |
BIGINT | 8 | 0から18446744073709551615まで | -9223372036854775808から9223372036854775807 |
TINYINT
1バイトを使用する非常に小さい整数です ストレージの。最大4桁で構成されます 。その符号なしの範囲は0からです 〜 255 。署名されている場合、範囲は -128です。 127へ 。
SMALLINT
2バイトを使用する小さな整数です ストレージの。最大5桁で構成されます 。その符号なしの範囲は0からです 65535 。署名すると、範囲は -32768 になります 32767へ 。
MEDIUMINT
3バイトを使用する中型の整数です ストレージの。最大9桁 。署名されていない場合、範囲は 0です。 16777215へ 。署名済み、最小値は -8388608 、最大値は 8388607 ですが、 。
INT
4バイトを使用する整数です ストレージの。最大11桁を使用します 。署名されていない場合、範囲は 0です。 から4294967295 。署名されている場合、範囲は -2147483648です。 2147483647 。
BIGINT
8バイトを使用する大きな整数です ストレージの。最大20桁です 。符号付きの最小値は0 、最大符号付き値は 18446744073709551615 ですが、 。署名されている場合、範囲は -9223372036854775808 9223372036854775807 。
浮動小数点型
浮動小数点数値データ型は、近似値を表すために使用される有理数です。高精度の計算には浮動小数点データ型を使用します。
浮動小数点の種類は次のとおりです。
-
FLOAT
4バイトを使用する単精度値を表します 最大6または7を含める 有効数字。 -
DOUBLE
8バイトを使用する倍精度値を表します 最大15または16 有効数字。
FLOAT
を定義するための基本的な構文 / DOUBLE
データ型はFLOAT(M、D)
/ DOUBLE(M、D)
。
M
合計桁数を表し、 D
は小数点以下の桁数です。たとえば、値 5143,234 7,3として定義されます 合計7桁で、小数点以下3桁です。
FLOAT(P)
を使用することもできます 浮動小数点データ型を指定する構文。ここで、 P
精度を指定します。 P
の場合 値は0から23 、単精度列です。精度が24〜53の場合 、倍精度の列です。
バイト | 範囲(署名なし) | 範囲(署名済み) | |
---|---|---|---|
FLOAT | 4 | 1.175494351E-38から3.402823466E+38へ | -3.402823466E+38から-1.175494351E-38 |
DOUBLE | 8 | 0および2.2250738585072014E-308から1.7976931348623157E+308まで | -1.7976931348623 157E+308から-2.2250738585072014E-308 |
固定小数点タイプ
正確な数値を格納するには、固定小数点データ型– DECIMAL
を使用します 。正確な数値を表すため、このデータ型は主に正確な値に依存するデータ(金銭データなど)に使用されます。
基本的な構文はDECIMAL(P、D)
です。 、ここで P
精度の略です (有効桁数)および D
スケールの略です (小数点以下の桁数)
精度の最大桁数は65です。 、スケールの最大値は 30です。 。
精度とスケールを定義しない場合、列はデフォルト値を使用します。デフォルトでは、P、Dの値は 10,0 です 。
ビット値型
BIT
データ型はバイナリ値を格納します。このような値を格納する列を作成するときは、1から64の範囲のビット値の数を定義します。 。
このMySQLデータ型の構文はBIT(N)
です。 。 N
を指定しない場合 、デフォルト値は 1 。
日付と時刻のデータ型
日付と時刻は、一般的に使用されるデータ型です。データ入力の時刻、生年月日、または現在のタイムスタンプのいずれを保存する場合でも、次のいずれかの列を使用します。
日付と時刻のデータ型は次のとおりです。
-
DATETIME
、TIMESTAMP
日付
時間
-
YEAR

DATETIME、TIMESTAMP
日付と時刻の値を保存するには、 DATETIME
のいずれかを使用します またはTIMESTAMP
。どちらのデータ型も、情報を YYYY-MM-DD HH:MM:SSに格納します フォーマット。 yが含まれます 耳、 m 以降、 d ああ、 h 私たちのm inutes、および s エコンド。
2つの主な違いは、その範囲です。
-
DATETIME
値の範囲は1000-01-0100:00:00 to 9999-12-31 23:59:59 。 -
TIMESTAMP
値の範囲は1970-01-0100:00:01 to 2038-01-19 03:14:07 。
両方のオプションに小数秒を含めることができます。これを行うには、構文 DATETIME(p)
に従って精度を指定します。 / TIMESTAMP(p)
。
たとえば、タイムスタンプを2021年3月1日の午後10時53分に保存するには 、3秒未満で、データ型 TIMESTAMP(3)
を指定します 。エントリは次のように保存されます: 2021-03-01 22:53:35.346 。
日付
日付
YYYY-MM-DDの形式で日付値を格納するために使用されます (年、月、日付)。
データ型は、1000-01-01から9999-12-31の範囲をサポートします 。
時間
時間コード>
時間の値をHH-MM-SSとして保存するために使用されます (時間、分、秒)または HHH-MM-SS 。経過時間または時差を示すエントリは、より長い形式で保存および取得されます(何時間もより多くの桁が必要な場合)。
データ型は、1000-01-01から9999-12-31の範囲をサポートします 。
年
YEAR
年の値をYYYYの形式で保存します 。 1901-2155の範囲内の値をサポートします 。
MySQL 5.7.5より古いバージョンでは、 YEAR
の2桁と4桁の両方のエントリがサポートされていました。 、5.7.5リリース以降、2桁のサポートはありません。
文字列データ型
データの文字列を格納するときは、文字列データ型の1つを使用します。文字、数字、画像、またはファイルを含めることができます。
したがって、いくつかの異なる文字列データ型があります。
-
CHAR
およびVARCHAR
-
BINARY
およびVARBINARY
-
BLOB
およびTEXT
-
ENUM
-
SET

CHARおよびVARCHAR
CHAR
およびVARCHAR
非バイナリ文字列を格納するために使用されるデータ型です。 2つの主な違いは、データの保存方法です。
CHAR
固定長の文字列を格納します(最大 255 文字)。 CHAR
を作成する場合 列では、 CHAR(N)
を使用して長さを指定します 構文。 N
取りたい文字数です。長さを定義しない場合は、デフォルト値 1が使用されます 。
これらの値は、指定された長さで右に埋め込まれて格納されます。したがって、 CHAR(5)
を設定した場合 列に3文字のエントリを格納しますが、それでも5文字を使用します。
VARCHAR
可変長文字列を格納します。列を作成するときに長さを定義する必要がありますが、値は右に埋め込まれません。上限はありますが、長さは固定されておらず、データによって異なります。
以前は、エントリの範囲は0から255でした 。 MySQL 5.0.3のリリース後、 VARCHAR
範囲は最大65535文字です 。
BINARYおよびVARBINARY
BINARY
およびVARBINARY
データ型は前述のCHAR
に似ています およびVARCHAR
。これら2つのグループの主な違いは、 BINARY
およびVARBINARY
バイナリ文字列に使用されます。
BINARY
最大255バイトの固定長のバイナリ文字列に使用されます 。このような列を定義するための主な構文は、 BINARY(N)
です。 、ここで N
はバイト数です。
VARBINARY
可変長のバイナリ文字列を格納します。 MySQLバージョン5.0.3以降は、最大65535バイトを保存します 。
BLOBとテキスト
両方のBLOB
およびTEXT
大量のデータを保存するために使用されます。
BLOB
Bを処理します inary L arge O bjects(つまり、画像、音声、PDFファイルなどのバイナリデータの大規模なセット)。
データに必要なサイズに応じて、使用するBLOBデータ型は4種類あります。
-
TINYBLOB
(0 – 255; 255バイト) -
BLOB
(0 – 65,535; 16 KB) -
MEDIUMBLOB
(0 – 16,777,215; 16 MB) -
LONGBLOB
(0 – 4,294,967,295; 4 GB)
TEXT
データ型は、より長いテキスト文字列を格納するためのものです。必要なデータの量に応じて、次のようになります。
-
TINYTEXT
(0 – 255; 255バイト) -
TEXT
(0 – 65,535; 16 KB) -
MEDIUMTEXT
(0 – 16,777,215; 16 MB) -
LONGTEXT
(0 – 4,294,967,295; 4 GB)
ENUM
ENUM
データ型は、事前定義された可能な値の1つを列に格納するために使用されます。列には最大65535を含めることができます 明確な値。
ENUM
を作成する場合 MySQLのテーブル列で、許可されるすべての値のリストを指定します。
設定
ENUM
のように 、 SET
データ型には、列に格納されている可能な値の事前定義されたリストがあります。
2つの主な違いは、 SET
エントリに複数の値を含めることができます。
たとえば、列が SET('Red'、'Orange'、'Yellow'、'Green')
として定義されている場合 リストには4つの可能な値があり、1つのエントリの値は「赤」である可能性があります。 、別の値は「赤」、「黄」の値を持つ可能性があります 。
許可される値の最大数は64です。 。
空間データ型
空間データを保存するときは、MySQLがサポートするさまざまな空間データタイプの1つを使用できます。それらは、幾何学的形状と物理的位置に関する情報を表すために使用されます。
それらを2つのグループに分けることができます:
- 単一のジオメトリ値
- 値のコレクション

単一のジオメトリ値
単一のジオメトリデータタイプには、 GEOMETRY
が含まれます 、ポイント
、 LINESTRING
、および POLYGON
。
-
GEOMETRY
あらゆるタイプのジオメトリ/空間値を格納します。 ポイント
単一のポイント値に使用されます。-
LINESTRING
線を形成する複数の点のコレクションを格納します。 -
POLYGON
ポリゴンサーフェスを形成する複数のポイントのコレクションを格納するために使用されるデータ型です。
値の収集
値のコレクションのデータ型には、 GEOMETRYCOLLECTION
が含まれます 、マルチポイント
、 MULTILINE
、および MULTIPOLYGON
。
-
GEOMETRYCOLLECTION
ジオメトリ/空間値のコレクションを格納します。 マルチポイント
複数のポイント値のコレクションを格納するために使用されます。-
MULTILINE
複数の行のコレクションを格納します。 -
MULTIPOLYGON
複数のポリゴンのコレクションに使用されます。
JSONデータ型
バージョン5.7.8以降、MySQLにはネイティブの JSON
のサポートが含まれていました データ型。ユーザーはデータベースを介してJSONドキュメントを保存および管理できます。
MySQLは、JSONドキュメントが有効であることを確認し、それらをJSON列に保存します。