Khi chúng tôi sử dụng độ dài đối số với các loại dữ liệu số, theo như tôi biết điều này chỉ định chiều rộng hiển thị.
Tôi đã thử như sau:
mysql> create table boolean_test (var1 boolean, var2 tinyint);
Query OK, 0 rows affected (0.10 sec)
mysql> show create table boolean_test;
+--------------+-------------------------
| Table | Create Table
+--------------+-------------------------
| boolean_test | CREATE TABLE `boolean_test` (
`var1` tinyint(1) DEFAULT NULL,
`var2` tinyint(4) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+--------------+---------------------------
1 row in set (0.00 sec)
Trước hết tinyint là giá trị 1 byte. Vậy ý nghĩa của nó là tinyint(4)
gì? Không thể có 4 chữ số.
mysql> insert into boolean_test values(101,112);
Query OK, 1 row affected (0.03 sec)
mysql> select * from boolean_test;
+------+------+
| var1 | var2 |
+------+------+
| 10 | 112 |
| 101 | 112 |
+------+------+
2 rows in set (0.00 sec)
Tôi thấy rằng trong tinyint tôi đã lưu trữ 10 và 101 và tôi có thể lấy lại các giá trị này mặc dù nó được định nghĩa là tinyint (1).
Tôi không nên xem 1 cho var1
? Tức là chỉ có 1 chữ số hiển thị?