データの種類
MySQL では、データ型を次の型に分類します:
1. 數(shù)値型 (整數(shù)、浮動小數(shù)點(diǎn))
3. 日付と時刻型
5. スペース型 (非科學(xué)的な仕事では基本的に使われないので説明は省略します)
整數(shù)型
整數(shù)型は長さが異なり、実際の使用プロセスも異なります。
MySQL は、オプションの表示幅インジケーターの形式で SQL 標(biāo)準(zhǔn)を拡張し、データベースから値を取得するときに、値を指定された長さまで延長できるようにします。たとえば、フィールドのタイプを INT(6) に指定すると、データベースから取得するときに 6 桁未満の値が自動的にスペースで埋められます。幅インジケーターを使用しても、フィールドのサイズや格納できる値の範(fàn)囲には影響しないことに注意してください。
注:
1. テーブルフィールドを作成するとき、性別を表すために符號なしの小さな整數(shù) (tinyint) を使用できます。女性を表すには 0 を使用し、男性を表すには 1 を使用します。不明を表すには 2 を使用します。
注:
1. 浮動小數(shù)點(diǎn)は不正確な値であり、精度が低い場合があります
*CHAR * 型は固定長文字列に使用され、かっこ內(nèi)のサイズ修飾子を使用して定義する必要があります。このサイズ修飾子の範(fàn)囲は 0 ~ 255 です。指定した長さより大きい値は切り捨てられ、指定した長さより小さい値はスペースで埋められます。
*VARCHAR * 長さが不足しない場合は、このサイズを値のサイズとして扱います。一方、VARCHAR 型はそれを最大値として扱い、文字列を格納するために実際に必要な長さのみを使用します
型はスペースで埋められませんが、インジケーターより長い値は切り捨てられます。
VARCHAR 型は実際の內(nèi)容に基づいて格納される値の長さを動的に変更できるため、フィールドに必要な文字?jǐn)?shù)が不明な場合に VARCHAR 型を使用すると、ディスク領(lǐng)域を大幅に節(jié)約し、ストレージ効率を向上させることができます。
Text タイプと BLOB タイプ フィールド長の要件が 255 を超える場合のために、MySQL は TEXT と BLOB の 2 つのタイプを提供します。これらはすべて、保存されたデータのサイズに基づいて異なるサブタイプを持ちます。これらの大きなデータは、テキスト ブロックや、畫像、サウンド ファイルなどのバイナリ データ タイプを保存するために使用されます。
TEXT タイプと BLOB タイプの間では、分類と比較に違いがあります。 BLOB 型では大文字と小文字が區(qū)別されますが、TEXT では大文字と小文字が區(qū)別されません。サイズ修飾子は、さまざまな BLOB および TEXT サブタイプでは使用されません。
Time type
2. 実際の狀況に応じて上記の型を選択できます。3. データベース管理での閲覧を容易にするために、時刻を保存するために datetime 型を使用する人もいます。
複合型
ENUM 型ではコレクションから 1 つの値のみを取得できますが、SET 型ではコレクションから任意の數(shù)の値を取得できます。
列挙型ENUM タイプでは、コレクション內(nèi)で 1 つの値のみを取得できます。これは、単一のオプションと同様です。人間の性別など、相互に排他的なデータを扱う場合に理解しやすくなります。 ENUM タイプのフィールドは、コレクションから値を取得することも、null 値を使用することもできます。他の入力では、MySQL によって空の文字列がフィールドに挿入されます。さらに、挿入された値の大文字と小文字がコレクション內(nèi)の値の大文字と小文字が一致しない場合、MySQL は挿入された値の大文字と小文字を自動的に使用して、コレクションの大文字と小文字が一致する値に変換します。
ENUM タイプはシステム內(nèi)部に數(shù)値として保存でき、1 から始まる數(shù)値でインデックスが付けられます。 ENUM タイプには最大 65536 個の要素を含めることができ、そのうちの 1 つはエラー情報(bào)を保存するために MySQL によって予約されており、このエラー値はインデックス 0 または空の文字列で表されます。
MySQL は、ENUM 型コレクションに表示される値を正當(dāng)な入力であると見なし、その他の入力は失敗します。これは、空の文字列または対応する數(shù)値インデックス 0 を含む行を検索することで、エラーのあるレコードの場所を簡単に見つけることができることを示しています。
SET タイプ SET タイプは ENUM タイプと似ていますが、同じではありません。 SET タイプは、事前定義されたコレクションから任意の數(shù)の値を取得できます。また、ENUM タイプと同様に、SET タイプのフィールドに事前定義されていない値を挿入しようとすると、MySQL は空の文字列を挿入します。正當(dāng)な要素と違法な要素の両方を含むレコードを挿入すると、MySQL は正當(dāng)な要素を保持し、違法な要素を削除します。
SET タイプには最大 64 個の要素を含めることができます。 SET 要素では、値は、対応する要素を表す「ビット」の離散シーケンスとして格納されます。ビットは、要素の順序付けられたコレクションを作成するためのシンプルかつ効率的な方法です。
また、重複した要素も削除されるため、SET 型に 2 つの同一の要素を含めることはできません。
SET タイプのフィールドから不正なレコードを見つけたい場合は、空の文字列またはバイナリ値 0 を含む行を探すだけです。
型の使用法
非常に多くの型を?qū)W習(xí)しました。テーブル ステートメントを作成するときは、対応する型を使用するだけです。
例は以下のとおりです。
CREATE TABLE IF NOT EXISTS demo ( id int(11) NOT NULL, username varchar(50) NOT NULL, password char(32) NOT NULL, content longtext NOT NULL, createtime datetime NOT NULL, sex tinyint(4) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
フィールドのその他の屬性設(shè)定
UNSIGNED (符號なし) 主に整數(shù)型と浮動小數(shù)點(diǎn)型に使用され、符號なしを使用します。つまり、前に - (マイナス記號) がありません。
記憶桁數(shù)が長くなります。 tinyint integer の値の範(fàn)囲は -128 ~ 127 です。 unsigned を使用した後は、0 ~ 255 の長さを保存できます。
作成時に整數(shù)または浮動小數(shù)點(diǎn)フィールドのステートメントの後に追加します:
unsigned
ZEROFILL (0 パディング) 0 (スペースではない) を使用して出力値を補(bǔ)うことができます。この修飾子を使用して、MySQL データベースに負(fù)の値が格納されないようにします。
作成時に整數(shù)または浮動小數(shù)點(diǎn)フィールドのステートメントの後に追加します。
zerofill
default MySQL では挿入が許可されていないため、デフォルト屬性により定數(shù)値が割り當(dāng)てられるようになります。関數(shù)または式の値。さらに、このプロパティは BLOB 列または TEXT 列では使用できません。この列に NULL 屬性が指定されている場合、デフォルト値が指定されていない場合、デフォルト値は NULL になります。それ以外の場合、デフォルト値はフィールドのデータ型によって異なります。
作成するときは、整數(shù)または浮動小數(shù)點(diǎn)フィールドのステートメントに従います:
default 'value'
not null 列が not null として定義されている場合、その列に null 値を挿入することはできません。必要な値がすべてクエリに渡されたことを基本的に検証できるため、重要な狀況では常に not null 屬性を使用することをお勧めします。
作成時に整數(shù)または浮動小數(shù)點(diǎn)フィールドのステートメントに以下を追加します:
not null
null 列に null 屬性を指定する場合、行內(nèi)の他の列が埋められているかどうかに関係なく、その列は空のままにすることができます。 null は正確には「なし」を意味し、空の文字列や 0 ではないことに注意してください。
作成時に整數(shù)または浮動小數(shù)點(diǎn)フィールドのステートメントの後に not null を宣言しないでください。