char类型

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

varchar类型

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

text类型

有4种TEXT类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT。这些对应4种BLOB类型,有相同的最大长度和存储需求。

BLOB 列被视为二进制字符串(字节字符串)。TEXT列被视为非二进制字符串(字符字符串)。BLOB列没有字符集,并且排序和比较基于列值字节的数值值。TEXT列有一个字符集,并且根据字符集的 校对规则对值进行排序和比较。

在TEXT或BLOB列的存储或检索过程中,不存在大小写转换。

当未运行在严格模式时,如果你为BLOB或TEXT列分配一个超过该列类型的最大长度的值值,值被截取以保证适合。如果截掉的字符不是空格,将会产生一条警告。使用严格SQL模式,会产生错误,并且值将被拒绝而不是截取并给出警告。

在大多数方面,可以将BLOB列视为能够足够大的VARBINARY列。同样,可以将TEXT列视为VARCHAR列。BLOB和TEXT在以下几个方面不同于VARBINARY和VARCHAR:

当保存或检索BLOB和TEXT列的值时不删除尾部空格。(这与VARBINARY和VARCHAR列相同)。

请注意比较时将用空格对TEXT进行扩充以适合比较的对象,正如CHAR和VARCHAR。

对于BLOB和TEXT列的索引,必须指定索引前缀的长度。对于CHAR和VARCHAR,前缀长度是可选的。

BLOB和TEXT列不能有 默认值。

LONG和LONG VARCHAR对应MEDIUMTEXT数据类型。这是为了保证兼容性。如果TEXT列类型使用BINARY属性,将为列分配列字符集的二元 校对规则。

MySQL连接程序/ODBC将BLOB值定义为LONGVARBINARY,将TEXT值定义为LONGVARCHAR。

由于BLOB和TEXT值可能会非常长,使用它们时可能遇到一些约束:

当排序时只使用该列的前max_sort_length个字节。

max_sort_length的 默认值是1024;该值可以在启动mysqld服务器时使用--max_sort_length选项进行更改。参见5.3.3节,“服务器系统变量”。

运行时增加max_sort_length的值可以在排序或组合时使更多的字节有意义。任何客户端可以更改其会话max_sort_length变量的值:

mysql> SET max_sort_length = 2000;mysql> SELECT id, comment FROM tbl_name    -> ORDER BY comment;

当你想要使超过max_sort_length的字节有意义,对含长值的BLOB或TEXT列使用GROUP BY或ORDER BY的另一种方式是将列值转换为固定长度的对象。标准方法是使用SUBSTRING函数。例如,下面的语句对comment列的2000个字节进行排序:

mysql> SELECT id, SUBSTRING(comment,1,2000) FROM tbl_name    -> ORDER BY SUBSTRING(comment,1,2000);·

BLOB或TEXT对象的最大大小由其类型确定,但在客户端和服务器之间实际可以传递的最大值由可用内存数量和通信缓存区大小确定。你可以通过更改max_allowed_packet变量的值更改消息缓存区的大小,但必须同时修改服务器和客户端程序。例如,可以使用 mysql和mysqldump来更改客户端的max_allowed_packet值。参见7.5.2节,“调节服务器参数”、8.3节,“mysql:MySQL命令行工具”和8.8节,“mysqldump:数据库备份程序”。

每个BLOB或TEXT值分别由内部分配的对象表示。这与其它列类型形成对比,后者是当打开表时为每1列分配存储引擎。

