私はmysqlではtinyint (1)
としてブール値を知っていました。
今日、私はtinyint(2)
のような整数を定義したテーブル、そしてint(4)
、int(6)
のような他のものを見ることができます...
整数型とtinyint型のフィールドで、サイズはどういう意味ですか?
表示幅を意味します
Tinyint(1)とtinyint(2)のどちらを使用しても、違いはありません。
私はいつもtinyint(1)とint(11)を使い、いくつかのmysqlクライアント(navicat、続編pro)を使いました。
それは何も意味しませんAT ALL!私はテストを実行しました、上記のすべてのクライアント、あるいはコマンドラインクライアントでさえもこれを無視するようです。
しかし、表示幅は、ZEROFILL
オプションを使用している場合、たとえばテーブルに次の2つの列がある場合に最も重要です。
Atinyint(2)ゼロフィル
Btinyint(4)ゼロフィル
両方の列の値は1です。列Aの出力は_ b _の01
および0001
になります。下のスクリーンショットに見られるように、、:)
(m)
は列の表示幅を示します。 MySQLクライアントなどのアプリケーションは、クエリ結果を表示するときにこれを利用します。
例えば:
| v | a | b | c |
+-----+-----+-----+-----+
| 1 | 1 | 1 | 1 |
| 10 | 10 | 10 | 10 |
| 100 | 100 | 100 | 100 |
ここでa
、b
およびc
は、それぞれTINYINT(1)
、TINYINT(2)
およびTINYINT(3)
を使用しています。ご覧のとおり、表示幅を使用して左側に値が埋め込まれます。
それがその特定のタイプの値の受け入れられた範囲に影響を及ぼさないことに注意することは重要です、すなわちTINYINT(1)
はまだ[-128 .. 127]
を受け入れます。
mysql> CREATE TABLE tin3(id int PRIMARY KEY,val TINYINT(10) ZEROFILL);
Query OK, 0 rows affected (0.04 sec)
mysql> INSERT INTO tin3 VALUES(1,12),(2,7),(4,101);
Query OK, 3 rows affected (0.02 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM tin3;
+----+------------+
| id | val |
+----+------------+
| 1 | 0000000012 |
| 2 | 0000000007 |
| 4 | 0000000101 |
+----+------------+
3 rows in set (0.00 sec)
mysql>
mysql> SELECT LENGTH(val) FROM tin3 WHERE id=2;
+-------------+
| LENGTH(val) |
+-------------+
| 10 |
+-------------+
1 row in set (0.01 sec)
mysql> SELECT val+1 FROM tin3 WHERE id=2;
+-------+
| val+1 |
+-------+
| 8 |
+-------+
1 row in set (0.00 sec)
INT、TINYINTについて。INTは4バイトの数字、TINYINTは1バイトの数字です。ここでより多くの情報 - 整数、INT、小さい、TINYINT、中間、BIGINT 。
TINYINTデータ型の構文はTINYINT(M)です。ここで、Mは最大表示幅を示します(MySQLクライアントがサポートしている場合にのみ使用されます)。
数値型属性 。