MySql: tinyint (2) vs tinyint (1) - Jaka jest różnica?

Znałem boolean w mysql jako tinyint (1).

Dzisiaj widzę tabelę z zdefiniowaną liczbą całkowitą jak tinyint(2), a także inne jak int(4), int(6) ...

Co oznacza rozmiar w polu typu integer i tinyint ?

Author: phoops, 2012-10-11

4 answers

Oznacza Szerokość wyświetlacza

Niezależnie od tego, czy używasz tinyint (1) Czy tinyint (2), nie robi to żadnej różnicy.

Zawsze używam tinyint(1) i int (11), korzystałem z kilku klientów mysql (navicat, sequel pro).

To nic nie znaczy! Przeprowadziłem test, wszystkie powyżej klientów lub nawet klient linii poleceń wydaje się ignorować to.

Ale, Szerokość wyświetlania jest najważniejsza, jeśli używasz opcji ZEROFILL, Na przykład Twoja tabela ma następujące 2 kolumny:

A tinyint (2) zerofill

B tinyint (4) zerofill

Obie kolumny mają wartość 1, wyjście dla kolumny A będzie 01 i 0001 dla B , Jak widać na zrzucie ekranu poniżej:)

zerofill z displaywidth

 31
Author: AamirR,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-02 18:39:51

(m) wskazuje szerokość wyświetlania kolumny; aplikacje takie jak klient MySQL wykorzystują to podczas wyświetlania wyników zapytań.

Na przykład:

| v   | a   |  b  |   c |
+-----+-----+-----+-----+
| 1   | 1   |  1  |   1 |
| 10  | 10  | 10  |  10 |
| 100 | 100 | 100 | 100 |

Tutaj a, b i c używają TINYINT(1), TINYINT(2) i TINYINT(3) odpowiednio. Jak widać, ustawia wartości po lewej stronie za pomocą szerokości wyświetlacza.

Ważne jest, aby pamiętać, że nie wpływa to na akceptowany zakres wartości dla danego typu, tzn. TINYINT(1) nadal akceptuje [-128 .. 127].

 196
Author: Ja͢ck,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-03 09:22:30
mysql> CREATE TABLE tin3(id int PRIMARY KEY,val TINYINT(10) ZEROFILL);
Query OK, 0 rows affected (0.04 sec)

mysql> INSERT INTO tin3 VALUES(1,12),(2,7),(4,101);
Query OK, 3 rows affected (0.02 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql> SELECT * FROM tin3;
+----+------------+
| id | val        |
+----+------------+
|  1 | 0000000012 |
|  2 | 0000000007 |
|  4 | 0000000101 |
+----+------------+
3 rows in set (0.00 sec)

mysql>

mysql> SELECT LENGTH(val) FROM tin3 WHERE id=2;
+-------------+
| LENGTH(val) |
+-------------+
|          10 |
+-------------+
1 row in set (0.01 sec)


mysql> SELECT val+1 FROM tin3 WHERE id=2;
+-------+
| val+1 |
+-------+
|     8 |
+-------+
1 row in set (0.00 sec)
 18
Author: zloctb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-17 07:09:19

O INT, TINYINT... Są to różne typy danych, INT jest liczbą 4-bajtową, TINYINT jest liczbą 1-bajtową. Więcej informacji tutaj- INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT .

Składnia typu danych tinyint to TINYINT(m), gdzie M oznacza maksymalną szerokość wyświetlania (używana tylko jeśli klient MySQL ją obsługuje).

Atrybuty Typu Numerycznego .

 13
Author: Devart,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-18 06:06:27