mysql 数据库字段类型长度和定义详解 作者:七棵菜 日期:2022-11-30 栏目:计算机分类:1 人气:326 > 定义数据长度时,数据类型括号内的数字并不是实际的长度。 - 定义tinyint(4),此字段也不可以存放4位数字,因为tinyint最大可存储的数字是255,因此最大只能存放255,输入大于255的数字,保存后会变成255。 - 定义tinyint(1),也并不能限制此字段只存放1位数字,如果我们输入大于9的数字,也是可以正常保存的。 ### enum 避免使用`enum`类型的字段,使用tinyint(2)来代替enum类型。在字段备注中,注明某个值的具体意义。原因如下: 1. enum其实是整形,和tinyint在性能上并没有多大区别。 2. enum的值有变化时,需要更改数据结构,尽管是简单的alter,但是也不推荐。 3. 做数据表缓存或者映射时,tinyint类型的字段操作更加容易,比如阿里云的开放搜索映射数据源。 ### tinyint 存储所占一个字节,可以存储2的8次方,也就是256(百级别)种可能性,从0开始计数,无符号也就是可以存储0~255,如果是有符号,那就是-128~127。 以下字段适合使用: 1. 状态 2. 是否类(true/false)的字段 3. 性别 4. 类型 ### smallint 存储所占两个字节,同上也就是可以存储2的16次方,也就是可以存储65536(万级别)种可能性,无符号从0开始则是可以存储0~65535,有符号则是-32768~32767。 数量不是太多的业务适合使用,例如: 1. 分公司编号 2. 角色编号 3. 分组编号 4. 后台用户编号 ### mediumint 存储所占三个字节,也就是2的24次方,可以存储16777216(千万级别)种可能性,无符号可以存储0~16777215,有符号可以存储-8388608~8388607。 以下字段适合使用: 1. 产品编号 2. 优惠券编号 ### int 存储所占四个字节,也就是2的32次方,可以存储4294967296(10亿别)种可能性,无符号可以存储0~4294967295,有符号则是-2147483648~2147483647。 数量无限增加的业务适合使用,例如: 1. 用户编号 2. 订单编号 3. 日志编号 4. 消息编号 5. 任务编号 6. 更新时间。时间戳,一般用来排序,使用整形加快检索速度。 > 金额相关的字段,存储类型使用int:以分为单位,而不是元,因为后者在两位小数计算时容易出现误差。 ### bigint 不推荐使用`bigint`,浪费存储空间,一个表如果数据过多需要考虑分表或者分库。 ### timestamp 时间,存储占用四个字节,表示从格林威治时间开始。若分配一个NULL值,则自动将TIMESTAMP列设置为当前的日期和时间。 ``` # 设置当前时间 NOT NULL DEFAULT CURRENT_TIMESTAMP # 设置自动更新 NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ``` 一个表中只有一个时间字段,并且记录不可编辑或者每次编辑都记录时间时推荐使用此类型。否则,如果字段用作检索、排序或者计算,那么使用int型;如果字段用作显示,那么使用char(19)。 ### datetime 时间,存储占用八个字节,格式为 YYYY-mm-dd HH:**ii**:ss,能表示的区间`1000-01-01 00:00:00`到`9999-12-12 23:59:59`,其可以为`0`值:`0000-00-00 00:00:00`,**低版本mysql 没有此类型**。 标签: mysql 字段类型 数据库 上一篇:如何使用mvn命令导入依赖 下一篇:php中二维数组或多维数组按照某一列排序 随便看看 2024-02-19 PHP7 运算符“??” 和“?:”的区别 2022-11-30 Linux 后台运行命令 2022-11-25 关于我们 2022-11-30 centos一键系统安装lnmp集成环境 2022-11-30 linux 生成 ssh 公钥 留言