首页 > 数据库 >mysql blob和text的区别

mysql blob和text的区别

时间:2023-11-06 23:24:09浏览次数:30  
标签:二进制 text mysql 字符集 BLOB TEXT blob

一:主要区别

TEXT与BLOB的主要差别就是BLOB保存二进制数据,TEXT保存字符数据。目前几乎所有博客内容里的图片都不是以二进制存储在数据库的,而是把图片上传到服务器然后正文里使用标签引用,这样的博客就可以使用TEXT类型。而BLOB就可以把图片换算成二进制保存到数据库中。

二、类型区别

BLOB有4种类型:TINYBLOB、BLOB、MEDIUMBLOB和LONGBLOB。它们只是可容纳值的最大长度不同。

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

  1. 类型                     大小(单位:字节)
  2. TinyBlob/TINYTEXT                   最大 255 = 28
  3. Blob/TEXT                        最大 65K = 216
  4. MediumBlob/MEDIUMTEXT            最大 16M = 224
  5. LongBlob/LONGTEXT                 最大 4G= 232

三、字符集

BLOB列没有字符集,并且排序和比较基于列值字节的数值。TEXT列有一个字符集,并且根据字符集的校对规则对值进行排序和比较

四、大小写

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

五、严格模式

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

六、其它

当保存或检索BLOB和TEXT列的值时不删除尾部空格。

对于BLOB和TEXT列的索引,必须指定索引前缀的长度。

BLOB和TEXT列不能有默认值。

当排序时只使用该列的前max_sort_length个字节。max_sort_length的 默认值是1024。

总结:

相同点

都不允许有默认值。

保存或检索数据不删除尾部空格。

索引在blob或者text上必须执行索引前缀的长度。

不同点

text大小写不敏感,而blob排序和比较以大小写敏感的方式执行。

text是非二进制字符串,blob存储的是二进制数据。

text需要指定字符集,blob无需字符集校验。

blob可以储存图片, text只能储存纯文本文件。
————————————————
版权声明:本文为CSDN博主「初夏0811」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_37899908/article/details/114907246

标签:二进制,text,mysql,字符集,BLOB,TEXT,blob
From: https://www.cnblogs.com/zhanchenjin/p/17814035.html

相关文章

  • [翻译]——How the MySQL Optimizer Calculates the Cost of a Query (Doc ID 1327497
    本文是对这篇文章HowtheMySQLOptimizerCalculatestheCostofaQuery(DocID1327497.1)的翻译,翻译如有不当的地方,敬请谅解,请尊重原创和翻译劳动成果,转载的时候请注明出处。谢谢!适用于:MySQL4.0及后续更高的版本本文档中的内容适用于任何平台。目标了解MySQL优化......
  • Debug - MySQL - Err 1062 duplicate entry xxxx for key xxx
    可能原因1脏数据存在 可能原因2当你手动刷sql修改表结构时,可能这张表正有写库操作。一边写库一边修改表结构,就会出现这种错误。。。原因未知,猜测和锁表有关系 两次错误提示:详细的数据是不一样的....而且日期是今天的,说明不是脏数据  等待写库程序结束,再刷表就没......
  • mysql 使用ON DUPLICATE KEY update实现插入或更新操作
    创建一个表CREATETABLE`userinfo`(`UserID`int(11)NOTNULL,`UserName`varchar(45)CHARACTERSETutf8COLLATEutf8_general_ciDEFAULTNULL,PRIMARYKEY(`UserID`))ENGINE=InnoDBDEFAULTCHARSET=utf8;想要实现,没有数据插入新数据,有数据更新数据首先......
  • Hadoop基于CallerContext增强血缘信息实践
    1.背景一般情况下,用户会以项目为维度提交作业。因为项目用户的拥有项目下的所有权限。如下所示,个人用户bob将在project_sa项目空间下提交作业,HDFS会通过project_sa进行鉴权并访问:上述方案有一个问题,如果HDFS中的auditlog中记录的操作用户是project_us,无法分辨具体由哪个用户提......
  • SQLserver、MYSQL、Oracle复制表结构和数据语句
    1.SQLserver语法select*into新表名from旧表名;2.mysql语法CREATETABLE新表名SELECT*FROM旧表;Oracle语法CREATETABLE新表ASSELECT*FROM旧表;......
  • MySQL学习(11)使用EXPLAN查看执行计划
    前言 MySQL查询优化起生成的执行计划是什么,可以通过EXPLAIN命令查看。执行计划在SELECT、DELETE、INSERT、REPLACE以及UPDATE语句前面加上EXPLAIN,可以通过记录的形式输出这条语句的执行计划。EXPLAINSELECT*FROMsingle_table; 列名描述id每个SELECT关键字......
  • Content type 'text/plain;charset=UTF-8' not supported
    Content type 'text/plain;charset=UTF-8' not supported#Content type 'text/plain;charset=UTF-8' not supportedhttps://blog.csdn.net/qwdafedv/article/details/53005418前端TypeError:(0,_login.default)isnotafunction报错#import原因:引......
  • mysql八股
    设计表字段需要考虑哪些redis跳跃表结点怎么实现的Mysql的索引为什么使用B+树而不使用跳表B+树的层级怎么确定的LIMIT语句查询比较慢怎么解决慢sql优化事务发生死锁怎么解决binlog,怎么使用binlog做数据迁移怎么做实时的数据迁移//redolog......
  • Centos7 安装 Mysql5.7
    一、下载mysql5.7的安装包下载地址:https://dev.mysql.com/downloads/mysql/5.7.html①、选择linux版的②、选择64bit,根据自己的情况来看③、选择下载tar包④、点击下载⑤、等待下载完二、上传到服务器上传到服务器有好几种方法,任意采用一种就可以......
  • 常用MySQL图形化管理工具
    MySQL是一个非常流行的小型关系型数据库管理系统。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。1、phpMyAdmin(http://www.phpmyadmin.ne......