MySQL で定義されるデータ フィールドのタイプは、データベースの最適化にとって非常に重要です。
MySQL は、数値、日付/時刻、文字列 (文字) タイプの 3 つのカテゴリに大別できます。 type
Int(N)
のNの意味は、init(5)のzerofillを定義しています。 int(10)と結合すると、表示幅が一致せず、一時テーブル
が表示される場合があります。は、表示幅が N であることを意味しますが、依然として 4 バイトのストレージを占有し、ストレージ範囲は変更されません。
>create table int_test(a int zerofill NOT NULL auto_increment, PRIMARY KEY (a)); >createtable int_test_4(a int(4) zerofill NOT NULL auto_increment, PRIMARY KEY (a)); >select * from int_test_4; +------------+ |a | +------------+ | 0001 | | 0002 | |2147483648 | +------------+ >select * from int_test; +------------+ |a | +------------+ |0000000001 | |0000000002 | |2147483648 | +------------+
浮動小数点数型について: 1) 可能な限り使用しないようにしてください。2) 浮動小数点数は使用できません。等号比較シナリオでは、enum を TINYINT に置き換えることをお勧めします
日付と時刻の型
時間の値を表す日付と時刻の型は、DATETIME、DATE、TIMESTAMP、TIME、YEAR です。MySQL5.6はyear(2)をサポートしていません
日付型に関する注意事項Timestamp、datatimeはMySQL5.6.5からの現在時刻への自動更新をサポートしています: current timestamp
Date変換 : Cast (datatime_col as DATE)
>select now(4),MICROSECOND(now(4)); +--------------------------+---------------------+ |now(4) |MICROSECOND(now(4)) | +--------------------------+---------------------+ |2016-04-16 08:50:01.6589 | 658900 | +--------------------------+---------------------+timestamp 5.6.6 以降は null をサポートします datetime はタイムスタンプを置き換えることをお勧めします
String 型
character 文字列型は、CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM、SET を指します。このセクションでは、これらの型がどのように機能するか、およびそれらをクエリで使用する方法について説明します。 -length タイプは次のとおりです。 char(M) タイプのデータ列では、各値が M バイトを占めます。特定の長さが M より小さい場合、MySQL は右側にスペース文字を追加します。 (パディングスペース文字は検索操作中に削除されます。) varchar(M) タイプのデータ列では、各値はその長さを記録するのに十分なバイトと 1 バイトのみを占めます (つまり、合計の長さは L+1 バイトです) ) varchar は可変長文字列を格納します。255 バイト未満の場合、長さは 65532 バイト (すべての列の合計) です。は固定長で保存され、読み取り時に末尾のスペースは切り捨てられます。最大長は 255 文字です。1) CHAR (M) の意味:2) varchar(N) の N の意味 N 文字の最大格納量。 varchar(5) と varchar(200) は hello を格納するために同じスペースを占有しますが、後者はソート時により多くのメモリを消費します。これは、col による
order が fix_length を使用して列の長さを計算するためです (同じことがメモリ エンジンにも当てはまります) )
例:varchar(200)utf8 で占有されているバイト数
200*3+ 2
varchar(64) utf8
64*3=192<255
192+1=193提案:
MySQL は通常 innodb エンジンとして使用されます。 innodb エンジンは本質的に可変長ストレージです:
行が保存されます:
char を推奨します
計算例。
実際の長さの計算を説明するために 2 つの例を挙げます。
a)
createtable t4(c varchar(N)) charset=gbk;
として定義されているように、テーブルに varchar 型が 1 つだけある場合、ここでの N の最大値は (65535-1-2)/ となります。 2= 32766。
実際の行ストレージは 2 バイト目から始まるため、1 を減算する理由です。
2 で除算する理由は、varchar ヘッダーの 2 バイトが長さを表すためです。文字コードはgbkです。
b) テーブルが
createtable t4(c int, c2 char(30), c3 varchar(N)) charset=utf8;
として定義されている場合、ここでの N の最大値は (65535-1-2) となります。 - 4-30*3)/3=21812
1を引くと2を引くのは上の例と同じです;
4を引く理由はint型cが4バイトを占めるためです;
30を引く理由* 3 は char( 30) 90 バイトを占め、エンコードは utf8 です。
以上がMySQL データ型の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。