mysql字段int(n),char(n),varchar(n)长度解析

相信大家无论是在看其他人设计的数据表还是自己设计的数据表,都接触过int(10),tinyint(1),bigint(20)等字段类型后增加括号数字说明的情况,那这些究竟是什么意思呢?

下面我们最直观的直接试一下,就什么都清楚了

mysql版本

8.0.18

测试数据表

CREATE TABLE `colum_len_test` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `int_id_short` int(1) NOT NULL DEFAULT '0',
  `int_id_long` int(10) NOT NULL DEFAULT '0',
  `int_id_long_fill` int(10) zerofill NOT NULL DEFAULT '0',
  `tinyint_id_short` tinyint(1) NOT NULL DEFAULT '0',
  `tinyint_id_long` tinyint(3) NOT NULL DEFAULT '0',
  `tinyint_id_long_fill` tinyint(3) zerofill NOT NULL DEFAULT '0',
  `bigint_id_short` bigint(1) NOT NULL DEFAULT '0',
  `bigint_id_long` bigint(10) NOT NULL DEFAULT '0',
  `bigint_id_long_fill` bigint(10) zerofill NOT NULL DEFAULT '0',
  `char_short`  char(1)  NOT NULL DEFAULT '',
  `varchar_short` varchar(1)  NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

测试

1. int插入比设置数字长的数,无影响

insert into colum_len_test(int_id_short) values (123);

mysql> select int_id_short from colum_len_test where int_id_short=123;
+--------------+
| int_id_short |
+--------------+
|          123 |
+--------------+

2. int插入比设置数字短的数,无影响

insert into colum_len_test(int_id_long) values (1);

mysql> select int_id_long from colum_len_test where int_id_long=1;
+-------------+
| int_id_long |
+-------------+
|           1 |
+-------------+

3. int插入比设置数字短的数,且字段设置了zerofill时,左侧自动补零

insert into colum_len_test(int_id_long_fill) values (1);

mysql> select int_id_long_fill from colum_len_test where int_id_long_fill=1;
+------------------+
| int_id_long_fill |
+------------------+
|       0000000001 |
+------------------+

4. 经试验,tinyint, bigint同int

5. char插入比设置数字长的字符串,插入失败

mysql> insert into colum_len_test(char_short) values ('123');
ERROR 1406 (22001): Data too long for column 'char_short' at row 1

6. varchar插入比设置数字长的字符串,插入失败

mysql> insert into colum_len_test(varchar_short) values ('123');
ERROR 1406 (22001): Data too long for column 'varchar_short' at row 1

总结

  1. 定义数据库int,tinyint,bigint字段时,一般不需要设置它的长度
  2. 定义数据库char.varchar字段时,要根据实际需求,预留设置好足够的长度
0 0 投票数
文章评分
规则怪谈生成器 - 三步生成完整规则怪谈

⬡ 规则怪谈生成器

三步选择,一键生成完整的规则怪谈场景

欢迎使用 规则怪谈生成器 (GuiZeGT) —— 专为恐怖创作者、跑团主持人和怪谈爱好者设计的在线工具。 零AI成本 · 纯模板拼接 · 无限制生成 · 免费使用

1 选择场景
2 选择氛围
3 选择难度
一键生成
  • 🏚️ 12个经典场景 核心
    从废弃医院到深海孤岛,丰富模板即选即用
  • 👻 8种恐怖风格 氛围
    心理恐怖、克苏鲁、都市传说……塑造独特惊悚感
  • 📜 3档规则数量 难度
    从简洁到复杂,控制怪谈的细节密度与挑战性
  • ⚡ 逐条浮现生成 体验
    规则逐条动态呈现,营造紧张有序的阅读节奏
⚡ 或选择一个场景快速开始
🏥 废弃医院 🚢 幽灵邮轮 🌲 黑森林 🏫 午夜学校
订阅评论
提醒

0 评论
最新
最旧 最多投票
创世工坊 - 专业世界观构建工具

🚀 创世工坊 - 构建你的世界观

欢迎使用 创世工坊 (CreateAUniverse) —— 专为世界构建者、故事创作者和幻想宇宙缔造者设计的在线平台。将您的想象力,变成可分享的完整世界。

49,867 创作者
8,924 世界观
33,496 角色
  • 世界观构建:从地理环境到文化背景,全方位打造独一无二的架空世界。
  • 人物关系网络:可视化梳理复杂的人物关系网,让爱恨情仇一目了然。
  • 地图编辑器:强大的绘图工具,支持多种地图类型,绘制属于你的世界地图。
  • 时间线管理:梳理世界历史脉络,记录每个重要时刻,让时间线清晰有序。
  • 灵感与伏笔管理:随时记录灵感碎片,追踪每个伏笔的铺设与回收,确保逻辑严密。
滚动至顶部