广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中varchar类型的字段默认值设置方式
  • 311
分享到

MySQL中varchar类型的字段默认值设置方式

MySQLvarchar类型MySQL字段默认值varchar类型的字段默认值 2023-10-19 20:10:19 311人浏览 薄情痞子
摘要

目录Mysql varchar字段默认值设置mysql Varchar 类型为什么默认设置 255?Mysql5.6.xMysql5.7.x总结MySQL varchar字段默认值设置 最近开始给项目设计数据库,遇到一个

MySQL varchar字段默认值设置

最近开始给项目设计数据库,遇到一个可能很多人都会遇到的问题,就是设定某一个字段的默认值的时候,是设定null,“”,还是empty string呢?

我们从mysql本身来看:

1:空值(‘’)是不占用空间的

2:MySQL中的NULL其实是占用空间的。

官方文档说明:

NULL columns require additional space in the row to record whether their values are NULL.

For MyISAM tables, each NULL column takes one bit extra, rounded up to the nearest byte.

所以 mysql设计表时 建议不要用default NULL

  • string类型的可以default ''或者emptystring
  • int类型的可以default 0

另外一点,从不同的项目开发去分析这个问题:

以前单纯做WEB网页端,对这个默认值设定问题选用null 还是empty string。

但是后来在另外一个团队开发app的时候,这个null和empty string的问题就尤为突出,因为我是用PHP做接口开发,如果一旦出现null的数据类型,没有处理直接返回去前端,那么无论是iOS还是Android端,如果没有处理好这个空的判断,要么就直接输出null,要么程序直接报错。

所有建议设计数据库的时候默认值尽量少用null。

Mysql Varchar 类型为什么默认设置 255?

Mysql5.6.x

在 Mysql5.6 版本下,单列索引的长度不能超过 767bytes,联合索引的长度不能超过 3072bytes

Mysql5.7.x

在 Mysql5.7 版本下,单列索引的长度不能超过 3072bytes,联合索引的长度不能超过 3072bytes

utf8

上面说到单列索引长度为 767,在 utf8 编码下,一个字符为 3bytes,那么 255*3=765,刚好为能够建立索引长度的最大值,如果超出了这个值,如果使用的是 navicat 那么 mysql 会自动将这一列的索引变为前缀索引,截取 255

utf8mb4

在 utf8mb4 下,一个字符为 4bytes, 那么 767÷4=191.75,取整为 191,所以在 utf8mb4 编码下,如果你的 varchar 超出 191,如果使用的是 navicat 那么 mysql 会自动将这一列的索引变为前缀索引,截取 191

为什么联合索引长度是 3072

我们知道 InnoDB 一个 page 的默认大小是 16k。由于是 Btree 组织,要求叶子节点上一个 page 至少要包含两条记录(否则就退化链表了)。

所以一个记录最多不能超过 8k。

又由于 InnoDB 的聚簇索引结构,一个二级索引要包含主键索引,因此每个单个索引不能超过 4k (极端情况,pk 和某个二级索引都达到这个限制)。

由于需要预留和辅助空间,扣掉后不能超过 3500,取个 整数 就是 1024*3=3072

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网(www.cppcns.com)。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中varchar类型的字段默认值设置方式

本文链接: https://www.lsjlt.com/news/432182.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL中varchar类型的字段默认值设置方式
    目录mysql varchar字段默认值设置Mysql Varchar 类型为什么默认设置 255Mysql5.6.xMysql5.7.x总结MySQL varchar字段默认值设置 最近开始给项目设计数据库,遇到一个可...
    99+
    2023-10-19
    MySQL varchar类型 MySQL字段默认值 varchar类型的字段默认值
  • SpringDataJPA设置字段默认值方式
    目录Spring Data JPA设置字段默认值Spring Data JPA设置字段默认值失败Spring Data JPA设置字段默认值 在Column注解中写入以下两个属性,为...
    99+
    2022-11-12
  • mysql中给字段设置默认值的方法
    mysql中给字段设置默认值的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!方法:1、创建表时用“CREATE TAB...
    99+
    2022-10-18
  • mysql设置某字段默认值的方法
    这篇文章将为大家详细讲解有关mysql设置某字段默认值的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql设置某字段默认值的方法:1、加字段和设置默认值;2、通...
    99+
    2022-10-18
  • MySQL中怎么设置字段默认值
    本篇文章为大家展示了MySQL中怎么设置字段默认值,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.默认值相关操作我们可以用 DEFAULT 关键字来定义默认值,默...
    99+
    2022-10-18
  • 如何设置MySQL的字段默认值
    本篇文章给大家分享的是有关如何设置MySQL的字段默认值,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。 1.默认值相关操作我们可以用 DEFAULT 关键字来定义默认...
    99+
    2023-06-06
  • MySQL中如何为字段设置默认值?
    在MySQL中,我们可以为表的字段设置默认值,以确保在插入新记录时,如果没有为该字段指定值,将使用默认值。这在许多情况下都非常有用,特别是当我们希望在插入数据时自动填充某些字段,或者当我们想要为字段提...
    99+
    2023-10-23
    mysql 数据库
  • mysql中datetime类型怎么设置默认值
    这篇文章给大家介绍mysql中datetime类型怎么设置默认值,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。数据库表字段类型datetime,原来默认为NULL,当通过界面将默认值设...
    99+
    2022-10-18
  • MYSQL中怎么设置TIMESTAMP类型的默认值
    这篇文章给大家介绍MYSQL中怎么设置TIMESTAMP类型的默认值,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。MYSQL中TIMESTAMP类型可以设定默认值,就像其他类型一样。1...
    99+
    2022-10-18
  • Spring Data JPA 设置字段默认值方式是什么
    本篇文章为大家展示了Spring Data JPA 设置字段默认值方式是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Spring Data JPA设置字段默认值在...
    99+
    2023-06-21
  • MySQL中字段类型为longtext的值导出后显示二进制串方式
    目录mysql字段类型为longtext的值导出后显示二进制串使用MySQL的CAST()函数或者CONVERT()函数MySQL的基本语句及用法WHERE子句:条件查找UPDATE子句:数据更新DELE...
    99+
    2022-07-05
    MySQL字段类型 MySQL longtext的值 MySQL二进制串
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作