8 バイト |
(-9,223,372,036,854,775,808, 9 223 372 036 854 775 807) |
(0, 18 446 744 073 709 551 615) |
大きな整数値 |
| ##上の表からわかるように、整数の型が異なれば、格納するのに必要なバイト数も異なります。最小のバイト数は TINYINT 型で、最大のバイト数は BIGINT 型です。占有するバイト数が多くなります。型が表現できる値の範囲が大きくなります。したがって、mysql の整数型は「BIGINT」になります。
MySQL BIGINT
BIGINT は、ab バイトまたは 64 ビットの整数値であり、大きな整数値を格納する場合に便利です。
MySQL BIGINT は、他の MySQL 整数データ型と同様に、符号付きまたは符号なしが可能です。符号付きデータ型は、列に正と負の両方の整数値を格納できることを意味します。これは、MySQL のほとんどの整数型のデフォルトの型です。したがって、明示的に指定しない限り、整数型の列には正と負の両方の整数を格納できます。
一方、符号なしデータ型は、列に正の整数値のみを格納できることを意味します。
署名付き MySQL BIGINT 型の範囲は、-9223372036854775808 ~ 9223372036854775807
符号なし BIGINT 型の場合、値の範囲は 0 ~ 18446744073709551615 です。
BIGINT 型のもう 1 つのプロパティは ZEROFILL です。このプロパティが列に指定されると、その列は自動的に UNSIGNED に設定されます。
zerofill 属性はスペースをゼロで埋めます。
BIGINT の例:
BIGINT 型の使用方法を説明するために、いくつかの例を見てみましょう。
#
CREATE DATABASE IF NOT EXISTS integers;
USE integers;
次に、テーブルを作成し、次のクエリに示すようにさまざまな BIGINT 列を設定しましょう。 CREATE TABLE examples(x BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, y BIGINT UNSIGNED, z BIGINT ZEROFILL );
例 1
まず、すべての正の値をテーブルに追加してみます。 INSERT INTO examples(x,y,z) VALUES (1,2,3);
上記のクエリ例では、これらの値は、符号付き、符号なし、およびゼロフィル BIGINT 型の範囲内にあるため許容されます。 #SELECT * FROM examples;
例 2## 次のケースでは、すべての負の値を加算してみましょう。クエリの例は次のとおりです。
INSERT INTO examples(x,y,z) VALUES (-1,-2,-3);
ERROR 1264 (22003): Out of range value for column 'y' at row 1
この場合、y 列が署名されていないため、クエリは失敗します。したがって、列に負の値を割り当てることは列の範囲外になります。
#例 3
同じことが観察できます。上記と同様 3 列目も同様の状況。 zerofill 属性は自動的に列を符号なしにし、範囲外の負の値を追加できるようにします。例は次のとおりです:
INSERT INTO examples(x,y,z) VALUES (-1,2,-3);
ERROR 1264 (22003): Out of range value for column 'z' at row 1
例 4 さて各タイプの最大値を加算してみましょう。クエリの例は次のとおりです。
INSERT INTO examples(x,y,z) VALUES (-9223372036854775808, 9223372036854775808, 9223372036854775808);
上記の例では、すべての値が範囲内にあるため、クエリは正常に実行されます。 次のクエリを考えてみましょう:
INSERT INTO examples(x,y,z) VALUES (9223372036854775807, 9223372036854775808, 9223372036854775808);
すべての値がは最大値にあります。列 x は AUTO_INCREMENT に設定されているため、値を追加すると失敗します。
INSERT INTO examples(y,z) VALUES (9223372036854775808, 9223372036854775808);
ERROR 1062 (23000): Duplicate entry '9223372036854775807' for key 'examples.PRIMARY'
ただし、MySQL で厳密モードが無効になっている場合は、範囲外の値を挿入できます。
SELECT * FROM examples;
[関連する推奨事項: mysql ビデオ チュートリアル ]