Tôi biết boolean trong mysql là tinyint (1)
.
Hôm nay tôi thấy một bảng có định nghĩa một số nguyên như tinyint(2)
, và các bảng khác cũng như int(4)
, int(6)
...
Kích thước có nghĩa là gì trong trường loại nguyên và tinyint?
Tôi biết boolean trong mysql là tinyint (1)
.
Hôm nay tôi thấy một bảng có định nghĩa một số nguyên như tinyint(2)
, và các bảng khác cũng như int(4)
, int(6)
...
Kích thước có nghĩa là gì trong trường loại nguyên và tinyint?
Câu trả lời:
Nó có nghĩa là chiều rộng màn hình
Cho dù bạn sử dụng tinyint (1) hay tinyint (2), nó cũng không tạo ra sự khác biệt nào.
Tôi luôn sử dụng tinyint (1) và int (11), tôi đã sử dụng một số máy khách mysql (navicat, sequel pro).
Nó không có nghĩa gì cả TẤT CẢ! Tôi đã chạy thử nghiệm, tất cả các máy khách ở trên hoặc thậm chí máy khách dòng lệnh dường như bỏ qua điều này.
Nhưng, chiều rộng hiển thị là quan trọng nhất nếu bạn đang sử dụng ZEROFILL
tùy chọn, ví dụ: bảng của bạn có 2 cột sau:
Một zerofill nhỏ xíu (2)
Zerofill B tinyint (4)
cả hai cột có giá trị là 1, đầu ra cho cột A sẽ là 01
và 0001
cho B , như được thấy trong ảnh chụp màn hình bên dưới :)
Chỉ (m)
ra chiều rộng hiển thị cột; các ứng dụng như máy khách MySQL sử dụng điều này khi hiển thị kết quả truy vấn.
Ví dụ:
| v | a | b | c |
+-----+-----+-----+-----+
| 1 | 1 | 1 | 1 |
| 10 | 10 | 10 | 10 |
| 100 | 100 | 100 | 100 |
Ở đây a
, b
và c
đang sử dụng TINYINT(1)
, TINYINT(2)
và TINYINT(3)
tương ứng. Như bạn có thể thấy, nó đệm các giá trị ở phía bên trái bằng chiều rộng màn hình.
Điều quan trọng cần lưu ý là nó không ảnh hưởng đến phạm vi giá trị được chấp nhận cho loại cụ thể đó, tức là TINYINT(1)
vẫn chấp nhận [-128 .. 127]
.
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)
Giới thiệu về INT, TINYINT ... Đây là các loại dữ liệu khác nhau, INT là số 4 byte, TINYINT là số 1 byte. Thêm thông tin ở đây - INTEGER, INT, SMALLINT, TINYINT, MEDIUMINT, BIGINT .
Cú pháp của kiểu dữ liệu TINYINT là TINYINT (M), trong đó M chỉ chiều rộng hiển thị tối đa (chỉ được sử dụng nếu máy khách MySQL của bạn hỗ trợ nó).