Dữ liệu khôn ngoan, tinyint(1)
, tinyint(2)
, tinyint(3)
vv tất cả đều hoàn toàn giống nhau. Tất cả chúng đều nằm trong khoảng -128 đến 127 cho SIGNED
hoặc 0-255 cho UNSIGNED
. Như các câu trả lời khác đã lưu ý rằng số trong ngoặc đơn chỉ là gợi ý về độ rộng màn hình.
Tuy nhiên, bạn có thể muốn lưu ý rằng ứng dụng =những thứ khôn ngoan có thể trông khác. Đây, tinyint(1)
có thể mang một ý nghĩa đặc biệt. Ví dụ:Trình kết nối / J (Trình kết nối Java) xử lý tinyint(1)
dưới dạng giá trị boolean và thay vì trả về kết quả số cho ứng dụng, nó chuyển đổi giá trị thành true
và false
. điều này có thể được thay đổi thông qua tinyInt1isBit=false
tham số kết nối.
Một tinyint (1) có thể chứa các số trong phạm vi -128 đến 127, do kiểu dữ liệu là 8 bit (1 byte) - rõ ràng là tinyint không có dấu có thể giữ các giá trị 0-255.
Nó sẽ tự động cắt bớt các giá trị ngoài phạm vi:
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>
... trừ khi bạn thay đổi sql_mode
hoặc thay đổi cấu hình máy chủ:
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>
Giá trị được sử dụng trong DDL cho kiểu dữ liệu (ví dụ:tinyint (1)), như bạn đã nghi ngờ, là chiều rộng hiển thị. Tuy nhiên, nó là tùy chọn và khách hàng không cần phải sử dụng nó. Ví dụ:máy khách MySQL tiêu chuẩn không sử dụng nó.
https://dev.mysql .com / doc / refman / 5.1 / en / integer-styles.html
https:// dev .mysql.com / doc / refman / 5.0 / en / numeric-type-Overview.html
MySql:Tinyint (2 ) so với tinyint (1) - sự khác biệt là gì?