在MySQL中创建整型字段INT(或其它像TINYINT)时,可以设定该字段的长度,如:
CREATE TABLE t1(id1 INT,id2 INT(5));
查看表结构信息:
mysql> DESC t1;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id1 | int(11) | YES | | NULL | |
| id2 | int(5) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
如果不指定长度,INT型默认长度为11。如果往该字段插入长度大于设定长度的数据,结果会怎样?MySQL会不会截断或者插不进去呢?
现往该表插入长度为7个1的值:
mysql> INSERT INTO t1(id1,id2) VALUES(1111111,1111111);
查看结果如下:
mysql> SELECT * FROM t1;
+---------+---------+
| id1 | id2 |
+---------+---------+
| 1 | 1 |
| 1111111 | 1111111 |
+---------+---------+
2 rows in set (0.00 sec)
得出结论,MySQL插入成功,不会截断,还是按照类型的实际精度进行保存。
整型字段有个ZEROFILL属性,在数字长度不够的数据前面填充0,以达到设定的长度,下面给上面的两个字段id1和id2分别设置该属性:
ALTER TABLE t1 MODIFY id1 INT ZEROFILL;
ALTER TABLE t1 MODIFY id2 INT(5) ZEROFILL;
mysql> DESC t1;
+-------+---------------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------------------+------+-----+---------+-------+
| id1 | int(10) unsigned zerofill | YES | | NULL | |
| id2 | int(5) unsigned zerofill | YES | | NULL | |
+-------+---------------------------+------+-----+---------+-------+
再往t1表插入两个长度为1的数据,如下:
mysql> INSERT INTO t1(id1,id2) VALUES(1,1);
查看结果如下:
mysql> SELECT * FROM t1;
+------------+---------+
| id1 | id2 |
+------------+---------+
| 0000000001 | 00001 |
| 0001111111 | 1111111 |
+------------+---------+
加上ZEROFILL属性后,MySQL会在数据前面补0以达到设置的长度。
分享到:
相关推荐
### MySQL所有字段类型及长度范围详解 在数据库设计与应用开发过程中,选择合适的字段类型对于确保数据的准确存储和高效处理至关重要。MySQL提供了丰富的数据类型,涵盖了数字、字符串、日期时间等多种类别,满足了...
列类型还支持一些附加属性,如 ZEROFILL 会在数值不足指定宽度时用零填充,增加可读性;NOT NULL 约束确保列中不允许有 NULL 值;而 AUTO_INCREMENT 属性则自动为整型列生成唯一的递增序列,常用于主键。 总的来说...
数字类型包括INT(整数)、FLOAT(单精度浮点数)、DOUBLE(双精度浮点数,支持ZEROFILL属性)等。 B. 字符串类型包括CHAR(定长字符串)、VARCHAR(变长字符串)、TEXT/BLOB(超过255个字符的长字符串)等。 C. ...
在定义字符串列时,可以使用ZEROFILL属性,使得数值类型的值自动填充前导零以达到指定的显示宽度。 日期和时间列类型如DATE、TIME、DATETIME和TIMESTAMP,用于存储日期和时间信息。DATE格式为'YYYY-MM-DD',TIME为'...
MySQL设计文档旨在提供一套规范,以确保在使用MySQL数据库时能充分发挥其优势,避免潜在问题。以下是基于给定内容的详细知识点: 一、数据库命令规范: 1. 数据库对象名称应使用小写字母和下划线,以符合lower_case...
- **ZEROFILL**: 这是一个显示属性,它不会对值本身进行任何更改。当使用ZEROFILL时,数值会在左侧用零填充至指定的宽度。 - **AUTO_INCREMENT**: 自增属性通常用于自动增加的主键字段。每个表最多只能有一个列设置...
- **FLOAT和DOUBLE的UNSIGNED属性**:MySQL 4.0.2以后,浮点类型也可以指定UNSIGNED,不改变取值范围,只是移除负数部分。 - **M和D**:分别表示显示宽度和小数位数,对FLOAT和DOUBLE是可选的,对DECIMAL在MySQL ...
- `zerofill`修饰符会在位数不足时用0填充,适用于需要顺序编号的场景,如`id INT(4) ZEROFILL`,插入123会显示为00123。 - **浮点型**:包括float和double(或real,double precision)。例如: - `float(5,2)`...
`ZEROFILL` 属性会在数值不足显示宽度时用零填充。`AUTO_INCREMENT` 用于自增字段,常用于主键。注意,数值类型的显示宽度并不影响存储空间和取值范围,仅影响显示效果。 **字符串类数据类型** 字符串类包括 CHAR...
MySQL支持多种数据类型,如整型、浮点型、字符串类型等。例如: - `INT`:整数类型。 - `VARCHAR(n)`:可变长度的字符串类型,n表示最大长度。 - `DATETIME`:日期时间类型。 **3.3 数据库的字段属性** - **...
- **解释**:整型,用于存储整数值。`M`表示显示宽度。 **2. DOUBLE[(M, D)][ZEROFILL]** - **解释**:双精度浮点型,用于存储实数或浮点数。`M`表示总位数,`D`表示小数位数。 **3. DATE** - **解释**:...
- **整型**:包括TINYINT(0~255 / -128~127)、SMALLINT(0~65535 / -32768~32767)、MEDIUMINT、INT、BIGINT等。 - 参数解释: - `UNSIGNED`:表示该字段不允许为负数。 - `ZEROFILL`:用于自动在数字左侧填充0...
3. 保留零填充:在插入数值时,如果设置了ZEROFILL属性,非严格模式可能会丢失前导零,而在严格模式中,这将被视为错误。 4. 无意义的默认值:对于没有指定默认值的NOT NULL字段,非严格模式可能允许NULL值插入,但...
2. **ZEROFILL属性**: - 当添加`ZEROFILL`属性时,如`INT(3) ZEROFILL`,系统会在数字不足指定宽度时自动在前面填充零。例如,插入10会存储为010。如果不使用`ZEROFILL`,则无论`INT`的宽度设置为何,都不会自动...
使用ZEROFILL属性时,整型字段会在显示时用0填充,而不是空格,同时字段会自动变为无符号。例如,INT(2) ZEROFILL的字段如果存储1,显示结果将是01,但实际存储的仍然是1,不影响数值计算。 总结起来,理解MySQL/...
同时,尽可能使用ZEROFILL属性为整数类型自动补零,以保持数据格式的一致性。 在导入大量数据时,删除索引再插入数据可以提高速度,之后再重建索引。这样可以避免在插入过程中频繁更新索引,节省时间。 数据库设计...
- **浮点型**:`DOUBLE[(M,D)][ZEROFILL]`:用于存储浮点数值。 - **日期类型**:`DATE`:存储日期值,范围是1000-01-01至9999-12-31。 - **定长字符串**:`CHAR(M)`:用于存储固定长度的字符串。 - **二进制大对象/...
- **DOUBLE[(M,D)][ZEROFILL]**: 双精度浮点型,用于存储带有小数的数值。 - **DATE**: 日期类型,支持的范围是从 1000-01-01 到 9999-12-31。 - **CHAR(M)**: 定长字符类型,用于存储固定长度的字符串。 - **BLOB/...