เมื่อเราใช้ความยาวอาร์กิวเมนต์กับชนิดข้อมูลตัวเลขเท่าที่ฉันรู้ว่าสิ่งนี้ระบุความกว้างของการแสดงผล
ฉันพยายามต่อไปนี้:
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)
ก่อนอื่น Tinyint คือค่า 1 ไบต์ ดังนั้นความหมายของtinyint(4)
คืออะไร? ต้องไม่มีตัวเลข 4 หลัก
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)
ฉันเห็นว่าใน tinyint ฉันเก็บ 10 และ 101 และฉันสามารถคืนค่าเหล่านี้ได้แม้ว่ามันจะถูกกำหนดเป็น tinyint (1)
ฉันไม่ควรเห็น 1 สำหรับvar1
หรือไม่ เช่นเดียวกับ 1 ตัวเลขแสดงผล?