精华内容
下载资源
问答
  • utf8编码的varcharMysql记录行数据是有限的。大小为64k,即65535个字节,而varchar要用1-2字节来存储字段长度,小于255的1字节,...第一,当编码方式为utf-8时,varchar存到21845就不下了.也就是最大长度是21844....

    utf8编码的varchar

    Mysql记录行数据是有限的。大小为64k,即65535个字节,而varchar要用1-2字节来存储字段长度,小于255的1字节,大于255的2字节。

    Mysql 5.0后,英文字符固定都是一个字节,汉字字符根据编码方式占不同字节,Utf-8占3个字节,gbk占了2个字节。

    第一,当编码方式为utf-8时,varchar存到21845就存不下了.也就是最大长度是21844.根据上面信息可以推算出 ( 65535-2 )/3=21844余1

    例子如下:

    ba7bafda5e07073e06f69564f027f5da.png

    9fc4f82a381964cf7b95e2c08a523dcf.png

    GBK编码的varchar

    当编码格式为GBK时,varchar能存多少字符呢?经过推理可知大约能存32766个字符,(65535-2)/2=32766余1。

    那么看看实验结果如下:

    e637c4b7e90226e7eb9eef76360dca52.png

    2b4397794de8bd1fbc8f9ffe42d0037f.png

    为何提出这个问题?

    前段时间一个哥们提bug,要把备注等字段全部最大大小设置为1000,甚至更多,这个表的字段本身就已经很多了,而我们设计表时一般都默认使用utf8这个编码格式,那么一个汉字就占了3个字节,故一个行记录的长度就会短了些,数据占用存储资源也会多了些,然后修改的时候成功的报了row size too large的这个错误。这里提出来也是为了让大家注意下。

    总结

    设计表的时候不同的编码格式会导致varchar的最大值发生变化,varchar(数值),这个数值指的是字符数,也可以说是一个字,但是不是字节,当然存储的数据还是一个英文占一个字节,一个汉字根据编码格式占不同字节。

    展开全文
  • 2、varchar能存多少汉字、数字? 3、varchar的最大长度是多少呢? 4、字符、字节、位,之间的关系? 5、mysql字段类型存储需要多少字节? 接下来请仔细看,整理不易啊。 1、varchar(100)和varchar(10)的区别在...

    看完这篇文章,你能搞清楚以下问题:

    1、varchar(100)和varchar(10)的区别在哪里?

    2、varchar能存多少汉字、数字?

    3、varchar的最大长度是多少呢?

    4、字符、字节、位,之间的关系?

    5、mysql字段类型存储需要多少字节?

    接下来请仔细看,整理不易啊。

    1、varchar(100)和varchar(10)的区别在哪里?

    一般初学会认为,二者占用的空间是一样的。比如说我存储5个char,二者都是实际占用了5个char了【不准确的想法:varchar在实际存储的时候会多一个byte用来存放长度】。
    但是深入一下,设计数据库的时候,二者一样吗?
    答案是否定的【至少varchar类型需要在数据之前利用一个或者两个字节来存储数据的长度】并且二者在内存中的操作方式也是不同的,下面的例子中有体现(例子链接:看下面的例子。 )
    如现在用户需要存储一个地址信息。根据评估,只要使用100个字符就可以了。但是有些数据库管理员会认为,反正Varchar数据类型是根据实际的需要来分配长度的。还不如给其大一点的呢。为此他们可能会为这个字段一次性分配200个字符的存储空间。这VARCHAR(100)与VARCHAR(200)真的相同吗?

    结果是否定的。虽然他们用来存储90个字符的数据,其存储空间相同。但是对于内存的消耗是不同的。对于VARCHAR数据类型来说,硬盘上的存储空间虽然都是根据实际字符长度来分配存储空间的,但是对于内存来说,则不是。其时使用固定大小的内存块来保存值。简单的说,就是使用字符类型中定义的长度,即200个字符空间。显然,这对于排序或者临时表(这些内容都需要通过内存来实现)作业会产生比较大的不利影响。解释可以参见这里。如果不想看解释,我这里大概说下:假设VARCHAR(100)与VARCHAR(200)类型,实际存90个字符,它不会对存储端产生影响(就是实际占用硬盘是一样的)。但是,它确实会对查询产生影响,因为当MySql创建临时表(SORT,ORDER等)时,VARCHAR会转换为CHAR,转换后的CHAR的长度就是varchar的长度,在内存中的空间就变大了,在排序、统计时候需要扫描的就越多,时间就越久。

    所以如果某些字段会涉及到文件排序或者基于磁盘的临时表时,分配VARCHAR数据类型时仍然不能够太过于慷慨。还是要评估实际需要的长度,然后选择一个最长的字段来设置字符长度。如果为了考虑冗余,可以留10%左右的字符长度。千万不能认为其为根据实际长度来分配存储空间,而随意的分配长度,或者说干脆使用最大的字符长度。
    ----------------------------------char------------------------------------------
    1、从碎片角度进行考虑,使用CHAR字符型时,由于存储空间都是一次性分配的。为此某个字段的内容,其都是存储在一起的。单从这个角度来讲,其不存在碎片的困扰。而可变长度的字符数据类型,其存储的长度是可变的。当其更改前后数据长度不一致时,就不可避免的会出现碎片的问题。故使用可变长度的字符型数据时,数据库管理员要时不时的对碎片进行整理。如执行数据库导出导入作业,来消除碎片。
    2、考虑其长度的是否相近,如果某个字段其长度虽然比较长,但是其长度总是近似的,如一般在90个到100个字符之间,甚至是相同的长度。此时比较适合采用CHAR字符类型。比较典型的应用就是MD5哈希值。当利用MD5哈希值来存储用户密码时,就非常使用采用CHAR字符类型。因为其长度是相同的。另外,像用来存储用户的身份证号码等等,一般也建议使用CHAR类型的数据。
    另外请大家考虑一个问题,CHAR(1)与VARCHAR(1)两这个定义,会有什么区别呢?虽然这两个都只能够用来保存单个的字符,但是VARCHAR要比CHAR多占用一个存储位置。这主要是因为使用VARCHAR数据类型时,会多用1个字节用来存储长度信息。这个管理上的开销char字符类型是没有的。

    ---------------------------------总结---------------------------------------------

    二者在磁盘上存储占的空间是一样的。区别有二。第一、一个变长一个固定长度。第二、在内存中的操作方式,varchar也是按照最长的方式在内存中进行操作的。比如说要进行排序的时候,varcahr(100)是按照100这个长度来进行的。

    2、varchar能存多少汉字、数字?

    具体还是要看版本的,一个字符占用3个字节   ,一个汉字(包括数字)占用3个字节=一个字符

    4.0版本以下,varchar(100),指的是100字节,如果存放UTF8汉字时,只能存33个(每个汉字3字节)

    5.0版本以上,varchar(100),指的是100字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放100个。

     

    UTF8编码中一个汉字(包括数字)占用3个字节

    GBK编码中一个汉字(包括数字)占用2个字节

     

    3、varchar的最大长度是多少呢?

    mysql的vachar字段的类型虽然最大长度是65535,但是并不是能存这么多数据,最大可以到65533,其中需要1到2个字节来存储数据长度(如果列声明的长度超过255,则使用两个字节来存储长度,否则1个)字节,当不允许非空字段的时候(因为要用一个字节来存储不可为空的标识),当允许非空字段的时候只能到65532(省下了存储非空的那个字节)。

    行中可以用的字节数如下计算:(参考文档:https://www.jianshu.com/p/ee1e4b14c5e7 )

    字段非空时候:varchar(65535) -2 bytes (存储长度,按2个算) - 1byte (latin1类型) - 1 (null byte)=65531 字节可以用

    减1的原因是实际行存储从第二个字节开始';

    字段可以空时候:varchar(65535) -2 bytes (存储长度,按2个算) - 1byte (latin1类型) =65532 字节可以用

    根据这个最大字节数,以及编码方式,可以计算能存储的汉字数。

    4、字符、字节、位,之间的关系?

    1、位:
    数据存储的最小单位。每个二进制数字0或者1就是1个位;
    2、字节:
    8个位构成一个字节;

    即:1 byte (字节)= 8 bit(位);

    1 KB = 1024 B(字节);
    1 MB = 1024 KB;   (2^10 B)
    1 GB = 1024 MB;  (2^20 B)
    1 TB = 1024 GB;   (2^30 B)

    3、字符:

    a、A、中、+、*、の......均表示一个字符;
    一般 utf-8 编码下,一个汉字 字符 占用 3 个 字节;数字属于汉字,和汉字占用一样字节。
    一般 gbk 编码下,一个汉字  字符  占用 2 个 字节;

    5、mysql字段类型存储需要多少字节?

    数字类型

    列类型 需要的存储量
    TINYINT 1 字节
    SMALLINT 2 个字节
    MEDIUMINT 3 个字节
    INT 4 个字节
    INTEGER 4 个字节
    BIGINT 8 个字节
    FLOAT(X) 4 如果 X < = 24 或 8 如果 25 < = X < = 53
    FLOAT 4 个字节
    DOUBLE 8 个字节
    DOUBLE PRECISION 8 个字节
    REAL 8 个字节
    DECIMAL(M,D) M字节(D+2 , 如果M < D)
    NUMERIC(M,D) M字节(D+2 , 如果M < D)

     日期和时间类型

    列类型 需要的存储量
    DATE 3 个字节
    DATETIME 8 个字节
    TIMESTAMP 4 个字节
    TIME 3 个字节
    YEAR 1 字节

     串类型

    列类型 需要的存储量
    CHAR(M) M字节,1 <= M <= 255
    VARCHAR(M) L+1 字节, 在此L <= M1 <= M <= 255
    TINYBLOBTINYTEXT L+1 字节, 在此L< 2 ^ 8
    BLOBTEXT L+2 字节, 在此L< 2 ^ 16
    MEDIUMBLOBMEDIUMTEXT L+3 字节, 在此L< 2 ^ 24
    LONGBLOBLONGTEXT L+4 字节, 在此L< 2 ^ 32
    ENUM('value1','value2',...) 1 或 2 个字节, 取决于枚举值的数目(最大值65535)
    SET('value1','value2',...) 1,2,3,4或8个字节, 取决于集合成员的数量(最多64个成员)

    text与blob的区别在于:text不能存储图片。blob是二进制流,text是非二进制。

    mysql 的二进制数据类型 BINARY, VARBINARY, BLOB 都没有字符集的概念。

    展开全文
  • 2、varchar能存多少汉字、数字? 3、varchar的最大长度是多少呢? 4、字符、字节、位,之间的关系? 5、mysql字段类型存储需要多少字节? 接下来请仔细看,整理不易啊。 1、varchar(100)和varchar(10)的区别在...

    看完这篇文章,你能搞清楚以下问题:

    1、varchar(100)和varchar(10)的区别在哪里?

    2、varchar能存多少汉字、数字?

    3、varchar的最大长度是多少呢?

    4、字符、字节、位,之间的关系?

    5、mysql字段类型存储需要多少字节?

    接下来请仔细看,整理不易啊。

    1、varchar(100)和varchar(10)的区别在哪里?

    一般初学会认为,二者占用的空间是一样的。比如说我存储5个char,二者都是实际占用了5个char了【不准确的想法:varchar在实际存储的时候会多一个byte用来存放长度】。
    但是深入一下,设计数据库的时候,二者一样吗?
    答案是否定的【至少varchar类型需要在数据之前利用一个或者两个字节来存储数据的长度】并且二者在内存中的操作方式也是不同的,下面的例子中有体现(例子链接:看下面的例子。 )
    如现在用户需要存储一个地址信息。根据评估,只要使用100个字符就可以了。但是有些数据库管理员会认为,反正Varchar数据类型是根据实际的需要来分配长度的。还不如给其大一点的呢。为此他们可能会为这个字段一次性分配200个字符的存储空间。这VARCHAR(100)与VARCHAR(200)真的相同吗?

    结果是否定的。虽然他们用来存储90个字符的数据,其存储空间相同。但是对于内存的消耗是不同的。对于VARCHAR数据类型来说,硬盘上的存储空间虽然都是根据实际字符长度来分配存储空间的,但是对于内存来说,则不是。其时使用固定大小的内存块来保存值。简单的说,就是使用字符类型中定义的长度,即200个字符空间。显然,这对于排序或者临时表(这些内容都需要通过内存来实现)作业会产生比较大的不利影响。解释可以参见这里。如果不想看解释,我这里大概说下:假设VARCHAR(100)与VARCHAR(200)类型,实际存90个字符,它不会对存储端产生影响(就是实际占用硬盘是一样的)。但是,它确实会对查询产生影响,因为当MySql创建临时表(SORT,ORDER等)时,VARCHAR会转换为CHAR,转换后的CHAR的长度就是varchar的长度,在内存中的空间就变大了,在排序、统计时候需要扫描的就越多,时间就越久。

    所以如果某些字段会涉及到文件排序或者基于磁盘的临时表时,分配VARCHAR数据类型时仍然不能够太过于慷慨。还是要评估实际需要的长度,然后选择一个最长的字段来设置字符长度。如果为了考虑冗余,可以留10%左右的字符长度。千万不能认为其为根据实际长度来分配存储空间,而随意的分配长度,或者说干脆使用最大的字符长度。
    ----------------------------------char------------------------------------------
    1、从碎片角度进行考虑,使用CHAR字符型时,由于存储空间都是一次性分配的。为此某个字段的内容,其都是存储在一起的。单从这个角度来讲,其不存在碎片的困扰。而可变长度的字符数据类型,其存储的长度是可变的。当其更改前后数据长度不一致时,就不可避免的会出现碎片的问题。故使用可变长度的字符型数据时,数据库管理员要时不时的对碎片进行整理。如执行数据库导出导入作业,来消除碎片。
    2、考虑其长度的是否相近,如果某个字段其长度虽然比较长,但是其长度总是近似的,如一般在90个到100个字符之间,甚至是相同的长度。此时比较适合采用CHAR字符类型。比较典型的应用就是MD5哈希值。当利用MD5哈希值来存储用户密码时,就非常使用采用CHAR字符类型。因为其长度是相同的。另外,像用来存储用户的身份证号码等等,一般也建议使用CHAR类型的数据。
    另外请大家考虑一个问题,CHAR(1)与VARCHAR(1)两这个定义,会有什么区别呢?虽然这两个都只能够用来保存单个的字符,但是VARCHAR要比CHAR多占用一个存储位置。这主要是因为使用VARCHAR数据类型时,会多用1个字节用来存储长度信息。这个管理上的开销char字符类型是没有的。

    ---------------------------------总结---------------------------------------------

    二者在磁盘上存储占的空间是一样的。区别有二。第一、一个变长一个固定长度。第二、在内存中的操作方式,varchar也是按照最长的方式在内存中进行操作的。比如说要进行排序的时候,varcahr(100)是按照100这个长度来进行的。

    2、varchar能存多少汉字、数字?

    具体还是要看版本的,一个字符占用3个字节   ,一个汉字(包括数字)占用3个字节=一个字符

    4.0版本以下,varchar(100),指的是100字节,如果存放UTF8汉字时,只能存33个(每个汉字3字节)

    5.0版本以上,varchar(100),指的是100字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放100个。

     

    UTF8编码中一个汉字(包括数字)占用3个字节

    GBK编码中一个汉字(包括数字)占用2个字节

     

    3、varchar的最大长度是多少呢?

    mysql的vachar字段的类型虽然最大长度是65535,但是并不是能存这么多数据,最大可以到65533,其中需要1到2个字节来存储数据长度(如果列声明的长度超过255,则使用两个字节来存储长度,否则1个)字节,当不允许非空字段的时候(因为要用一个字节来存储不可为空的标识),当允许非空字段的时候只能到65532(省下了存储非空的那个字节)。

    行中可以用的字节数如下计算:(参考文档:https://www.jianshu.com/p/ee1e4b14c5e7 )

    字段非空时候:varchar(65535) -2 bytes (存储长度,按2个算) - 1byte (latin1类型) - 1 (null byte)=65531 字节可以用

    减1的原因是实际行存储从第二个字节开始';

    字段可以空时候:varchar(65535) -2 bytes (存储长度,按2个算) - 1byte (latin1类型) =65532 字节可以用

    根据这个最大字节数,以及编码方式,可以计算能存储的汉字数。

    4、字符、字节、位,之间的关系?

    1、位:
    数据存储的最小单位。每个二进制数字0或者1就是1个位;
    2、字节:
    8个位构成一个字节;

    即:1 byte (字节)= 8 bit(位);

    1 KB = 1024 B(字节);
    1 MB = 1024 KB;   (2^10 B)
    1 GB = 1024 MB;  (2^20 B)
    1 TB = 1024 GB;   (2^30 B)

    3、字符:

    a、A、中、+、*、の......均表示一个字符;
    一般 utf-8 编码下,一个汉字 字符 占用 3 个 字节;数字属于汉字,和汉字占用一样字节。
    一般 gbk 编码下,一个汉字  字符  占用 2 个 字节;

    5、mysql字段类型存储需要多少字节?

    数字类型

    列类型 需要的存储量
    TINYINT 1 字节
    SMALLINT 2 个字节
    MEDIUMINT 3 个字节
    INT 4 个字节
    INTEGER 4 个字节
    BIGINT 8 个字节
    FLOAT(X) 4 如果 X < = 24 或 8 如果 25 < = X < = 53
    FLOAT 4 个字节
    DOUBLE 8 个字节
    DOUBLE PRECISION 8 个字节
    REAL 8 个字节
    DECIMAL(M,D) M字节(D+2 , 如果M < D)
    NUMERIC(M,D) M字节(D+2 , 如果M < D)

     日期和时间类型

    列类型 需要的存储量
    DATE 3 个字节
    DATETIME 8 个字节
    TIMESTAMP 4 个字节
    TIME 3 个字节
    YEAR 1 字节

     串类型

    列类型 需要的存储量
    CHAR(M) M字节,1 <= M <= 255
    VARCHAR(M) L+1 字节, 在此L <= M1 <= M <= 255
    TINYBLOBTINYTEXT L+1 字节, 在此L< 2 ^ 8
    BLOBTEXT L+2 字节, 在此L< 2 ^ 16
    MEDIUMBLOBMEDIUMTEXT L+3 字节, 在此L< 2 ^ 24
    LONGBLOBLONGTEXT L+4 字节, 在此L< 2 ^ 32
    ENUM('value1','value2',...) 1 或 2 个字节, 取决于枚举值的数目(最大值65535)
    SET('value1','value2',...) 1,2,3,4或8个字节, 取决于集合成员的数量(最多64个成员)

    text与blob的区别在于:text不能存储图片。blob是二进制流,text是非二进制。

    mysql 的二进制数据类型 BINARY, VARBINARY, BLOB 都没有字符集的概念。

    展开全文
  • 2、varchar能存多少汉字、数字?3、varchar的最大长度是多少呢?4、字符、字节、位,之间的关系?5、mysql字段类型存储需要多少字节?接下来请仔细看,整理不易啊。1、varchar(100)和varchar(10)的区别在哪里?一般...

    看完这篇文章,你能搞清楚以下问题:

    1、varchar(100)和varchar(10)的区别在哪里?

    2、varchar能存多少汉字、数字?

    3、varchar的最大长度是多少呢?

    4、字符、字节、位,之间的关系?

    5、mysql字段类型存储需要多少字节?

    接下来请仔细看,整理不易啊。

    1、varchar(100)和varchar(10)的区别在哪里?

    一般初学会认为,二者占用的空间是一样的。比如说我存储5个char,二者都是实际占用了5个char了【不准确的想法:varchar在实际存储的时候会多一个byte用来存放长度】。

    但是深入一下,设计数据库的时候,二者一样吗?

    答案是否定的【至少varchar类型需要在数据之前利用一个或者两个字节来存储数据的长度】并且二者在内存中的操作方式也是不同的,下面的例子中有体现(例子链接:看下面的例子。 )

    如现在用户需要存储一个地址信息。根据评估,只要使用100个字符就可以了。但是有些数据库管理员会认为,反正Varchar数据类型是根据实际的需要来分配长度的。还不如给其大一点的呢。为此他们可能会为这个字段一次性分配200个字符的存储空间。这VARCHAR(100)与VARCHAR(200)真的相同吗?

    结果是否定的。虽然他们用来存储90个字符的数据,其存储空间相同。但是对于内存的消耗是不同的。对于VARCHAR数据类型来说,硬盘上的存储空间虽然都是根据实际字符长度来分配存储空间的,但是对于内存来说,则不是。其时使用固定大小的内存块来保存值。简单的说,就是使用字符类型中定义的长度,即200个字符空间。显然,这对于排序或者临时表(这些内容都需要通过内存来实现)作业会产生比较大的不利影响。解释可以参见这里。如果不想看解释,我这里大概说下:假设VARCHAR(100)与VARCHAR(200)类型,实际存90个字符,它不会对存储端产生影响(就是实际占用硬盘是一样的)。但是,它确实会对查询产生影响,因为当MySql创建临时表(SORT,ORDER等)时,VARCHAR会转换为CHAR,转换后的CHAR的长度就是varchar的长度,在内存中的空间就变大了,在排序、统计时候需要扫描的就越多,时间就越久。

    所以如果某些字段会涉及到文件排序或者基于磁盘的临时表时,分配VARCHAR数据类型时仍然不能够太过于慷慨。还是要评估实际需要的长度,然后选择一个最长的字段来设置字符长度。如果为了考虑冗余,可以留10%左右的字符长度。千万不能认为其为根据实际长度来分配存储空间,而随意的分配长度,或者说干脆使用最大的字符长度。

    ----------------------------------char------------------------------------------

    1、从碎片角度进行考虑,使用CHAR字符型时,由于存储空间都是一次性分配的。为此某个字段的内容,其都是存储在一起的。单从这个角度来讲,其不存在碎片的困扰。而可变长度的字符数据类型,其存储的长度是可变的。当其更改前后数据长度不一致时,就不可避免的会出现碎片的问题。故使用可变长度的字符型数据时,数据库管理员要时不时的对碎片进行整理。如执行数据库导出导入作业,来消除碎片。

    2、考虑其长度的是否相近,如果某个字段其长度虽然比较长,但是其长度总是近似的,如一般在90个到100个字符之间,甚至是相同的长度。此时比较适合采用CHAR字符类型。比较典型的应用就是MD5哈希值。当利用MD5哈希值来存储用户密码时,就非常使用采用CHAR字符类型。因为其长度是相同的。另外,像用来存储用户的身份证号码等等,一般也建议使用CHAR类型的数据。

    另外请大家考虑一个问题,CHAR(1)与VARCHAR(1)两这个定义,会有什么区别呢?虽然这两个都只能够用来保存单个的字符,但是VARCHAR要比CHAR多占用一个存储位置。这主要是因为使用VARCHAR数据类型时,会多用1个字节用来存储长度信息。这个管理上的开销char字符类型是没有的。

    ---------------------------------总结---------------------------------------------

    二者在磁盘上存储占的空间是一样的。区别有二。第一、一个变长一个固定长度。第二、在内存中的操作方式,varchar也是按照最长的方式在内存中进行操作的。比如说要进行排序的时候,varcahr(100)是按照100这个长度来进行的。

    2、varchar能存多少汉字、数字?

    具体还是要看版本的,一个字符占用3个字节   ,一个汉字(包括数字)占用3个字节=一个字符

    4.0版本以下,varchar(100),指的是100字节,如果存放UTF8汉字时,只能存33个(每个汉字3字节)

    5.0版本以上,varchar(100),指的是100字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放100个。

    UTF8编码中一个汉字(包括数字)占用3个字节

    GBK编码中一个汉字(包括数字)占用2个字节

    3、varchar的最大长度是多少呢?

    mysql的vachar字段的类型虽然最大长度是65535,但是并不是能存这么多数据,最大可以到65533,其中需要1到2个字节来存储数据长度(如果列声明的长度超过255,则使用两个字节来存储长度,否则1个)字节,当不允许非空字段的时候(因为要用一个字节来存储不可为空的标识),当允许非空字段的时候只能到65532(省下了存储非空的那个字节)。

    行中可以用的字节数如下计算:(参考文档:https://www.jianshu.com/p/ee1e4b14c5e7 )

    字段非空时候:varchar(65535) -2 bytes (存储长度,按2个算) - 1byte (latin1类型) - 1 (null byte)=65531 字节可以用

    减1的原因是实际行存储从第二个字节开始';

    字段可以空时候:varchar(65535) -2 bytes (存储长度,按2个算) - 1byte (latin1类型) =65532 字节可以用

    根据这个最大字节数,以及编码方式,可以计算能存储的汉字数。

    4、字符、字节、位,之间的关系?

    1、位:

    数据存储的最小单位。每个二进制数字0或者1就是1个位;

    2、字节:

    8个位构成一个字节;

    即:1 byte (字节)= 8 bit(位);

    1 KB = 1024 B(字节);

    1 MB = 1024 KB;   (2^10 B)

    1 GB = 1024 MB;  (2^20 B)

    1 TB = 1024 GB;   (2^30 B)

    3、字符:

    a、A、中、+、*、の......均表示一个字符;

    一般 utf-8 编码下,一个汉字 字符 占用 3 个 字节;数字属于汉字,和汉字占用一样字节。

    一般 gbk 编码下,一个汉字  字符  占用 2 个 字节;

    5、mysql字段类型存储需要多少字节?

    数字类型

    列类型

    需要的存储量

    TINYINT

    1 字节

    SMALLINT

    2 个字节

    MEDIUMINT

    3 个字节

    INT

    4 个字节

    INTEGER

    4 个字节

    BIGINT

    8 个字节

    FLOAT(X)

    4 如果 X < = 24 或 8 如果 25 < = X < = 53

    FLOAT

    4 个字节

    DOUBLE

    8 个字节

    DOUBLE PRECISION

    8 个字节

    REAL

    8 个字节

    DECIMAL(M,D)

    M字节(D+2 , 如果M < D)

    NUMERIC(M,D)

    M字节(D+2 , 如果M < D)

    日期和时间类型

    列类型

    需要的存储量

    DATE

    3 个字节

    DATETIME

    8 个字节

    TIMESTAMP

    4 个字节

    TIME

    3 个字节

    YEAR

    1 字节

    串类型

    列类型

    需要的存储量

    CHAR(M)

    M字节,1 <= M <= 255

    VARCHAR(M)

    L+1 字节, 在此L <= M和1 <= M <= 255

    TINYBLOB, TINYTEXT

    L+1 字节, 在此L< 2 ^ 8

    BLOB, TEXT

    L+2 字节, 在此L< 2 ^ 16

    MEDIUMBLOB, MEDIUMTEXT

    L+3 字节, 在此L< 2 ^ 24

    LONGBLOB, LONGTEXT

    L+4 字节, 在此L< 2 ^ 32

    ENUM('value1','value2',...)

    1 或 2 个字节, 取决于枚举值的数目(最大值65535)

    SET('value1','value2',...)

    1,2,3,4或8个字节, 取决于集合成员的数量(最多64个成员)

    text与blob的区别在于:text不能存储图片。blob是二进制流,text是非二进制。

    mysql 的二进制数据类型 BINARY, VARBINARY, BLOB 都没有字符集的概念。

    展开全文
  • 1、varchar(100)和varchar(10)的区别在哪里? 一般初学会认为,二者占用的空间是一样的。...答案是否定的【至少varchar类型需要在数据之前利用一个或者两个字节来存储数据的长度】并且二者在内存中的操作方式
  • 2、varchar能存多少汉字、数字?3、varchar的最大长度是多少呢?4、字符、字节、位,之间的关系?5、mysql字段类型存储需要多少字节?接下来请仔细看,整理不易啊。1、varchar(100)和varchar(10)的区别在哪里?一般...
  • 2、varchar能存多少汉字、数字?3、varchar的最大长度是多少呢?4、字符、字节、位,之间的关系?5、mysql字段类型存储需要多少字节?接下来请仔细看,整理不易啊。1、varchar(100)和varchar(10)的区别在哪里?一般...
  • utf8编码的varchar  Mysql记录行数据是有限的。大小为64k,即65535个字节,而varchar要用1-2字节来存储字段长度,小于255的1字节,大于255的... 第一,当编码方式为utf-8时,varchar存到21845就不下了.也就是最大...
  • 汉字长度与编码有关 MySql 5.0 以上的版本: ...2、varchar(n) 表示n个字符,无论汉字和英文,MySql都存入 n 个字符,仅实际字节长度有所区别。 3、不知道好多博客这么写的。 但跟自测结果不一样 自测utf-8 1...
  • 好吧这问题的最佳答案难选... 计算字节长度 ... greatghoul 的答案是对的 ...如果是 utf-8 的话 ... 计算字符长度 ... joyeu 的答案是对的 ...至于 Theo 的答案里说的 4.1 为临界点的区别 ... 这事情真心和版本没什...
  • Mysql记录行数据是有限的。大小为64k,即65535个字节,而varchar要用1-2字节来存储字段长度,小于255的1字节,... 第一,当编码方式为utf-8时,varchar存到21845就不下了.也就是最大长度是21844.根据上面信息可以...
  • Oracle 中 varchar2 到底能存多少个 汉字: 原文链接:https://www.cnblogs.com/firstgreen/p/3586301.html 1. varchar2最大长度为4000字节。 2. varchar2的参数有两个:byte(默认), char 其中varchar2(10 ...
  • 它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。 UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。 UTF-8编码的文字可以在各国支持UTF8字符集额的浏览器上显示。 如果是UTF8编码,则...
  • VarChar能存储多少个值

    2020-12-18 10:00:31
    参考链接:MySQL 数据库 varchar 到底可以存多少个汉字,多少个英文 首先我们需要了解utf-8和GBK的区别,因为不同的编码格所占的字节数是不同的 中文 英文 ...1~3个字节 ...关于mysql能存多少值 mysq
  • 1、varchar(5)可以存储多少个汉字,多少个字母数字?相信有好多人应该跟我一样,对这个已经很熟悉了,根据经验我们很快的做出决定,比如说用varchar(200)去存储url等等,但是,即使你用了很多次也很熟悉了,也有...
  • mysql varchar(50)到底能存多少个汉字

    万次阅读 多人点赞 2017-10-25 11:25:11
    mysql 4.0版本以下,varchar(50), 指的是50字节,如果存放utf8汉字时,只能存放16个(每个汉字3字节) mysql 5.0版本以上,varchar(50), 指的是50字符,无论存放的...可以自己建个表试试varchar(50)可以放多少汉字。
  • Oracle中的Varchar2(4000)到底能存多少个汉字,数据库编码集,如果是GB2312,可以存2000个汉字,如果数据库字符编码集是UTF-8,大概能存1300多一点。因为GB2312存放汉字时占两上字节,而utf-8则占用三个字节。 ...
  • 我们都知道,一个汉字占用两个字节,那么Oracle中的Varchar2(4000)到底能存多少个汉字,这个就要看你的数据库编码集,如果是GB2312,存2000个汉字应该没有什么问题,如果你的数据库字符编码集是UTF-8,大概能存1300...
  • 答:char和varchar最大的不同就是一个是固定长度,一个是可变...1)varchar(M)和char(M),M都表示字符数.varchar的最大长度为65535个字节,不同的编码所对应的最大可存储的字符数不同。2)char最多可以存放255个字符...
  • varchar(50),指的是50字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放50个其实最好的办法是在自己数据库中建个表试试可以放多少汉字,现在mysql都5.0已上了,varchar(50)是可以50个汉字...
  • varchar(50),指的是50字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放50个其实最好的办法是在自己数据库中建个表试试可以放多少汉字,现在mysql都5.0已上了,varchar(50)是可以50个汉字...
  • 只能16个(每个汉字3字节) 5.0版本以上,varchar(50),指的是50字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放50个其实最好的办法是在自己数据库中建个表试试可以放多少汉字,...
  • mysql-varchar在设计数据库字段的时候,varchar...2、varchar能存多少汉字、数字?3、varchar的最大长度是多少呢?4、字符、字节、位,之间的关系?5、mysql字段类型存储需要多少字节?6、varchar(10)能存多少个字...
  • MySQL中VARCHAR(n)最多能存多少个汉字

    千次阅读 2018-08-01 17:50:12
    (1)MySQL 4.0 版本以下,VARCHAR(n) 中的 n 指的是改字段容量为 n 字节。如果存放的汉字为UTF8编码时(utf8编码每个汉字占3字节),则只能16个汉字。 (2)MySQL 5.0 版本以上,VARCHER(n)中的 n 指的是 n 个...
  • 请问VARCHAR2(128)能存多少个汉字?

    万次阅读 2011-10-19 20:47:09
    Q:请问VARCHAR2(128)能存多少个汉字?‘ A:看看什么字符集,或者看单个汉字几个字节lengthb Q:请问怎样查看你所提出的两个问题? A:oracle中length()与lengthb()区别 SQL> select length('阿猪') from dual; ...
  • 原文地址:MySQL 中 char 与 varchar 能存多少汉字问题作者:下一步char是一种固定长度的类型,varchar则是一种可变长度的类型。  其区别在于:  chchar(M)类型的数据列里,每个值都占用M个字节,如果长度...
  • 一、关于 UTF-8 UTF-8Unicode Transformation Format-8bit。是用以解决国际上字符的一种多字节编码。 它对英文使用 8 位(即一个字节) ,中文使用 24 位(三个... 如果是UTF8编码,则在外国人的英文 IE 也显示中.

空空如也

空空如也

1 2 3 4 5
收藏数 81
精华内容 32
关键字:

varchar能存多少字节