zoukankan      html  css  js  c++  java
  • MySQL字符串类型

      VARCHAR类型用于存储变长字符串,它会删除末尾的所有空格,它比定长字符串更省空间,因为它仅使用必要的空间(越短的字符串占用越少),VARCHAR会用1或2个额外字节记录字符串长度(如果字符串长度不大于255,用一个字节记录长度,大于255,小于65535,用两个字节记录),VARCHAR节省了空间,因此对性能是有帮助的,但是因为行是变长的,所以每次UPDATE时会重新计算字符串长度,会比定长多做额外工作。因此不是说VARCHAR就一定能提升性能,同样要分使用场景,如果字符串的最大长度比平均长度大很多,且列的更新很少时则适合用VARCHAR。注意InnoDB会把过长的VARCHAR存储为BLOB,通常人们喜欢将IP地址存储为VARCHAR型,其实IP地址是32位二进制表示的,你可以转为十进制表示,因而不是字符串,用小数是将它分为四段便于阅读。

          CHAR是定长的,每个列无论字符串长度大小都会分配固定存储空间,CHAR适合存储字符很短,或者所有值接近一个长度时,如存储MD5码、SESSION_ID等,对于经常变更的数据CHAR也比VARCHAR好,再一个是对于非常短的列,CHAR比VARCHAR更节省空间,例如使用CHAR(1)和VARCHAR(1)来存储Y或N时,CHAR需要一个字符,而VARCHAR需要两个,因为还有一个长度字节。

    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-2个字节来存储长度,text不会。
    7. 效率来说基本是char>varchar>text,但是如果使用的是Innodb引擎的话,推荐使用varchar代替char。char和varchar可以有默认值,text不能指定默认值

  • 相关阅读:
    LayaBox怎么加载不打包的文件
    LayaBox怎么添加背景音乐和音效
    LayaBox的场景切换
    LayaBox怎么在ui页面中取到某个元素对象节点
    LayaBox怎么添加定时循环执行方法播放功能
    LayaBox怎么添加事件
    vue 点击按钮 input框架获取焦点的方法
    JS中的跨域问题
    深入理解javascript之typeof和instanceof
    localStorage(本地存储)使用总结
  • 原文地址:https://www.cnblogs.com/liujiaq/p/5643550.html
Copyright © 2011-2022 走看看