| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> 【MySQL】官方正解 - char 和 varchar 的区别 -> 正文阅读 |
|
[大数据]【MySQL】官方正解 - char 和 varchar 的区别 |
varchar 和 char 的区别最初的需求就是为了能存储字符串,字符串怎么存储呢?无非就是一个字符数组嘛。 在 C 语言中,对于字符串的表示是怎么做的呢?
回到正题,MySQL中字符串的存储,MySQL是做数据库用的,也就是存储数据,而为了对数据进行约束、存储、解析,就需要存在一个表的结构(类似于 考虑实际中的问题,假如以姓名来说,有少部分人的名字较长,有的有只有2个字符,如果为所有人都分配最长的字符长度的字符数组,那很大一部分不就浪费了嘛。于是我们就想能够存储的时候根据实际存储的值的大小进行分配存储空间,这完全是可行的嘛。所以 char --- varcahr两种普通字符串的存储方式。 下面看官方文档中所述:
????????char 和 varchar 是很相似的,但是他们再存储方式和检索方式上是不同的,除此之外,他们的最大长度和是否保留尾随的空格上也是不同的
????????char 和 varchar 通过一个数字声明该列存储的字符数 ????????char 的长度将会是固定的,其长度是创建表时指定的值。该值可以是 0 - 255 之间的任意一个值。当 char 类型的值存储时,右边空余部分会被填充,从而达到指定的长度大小。当 char 类型的值被检索时,尾随的空格将会被移除,除非开启
????????varchar 列是可变长度的字符串,其长度可以指定为 0 - 65535,该值取决于最大行大小(65535byte,所有列共享)以及所使用的字符集
????????对比char来说,varchar值存储时会加上 1-byte 或者 2-byte 的长度前缀。该前缀标明了 值的长度。如果value所需长度没有超过就使用 1byte,否则使用 2byte
????????在严格模式没有开启的情况下,对 char 和 varchar 列的 超出列长度最大值的赋值,value 会被截去一部分在存储,并且会产生一个
????????对于 varchar 的列,不论是什么SQL模式,尾随的空格的长度的超出部分会在插入之前被截断,并且产生一个 warning(做实验没这效果)。对于 char 而言,不管什么模式,会悄悄的移除尾随的空格。
????????varchar 值在存储时,不会进行填充范围空间。在标准SQL时,将值存储和检索时,将会保留尾随的空格。
????????innoDB 编码固定长度的字段 大于 或者 等于 768 字节长度作为可变长度字段,可以存储在 总结一下MySQL默认是严格模式的,非严格模式就不做讨论了。
优劣: 考虑选型的时候无非从两个维度考虑,空间+时间 空间上:varchar 根据实际长度分配存储空间,char 则是固定长度,所以相对而言 varchar 要更省空间,也能够提供后续的兼容性。但是选择上要根据实际情况来,如果字格字段就固定了是这么长,不可能变,其实选择char即可。 时间上:由于varchar要去解析长度,多一步操作。除此之外,如果该列经常发生改变,并且字符长度还要改变的情况下,使用 varchar 就可能出现 行迁移的情况了。所以在速度上 varchar 要稍微慢一些 ! |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年5日历 | -2025/5/1 6:17:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |