• mysql数据类型char、varchar、text的一些区别


    之前有一个需求,要求输入描述限制上限为5000字符。由于需要新设计表结构,所以我有了一个疑问,到底设计表的时候,字段类型如何才能更合理,不浪费存储空间,于是了解了一下比较常用的char、varchar、text的区别。

    首先需要知道汉字和字节字符的关系,关系如下:
    1、 1个汉字 = 1个字 = 1个字符
    2、 1个字符 = 1个字节 = 8bit(ACSII码下)
    3、 1个字符 = 2个字节 = 16bit(Unicode码下)

    字符并不是计算机语言, 一般情况下,汉字一个字占两个字节。英文字母一个字母占一个字节。

    我试了下char(2)和varchar(2), 都能存2个英文字母或者2个汉字, varchar(10) 既10个字符可以存10个汉字,不太明白这个n是表示字节还是字符,查了下资料:

    1、char(n)和varchar(n)中括号中n代表字符的个数,并不代表字节个数,所以当使用了中文的时候(UTF8)意味着可以插入m个中文,但是实际会占用m*3个字节。

    2、同时char和varchar最大的区别就在于char不管实际value都会占用n个字符的空间,而varchar只会占用实际字符应该占用的空间+1,并且实际空间+1<=n。

    3、超过char和varchar的n设置后,字符串会被截断。

    4、char的上限为255字节,varchar的上限65535字节,text的上限为65535。

    5、char在存储的时候会截断尾部的空格,varchar和text不会。

    6、varchar会使用1-3个字节来存储长度,text不会。

    我使用的mysql版本是14.14,括号中的数字指的是长度,char范围是0~255,varchar最长是64k。
    char>varchar>text,但是如果使用的是Innodb引擎的话,推荐使用varchar代替char。
    所以综上这个字段设计时候我写成了varchar(5000),虽然看起来比较奇怪,但是比text更合适一点。

    参考:https://www.cnblogs.com/billyxp/p/3548540.html

  • 相关阅读:
    qml: QtCharts模块得使用(数据整合和显示) ---- <二>
    qml: QtCharts模块的使用(基本配置)------<一>
    【转载】Qt之JSON生成与解析
    qml: 支持的基本类型
    opencv: 基本知识;
    qml: 模块定义与使用
    Android studio开发中遇到的错误
    阅读笔记——《人月神话》5
    Android studio Adapter基础
    Android studio Date & Time组件2
  • 原文地址:https://www.cnblogs.com/wuyuchao/p/14710937.html
Copyright © 2020-2023  润新知