精华内容
下载资源
问答
  • 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”用来...
    1. MySQL建立索引时如果没有限制索引的大小,索引长度会默认采用的该字段的长度,也就是说varchar(20)和varchar(255)对应的索引长度分别为203(utf-8)(+2+1),2553(utf-8)(+2+1),其中"+2"用来存储长度信息,“+1”用来标记是否为空,加载索引信息时用varchar(255)类型会占用更多的内存; (备注:当字段定义为非空的时候,是否为空的标记将不占用字节)

    2. 在内存中的操作方式,varchar是按照最长的方式在内存中进行操作的。比如说要进行排序的时候,varcahr(255)是按照255这个长度来进行的。

    3. MySQL通常会分配固定大小的内存块来保存内部值,255比20可大不少呢。

    展开全文
  • ♣题目部分 1、varchar(20)和int(20)中的20含义一样吗? 2、varchar(100)和varchar(200)的区别? ...
    
    ♣题目部分      1、 varchar(20)和int(20)中的20含义一样吗?       2、 varchar(100)和varchar(200)的区别?     
    
    
    
    
    ♣答案部分
          答:1、不一样,前者表示最多存放20个字符,后者表示最多显示20个字符,但是存储空间还是占4字节存储,存储范围不变。     答:2、varchar(100)最多存放100个字符,varchar(200)最多存放200个字符,varchar(100)和(200)存储hello所占空间一样,但后者在排序时会消耗更多内存,因为order by col采用fixed_length计算col长度(memory引擎也一样)。
      
    

    About Me:小婷儿

     本文作者:小婷儿,专注于python、数据分析、数据挖掘、机器学习相关技术,也注重技术的运用

    ● 作者博客地址:https://blog.csdn.net/u010986753

     本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

     版权所有,欢迎分享本文,转载请保留出处

     微信:tinghai87605025 联系我加微信群

     QQ:87605025

     QQ交流群py_data 483766429

     公众号:python宝 或 DB宝

     提供OCP、OCM和高可用最实用的技能培训

    ● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

    如果你觉得到文章对您有帮助,点击下方我的头像,赞赏我哦!

    有您的支持,小婷儿一定会越来越好!

    展开全文
  • sql server 字段合并(CAST) ...select (CAST(org_no AS VARCHAR(20))+CAST(page_no AS VARCHAR(20))+CAST(djlb_no AS VARCHAR(20))) from ERP_BASIC_BILLNO_PREFIX where org_num=#{orgNum} ...

    sql server 字段合并(CAST)

    ----------------------

    select (CAST(org_no AS VARCHAR(20))+CAST(page_no AS VARCHAR(20))+CAST(djlb_no AS VARCHAR(20))) from ERP_BASIC_BILLNO_PREFIX where org_num=#{orgNum} and page_name=#{pageName} and djlb_name=#{djlbName};")

    字段1+字段2

     

    oracle 字段合并(CONCAT)

    ----------------------

    select (Concat(Concat(CODE,'_'),NAME)) 合并结果集 from GoodsCate

     

    mysql 字段合并(CONCAT)

    ----------------------

    SELECT declare_type_id,support_model,project_name,CONCAT(declare_type_id,support_model,project_name) from gf_index;

     

    转载于:https://www.cnblogs.com/gzhbk/p/11507491.html

    展开全文
  • 在开发当中,经常看见有些字段长度是varchar(20)或者varchar(32),但是在自己建表的时候,navicat基本上都是默认的varchar(255)的长度。 所以带着疑问来学习一下数据库表字段长度的设计。 长度限制和字段选择 查阅了...

    学习原因

    在开发当中,经常看见有些字段长度是varchar(20)或者varchar(32),但是在自己建表的时候,navicat基本上都是默认的varchar(255)的长度。
    所以带着疑问来学习一下数据库表字段长度的设计。

    长度限制和字段选择

    查阅了资料后,发现了一些关于数据库的长度限制及表设计的相关资料

    相关资料:
    各个数据库表名和字段名长度限制
    MySQL中各种数据类型的长度及在开发中如何选择
    MySql数据库表字段命名及设计规范
    数据库中存储日期的字段类型到底应该用varchar还是datetime
    为什么很多公司要求 mysql 表主键 id 必须是 long 型?
    为什么mysql的varchar字符长度会被经常性的设置成255

    在仔细阅读上述的相关资料后,算是解决了很多的疑问,也学习到了不少数据库书本上难以学习到的经验。
    总的来说就是数据库表名和字段长度是有一个限制的,不是越大就好,在设计创建表字段时也要考虑下字段长度问题,根据一些实际情况选择表当中的字段类型和手动设置一下字段的长度,可以对数据的维护,查询带来效率和性能上的提升。

    验证varchar(20)和varchar(255)的区别

    关于这个问题,也在网上找了很多的资料进行查看,既然是学习嘛,光看是没有什么意思的,还是要动手验证一下。

    相关资料:
    varchar(500)比varchar(8000)更有优势吗?
    MySQL中采用类型varchar(20)和varchar(255)对性能上的影响

    创建一个测试表,并创建相关的字段,存入1000条数据。具体操作如下

    CREATE TABLE ABC (
      id int(11) DEFAULT NULL,
      name varchar(20) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -- 创建表
    ALTER  TABLE  ABC  ADD  INDEX nameIndex (name);  -- 给name 字段添加索引
    explain select name from ABC;    --  分析这个查询sql语句
    

    结果如下图:
    在这里插入图片描述
    可以看到此时的KEY_LEN为63
    然后往表里面存1000条数据,直接复制粘贴1000条一样的数据用于测试,查看表空间大小

    SELECT CONCAT(TRUNCATE(SUM(data_length),2),'B') AS data_size,
    CONCAT(TRUNCATE(SUM(max_data_length),2),'B') AS max_data_size,
    CONCAT(TRUNCATE(SUM(data_free),2),'B') AS data_free,
    CONCAT(TRUNCATE(SUM(index_length),2),'B') AS index_size
    FROM information_schema.tables WHERE TABLE_NAME = 'ABC';
    

    结果如下图:

    在这里插入图片描述
    可以看见:data_size的值为:16384

    然后修改字段name的长度为255,再次查看key_len和data_size的值

    alter table ABC  modify name varchar(255);
    explain select name from ABC;
    SELECT CONCAT(TRUNCATE(SUM(data_length),2),'B') AS data_size,
    CONCAT(TRUNCATE(SUM(max_data_length),2),'B') AS max_data_size,
    CONCAT(TRUNCATE(SUM(data_free),2),'B') AS data_free,
    CONCAT(TRUNCATE(SUM(index_length),2),'B') AS index_size
    FROM information_schema.tables WHERE TABLE_NAME = 'ABC';
    

    结果如下:
    在这里插入图片描述
    在这里插入图片描述
    KEY_LEN变成了768 但是data_size没有变化。
    验证完毕:得出结论,通常情况下使用varchar(20)和varchar(255)占用的空间都是一样的,但是使用索引长度有所不同。所以在设计时尽量保持一个合理的长度范围。

    额外的发现

    在测试当中还有一个些的发现:表字段的类型其实是有长度限制,int类型最大为255等等。
    一个表,所有字段的长度加起来不能超过65535字节,是字节不是字符 。不包括text blob类型的字段。

    展开全文
  • db2 9.7 中创建了两不同参的自定义函数to_date(varchar(20))、to_date(date)。 但直接查询to_date(varchar(20))函数时提示报错22007,后发现直接查询时系统可能调用了db2系统的to____date(varchar,'yyyy-mm-dd')函数...
  • varchar(20)及char(20)都只能存储20个汉字或者只能存储20个字母或者只能存储汉字和字母的数量达到20的混合字符串
  • 1.MySQL建立索引时如果没有限制索引的大小,索引长度会默认采用的该字段的长度,也就是说varchar(20)和varchar(255)对应的索引长度分别为20*3(utf-8)(+2+1),255*3(utf-8)(+2+1),其中"+2"用来存储长度信息,“+1”...
  • Hive中varchar与char都是用来...假定声明了varchar(20)与char(20)两种数据类型,当存入的字符占用小于20时,声明为varchar的字符只占用足够表示它的那些字符空间;而char则仍然占满20个字节空间,用空格填充。...
  • mysql varchar(20) 是20个字节 还是 20个字符? 这个问题一直有那么一点点的乱。刚好今天有空整理一下MySQL4.1前的 varchar(20) 是20个字节。最大的限制是255字节MySQL5.0以后 varchar(20)是20个字符。最大的限制是...
  • Mysql的varchar(20)到底可以存储多少个中文字符

    万次阅读 多人点赞 2014-07-22 20:23:52
    今天群里问说“Mysql的varchar(20)到底可以存储多少个中文字符”,很多直观回答是10个字符。这个问题其实很容易得到结果。博主就动手测试了一下。   动手测试之: 新建表: CREATE TABLE varchar_test ( `id`...
  • int数据类型是固定的4个字节;但是int(5)和int(11)区别在于,显示的数据位数一个是5位一个是11位,在开启zerofill(填充零)情况下,若int(5)存储的数字长度是小于5的则会在不足位数的前面补充0,但是...varchar(20)中...
  • 这里讲一下编码,涵盖内容包括:gbk...建表test: create table test(a varchar(20)); 1 利用length,char_length函数看到字符串‘啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊’在utf_8的编码下占用了60byte空间,以
  • 关于 char(10) 与 varchar(20) 两个类型的字段的比较 (oracle 数据库):     有两个表:    A表:    a_id : int  a_code : char(10) = '123'  a_name : varchar(50)      B表:   ...
  • varchar(20)中的20表示的是varchar数据的数据长度最大是20,超过则数据库不会存储; 总结: int(M) M表示的不是数据的最大长度,只是数据宽度,并不影响存储多少位长度的数据;  varchar(M) M表示的是...
  • 在写入数据库的时候,某字段varchar(20),报“字符长度超长”的错误,但是去数据库中用length()查,发现最大的长度都不超20,为什么会报这个错呢? 那是因为length()是查的字符数,而varchar(20)是字节数。 ...
  • sql语句可以这样写么,为什么创建不出来,#号是什么意思![图片说明](https://img-ask.csdn.net/upload/201811/15/1542283586_879588.png)
  • select id,haha+(+CAST(id as VARCHAR(20))+) as hhaaa from db --输出合并 select DateDiff(d,时间,2005-07-01) as w, 时间 from 招聘信息 where DateDiff(d,时间,2005-07-01)=0 --查询2005-06-1至...
  • mysql varchar(20),20表示什么意思?

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

    千次阅读 2014-07-14 11:27:50
    mysql> use test Reading table information for completion of table and column names ...结论:mysql中 varchar(20)和varchar(255)不是随便取值,因为后面的值可能影响字段所在索引的大小,以及查询性能。
  • 这是一个mssql数据库的函数,Convert函数的作用,...接下来,对您函数中的三个参数,分别进行说明:1.char(20),是要转换成的目标数据类型及长度,这里您还可以使用varchar(20),也可以使用varchar(10),如果使用20,则...
  • 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
  • varchar2(20)varchar2(20 byte)区别

    千次阅读 2018-01-09 17:07:17
    今天,无意中看到开发环境下,有的表字段类型定义为varchar2(20)、而有的表字段定义为varchar2(20 byte)。 varchar2(20)还是varchar2(20 byte)是单位的不同,由数据库参数NLS_LENGTH_SEMANTICS决定的,有两个...
  • nvarchar和varchar 的区别是...所以varchar(40)只能存储20个中文字符。nvarchar每个字符占用2个字节,nvarchar(40),就可以存储40个中文字符。nvarchar要相对于存储的字符类型。比如有些字符是占3个字节的。 varc...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 27,736
精华内容 11,094
关键字:

varchar(20)