最近就職活動をしていて面接を受けているのですが、面接の過程で自分の欠点がたくさん露呈し、まとめにまとめていました。おそらくほとんどの面接官は、データベースの最適化、マスター/スレーブ レプリケーション、インデックス、エンジンなど、MySQL に関する質問をするでしょう。それで、私が最も印象に残っているのは、int (10) と int (11) の違いは何なのかということです。これは最も基本的な質問のようですが、私は決して気にしていないようです。当時は少し戸惑ったのですが、何が違うのでしょうか?全く分かりません!考えていない!
家に帰ってから、mysql のデータ型に関する知識をすぐに復習しました。整数型について少し説明します。
#mysql の整数データ型説明 | ストレージ要件 | |
---|---|---|
小さな整数 | 1バイト | |
小さな整数 | 2 バイト | |
中整数 | 3 バイト | |
通常のサイズの整数 | 4 バイト | |
ビッグ整数 | 8 バイト |
Signed | Unsigned | |
---|---|---|
-128~127 | 0~ 255 | |
-32768~32767 | 0~65535 | |
-8388608~8388607 | 0~16777215 | |
-2147483648~2147483647 | 0~4294967295 | |
-9223372036854775808~9223372036854775807 | 0~18446744073709551615 |
デフォルトの表示幅 | |
---|---|
4 | |
6 | ##mediumint |
int(整数) | |
##bigint | |
* 負号は 1 桁を占めるため、各タイプの幅は次のようになります。最大値は1桁です。たとえば、tinyint の最大桁数は 3 に負符号を加えたものであるため、表示幅は 4 になります。 |
mysql> desc test_integer; +-----------+------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | test_id_1 | tinyint(1) | NO | | NULL | | | test_id_2 | tinyint(4) | NO | | NULL | | +-----------+------------+------+-----+---------+----------------+ 3 rows in set (0.00 sec)
signed tinyint 型の表示幅 1 の test_id_1 と表示幅 4 の test_id_2 の 2 つのフィールドを作成しました。データを挿入し、同時に値 128、1、127 を挿入して、何が起こるかを確認します。
mysql> insert into test_integer (test_id_1,test_id_2) values (-128,-128), (1,1), (127,127); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0
ok は、挿入が成功したことを示すプロンプトを表示します。
mysql> select * from test_integer; +----+-----------+-----------+ | id | test_id_1 | test_id_2 | +----+-----------+-----------+ | 1 | -128 | -128 | | 2 | 1 | 1 | | 3 | 127 | 127 | +----+-----------+-----------+ 3 rows in set (0.00 sec)
をクエリしてみましょう。結果は同じです。上記の実験の後、結論を導き出します:
値の範囲表示幅の整数型は関係ありません。表示幅は、MySQL が表示できる数値の最大数を指定するだけです。桁数が指定幅未満の場合は、スペースで埋められます。表示幅より大きい値が挿入された場合は、次のとおりです。値がこの型の整数の値の範囲を超えない場合、値を挿入して表示することができます。
同様に、int (10) と int (11) も表示幅が異なるだけで違いはありません。皆さん、忘れないでください。
推奨チュートリアル: 「
PHP チュートリアル」
以上がMySQL の int (10) と int (11) の違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。