MySQL - 整数列のサイズ制限

私はテーブル構造を作成するためにphpMyAdminを使用しています。

I can read from the documentation pages on MySQL about size limits for Integer Types: MySQL Integer Types Reference


だから私はここで列を作ることとちょっと混乱しています。

I want to create a column in the table: tbl_note_categories called notescounter

特定の categoryid を使用して tbl_notes に何千ものノートを作成するとは思いません。しかし、私は各カテゴリIDに数百のノートを作成すると信じています。

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

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

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

Snapshot of New column in PhpMyadmin

23
nl ru de

2 答え

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

  • TINYINT is always 8 bits and can store 28 distinct values.
  • SMALLINT is always 16 bits and can store 216 distinct values.
  • INT is always 32 bits and can store 232 distinct values.
  • BIGINT is always 64 bits and can store 264 distinct values.

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

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

See an example in my answer to What is the difference (when being applied to my code) between INT(10) and INT(12)?

46
追加された
BOOL / BOOLEAN BIT(1)ではなく TINYINT(1)として定義されている理由を知っていますか?
追加された 著者 Solomon Ucko,
古いバージョンでは TINYINT(1)の同義語となり、新しいバージョンでは BIT(1)の同義語になる可能性があるため、/code>
追加された 著者 Solomon Ucko,
@MuhammadRizwan:24ビット、それは2 ^ 24の別個の値を格納することができます。 dev.mysql.com/doc/refman/5.7/en/ integer-types.html しかし、私はそれらを使用しません。なぜなら、MySQLのエンジニアは、mediumintは常に内部的に32ビットオブジェクトとして保存されていると言っていたからです。 mediumintを使用することでストレージ節約はありません。
追加された 著者 Bill Karwin,
@SolomonUcko:下位互換性を保つため。 MySQLでは、 BIT(n)データ型はバージョン5.0まで追加されませんでした。 MySQL 4.1以前では、 BOOL BIT (長さオプションなし)は TINYINT(1)の同義語でした。
追加された 著者 Bill Karwin,
@SolomonUcko、RDBMSのソフトウェア開発を実行すると、その決定を下すことができます。 :-)
追加された 著者 Bill Karwin,
mediumIntegerはどうですか?
追加された 著者 user5122725,
ありがとうございました....
追加された 著者 user5122725,

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

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

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

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

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

7
追加された
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com