データベースにテーブルを作成するときは、名前とデータ型の両方が必要です。列のデータ型は、整数、金額、バイナリ、文字、日付、時刻など、列が保持する値を定義します。したがって、データベースとテーブルを作成するときに、各列に格納されるデータ型を決定するのは開発者のタスクです。
簡単に言うと、データ型は、SQLが列内に必要なデータの種類を理解するのに役立つガイドラインです。また、SQLが保存されたデータとどのように相互作用するかを特定するのにも効率的です。
注意すべき点は、データ型にはデータベースごとに異なる名前が含まれている可能性があり、名前が同じである場合、サイズなどの他の側面や詳細が異なることに注意してください。したがって、同様のケースが発生した場合は、常にドキュメントを参照することをお勧めします。
次の特性により、MySQLのデータ型を識別できます。
- インデックス付けできるデータ型とインデックス付けできないデータ型の値
- それらが表す値のタイプ
- 値が可変長か固定長かに関係なく、それらが占めるスペース
- MySQLと特定のデータ型のさまざまな値との比較
MySQLデータ型について詳しく説明する前に、以下で強調表示されているデータ型の説明で使用される規則を学習して理解することが不可欠です。
- ( M ):整数型の場合、データ型が表示できる最大幅を示します。
:固定小数点型と浮動小数点型の合計桁数を示します。
:文字列タイプの場合、最大長が表示されます
注: M の最大許容値はデータ型によって異なります
•( D ):固定小数点型と浮動小数点型にのみ適用されます。スケール(小数点以下の桁数)を示します。可能な最大値は10ですが、 Mよりも重要であってはなりません。 -2
•角かっこ([および])は、定義タイプのオプションパーツを示します。
•f sp: この規則は、タイムスタンプ、DateTime、および時間タイプに適用されます。これは、小数秒の精度(小数秒の小数点以下の桁数)を表します。指定されたfsp 値の範囲は0〜6でなければなりません。値0は、指定された値に小数部分が存在しないことを意味します。ただし、値が省略されている場合、精度は0として示されます。
MySQLには、サブカテゴリを含むデータ型の3つの主要なカテゴリがあります。主なデータ型は次のとおりです。
- 文字列データ型
- 日付と時刻のデータ型。
- 数値データ型
空間データ型やJSONデータ型など、MySQLでサポートされている他のデータ型があります。
この記事では、上記のすべてのデータ型を包括的にカバーします。したがって、データ型を明確に理解するには、この記事に固執してください。
文字列データ型
文字列データ型は、主にバイナリデータと画像やファイルなどのプレーンテキストを保持するために使用されます。さらに、MYSQLには、正規表現や演算子などの一致パターンに基づいて文字列値を比較および検索する機能があります。
以下は、MySQLがサポートするすべての文字列データ型の詳細な図です。
CHAR( サイズ ): これは文字列の固定長です。文字、特殊文字、または数字のいずれかを含めることができます。パラメータsize 列の長さを文字で示し、0〜255の範囲で指定できます。デフォルトのサイズは1です。
VARCHAR( サイズ ): これは文字列の可変長です。数字、特殊文字、または文字のいずれかが含まれています。パラメータsize 列の最大長を文字数で示します。範囲は0〜65535です。
バイナリ( サイズ ): これらはCHAR()と等しく、バイナリバイト文字列のみを格納します。パラメータsize 列の長さをバイト単位で指定します。デフォルトは1です
VARBINARY( サイズ ): これはVARCHAR()と同じですが、バイナリバイト文字列を格納するだけです。パラメータサイズ 列の最大長をバイト単位で指定します。
TINYTEXT: 最大255文字の文字列を保持します。
テキスト( サイズ ): 最大長65,535バイトの文字列を保持します。
BLOB( サイズ ): バイナリラージオブジェクト(BLOB)の場合。最大65,535データバイトを保持します。
TINYBLOB: バイナリラージオブジェクト(BLOB)の場合。最大長は255バイトです。
LONGLOB: バイナリラージオブジェクト(BLOB)の場合。最大4,294,967,295データバイトを保持します。
ロングテキスト: 最大長が4,294,967,295文字の文字列を保持します。
ミディアムテキスト: 最大16,777,215文字の文字列を保持します。
MEDIUMBLOB: バイナリラージオブジェクト(BLOB)の場合。最大16,777,215データバイトを保持します。
設定( val1、val2、val3、… ): これは、複数の値(0個以上の値を含む文字列)を含む文字列オブジェクトです。これらは、ENUMと同様に可能な値のリストから選択されます。ただし、SETリストでは、最大64個の値しかリストできません。
ENUM( val1、val2、val3、… ): これは、すべての可能な値のリストから選択された1つの値のみを含むことができる文字列オブジェクトです。 ENUMリストには、最大65535の値をリストできます。リストにない値が挿入された場合、挿入された値は空白になります。また、値はユーザーが入力した順序に応じて並べ替えられることに注意する必要があります。
日付と時刻のデータ型
日付と時刻のデータ型は、DateTime、timestamp、year、time、dateなどの時間値を指定します。上記の各時間タイプには、ゼロを含む値があります。無効な値が挿入されると、MySQLはそれを表すことができません。したがって、ゼロが選択されます。
以下は、MySQLでサポートされている日付と時刻のデータ型の包括的な図です。
日付: 標準の日付形式はそれぞれ年、月、日(YYYY-MM-DD)で、サポートされる範囲は「1000-01-01」から「9999-12-31」です。
日時( fsp ): これは、日付と時刻の両方の組み合わせです。この場合の標準形式は、それぞれ年、月、日、時間、分、秒です(YYYY-MM-DD hh:mm:ss)
注: 自動初期化を開始するには、列にDEFAULTとON UPDATEを追加することが不可欠であり、現在の時刻と日付を更新します。
タイムスタンプ( fsp ): Unixエポック以降、タイムスタンプ値は( ‘1970-01-01 00; 00; 00’ UTC)などの秒数として格納されます。標準形式は、それぞれ年、月、日、時間、分、秒(YYYY-MM-DD hh:mm:ss)ですが、サポートされる範囲は'(' 1970-01-01 00; 00; 01'UTC)です。 to( '2038-01-09 03; 14;07'UTC。DEFAULT_CURRENT_TIMESTAMPとONUPDATECURRENT_TIMESTAMPは、現在の日時を自動的に初期化および更新するために不可欠です。
時間( fsp ): 標準でサポートされている時間形式は、それぞれ時間、分、秒(hh:mm:ss)で、サポートされている範囲は「-838:59:59」から「838:59:59」です。
年: 年は4桁の形式で表されます。4桁の形式で許可される値の範囲は1902から2155および0000です。
注: MySQLの最新バージョン(8.0)は、2桁の形式の年をサポートしていません。
数値データ型
数値データ型には、整数、小数、数値など、すべての正確な数値データ型が含まれます。また、float、double、doubleprecision、realなどの近似数値データ型も含まれています。数値データ型は、BITデータ型をサポートしているため、ビット値を格納します。通常、MySQLの数値データ型は、符号付きデータ型と符号なしデータ型の2つのカテゴリに分類されます。ただし、これはビットデータ型の例外です。
以下は、MySQLでサポートされているすべての数値データ型とその説明を含む詳細な図です。
ビット( サイズ ): これはビット値タイプであり、値あたりのビット数はサイズで表されます。 。パラメータsize 1から64までの値を保持する機能があり、サイズのデフォルト値は1です。
TINYINT( サイズ ): これは非常に小さい整数であり、符号付きの範囲は-128〜127で、符号なしの範囲は0〜255です。パラメータ size 表示される最大幅を示します。これは約255です。
ブール値: BOOLに等しい
ブール: BOOLでは、ゼロ以外の値は真であると見なされます。同時に、ゼロ値はfalseと見なされます。
INT( サイズ ): これは、符号付きの範囲が-2147483648から2147483647の範囲で、符号なしの範囲が0から4294967295の範囲である中整数です。パラメーター size 表示する最大幅を指定します。これは約255です。
MEDIUMINT( サイズ ): これも中整数であり、符号付きの範囲は-32768〜32767で、符号なしの範囲は0〜65535です。パラメータサイズ 表示する最大幅を指定します。これは約255です。
SMALLINT( サイズ ): これは、符号付きの範囲が-32768〜32767で、符号なしの範囲が0〜16777215の小さな整数です。サイズ この場合、パラメータは最大表示幅を指定するために使用され、その範囲は約255です。
フロート( サイズ、d ): これは、合計桁数がサイズで示される浮動小数点数です。 d パラメータは、小数点以下の桁数を指定するのに役立ちます。
注: このパラメータは、MySQLバージョン8.0.17で非推奨になりました。したがって、MySQLの将来のバージョンでは再現されません。
INTEGER( サイズ ): これはINT( size )と同等です 。
FLOAT( p ): 浮動小数点数です。 P パラメータは、結果のデータ型でFLOATまたはDOUBLEのどちらを使用するかを決定するために使用されます。 P -値の範囲は0〜24で、データはFLOAT()と呼ばれます。一方、 P -値の範囲は25〜53で、データ型はDOUBLE()に変更されます。
DEC( サイズ、d ): これは、DECIMAL( size、d )と同等です。 )
ダブル( サイズ、d ): これは、標準のサイズを示します 合計桁数がサイズで指定されている浮動小数点数。 d パラメータは、小数点以下の桁数を指定するのに役立ちます。
10月( サイズ、d ): これは正確な固定小数点数であり、その合計桁数はサイズで指定されます。 。 d パラメーターは、小数点以下の桁数を指定します。最大サイズ 番号は65ですが、 d 最大数は30です。したがって、 dのデフォルト値 size のデフォルト値は0ですが、 は10です。
注: すべての数値タイプには追加のオプションが含まれています。 ZEROFILLおよびUNSIGNED。 UNSIGNEDオプションが追加された場合、MySQLは列の負の値を許可しません。一方、ZEROFILLオプションが追加された場合、MySQLは自動的にUNSIGNED属性をその列に追加します。
その他のデータ型
ブールデータ型
MySQLには組み込みのBOOLまたはBOOLEANデータ型が含まれていないため、最小の整数型TINYINT(1)は、MySQLのブール値を表すために使用されます。したがって、BOOLおよびBOOLEANを操作するときは、それらをTINYINT(1)と同一視する必要があります。
空間データ型
MySQLは、以下に示すように、さまざまな種類の地理的および幾何学的な値を持ついくつかの空間データ型のサポートを提供します。
ジオメトリ: これは、場所がある限り、任意のタイプの空間値を保持できる集合体またはポイントです。
ポリゴン: これは、多面的なジオメトリで表される平面です。これは、ゼロで定義することも、1つの外部境界とより多くの内部境界で定義することもできます。
マルチラインストリング: これは、LINESTRING値のコレクションを含むマルチカーブジオメトリです。
マルチポリゴン: これは、いくつかのポリゴン要素のコレクションで表されるマルチサーフェスオブジェクトであり、2次元ジオメトリです
ポイント: これは、X座標とY座標を含むポイントまたはペアです。単一の場所を表すジオメトリ内のポイントと言えます。
GEOMETRYCOLLECTION: これはGEOMETRY値のコレクションです
LINESTRING: これは、1つ以上のポイント値を含む曲線です。線の文字列に2つのポイントしか含まれていない場合は、それが線を表していることを意味します。
マルチポイント: これはPOINT値のコレクションであり、ポイントを並べ替えたり接続したりすることはできません。
JSONデータ型
MYSQLは、バージョン5.7.8の開始以来、ネイティブJSONデータ型をサポートしており、JSONドキュメントの保存と管理を非常に迅速かつ効果的に行うことができます。さらに、ネイティブJSONデータ型は、最適なストレージ形式とJSONドキュメントの自動検証を提供する役割を果たします。
結論
この記事では、使用するデータ型とその使用方法を理解するのに役立つMySQLデータ型に関するすべての側面を包括的に説明しました。この記事は、MySQLの知識を向上させるのにも役立つと信じています。