mysql的CHAR和VARCHAR类型
2023-12-13 03:55:49
MySQL :: MySQL 8.2 Reference Manual :: 11.3.2 The CHAR and VARCHAR Types
- CHAR和VARCHAR两个数据类型类似,但在存储和取回方面不同、最大长度不同、结尾的空格是否保留方面不同。
- 一个列声明为CHAR、或者VARCHAR类型,要指明一个长度,这个长度就是该字段能够保存的最大字符的数量。例如,CHAR(30)表示字段最多能保存30个字符。
CHAR列的长度是固定的,就等于创建表时对该字段声明的长度,可以声明长度的范围是0到255。当保存CHAR值的时候,会在右边填充空格使总长度达到声明的长度。当取回CHAR的值时,会去掉后面的空格,除非使用了PAD_CHAR_TO_FULL_LENGTH模式(不过这个模式已经废弃,会在将来的某个版本去掉)。
VARCHAR列是变长字符串。可以声明的长度是0到65535。与CHAR列不同,VARCHAR列用1个字节、或者2个字节的长度前缀+数据来保存。如果数据保存需要的字节数小于255,那么只用1个字节的长度前缀;如果数据保存需要的字节数大于255,那么要用2个字节的长度前缀。即便数据长度小于声明的字段长度,VARCHAR的值当存储的时候不额外用空格填充。如果数据本身后面有空格,存储和取回的时候空格都保留。
示例:下表通过各种值存入CHAR(4)、VARCHAR(4)列演示了它们的区别。假设列用了单字节字符集,例如
latin1:
要存入的值 | CHAR(4)列保存的值 | CHAR(4) 存储需要的字节数 | VARCHAR(4)列保存的值 | VARCHAR(4) 存储需要的字节数 |
---|---|---|---|---|
'' | '????' | 4 bytes | '' | 1 byte |
'ab' | 'ab??' | 4 bytes | 'ab' | 3 bytes |
'abcd' | 'abcd' | 4 bytes | 'abcd' | 5 bytes |
'abcdefgh' | 'abcd' | 4 bytes | 'abcd' | 5 bytes |
备注:在上面表中最后一行的示例中,只有当没有使用严格SQL模式的时候才适应。如果使用了严格SQL模式,当值的长度超过列声明的长度,不会被存储,而会发生一个错误。
文章来源:https://blog.csdn.net/panghuangang/article/details/134913967
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!