MySQLはタイプ整数(またはINT)とSMALLINT整数標準SQLをサポートしています。標準の拡張として、MySQLはまた、整数型TINYINT、MEDIUMINTおよびBIGINTをサポートしています。
タイプ | バイト数 | 署名付き最小 | 符号なし最小 | 署名された最大 | 符号なしの最大 |
---|---|---|---|---|---|
TINYINT |
1 | -128 |
0 |
127 |
255 |
SMALLINT |
2 | -32768 |
0 |
32767 |
65535 |
MEDIUMINT |
3 | -8388608 |
0 |
8388607 |
16777215 |
INT |
4 | -2147483648 |
0 |
2147483647 |
4294967295 |
BIGINT |
8 | -263 |
0 |
263-1 |
264-1 |
以下は、テーブルを作成するステートメントです。
CREATE TABLE `person` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`age` int(2) COMMENT '年龄',
`stature` int(3) ZEROFILL COMMENT '身高',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
列番号、年齢、身長は整数です。括弧内の数は、Mで示される幅後INTカラムを参照し、前記 整数型の場合、Mは、ディスプレイの最大幅です。ディスプレイ255の最大幅。かかわらず、表示幅と種類の値の範囲を記憶することができます。
のは、いくつかのテストデータを追加してみましょう:
INSERT INTO person( age, stature) VALUES(102,168);
INSERT INTO person( age, stature) VALUES(5,80);
INSERT INTO person( age, stature) VALUES(99999,99999);
クエリ結果:
ID | 年齢 | 身長 |
---|---|---|
1 | 102 | 168 |
2 | 5 | 080 |
3 | 99999 | 99999 |
- 我々は、年齢の幅が2セットが、INT(2)またはINT(11)、それは長さが4バイトであるデータベースに格納されているか否かは増加ZEROFILL特性は、この時間ではない、違いはありません。
- 私たちは、高速読み取り身長が3で設定し、セットZEROFILLプロパティ、長さが3よりも大きい場合、我々は、99999として、このような080として、フロントを構成するために0、3未満の長さを挿入し、正常に挿入することができます。
注意:3番目のレコードは(9いくつかの欠落)が誤って表示されたとき、私はNavicatの照会を使用しますが、コマンドラインクエリを使用することは正しいです。
あなたはZEROFILL列の値を指定すると、MySQLは自動的に列にUNSIGNED属性を追加します。
INSERT INTO person( age, stature) VALUES(25,-80);
その結果、我々は非負整数説明身長を持っています:
INSERT INTO person( age, stature) VALUES(25,-80)
> 1264 - Out of range value for column 'stature' at row 1
> 时间: 0.004s
数値データ・タイプについては、MySQL 8.0.17から始まっはZEROFILLプロパティをお勧めしていないされていない、とプロパティは、もはやのMySQLの将来のバージョンでサポートされています。この属性の効果を生み出すために、代替方法の使用を考えてみましょう。例えば、アプリケーションが使用できLPAD()関数を所望の幅にデジタルゼロパディングである、またはデジタル形式に格納されているCHARのカラム。
要約:
- ZEROFILL特性、INT(1)及びINT(11)差がないことなく、基礎となるデータは4バイト、音符表示欄255の最大幅です。
- プラス、左の会議0の幅よりも小さい幅ZEROFILL属性符号なしのデフォルトの列、およびディスプレイは、通常のディスプレイは、表示幅よりも大きくなっています。
- ZEROFILLプロパティ、LPAD関数の代わりに、この機能を使用してお勧めできません。