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

パラメータTINYINT(パラメータ)の意味は何ですか?

    データに関しては、tinyint(1)tinyint(2)tinyint(3) などはすべてまったく同じです。 SIGNEDの場合、これらはすべて-128〜127の範囲です。 またはUNSIGNEDの場合は0-255 。他の回答が指摘しているように、括弧内の数字は単なる表示幅のヒントです。

    ただし、application=wiseのものは異なって見える場合があることに注意してください。ここでは、tinyint(1) 特別な意味を持つことができます。たとえば、Connector / J(Javaコネクタ)はtinyint(1)を扱います ブール値として、数値結果をアプリケーションに返す代わりに、値をtrueに変換します およびfalse 。これは、tinyInt1isBit=falseを介して変更できます 接続パラメータ。

    tinyint(1)は、データ型が8ビット(1バイト)であるため、-128〜127の範囲の数値を保持できます。明らかに、符号なしtinyintは0〜255の値を保持できます。

    範囲外の値をサイレントに切り捨てます:

    mysql> create table a
        -> (
        ->    ttt tinyint(1)
        -> );
    Query OK, 0 rows affected (0.01 sec)
    
    mysql> insert into a values ( 127 );
    Query OK, 1 row affected (0.00 sec)
    
    mysql> insert into a values ( -128 );
    Query OK, 1 row affected (0.00 sec)
    
    mysql> insert into a values ( 128 );
    Query OK, 1 row affected, 1 warning (0.00 sec)
    
    mysql> insert into a values ( -129 );
    Query OK, 1 row affected, 1 warning (0.00 sec)
    
    mysql> select * from a;
    +------+
    | ttt  |
    +------+
    |  127 |
    | -128 |
    |  127 |
    | -128 |
    +------+
    4 rows in set (0.00 sec)
    
    mysql>
    

    ... sql_modeを変更しない限り またはサーバー構成を変更します:

    mysql> set sql_mode=STRICT_ALL_TABLES;
    Query OK, 0 rows affected (0.00 sec)
    
    mysql> insert into a values ( -129 );
    ERROR 1264 (22003): Out of range value for column 'ttt' at row 1
    mysql>
    

    データ型のDDLで使用される値(例:tinyint(1))は、ご想像のとおり、表示幅です。ただし、これはオプションであり、クライアントはこれを使用する必要はありません。たとえば、標準のMySQLクライアントはそれを使用しません。

    https://dev.mysql .com / doc / refman / 5.1 / en / integer-types.html

    https:// dev .mysql.com / doc / refman / 5.0 / en / neuro-type-overview.html

    MySQL:Tinyint(2 )vs tinyint(1)-違いは何ですか?



    1. MySQLの日付がJPA保存後に昨日の日付に変更されます

    2. SQLJOIN2つのテーブルとAVG

    3. エラー:データソースが接続の確立を拒否しました、サーバーからのメッセージ:接続が多すぎます

    4. PHP/ODBCエンコーディングの問題