私はmysqlでブール値をとして知っていましたtinyint (1)
。
今日、私は次のように定義された整数値を持つテーブルを参照tinyint(2)
し、またなどのほかint(4)
、int(6)
...
integerおよびtinyint型のフィールドでのサイズの意味は何ですか?
私はmysqlでブール値をとして知っていましたtinyint (1)
。
今日、私は次のように定義された整数値を持つテーブルを参照tinyint(2)
し、またなどのほかint(4)
、int(6)
...
integerおよびtinyint型のフィールドでのサイズの意味は何ですか?
回答:
表示幅を意味します
tinyint(1)とtinyint(2)のどちらを使用しても、違いはありません。
私は常にtinyint(1)とint(11)を使用し、いくつかのmysqlクライアント(navicat、sequel pro)を使用しました。
それは何も意味しません!私はテストを実行しましたが、上記のすべてのクライアント、またはコマンドラインクライアントでさえ、これを無視しているようです。
ただし、オプションを使用している場合、表示幅は最も重要です。ZEROFILL
たとえば、テーブルに次の2つの列があるとします。
TINYINT(2)ZEROFILL
B tinyint(4)ゼロフィル
両方の列は1の値を有し、列のための出力Aがあろう01
と0001
のためにB以下のスクリーンショットで見られるように、:)
(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バイトの数値です。詳細はこちら-INTEGER、INT、SMALLINT、TINYINT、MEDIUMINT、BIGINT。
TINYINTデータ型の構文はTINYINT(M)です。Mは最大表示幅を示します(MySQLクライアントがサポートしている場合にのみ使用されます)。