29

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

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


ここで、列の作成について少し混乱しています。

テーブルに列を作成したい:tbl_note_categoriesと呼ばれるnotescounter

tbl_notes特定の を使用して何千もの noteid を作成することは考えていませんcategoryid。しかし、各カテゴリ ID に対して何百ものメモを作成すると思います。

私はその時点で、tinyint、smallint、mediumint のいずれかを選択しています。上記のドキュメント リンクによると、smallint が最良の選択だと思います。

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

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

PhpMyadmin の新しい列のスナップショット

4

2 に答える 2

56

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

  • TINYINTは常に8ビットであり、28個の異なる値を格納できます。
  • SMALLINTは常に16ビットであり、216個の異なる値を格納できます。
  • INTは常に32ビットであり、232個の異なる値を格納できます。
  • BIGINTは常に64ビットであり、264個の異なる値を格納できます。

MEDIUMINTもありますが、MySQLに取り組んでいるエンジニアによると、MEDIUMINTは常に内部で32ビットINTに昇格するため、MEDIUMINTを使用しても実際にはメリットはありません。

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

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

于 2013-01-29T00:01:44.817 に答える
7

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

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

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

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

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

于 2013-01-29T14:47:44.510 に答える