rea*_*ebo 164 mysql sqldatatypes
我知道mysql中的boolean为tinyint (1).
今天我看到一个定义了整数的表tinyint(2),还有其他像int(4),int(6)...
大小在整数和tinyint类型的字段中意味着什么?
Ja͢*_*͢ck 215
的(m)指示列显示宽度; MySQL客户端等应用程序在显示查询结果时会使用此功能.
例如:
| v | a | b | c |
+-----+-----+-----+-----+
| 1 | 1 | 1 | 1 |
| 10 | 10 | 10 | 10 |
| 100 | 100 | 100 | 100 |
Run Code Online (Sandbox Code Playgroud)
在这里a,b和c使用TINYINT(1),TINYINT(2)并TINYINT(3)分别.如您所见,它使用显示宽度填充左侧的值.
重要的是要注意它不会影响该特定类型的可接受值范围,即TINYINT(1)仍然接受[-128 .. 127].
Aam*_*irR 71
这意味着显示宽度
无论你使用tinyint(1)还是tinyint(2),它都没有任何区别.
我总是使用tinyint(1)和int(11),我使用了几个mysql客户端(navicat,sequel pro).
它并不意味着什么!我运行了一个测试,所有上述客户端甚至命令行客户端似乎都忽略了这一点.
但是,如果您使用选项,显示宽度是最重要的ZEROFILL,例如您的表有以下2列:
一个 tinyint(2)zerofill
B tinyint(4)zerofill
两列具有1的值,对于列输出阿将是01和0001用于乙,如下面看到的屏幕截图:)
zlo*_*ctb 17
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)
Run Code Online (Sandbox Code Playgroud)
Dev*_*art 14
关于INT,TINYINT ......这些是不同的数据类型,INT是4字节数字,TINYINT是1字节数字.更多信息在这里 - INTEGER,INT,SMALLINT,TINYINT,MEDIUMINT,BIGINT.
TINYINT数据类型的语法是TINYINT(M),其中M表示最大显示宽度(仅在MySQL客户端支持时使用).
| 归档时间: |
|
| 查看次数: |
186578 次 |
| 最近记录: |