sql >> Database >  >> RDS >> Mysql

Wat is de betekenis van parameter TINYINT(parameter)?

Data-wise, tinyint(1) , tinyint(2) , tinyint(3) enz. zijn allemaal precies hetzelfde. Ze liggen allemaal in het bereik van -128 tot 127 voor SIGNED of 0-255 voor UNSIGNED . Zoals andere antwoorden opmerkten, is het getal tussen haakjes slechts een hint voor de weergavebreedte.

Houd er echter rekening mee dat de toepassing=wijze dingen er anders uit kunnen zien. Hier, tinyint(1) een speciale betekenis kan krijgen. De Connector/J (Java-connector) behandelt bijvoorbeeld tinyint(1) als een booleaanse waarde, en in plaats van een numeriek resultaat naar de toepassing terug te sturen, converteert het waarden naar true en false . dit kan worden gewijzigd via de tinyInt1isBit=false verbindingsparameter.

Een tinyint(1) kan getallen bevatten in het bereik van -128 tot 127, omdat het datatype 8 bits (1 byte) is - uiteraard kan een niet-ondertekende tinyint waarden 0-255 bevatten.

Het zal stilletjes buiten bereikwaarden afkappen:

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>

... tenzij u de sql_mode . wijzigt of verander de serverconfiguratie:

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>

De waarde die in de DDL wordt gebruikt voor het datatype (bijvoorbeeld:tinyint(1)) is, zoals je al vermoedde, de weergavebreedte. Het is echter optioneel en klanten hoeven het niet te gebruiken. De standaard MySQL-client gebruikt het bijvoorbeeld niet.

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

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

MySql:Tinyint (2 ) vs tinyint(1) - wat is het verschil?



  1. Verduistering van ontbrekende databaseverbindingen

  2. Zoals Operator in Entity Framework?

  3. Groeperen, sorteren en tellen in één enkele zoekopdracht

  4. geselecteerde gebruikers hebben meer dan één afzonderlijke records in mysql