MySQLのデータ型 - 整数

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のカラム。

要約:

  1. ZEROFILL特性、INT(1)及びINT(11)差がないことなく、基礎となるデータは4バイト、音符表示欄255の最大幅です。
  2. プラス、左の会議0の幅よりも小さい幅ZEROFILL属性符号なしのデフォルトの列、およびディスプレイは、通常のディスプレイは、表示幅よりも大きくなっています。
  3. ZEROFILLプロパティ、LPAD関数の代わりに、この機能を使用してお勧めできません。

おすすめ

転載: www.cnblogs.com/ye-feng-yu/p/12017827.html