sql >> Database teknologi >  >> RDS >> Mysql

Hvad er betydningsparameteren TINYINT(parameter)?

Datamæssigt, tinyint(1) , tinyint(2) , tinyint(3) osv. er alle nøjagtig ens. De er alle i området -128 til 127 for SIGNED eller 0-255 for UNSIGNED . Som andre svar bemærkede, er tallet i parentes kun et tip om visningsbredden.

Du vil måske dog bemærke, at applikationsmæssigt kan tingene se anderledes ud. Her tinyint(1) kan få en særlig betydning. For eksempel behandler Connector/J (Java connector) tinyint(1) som en boolsk værdi, og i stedet for at returnere et numerisk resultat til applikationen, konverterer den værdier til true og false . dette kan ændres via tinyInt1isBit=false forbindelsesparameter.

En tinyint(1) kan indeholde tal i området -128 til 127, da datatypen er 8 bit (1 byte) - naturligvis kan en usigneret tinyint holde værdierne 0-255.

Det vil lydløst afkorte værdier uden for området:

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>

... medmindre du ændrer sql_mode eller ændre serverkonfigurationen:

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>

Den værdi, der bruges i DDL for datatypen (f.eks.:tinyint(1)), er, som du har mistænkt, visningsbredden. Det er dog valgfrit, og kunderne behøver ikke bruge det. Standard MySQL-klienten bruger det f.eks. ikke.

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

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

MySql:Tinyint (2 ) vs tinyint(1) - hvad er forskellen?



  1. Hvilke rækker returneres ved brug af LIMIT med OFFSET i MySQL?

  2. Bedste måde at gemme span på tid i en MySQL database?

  3. PHP caching sql resultater

  4. Kan jeg bruge en kolonne, jeg har valgt senere i en forespørgsel?