Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Co oznacza parametr TINYINT(parametr)?

Pod względem danych, tinyint(1) , tinyint(2) , tinyint(3) itd. są dokładnie takie same. Wszystkie mieszczą się w zakresie od -128 do 127 dla SIGNED lub 0-255 dla UNSIGNED . Jak zauważyły ​​inne odpowiedzi, liczba w nawiasie jest jedynie wskazówką dotyczącą szerokości wyświetlacza.

Możesz jednak zauważyć, że application=mądre rzeczy mogą wyglądać inaczej. Tutaj, tinyint(1) może mieć szczególne znaczenie. Na przykład Connector/J (złącze Java) traktuje tinyint(1) jako wartość logiczna i zamiast zwracać wynik liczbowy do aplikacji, konwertuje wartości na true i false . można to zmienić za pomocą tinyInt1isBit=false parametr połączenia.

tinyint(1) może przechowywać liczby z zakresu -128 do 127, ponieważ typ danych to 8 bitów (1 bajt) - oczywiście tinyint bez znaku może przechowywać wartości 0-255.

Po cichu obcina wartości spoza zakresu:

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>

... chyba że zmienisz sql_mode lub zmień konfigurację serwera:

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>

Wartość używana w DDL dla typu danych (np. tinyint(1)) jest, jak podejrzewałeś, szerokością wyświetlania. Jest to jednak opcjonalne i klienci nie muszą z niego korzystać. Na przykład standardowy klient MySQL go nie używa.

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) — jaka jest różnica?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyniki grup MySQL według dnia przy użyciu znacznika czasu

  2. mySQL wybierz kody pocztowe w promieniu x km/mil w zakresie y

  3. Eksportowanie tabeli do CSV za pomocą przycisku php

  4. Mysql Dołącz do dwóch stołów na klawiszach

  5. Jeden element quizu na stronę (program quizu php/mysql)