まず、文字列型 varchar(M) と数値型 tinyint(M) の違いを理解しましょう。 mysql ?
String 列型 : varchar(M) たとえば、M は、フィールド、つまりフィールドの長さです。設定によっては、フィールド長を超えるデータを挿入するとエラーが発生する可能性があります。また、エラーが発生しない場合でも、挿入したデータは、フィールドの事前定義された長さに合わせて自動的に切り詰められます。したがって、varchar(20) と varchar(40) は異なり、 はフィールド に格納できるデータの長さを正確に反映します。 数値列タイプ
: その長さ修飾子は 最大表示幅 を表し、フィールドの物理的なストレージとは関係ありません。言い換えれば、 tinyint(1) と tinyint(4) が格納できる数値範囲は両方とも -128...127 (または符号なし値の場合は 0...255) です。これらは 同じ データ型。もちろんそのままです。若干の違いがあります。これについては以下で説明します。 tinyint データ型の場合、
1 バイトのみを占有します: - unsigned (符号なし)、範囲は 0 ~ 255、デフォルトの長さは 3 です。
: tinyint は 1 バイトを占め、1 バイトは 8 ビット、つまり 1*8=8 で、表現できる数値の数は 8 倍です。 2 平方 (2^8 = 256 個の数値)。Range アルゴリズム
相違点
:zerofillを使用した場合、実際の長さが指定した表示長に達しない場合、先頭に0が埋め込まれます。 (zerofillの略はゼロを埋めることです)Test
まずテストテーブルを作成し、tinyint型にzerofillを使用します。CREATE TABLE `pre_demo` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键', `unsigned_t` tinyint(3) unsigned zerofill NOT NULL DEFAULT '000', `signed_t` tinyint(4) unsigned zerofill NOT NULL DEFAULT '0000', `t1` tinyint(1) unsigned zerofill NOT NULL DEFAULT '0', `t2` tinyint(2) unsigned zerofill NOT NULL DEFAULT '00', `t3` tinyint(3) unsigned zerofill NOT NULL DEFAULT '000', `t4` tinyint(4) unsigned zerofill NOT NULL DEFAULT '0000', `t5` tinyint(5) unsigned zerofill NOT NULL DEFAULT '00000', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
NSERT INTO pre_demo VALUES(NULL,8,8,8,8,8,8,8); INSERT INTO pre_demo VALUES(NULL,123,123,123,123,123,123,123);
ああああああ
以上がMysql tinyint(1) と tinyint(4) の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。