精华内容
下载资源
问答
  • mysql varchar(20) 是20个字节 还是 20个字符? 这个问题一直有那么一点点的乱。刚好今天有空整理一下MySQL4.1前的 varchar(20) 是20个字节。最大的限制是255字节MySQL5.0以后 varchar(20)是20个字符。最大的限制是...

    mysql varchar(20) 是20个字节 还是 20个字符? 

    这个问题一直有那么一点点的乱。

    刚好今天有空整理一下

    MySQL4.1前的 varchar(20) 是20个字节。最大的限制是255字节

    MySQL5.0以后 varchar(20)是20个字符。最大的限制是65535-3占位符号=65532字节

    也就是字符要按照字符集来计算最大能存的字符

    GBK:65532/2 字符

    UTF8:65532/3 字符

    (具体计算结果,哈哈,自己拿计算器计算一下) 

    如果超出了 范围,会转为text 类型来存哦。

    补充一点,我们除了关注单个字段的限制,还要关注行的限制。mysql一行最大是65535 也就是 64k.

    好吧今天就到这里先了。

    展开全文
  • mysql varchar(20),20表示什么意思?

    万次阅读 2018-08-01 12:09:40
    mysql4.x,表示字节数; mysql5.x及以上,表示字符数,也就是,不论中文还是英文还是标点,加起来只能有20个。

    mysql4.x,表示字节数;

    mysql5.x及以上,表示字符数,也就是,不论中文还是英文还是标点,加起来只能有20个。

    展开全文
  • 对于VARCHAR数据类型来说,硬盘上的存储空间虽然都是根据实际字符长度来分配存储空间的,但是对于内存来说,则不是。其时使用固定大小的内存块来保存值。简单的说,就是使用字符类型中定义的长度,即200个字符空间。...

    1、假设他们用来存储10个字符的数据,其存储空间相同。但是对于内存的消耗是不同的。对于VARCHAR数据类型来说,硬盘上的存储空间虽然都是根据实际字符长度来分配存储空间的,但是对于内存来说,则不是。其时使用固定大小的内存块来保存值。简单的说,就是使用字符类型中定义的长度,即200个字符空间。显然,这对于排序或者临时表(这些内容都需要通过内存来实现)作业会产生比较大的不利影响所以如果某些字段会涉及到文件排序或者基于磁盘的临时表时,分配VARCHAR数据类型时仍然不能够太过于慷慨。还是要评估实际需要的长度,然后选择一个最长的字段来设置字符长度。如果为了考虑冗余,可以留10%左右的字符长度。千万不能认为其为根据实际长度来分配存储空间,而随意的分配长度,或者说干脆使用最大的字符长度。所以楼主你说尽可能设置大一些完全错误,后来人看到你说的这些,每次设计数据库都给个200,明明长度给个20能解决,你看看内存有没有损耗

     

    2、通常情况下使用varchar(20)和varchar(255)保持'hello'占用的空间都是一样的,但使用长度较短的列却有巨大的优势。较大的列使用更多的内存,因为MySQL通常会分配固定大小的内存块来保存值,这对排序或使用基于内存的临时表尤其不好。同样的事情也会发生在使用文件排序或者基于磁盘的临时表的时候。所以在设计数据库的时候,考虑字段的最大容量也是提升性能的一个点

    3、

    varchar是存储可变长度的字符串,简单的说我们定义表机构的时候指定的字段长度是最大长度,当字符串没有达到最大长度的时候以字符串的实际长度来存储的,不占用多余的存储空间。

    一般情况下使用varchar(10)和varchar(100)保存'fuk'占用的空间都是一样的,但是更小的varchar(10)有着更好的性能。

    比如:MySQL建立索引时如果没有限制索引的大小,索引长度会默认采用的该字段的长度,也就是说varchar(100)建立的索引存储大小要比varchar(10)建立索引存储大小大的多,加载索引使用的内存也更多。

    比如:Values in VARCHAR columns are variable-length strings. The length can be specified as a value from 0 to 65,535. The effective maximum length of a VARCHAR is subject to the maximum row size ( 65,535 bytes, which is shared among all columns) 就说所,所有的列长度加起来不能操作65,535 bytes大小,如果你的varchar长度设置大了,那么给其他列使用的长度大小就小了。关于这个更多介绍,请看column-count-limit

    实际中根据使用场景选择合适的长度就ok了。

    展开全文
  • 今天群里问说“Mysql的varchar(20)到底可以存储多少个中文字符”,很多直观回答是10个字符。这个问题其实很容易得到结果。博主就动手测试了一下。   动手测试之: 新建表: CREATE TABLE varchar_test ( `id`...

    背景:        

    今天群里问说“Mysql的varchar(20)到底可以存储多少个中文字符”,很多直观回答是10个字符。这个问题其实很容易得到结果。博主就动手测试了一下。

     

    动手测试之:

    新建表:

    CREATE TABLE varchar_test (

    `id` int(11) NOT NULL ,

    `string` varchar(20)

    ) ENGINE=InnoDB

    DEFAULT CHARACTER SET=utf8COLLATE=utf8_general_ci

     

    插入表

    INSERT INTO varchar_test (id, string)

    VALUES (1, '一二三四五六七八九十');

     

    INSERT INTO varchar_test (id, string)

    VALUES (2, '一二三四五六七八九十一二三四五六七八九十');

     

    INSERT INTO varchar_test (id, string)

    VALUES (3, '12345678901234567890');

     

    测试结果:

    1                                      

    一二三四五六七八九十

    2

    一二三四五六七八九十一二三四五六七八九十

    3

    12345678901234567890

     

    如果插入字符超过21个,则报错

    [SQL]

    INSERT INTO varchar_test (id, string)

    VALUES (3, '123456789012345678901');

    [Err] 1406 - Data too long for column'string' at row 1

     

    小结:

            可见MySQL的varchar(n)可以存储的中文字符数和英文字符数是一致的,都是n个字符。

            听之不如见之,见之不如行之。

    --------------------- 作者:WaveVector 来源:CSDN 原文:https://blog.csdn.net/wendingzhulu/article/details/38048657?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!

    展开全文
  • mysql中varchar(20)最多能存多少个汉字

    千次阅读 2019-05-14 10:15:00
    5.0版本以上,varchar(20),指的是20字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放20个 转载于:https://my.oschina.net/u/2262481/blog/3049211
  • 为什么我varchar(20) 可以存放20个汉字

    千次阅读 2017-08-23 22:47:01
    http://tieba.baidu.com/p/2317765563
  • 这里讲一下编码,涵盖内容包括:gbk...建表test: create table test(a varchar(20)); 1 利用length,char_length函数看到字符串‘啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊’在utf_8的编码下占用了60byte空间,以
  • varchar(20)及char(20)都只能存储20个汉字或者只能存储20个字母或者只能存储汉字和字母的数量达到20的混合字符串
  • Oracle中varchar2(20)和varchar2(20 byte)区别

    千次阅读 2013-03-29 15:08:01
    开发环境中:有的表中字段类型定义为varchar2(20)有的表中字段类型定义为varchar2(20 byte) varchar2(20)和varchar2(20 byte)是否相同呢? 相不相同是由数据库的参数NLS_LENGTH_SEMANTICS决定的,有两个单位,char...
  • MySql : varcharvarchar 的区别

    千次阅读 2018-07-04 12:10:44
    MySql中varchar(10)和varchar(100)的区别==>>以及char的利弊 一般初学会认为,二者占用的空间是一样的。比如说我存储5个char,二者都是实际占用了5个char了【勘误:varchar在实际存储的时候会多一个byte用来存放长度...
  • varchar(20)中的20表示的是varchar数据的数据长度最大是20,超过则数据库不会存储; 总结: int(M) M表示的不是数据的最大长度,只是数据宽度,并不影响存储多少位长度的数据;  varchar(M) M表示的是...
  • VARCHAR2(20)可以存储多少个数字

    千次阅读 2017-06-02 15:53:42
    varchar2是oracle中独有的类型,可以存储0-20个数字(英文写法),如果是中文数字的话只能存储10个。 创建测试表: 1 2 3 create table test (id int, name varchar2(20)); ...
  • varchar2(20)与varchar2(20 char)的区别

    千次阅读 2011-07-28 23:23:36
    varchar2(20)与varchar2(20 char)的区别 首先应该说明一个概念,oracle数据库存储数据的时候默认两种存储方式,既字节 和 字符,默认是字节存储,如果在定义数据类型的时候 加上CHAR 就是强制数据按照字符类型...
  • int数据类型是固定的4个字节;但是int(5)和int(11)区别在于,显示的数据位数一个是5位一个是11位,在开启zerofill(填充零)情况下,若int(5)存储的数字长度是小于5的则会在不足位数的前面补充0,但是...varchar(20)中...
  • char是存储字符(无论字母还是汉字都最多存255个) char(20)表示这个字段最多存20个字符 如果存了16个字符 那么会只占用16个字符的空间varchar是存储字节(1个字母1个字节 1个汉字3个字节) varchar(50)表示这...
  • 比如说我存储5个char,二者都是实际占用了5个char了【勘误:varchar在实际存储的时候会多一个byte用来存放长度】。但是深入一下,设计数据库的时候,二者一样吗?答案是否定的【至少varchar类型需要在数据之前利用一...
  • 备注:c8=char(8), s8=varchar(8), i8=(bigint), c4=char(4), s4=varchar(4), i4=char(4) 100w行无索引情况下查询: 执行[c8查询]20次, 平均耗时312.0ms 执行[s8查询]20次, 平均耗时334.3ms 执行[i8查
  • varchar(20)和varchar(255)的空间开销区别

    千次阅读 2019-08-03 10:45:57
    MySQL建立索引时如果没有限制索引的大小,索引长度会默认采用的该字段的长度,也就是说varchar(20)和varchar(255)对应的索引长度分别为203(utf-8)(+2+1),2553(utf-8)(+2+1),其中"+2"用来存储长度信息,“+1”用来...
  • 在线DDL修改varchar字段属性时不锁表

    千次阅读 2019-06-12 09:21:54
    《MySQL管理之道:性能调优、高可用与监控(第2版)》第2章MySQL 5.7与...本节为大家介绍在线DDL修改varchar字段属性时不锁表。 2.3.2 在线DDL修改varchar字段属性时不锁表 MySQL 5.7针对DDL功能做了加强,修改...
  • ♣题目部分 1、varchar(20)和int(20)中的20含义一样吗? 2、varchar(100)和varchar(200)的区别? ...
  • Oracle中varchar2 nvarchar2 小结

    千次阅读 2019-07-24 05:33:19
    Oracle中varchar2 nvarchar2 VARCHAR2(size),可变长度的字符串,其最大长度为 size 个字节。size 的最大值是 4000,而最小值是 1。您必须指定一个 VARCHAR2 的 size. NVARCHAR2(size),可变长度的字符串,依据所...
  • mysql varchar到底能存多少字符。

    千次阅读 2018-06-27 14:31:00
    utf8编码的varchar  Mysql记录行数据是有限的。大小为64k,即65535个字节,而varchar要用1-2字节来存储字段长度,小于255的1字节,大于255的2字节。  Mysql 5.0后,英文字符固定都是一个字节,汉字字符根据编码方式...
  • 最近一周接连处理了2个由于int向varchar...`appkey` varchar(20) NOT NULL DEFAULT '', `user_total` bigint(20) NOT NULL DEFAULT '0', `user_activity` bigint(20) NOT NULL DEFAULT '0', `times_total` bigint(20) N
  • varchar2(20)和varchar2(20 byte)区别

    千次阅读 2018-01-09 17:07:17
    今天,无意中看到开发环境下,有的表字段类型定义为varchar2(20)、而有的表字段定义为varchar2(20 byte)。 varchar2(20)还是varchar2(20 byte)是单位的不同,由数据库参数NLS_LENGTH_SEMANTICS决定的,有两个...
  • 1、创建表结构 create table t2(id int,c varchar(10)); 2、插入数据  insert into t1 values(1,'aaaaaaaaaa');... create table t2(id int,c varchar(20)); 4、锁表  flush tables with read
  • varchar && bigint 执行效率及区别

    千次阅读 2016-08-31 20:32:39
    所以一般采用的办法就是使用varchar,自定义使用长度,很好的办法。不过最近发了bigInt的使用,下边通过测试来对比一下两者的性能使用情况: 第一种情况:idcardno为varchar类型的时候 查询整体使用的耗时: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 363,830
精华内容 145,532
关键字:

varchar(20)