sql >> データベース >  >> RDS >> Mysql

tinyint(size)、varchar(size):サイズの説明

    混乱に対するあなたの解決策は-

    Mysqlでは、int(6)は最大6桁を格納できることを意味しません。 999999以下。

    ただし、CHAR(6)これは、次の単語のように、最大​​長が6文字の文字列を意味します。

    その列に「special」という単語を格納しようとすると、元の単語は7文字であるため、MySQLは値を「specia」に切り刻みます。

    とにかく、整数列にはすべて、事前に設定された値の範囲が許可されています。括弧内の数字は表示幅のみを示します。

    これはおそらくまだ混乱しているので、さらに説明させてください…

    表示幅は1〜255の数値です。すべての整数値を同様に「表示」する場合は、表示幅を設定できます。

    TINYINT [(M)] [UNSIGNED] [ZEROFILL]

    Mは、整数型の最大表示幅を示します。最大表示幅は255です。表示幅は、タイプに含めることができる値の範囲とは関係ありません。浮動小数点型と固定小数点型の場合、Mは格納できる合計桁数です。

    数値列にZEROFILLを指定すると、MySQLは自動的にUNSIGNED属性を列に追加します。

    だからあなたの質問の答えは

    です
    create table foo
    (
    col2 tinyint(2) unsigned zerofill, col4 tinyint(4) unsigned zerofill, col5notzerofill        tinyint(5)  
    )engine=innodb;
    
    insert into foo values (1,2,3),(11,12,14),(123,123,156),(1234,1234,12756);
    select * from foo;
    
    OUTPUT :-
    +------+------+-----------------+
    | col2 | col4 | col5notzerofill |
    +------+------+-----------------+
    |   01 | 0002 |               3 |
    |   11 | 0012 |              14 |
    |  123 | 0123 |             127 |
    |  255 | 0255 |             127 |
    +------+------+-----------------+
    

    *理解してください。Mysqlでは、表示幅はゼロフィルでのみ機能します。

    *ゼロフィルを使用しない場合は効果がありません。

    また、zerofillを使用する場合、mysqlはdisplay widhtをチェックし、割り当てない場合、mysqlは自動的にdisplay-widthをその列に割り当てます。 *




    1. MYSQLでの正規化

    2. SQLiteエラーに複数の行を挿入します(エラーコード=1)

    3. 表の印刷がページサイズに適合しない

    4. SQLのDateTimeフィールドの時間部分