mysql中char和text的区别_mysql中text与varchar与char的区别相关推荐

  1. mysql查询char和int哪个快_MySQL中int、char以及varchar的性能对比

    本篇文章给大家带来的内容是关于MySQL中int.char以及varchar的性能对比,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 网络上有许多似是而非的"谣言" ...

  2. mysql char varchar 性能_Mysql小细节:varchar与char在性能上的特点

    varchar与char的一个主要区别是存储方式的不同 varchar 是变长存储 占用的存储空间 = 存储内容实际大小 + 长度记录位 char 是定长存储 占用的存储空间 = 字段声明的宽度 存储 ...

  3. mysql排序显示行数的语句_MySQL中sql语句count(*),orderby,随机数据展示。

    count(*)这么慢,我该怎么办? MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count(*) 的时候会直接返回这个数,效率很高: 而 InnoDB 引擎就麻烦了,它执行 count ...

  4. mysql5.5 5.7区别_mysql 5.5 和5.7 安装的区别

    mysql 5.5 的安装步骤: 1 软件安装 [root@dg2 ~]# rpm -ivh MySQL-server-advanced-5.5.54-1.el6.x86_64.rpm warning ...

  5. mysql数据库blob区别_MySQL中TEXT与BLOB字段类型的区别

    在MySQL中有两个字段类型容易让人感觉混淆,那就是TEXT与BLOB,特别是自己写博客程序的博主不知道改为自己的博客正文字段选择TEXT还是BLOB类型. 下面给出几点区别: 一.主要差别 TEXT ...

  6. mysql general bin区别_MySQL中几种常见的日志

    前言: 在 MySQL 系统中,有着诸多不同类型的日志.各种日志都有着自己的用途,通过分析日志,我们可以优化数据库性能,排除故障,甚至能够还原数据.这些不同类型的日志有助于我们更清晰的了解数据库,在日 ...

  7. mysql 正则 java 区别_MySQL中的正则表达式

    MySQL中允许使用正则表达式定义字符串的搜索条件,性能比like匹配查询还高 MySQL中的正则表达式可以对整数类型或者字符类型检索 使用REGEXP关键字表示正则匹配,默认忽略大小写,如果区分大小 ...

  8. mysql重做日志与binlog日志区别_MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结...

    MySQL中有六种日志文件,分别是 重做日志(redo log) 回滚日志(undo log) 二进制日志(binlog) 错误日志(errorlog) 慢查询日志(slow query log) 一 ...

  9. mysql numeric 区别_Mysql中NUMERIC和DECIMAL类型区别比较

    decimal(numeric ) 同义,用于精确存储数值 . decimal 数据类型最多可存储 38 个数字,所有数字都能够放到小数点的右边.decimal 数据类型存储了一个准确(精确)的数字表 ...

最新文章

  1. mybatis在控制台打印sql语句
  2. A Tutorial on Clustering Algorithms-聚类小知识
  3. 如何在站点静态文件下查找某关键字并修改文件名?
  4. 清除浏览器缓存之后为什么还是显示旧的html页面_Web缓存控制策略详解
  5. 【转载】为什么飞鸽传书一直流行?
  6. 目录浏览控件fbd c# 1614612744
  7. linux sed面试题,【2021最新版】Linux面试题总结(48道题含答案解析)
  8. (111)FPGA面试题-介绍Verilog 块语句fork-join执行过程
  9. 基于JAVA+Swing+MYSQL的工资管理系统
  10. 大公司都有哪些开源项目~~~简化版
  11. 通俗易懂理解Attention机制
  12. 25.212---复用和信道编码
  13. 微软Hyper-V虚拟化技术全面体验
  14. Broadcom WICED Wi-Fi 研究BCM943362WCD4之STM32F205+43362通信
  15. 微信数据清空了怎么办?误删微信聊天记录怎么恢复
  16. 坯子库怎么导入插件_【亲测能用】草图大师Sketchup坯子库插件管理器SU2014-2019插件64位下载-羽兔网...
  17. 大写金额用计算机简单些,小写金额转换为大写金额(C实现)
  18. CSPS-S 模拟47
  19. devise 自定义手机号登录
  20. Android幸运大转盘

热门文章

  1. iOS开发者工具功能详述
  2. Linux入门之系统启动过程及初始化----“翻滚吧,牛宝宝”
  3. win7 安装apache2.2服务错误
  4. 手把手教你怎么用动软.net代码生成器 搭建三层架构
  5. linux 下oracle启动步骤
  6. 判断一个变量是不是数组
  7. Laravel项目上传github后,clone到本地运行时报错500的解决方法
  8. 从道的角度来论述大数据对企业价值
  9. 吓尿了!手机充完电不拔充电器后果这么严重
  10. 使用FluentValidation来进行数据有效性验证