この記事では、Mysql でサポートされているデータ型について詳しく説明します。必要な方は参考にしていただければ幸いです。
1. 数値型
Mysql は、厳密なデータ型 (INTEGER、SMALLINT、DECIMAL、NUMBERIC) および近似数値型データを含む、標準 SQL のすべての数値型をサポートします。タイプ (FLOAT、REAL、DOUBLE PRESISION) を入力し、これに基づいて展開します。 (推奨コース: MySQL チュートリアル )
展開後、長さの異なる TINYINT、MEDIUMINT、BIGINT の 3 つの整数が追加され、ビット データを格納する BIT 型が追加されます。
整数型 バイト 範囲 (符号付き) 範囲 (符号なし) 目的
TINYINT 1 バイト (-128,127) (0,255) 小さい整数値
Smallint 2 バイト (-32 768 、32 767) (0、65 535) 大きな整数値
Mediumint 3 バイト (-8 388 608、8 388 607) (0,16 777 215) 大きな整数値
INT またはINTEGER 4 バイト (-2 147 483 648、2 147 483 647) (0、4 294 967 295) 大きな整数値
BIGINT 8 バイト (-9 233 372 036 854 775 808、9 223 372 036 854) 775 807) (0, 18 446 744 073 709 551 615) 最大整数値
FLOAT 4 バイト (-3.402 823 466 E 38,1.175 494 351 E-38)、0、(1.175 494 351 E- 38、3.402 823 466 351 E 38) 0、(1.175 494 351 E-38、3.402 823 466 E 38) 単精度浮動小数点値
DOUBLE 8 バイト (1.797 693 134 862 315 7 E-308、 2.225 073 858 507 201 4 E-308)、0、(2.225 073 858 507 201 4 E-308、1.797 693 134 862 315 7 E 308) 0、( 2.225 073 858 507 201 4 308、1.797 693 134 862 315 7 E 308) 倍精度浮動小数点値
DECIMAL DECIMAL(M,D) の場合、M>D の場合は M 2、それ以外の場合は D 2 です。 M と D の値に依存します。 M および D の値 10 進値
INT 型:
MySQL でサポートされる 5 つの主な整数型は、TINYINT、SMALLINT、MEDIUMINT、INT、および BIGINT です。これらの型はほとんど同じですが、格納される値のサイズが異なるだけです。
MySQL は、オプションの表示幅インジケーターの形式で SQL 標準を拡張し、データベースから値を取得するときに、その値を指定された長さまで延長できるようにします。たとえば、フィールドのタイプを INT(6) に指定すると、
は、データベースから取得するときに、6 桁未満の値を含む値が自動的にスペースで埋められるようにします。幅インジケーターを使用しても、フィールドのサイズや格納できる値の範囲には影響しないことに注意してください。
許容範囲を超える数値をフィールドに保存する必要がある場合、MySQL は数値を保存する前に、その数値に最も近い許容範囲の終わりに従って数値を切り捨てます。もう 1 つの特別な点は、
MySQL が不正な値をテーブルに挿入する前に自動的に 0 に変更することです。
UNSIGNED 修飾子は、フィールドが正の値のみを保持することを指定します。数値の正負の符号を保存する必要がないため、保存中に 1 ビットのスペースを節約できます。これにより、このフィールドに保存できる値の範囲が広がります。
ZEROFILL 修飾子は、出力値を補完するために 0 (スペースではない) を使用できることを指定します。この修飾子を使用して、MySQL データベースに負の値が格納されないようにします。
FLOAT、DOUBLE、および DECIMAL 型
MySQL でサポートされる 3 つの浮動小数点型は、FLOAT、DOUBLE、および DECIMAL 型です。 FLOAT 数値型は単精度浮動小数点値を表すために使用され、DOUBLE 数値型は倍精度浮動小数点値を表すために使用されます。
整数と同様、これらの型も追加パラメータ (表示幅インジケーターと小数点インジケーター) を取ります。たとえば、ステートメント FLOAT(7,3) は、表示される値が 7 桁 (小数点以下 3 桁) を超えないことを指定します。
小数点以下の桁数が許容範囲を超える値の場合、MySQL は自動的に最も近い値に丸めて挿入します。
DECIMAL データ型は、非常に高い精度が必要な計算に使用されます。この型を使用すると、値の精度とカウント方法を選択パラメーターとして指定できます。ここでの精度は、この値に対して保存された有効桁数の合計を指し、カウント方法は小数点以下の桁数を示します。たとえば、ステートメント DECIMAL(7,3) は、格納される値が 7 桁を超えず、小数点以下 3 桁を超えないことを指定します。
DECIMAL データ型の精度とカウント方法の修飾子を省略すると、MySQL データベースはこのデータ型として識別されるすべてのフィールドの精度を 10 に設定し、カウント方法を 0 に設定します。
UNSIGNED および ZEROFILL 修飾子は、FLOAT、DOUBLE、および DECIMAL データ型でも使用できます。また、その効果は INT データ型と同じです。
2. 文字列型MySQL は 8 つの基本的な文字列タイプ (CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM、SET、およびその他の文字列タイプ) を提供します。 単一文字のような単純なものから、テキストまたはバイナリ文字列の巨大なブロックに至るまでのデータを保存できます。 文字列タイプ バイト サイズ 説明と記憶域要件 CHAR 0 ~ 255 バイトの固定長文字列 VARCHAR 0 ~ 255 バイトの可変長文字列 TINYBLOB 0 ~ 255 バイト 255 文字を超えないバイナリ文字列 TINYTEXT 0 ~ 255 バイト 短いテキスト文字列 BLOB 0 ~ 65535 バイト バイナリ形式の長いテキスト データ TEXT 0- 65535 バイトの長文テキストデータ MEDIUMBLOB 0-16 777 バイナリ形式の 215 バイトの中長テキストデータ MEDIUMTEXT 0-16 777 215 バイトの中長テキストデータ LOGNGBLOB 0-4 294 967 295 バイトのバイナリ形式の非常に大きなテキスト データ LONGTEXT 0-4 294 967 295 バイトの非常に大きなテキスト データ Varbinary (m) 固定長のバイト文字列を許可します0 ~ m バイトの 0 ~ m 固定長バイト文字列 CHAR 型と VARCHAR 型 CHAR 型は固定長文字列に使用され、内部でサイズ修飾子を使用して定義する必要があります。括弧。このサイズ修飾子の範囲は 0 ~ 255 です。指定した長さより大きい値は切り捨てられ、指定した長さより小さい値はスペースで埋められます。 CHAR 型では BINARY 修飾子を使用できます。この修飾子を比較演算で使用すると、CHAR は従来の大文字と小文字を区別する方法ではなく、バイナリ形式で演算に参加します。 CHAR 型の変形として VARCHAR 型があります。これは可変長の文字列型であり、0 ~ 255 の範囲のインジケーターも必要です。 CHAR と VARCHGAR の違いは、MYSQL データベースが インジケータを処理する方法です。CHAR はこのサイズを値のサイズとして扱い、長さが不十分でない場合はスペースで埋めます。一方、VARCHAR 型はこれを最大値として扱い、文字列を格納するために実際に必要な長さ (および文字列自体の長さを格納するための追加バイト) を使用して値のみを格納します。したがって、インジケーターの長さより短い VARCHAR 型はスペースで埋められませんが、インジケーターより長い値は切り捨てられます。 VARCHAR 型は実際の内容に基づいて格納される値の長さを動的に変更できるため、フィールドに必要な文字数が不明な場合は、VARCHAR 型を使用するとディスク領域を大幅に節約し、記憶域効率を向上させることができます。 BINARY 修飾子を使用する場合、VARCHAR 型は CHAR 型と同じです。 TEXT および BLOB タイプ フィールド長要件が 255 を超える場合のために、MySQL は TEXT と BLOB の 2 つのタイプを提供します。これらはすべて、保存されたデータのサイズに基づいて異なるサブタイプを持ちます。これらの大きなデータは、テキスト ブロックや、画像や サウンド ファイルなどのバイナリ データ タイプを保存するために使用されます。 TEXT 型と BLOB 型の間では、分類と比較に違いがあります。 BLOB 型では大文字と小文字が区別されますが、TEXT では大文字と小文字が区別されません。サイズ修飾子は、さまざまな BLOB および TEXT サブタイプでは使用されません。 指定された型でサポートされる最大範囲を超える値は、自動的に切り捨てられます。 日付と時刻の型の値を扱う場合、MySQL には 5 つの異なるデータ型から選択できます。これらは、単純な日付と時刻のタイプと、日付と時刻の混合タイプに分類できます。 サブタイプは、必要な精度に応じて各サブタイプ内で使用できます。MySQL には、さまざまな入力形式を標準形式に変換する機能が組み込まれています。 型 サイズ (バイト) 範囲 形式 目的 DATE 4 1000-01-01/9999-12-31 YYYY-MM-DD 日付値 TIME 3 ' - 838:59:59'/'838:59:59' HH:MM:SS 時刻の値または期間 YEAR 1 1901/2155 YYYY 年の値 DATETIME 8 1000-01 -01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH:MM:SS 日付と時刻の値が混在しています TIMESTAMP 4 1970-01-01 00:00:00/2037 YYYYMMDD HHMMSS 混合日付と時刻の値、タイムスタンプ DATE、TIME、TEAR タイプ MySQL は DATE と TEAR を使用します型は単純な日付値を格納し、TIME 型は時間値を格納します。これらの型は、区切り文字のない文字列または整数のシーケンスとして記述することができます。文字列として記述する場合、 DATE 型の値は区切り文字としてハイフンで区切る必要があり、TIME 型の値は区切り文字としてコロンで区切る必要があります。 コロン区切り文字のない TIME 型の値は、MySQL によってタイムスタンプではなく期間として認識されることに注意してください。 MySQL は、日付の年の 2 桁の値、または SQL ステートメントの TEAR 型に入力された 2 桁の値も最大限に解釈します。すべての TEAR タイプの値は 4 つの数字で保存する必要があるためです。 MySQL は 2 桁の年を 4 桁の値に変換しようとします。 00 ~ 69 の範囲の値を 2000 ~ 2069 の範囲に変換します。 70 ~ 99 の範囲の値を 1970 ~ 1979 に変換します。 MySQL によって自動変換された値がニーズを満たさない場合は、西暦を 4 桁で入力してください。 DATEYIME および TIMESTAMP タイプ 日付と時刻のデータ型に加えて、MySQL は DATEYIME と TIMESTAMP という 2 つの混合タイプもサポートします。日付と時刻を単一の値として保存できます。 これら 2 つのタイプは、現在の日付と時刻を含むタイムスタンプを自動的に保存するために一般的に使用され、大量のデータベース トランザクションを実行する必要があり、デバッグとレビューのための監査証跡を確立する必要があるアプリケーションでうまく機能します。目的。 TIMESTAMP タイプのフィールドに明示的に値を割り当てていないか、null 値が割り当てられている場合。 MySQL は、システムの現在の日付と時刻を自動的に設定します。 複合型 MySQL は、SQL 仕様を拡張する 2 つの複合データ型 ENUM と SET もサポートしています。これらの型は技術的には文字列型ですが、異なるデータ型として扱うことができます。 ENUM 型ではコレクションから 1 つの値しか取得できませんが、SET 型ではコレクションから任意の数の値を取得できます。 ENUM 型 ENUM 型では、コレクション内で取得できる値は 1 つだけです。これは、単一のオプションに似ています。人間の性別など、相互に排他的なデータを扱う場合に理解しやすくなります。 ENUM タイプのフィールドは、コレクションから値を取得することも、null 値を使用することもできます。これ以外の入力を行うと、MySQL はこのフィールドに空の文字列を挿入します。さらに、挿入された値の大文字と小文字がコレクション内の値の大文字と小文字が一致しない場合、MySQL は挿入された値の大文字と小文字を自動的に使用して、コレクションの大文字と小文字が一致する値に変換します。 ENUM タイプはシステム内部に数値として保存でき、1 から始まるインデックスが付けられます。 ENUM タイプには最大 65536 個の要素を含めることができ、そのうちの 1 つはエラー情報を保存するために MySQL によって予約されています。 このエラー値はインデックス 0 または空の文字列で表されます。 MySQL は、ENUM 型コレクションに表示される値を正当な入力であると見なし、その他の入力は失敗します。これは、空の文字列または対応する数値インデックス 0 を含む行を検索することで、エラーのあるレコードの場所を簡単に見つけることができることを示しています。 SET タイプ SET タイプは ENUM タイプと似ていますが、同一ではありません。 SET タイプは、事前定義されたコレクションから任意の数の値を取得できます。 ENUM タイプと同様に、SET タイプのフィールドに事前定義されていない値を挿入しようとすると、 MySQL は空の文字列を挿入します。正当な要素と違法な要素の両方を含むレコードを挿入すると、MySQL は正当な要素を保持し、違法な要素を削除します。 SET タイプには最大 64 個の要素を含めることができます。 SET 要素では、値は対応する要素を表す「ビット」の離散シーケンスとして格納されます。ビットは、要素の順序付けされたコレクションを作成するためのシンプルかつ効率的な方法です。 また、重複した要素も削除されるため、SET 型に 2 つの同一の要素が含まれることは不可能です。 SET タイプのフィールドから不正なレコードを見つけたい場合は、空の文字列またはバイナリ値 0 を含む行を探すだけです。 各データ型の目的、物理ストレージ、表現範囲などを一般的に理解することによって。このようにして、特定のアプリケーションに直面した場合、対応する特性に応じて適切なデータ型を選択できるため、アプリケーションのデータベースのパフォーマンスを満たすことに基づいて、より少ないストレージ コストでより高いストレージ コストを達成するように努めることができます。
以上がMysql でサポートされるデータ型の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。