web-dev-qa-db-ja.com

MySQL-整数列のサイズ制限

PhpMyAdminを使用して、テーブル構造を作成しています。

MySQLのドキュメントページから整数型のサイズ制限について読むことができます: MySQL Integer Types Reference


だから、ここでコラムの作成と少し混乱しているところです。

テーブルに列を作成したい:tbl_note_categories called notescounter

特定のcategoryidtbl_notesに何千ものnoteidを作成することは考えていません。しかし、私は各categoryidに何百ものメモを作成すると信じています。

私は、tinyint、smallint、mediumintのいずれかを選択しています。上記のドキュメントリンクによると、smallintが最善の選択であると推測しています。

だからここに私の混乱があります。 PhpMyAdminは、Length/Valuesパラメーターの指定を求めます。この新しい列(notescounter)が署名されていないことを確認します。最大65536になります。つまり、長さ/値が(5)である必要がありますか?

Lengthは文字の長さだと思いますが、よくわかりません。 (varcharとの比較)

Snapshot of New column in PhpMyadmin

24
coffeemonitor

いいえ、これはMySQLに関する一般的な誤解です。実際、「長さ」は整数のサイズや格納できる値の範囲には影響しません。

  • TINYINTは常に8ビットで、2を保存できます8 異なる値。
  • SMALLINTは常に16ビットで、2を保存できます16 異なる値。
  • INTは常に32ビットで、2を保存できます32 異なる値。
  • BIGINTは常に64ビットで、2を保存できます64 異なる値。

MEDIUMINTもありますが、MySQLに携わるエンジニアは、MEDIUMINTは常に内部的に32ビットINTに昇格するため、MEDIUMINTを使用するメリットはないと言っています。

長さは表示用のonlyであり、これはZEROFILLオプションを使用する場合にのみ重要です。

INT(10)とINT(12)の違い(コードに適用される場合)は何ですか? への回答の例を参照してください

48
Bill Karwin

はい、長さ5を指定します。

MySQLでは、整数型の「長さ」属性はオプションです。これはMySQLの拡張機能であり、非標準です)。

列宣言から省略された場合、MySQLはデフォルト値を提供します。 SMALLINT UNSIGNEDの場合、デフォルト値は5です。

この値は、整数型に保存できる値の範囲には影響しません。クライアントが使用または無視することを選択できる結果セットメタデータで返される「表示長」を指定します。

http://dev.mysql.com/doc/refman/5.5/en/numeric-type-attributes.html

7
spencer7593