• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > MySQL中CHAR和VARCHAR类型演变和详解

MySQL中CHAR和VARCHAR类型演变和详解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了mysql char varchar,varchar和char的区别,char varchar2,char varchar,数据库char和varchar等相关知识,希望本文的分享对您有所帮助
一、演变:

MySQL数据库的varchar类型在5.0.3以下的版本中的最大长度限制为255,其数据范围可以是0~255。

在MySQL5.0.3及以上的版本中,varchar数据类型的长度支持到了65535,也就是说可以存放65532个字节的数据,起始位和结束位占去了3个字节,也就是说,在5.0.3以下版本中需要使用固定的TEXT或BLOB格式存放的数据可以在高版本中使用可变长的varchar来存放,这样就能有效的减少数据库文件的大小。

如果在varchar中写入大于设定的长度,默认情况下会截去后面的部分。

二、详解(MySQL5.1):

CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。

CHAR和VARCHAR类型声明的长度表示你想要保存的最大字符数。例如,CHAR(30)可以占用30个字符。

CHAR列的长度固定为创建表时声明的长度。长度可以为从0到255的任何值。当保存CHAR值时,在它们的右边填充空格以达到指定的长度。当检索到CHAR值时,尾部的空格被删除掉。在存储或检索过程中不进行大小写转换。

VARCHAR列中的值为可变长字符串。长度可以指定为0到65,535之间的值。(VARCHAR的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节)。

同CHAR对比,VARCHAR值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则使用两个字节)。

VARCHAR值保存时不进行填充。当值保存和检索时尾部的空格仍保留,符合标准SQL。

如果分配给CHAR或VARCHAR列的值超过列的最大长度,则对值进行裁剪以使其适合。如果被裁掉的字符不是空格,则会产生一条警告。如果裁剪非空格字符,则会造成错误(而不是警告)并通过使用严格SQL模式禁用值的插入。

下面的表显示了将各种字符串值保存到CHAR(4)和VARCHAR(4)列后的结果,说明了CHAR和VARCHAR之间的差别:
值 CHAR(4) 存储需求 VARCHAR(4) 存储需求
'' '     ' 4个字节 '' 1个字节
'ab' 'ab  ' 4个字节 'ab ' 3个字节
'abcd' 'abcd' 4个字节 'abcd' 5个字节
'abcdefgh' 'abcd' 4个字节 'abcd' 5个字节
请注意上表中最后一行的值只适用不使用严格模式时;如果MySQL运行在严格模式,超过列长度不的值不保存,并且会出现错误。

从CHAR(4)和VARCHAR(4)列检索的值并不总是相同,因为检索时从CHAR列删除了尾部的空格。
通过下面的例子说明该差别:
ASCII属性为CHAR列分配latin1字符集。UNICODE属性分配ucs2字符集。 </div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MySQL中CHAR和VARCHAR类型演变和详解
  • mysql中char与varchar的区别分析
  • 探究MySQL中varchar的定义长度
  • 深入研究mysql中的varchar和limit(容易被忽略的知识)

相关文章

  • 2018-12-05Oracle数据库的安全策略
  • 2018-12-05从创建数据库到存储过程与用户自定义函数的小感
  • 2018-12-05深入了解SQL注入和预防措施
  • 2018-12-05利用脚本自动安装SQLServer的实现步骤分析
  • 2017-05-11MySQL数据库防止人为误操作的实例讲解
  • 2018-12-05解决SQL2005备份数据库.dat或bak还原时的结构错误的解决方法
  • 2017-05-11MySQL函数大全及用法示例分享
  • 2017-05-11Mysql5.5 InnoDB存储引擎配置和优化
  • 2018-12-05mysql全文本搜索使用教程
  • 2018-12-05MySQL union 语法代码示例分析

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • mysql判断字段是否存在的方法
    • 关于MySQL中数据类型显示宽度n
    • sql2005 数据库转为sql2000数据库的方法(数据导出导入)
    • 优化 SQL Server 索引的小技巧
    • SQL Server日志过大会影响查询结果
    • 分享一个MySQL 多列索引优化实例代码
    • MySQL学习之外键的图文详解
    • MySQL修改root密码的一些方法
    • 在MySQL中使用STRAIGHT_JOIN的教程
    • SQL语句实现删除ACCESS重复记录的两种方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有