(转)blob和text区别

news/2024/7/7 7:47:04

(mysql 是没有clob的)

 (大多数方面,可以将BLOB列视为能够足够大的VARBINARY列。同样,可以将TEXT列视为VARCHAR列。

 

text分为4种类型:TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT,分别对应不同的长度。text是非二进制字符串,并且需要指定字符集,并按照该字符集进行校验和排序。只能存储纯文本,可以看作是VARCHAR在长度不足时的扩展。

 

blob也分为4种类型:TINYBLOB,BLOB,mediumblob和LongBlob,分别对应不同的长度,blob存储的是二进制数据,因此无需字符集校验,blob除了存储文本信息外,由于二进制存储格式,所以还可以保存图片等信息,blob可以看作是VARBINARY在长度不足时的扩展。

 

--------------------------------------

 

 

MySQL存在text和blob:

(1)相同

  • 在TEXT或BLOB列的存储或检索过程中,不存在大小写转换,当未运行在严格模式时,如果你为BLOB或TEXT列分配一个超过该列类型的最大长度的值值,值被截取以保证适合。如果截掉的字符不是空格,将会产生一条警告。使用严格SQL模式,会产生错误,并且值将被拒绝而不是截取并给出警告.
  • BLOB和TEXT列不能有 默认值.
  • 当保存或检索BLOB和TEXT列的值时不删除尾部空格。(这与VARBINARY和VARCHAR列相同).
  • 对于BLOB和TEXT列的索引,必须指定索引前缀的长度。对于CHAR和VARCHAR,前缀长度是可选的.

(2)相异 

 text :

  • TEXT值是大小写不敏感的
  • Text被视为非二进制字符串
  • TEXT列有一个字符集,并且根据字符集的 校对规则对值进行排序和比较
  • 可以将TEXT列视为VARCHAR列
  • MySQL连接程序/ODBC将TEXT值定义为LONGVARCHAR
  • BLOB 可以储存图片,TEXT不行,TEXT只能储存纯文本文件。4个TEXT类型TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT对应于4个BLOB类型,并且有同样的最大长度和存储需求。

blob:  

  • BLOB值的排序和比较以大小写敏感方式执行;
  • BLOB被视为二进制字符串;
  • BLOB列没有字符集,并且排序和比较基于列值字节的数值值。

  • 在大多数方面,可以将BLOB列视为能够足够大的VARBINARY列

  • MySQL连接程序/ODBC将BLOB值定义为LONGVARBINARY
  • 一个BLOB是一个能保存可变数量的数据的二进制的大对象。4个BLOB类型TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB仅仅在他们能保存值的最大长度方面有所不同。

(3)其他:

VARCHAR,BLOB 和TEXT类型是变长类型,对于其存储需求取决于列值的实际长度(在前面的表格中用L表示),而不是取决于类型的最大可能尺寸。例如,一个 VARCHAR(10)列能保存最大长度为10个字符的一个字符串,实际的存储需要是字符串的长度 ,加上1个字节以记录字符串的长度。对于字符串'abcd',L是4而存储要求是5个字节。
    BLOB和TEXT类型需要1,2,3或4个字节来记录列值的长度,这取决于类型的最大可能长度。VARCHAR需要定义大小,有255的最大限制;TEXT则不需要。如果你把一个超过列类型最大长度的值赋给一个BLOB或TEXT列,值被截断以适合它。

CHAR(n) 固定长度,最多 255 个字符 
VARCHAR(n) 可变长度,MySQL 4.1 及以前最大 255 字符,MySQL 5 之后最大 65535 字节 
TINYTEXT 可变长度,最多 255 个字符 
TEXT 可变长度,最多 65535 个字符 
MEDIUMTEXT 可变长度,最多 16777215(2^24 - 1)个字符 
LONGTEXT 可变长度,最多 4294967295(2^32 - 1)(4G)个字符


http://www.niftyadmin.cn/n/4235426.html

相关文章

ubuntu 下mysql 命令操作

常见命令: show databases;显示所有库use pdns;选择pdns库show tables;查看库下所有表名select * from domains;查询domians表下的内容drop table domains;删除domains表drop database pdns;删除domain库create table pdns;建一个pdns库mysql -uroot -proot pdns &l…

mysql数据库垃圾分类_垃圾分类小程序的展示:(微信小程序+react后台管理+node后台写接口+mysql数据库)...

微信小程序:功能介绍:1.首页 2.查找 3.小知识知识 4.我的 5.登录 6.注册 7.浏览历史 8.问题反馈(需要登录后反馈)9.退出展示:1.首页2.查找3.小知识知识4.我的5.注册6.登录7.浏览历史8.清除缓存9.问题反馈(需要登录后反馈)10.退出Reac…

spring 不能生成抽象类

抽象类不能生成实例对象,spring无法注入 因为spring的原理是启动服务器时读取配置文件,取得类名后利用反射机制在spring上下文中生成一个单例的对象,由spring注入属性并维护此对象的状态,抽象类在反射生成对象时就已经失败了&…

oracle导入导出语句

ORACLE导入导出命令解析 本文对Oracle数据的导入导出 imp ,exp 两个命令进行了介绍, 并对其相应的参数进行了说明,然后通过一些示例进行 演练,加深理解. 文章最后对运用这两个命令可能出现的问题(如权限不够,不同oracle版本)进行了探讨,并提出了相应的解决方案; 本文部分内容摘…

(转) hibernate中使用数据库关键字(保留字)

在hibernate中,当一个实体对象使用了数据库保留字作为字段名称(虽说不推荐,但少数情况下必须使用),执行保存操作时,你可能会遇到如下错误。 ERROR JDBCExceptionReporter:78 - You have an error in your S…

mysql类似plsql提交更改_MySql比较好用的管理工具,有没有类似PLSQL的?

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"云数据库SQL Server,具有企业许可…

(转)mybatis 中#与$的区别

MyBatis/Ibatis中#和$的区别1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为or…

选择“Asp.Net Web应用程序”还是“Asp.Net网站”?

选择“Asp.Net Web应用程序”还是“Asp.Net网站”?我们大家都知道Asp.Net Web应用程序项目是出现在vs2003的时代,等到vs2005时代之后就被Asp.Net网站取而代之。随后一直到vs2008再次提供了Asp.Net Web应用程序模板。我们都知道这两者都是非常相似的&…