MySQL の int(n) の後の n はどういう意味ですか?

MySQL の int(n) の後の n はどういう意味ですか?

int(1) の長さ 1 は、許可されたストレージ幅を表していないことはすでにご存知かもしれません。

しかし、この長さが何を意味するのかを実際に研究した人は多くありません。今日は簡単に分析してみたいと思います。

テーブル作成の簡単な例を見てみましょう。

テーブルテストを作成(
 id int(11) 符号なし NOT NULL AUTO_INCREMENT,
 uid int(3) NULLではない、
 主キー (id)
)ENGINE=InnoDB デフォルト文字セット=utf8mb4;

ここではuidフィールドを例として取り上げ、int(3)に設定します。

質問は、int(3) を設定すると、データ 1234 を保存できないかどうかです。

次に、次のSQL文を入力してテストします。

`test` (`uid`) に VALUES(1234) を挿入します。
`test` (`uid`) に VALUES(12345678) を挿入します。

結果のグラフは次のようになります。

友人は、上記のSQL文を通じてデータ1234が正常に挿入されたことを確認できます。さらに、より多くの桁のデータを挿入することもできます。これはなぜでしょうか?以下を参照してください。

理由は次のとおりです。

この int(n) は次のように簡単に理解できます。

この長さは、このフィールドに格納されているデータの幅が n 桁であることを MySQL に伝えるためのものです。もちろん、n 桁を格納しない場合でも、(この型の格納範囲内であれば) MySQL は普通に格納することもできます。

次に、test2テーブルを再度作成し、今度はuidフィールドに次の制約を追加します: unsignedおよびzerofill

==フィールド制約については後で詳しく説明します==

MySQL コードは次のとおりです。

テーブルtest2を作成します(
 id int(11) 符号なし NOT NULL AUTO_INCREMENT,
 uid int(3) 符号なしゼロフィル NOT NULL、
 主キー (id)
)ENGINE=InnoDB デフォルト文字セット=utf8mb4;

これで、私の uid フィールド: 長さ (n) = 3、フィールド制約 = 符号なし、ゼロフィル: (符号なし制約、数字制約を埋めるために 0 を使用)

この制約フィールドを設定すると、テーブルにデータを挿入するときに、uid フィールドが 3 桁未満の場合、システムは自動的に左側に 0 を入力します。

uid フィールドに数字 33 を挿入してコードをテストできます。

`test2` (`uid`) VALUES(33) に挿入します。

結果のグラフは次のようになります。

長さが3未満の場合は、左から0で埋められることに驚きましたか?ハハハハ

つまり、int の後の長さ n は、格納する数値のサイズとは何の関係もないことが明確にわかるはずです。

==要約:==

テーブル フィールドのデータ型を int として定義する場合、その後ろの長さ n は意味がありません。この型の保存範囲内であれば、MySQL は正常に保存できます。左側に 0 を埋め込む必要がある場合は、このフィールドにゼロ埋め制約と unsigned 制約が必要です。

MySQL の int(n) の後の n の意味についてのこの記事はこれで終わりです。MySQL int(n) に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • MySQLにおけるint(10)とint(11)の違い
  • int(3)とint(10)の値の範囲はmysqlで同じですか?
  • MySQL int(3)とint(11)の違いの詳細な説明
  • MySQLのint(1)とint(10)の違いについて簡単に説明します。

<<:  JavaScript はパスワードボックスの入力検証を実装します

>>:  docker-compose が遅すぎる場合の解決策の詳細な説明

推薦する

Linux で履歴レコードを表示し、タイムスタンプを追加するためのヒント

Linux で履歴レコードを表示し、タイムスタンプを追加するためのヒントbashに詳しい人なら、hi...

Centos8 システムの VMware インストール チュートリアル図 (コマンド ライン モード)

目次1. ソフトウェアとシステムイメージ2. 仮想マシンを作成する3. CentOS8をインストール...

Vueは適切なスライドアウトレイヤーアニメーションを実装します

この記事では、適切なスライドアウトレイヤーアニメーションを実装するためのVueの具体的なコードを例と...

ウェブページのコアコンテンツ(画像とテキスト)の視覚的表現の紹介

情報の最適化と改良は常にデザインの最初のステップです。 「これは百度アライアンスユーザーエクスペリエ...

MySQL グリーンバージョン設定コードと 1067 エラーの詳細

MySQL グリーンバージョン設定コードと 1067 エラーMySQL エンコーディングを表示 &#...

TypeScript 列挙の基本と例

目次序文TypeScript の列挙型とは何ですか? TypeScriptで列挙型を使用する際に注意...

ウェブサイト製品設計の参考となるいくつかの原則

以下の分析は製品設計原則に関するものですが、そのほとんどはウェブサイト製品に基づいているため、ユーザ...

MySQLで関連テーブルを削除する実用的な方法

MySQL データベースでは、テーブルが互いに関連付けられた後は、それらを任意に削除することはできま...

Linux環境にJDK1.8をインストールする

目次1. インストール環境2. インストール手順ステップ1: インストールパッケージをダウンロードす...

docker 環境でのデータベース バックアップ (postgresql、mysql) のサンプル コード

目次posgresql バックアップ/リストアMySQL バックアップ/復元posgresql バッ...

CMD で MySQL データベースを操作するときに中国語の文字化けが発生する問題の解決方法

Baiduで検索しました。 。 chcp コマンドを使用して、cmd の文字エンコーディングを 65...

JavaScript イベント キャプチャ バブリングとキャプチャの詳細

目次1. イベントの流れ1. コンセプト2. DOMイベントフロー2. イベントの委任1. イベント...

Vueは州、都市、地区のカスケード選択を実現します

最近、省、市、地区のカスケード選択効果を実装する必要があります。省、市、地区のデータはすべてローカル...

Linuxブートサービスを起動する2つの方法

目次rc.local メソッドchkconfig メソッドrc.local メソッド1 まず自動的に...

フォームにファイルをアップロードした後にアクションを保存するよう促す理由と解決策

jsonデータはhtml形式で返される必要がありますつまり、 response.setContent...