精华内容
下载资源
问答
  • 删除数据后,数据表占用的空间大小不会变。 不跟条件直接delete的时候。 delete from table_name 清除了数据,同时数据表的空间也会变为0 如果已经删除了表数据的很大一部分,或者有很多变化和变长表行...

    当DELETE后面跟条件的时候,则就会出现这个问题

    delete from table_name where 条件

    删除数据后,数据表占用的空间大小不会变。

    不跟条件直接delete的时候。

    delete from table_name

    清除了数据,同时数据表的空间也会变为0

     

    如果已经删除了表数据的很大一部分,或者有很多变化和变长表行(VARCHAR表,VARBINARY、BLOB或文本列)进行了更改,因为删除操作后在数据文件中留下碎片所致。DELETE只是将数据标识位删除,并没有整理数据文件,当插入新数据后,会再次使用这些被置为删除标识的记录空间,可以使用OPTIMIZE TABLE来回收未使用的空间,并整理数据文件的碎片。

     

    OPTIMIZE TABLE只对MyISAM, BDB和InnoDB表起作用。

     

    OPTIMIZE TABLE 表名;

     

     

     

    针对myisam引擎,使用optimize table 还有如下功能:

    If the table has deleted or split rows, repair the table. [修复表]

    If the index pages are not sorted, sort them. [索引未排序,会排序]

    If the table’s statistics are not up to date (and the repair could not be accomplished by sorting the index), update them.[若表的统计信息不是最新的,更新它]

    对myiam数据表进行批量删除后,发现空间没有回收,要通过optimize table来回收空间

     

     

    查询数据库各个表占用空间大小

    SELECT
         table_schema as `Database`,
         table_name AS `Table`,
         round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB` 
    FROM information_schema.TABLES 
    ORDER BY (data_length + index_length) DESC;

    展开全文
  • Blob

    2021-01-05 11:42:54
    当深入使用数据库时,如在数据库存图片,视频时或者取图片,视频时,就会陷入思考在java中没有与之相对应的数据格式,在java.sql中有与之相关的处理接口,java.sql是用与处理java编程语言访问或处理存储在数据库的...

    当深入使用数据库时,如在数据库存图片,视频时或者取图片,视频时,就会陷入思考在java中没有与之相对应的数据格式,在java.sql中有与之相关的处理接口,java.sql是用与处理java编程语言访问或处理存储在数据库的数据的api包,说简单点就是有访问和处理数据库中相应数据的接口包,有相关的数据类型,想明白点要处理数据得知道它是啥类型吧
    在java.sql中有几种与之相对的接口
    Array 接口-SQL映射 ARRAY
    Blob 接口-SQL映射 BLOB
    Clob 接口-SQL映射 CLOB
    Date 类-SQL映射 DATE
    NClob 接口-SQL映射 NCLOB
    Ref 接口-SQL映射 REF
    RowId 接口-SQL映射 ROWID
    Struct 接口-SQL映射 STRUCT
    SQLXML 接口-SQL映射 XML
    Time 类-SQL映射 TIME
    Timestamp 类-SQL映射 TIMESTAMP
    Types 类-提供SQL类型的常量


    Array 接口,提供了将SQL ARRAY值的数据作为数组或ResultSet对象带到客户端的方法
    这个不是过


    SQLBLOB是一种内置类型,它将二进制大对象作为列值存储在数据库表的一行中,该Blob接口提供了获取SQL BLOB(二进制大对象)值的长度,BLOB在客户端上实现值以及确定BLOB值中字节模式的位置的方法
    这个就是了,图片,视频等多媒体数据是以二进制的形式存放的


    SQLCLOB是一种内置类型,它将字符大对象作为列值存储在数据库表的一行中。
    Clob接口提供了用于获取SQL CLOB(字符大对象)值的长度,CLOB在客户端上具体化值以及CLOB在CLOB值内搜索子字符串或对象的方法 。


    SQLNCLOB是一种内置类型,它使用国家字符集作为数据库表行中的列值来存储字符大对象。该接口提供了获取SQLNCLOB值的长度,NCLOB在客户端上NCLOB实例化NCLOB值以及在值内搜索子字符串或对象的方法


    Ref 接口,对SQL REF值的映射,它是对数据库中SQL结构化类型值的引用


    SQL ROWID是内置类型,其值可以认为是其在数据库表中标识的行的地址。该地址是逻辑地址还是物理地址,均由其原始数据源确定。


    Struct 接口,一个Struct对象包含一个它代表的SQL结构化类型的每个属性的值。默认情况下,Struct只要应用程序对其具有引用,的实例就有效。


    SQLXML 接口,XML是一种内置类型,它将XML值作为列值存储在数据库表行中,驱动程序将 SQLXML 对象实现为 XML 数据的逻辑指针,而不是数据本身


    从上面可以知道存放图片或者视频等多媒体数据用的就是blob

    SerialBlob类提供一个Blob对象创建实例的构造函数。请注意,在SerialBlob从对象构造对象之前,Blob对象应该已将SQL BLOB值的数据传递给客户端。可以在客户端上将SQL BLOB值的数据具体化为字节数组(使用方法Blob.getBytes)或未解释字节流
    对应就是java拿到的就是byte[]

    展开全文
  • 为了要实现一个在网页上显示出图像的需求,而这些图像又是可以从后台来CRUD的,所以我打算采用数据库存图片的解决方案,数据库使用mysql。mysql存二进制数据一共有四种类型:TinyBlob, Blob, MediumBlob, LongBlob。...

    为了要实现一个在网页上显示出图像的需求,而这些图像又是可以从后台来CRUD的,所以我打算采用数据库存图片的解决方案,数据库使用mysql。

    mysql存二进制数据一共有四种类型:TinyBlob, Blob, MediumBlob

    , LongBlob。这些类型主要的区别在于他们的容量,依次可以存储255B,

    65K, 16M, 4G。所以对于这个需求,我选择了MediumBlob,16M对于一副图片来讲是足够用了。

    持久层方面还是使用思路清晰的ibatis,ibatis2.1以后已经支持了对blob的访问,而且很简单,通过自动的结果映射,例如:

    select

    *

    from cases where id=1

    ibatis会直接通过jdbc,得到结果集resultSet,然后通过类Case,反射之后将结果集之中的各个数据映射至java object中,而此处要用到的mysql的MediumBlob类型就默认映射到java中的byte[]。而且这一切都是自动化的。

    取得数据之后再通过一个servlet打印到屏幕中,这样数据库的一副图像就显示在网页上了。

    分享到:

    18e900b8666ce6f233d25ec02f95ee59.png

    72dd548719f0ace4d5f9bca64e1d7715.png

    2010-04-10 12:47

    浏览 3878

    评论

    展开全文
  • 记录mysql使用中数据库存表情项目情景:类似于淘宝的订单评价页面数据存储与传输显示 项目情景:类似于淘宝的订单评价页面 期望的是:页面能显示出,一开始在编辑信息框中输入的表情 当然,我们为了让用户更加便捷...

    项目需求:类似于淘宝的订单评价页面

    期望页面显示出,在编辑信息框中输入的表情

    一开始我们数据库表使用的是gbk的字符集,后来通过百度相关资料,摸索决定将字符集改为utf8mb4。

    utf8mb4的编码,mb4就是most bytes 4的意思,专门用来兼容四字节的unicode。utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。(为了节省空间,一般情况下使用utf8也就够了)

    utf8能够存下大部分中文汉字,那为什么还要使用utf8mb4呢? 原来mysql支持的 utf8 编码最大字符长度为 3 字节,如果遇到 4 字节的宽字符就会插入异常了。三个字节的 UTF-8 最大能编码的 Unicode 字符是 0xffff,也就是 Unicode 中的基本多文种平面(BMP),也就是说,任何不在基本多文本平面的 Unicode字符,都无法使用 Mysql 的 utf8 字符集存储。包括 Emoji 表情(Emoji 是一种特殊的 Unicode 编码,常见于 ios 和 android 手机上),和很多不常用的汉字,以及任何新增的 Unicode 字符等等

    在这里插入图片描述

    查看本地数据库的相关编码集charset,并修改成utf8mb4,执行的主要命令如下:

    数据库编码字符集
    database
    schema
    table
    column

    SHOW CREATE DATABASE jfzw

    show variables like “character_set_database”;-- or:–
    show variables like “collation_database”;

    SELECT default_character_set_name FROM information_schema.SCHEMATA
    WHERE schema_name = “jfzw”;

    SELECT CCSA.character_set_name FROM information_schema.TABLES T,
    information_schema.COLLATION_CHARACTER_SET_APPLICABILITY CCSA WHERE CCSA.collation_name = T.table_collation
    AND T.table_schema = “jfzw”

    SELECT character_set_name FROM information_schema.COLUMNS WHERE table_schema = “jfzw”
    AND table_name = “t_scte_order_comment_info”
    AND column_name = “reserve1”;

    ALTER TABLE test_hand1 CONVERT TO CHARACTER SET utf8mb4

    在这里插入图片描述

    扩展:数据存储与传输显示、扣扣表情包

    对扣扣表情包的存储方式探索
    blob数据类型
    HTML5基础(SQLite数据库)

    这里我直接在扣扣上收藏了某个小表情😂后,发现存储在mc3.db文件下的数据实时变化更新了,里面是sqlite数据库文件,主要有效信息是data字段:blob数据类型的值。
    又结合以往版本电脑版扣扣的使用经验:QQ里的表情复制到文本就是字符码,自定义的一类字符规则。QQ的是,即使你在聊天框里手动输入这段字符,发出去时QQ会自动给你转成对应表情。
    在这里插入图片描述

    这里猜测与讨论:
    存的应该只是表情代码,不会存真图片文件。比如存储/:sun,/:moon,
    PC端效果,手机端没有,有理由怀疑QQ的这东西是客户端处理的,他后台压根不处理这东西
    总结与思考(考虑到后端数据库或者网络传输,节省空间与资源)
    后端数据库的字段,比如扣扣message或者评价content存储字符串varchar,表情信息在字符串中可用代码/:sun临时表示,到前端再转成小太阳显示
    但是前端也会存一个字典类似的,就是/:sun对应太阳,(字典通俗理解是一种映射关系,表现为数据库的一张表,比如可以用SQLite数据库存储:blob类型数据字段放置表情包字节对象),字典只需存储一遍,其他时候需要显示表情则去匹配一次字典

    在这里插入图片描述

    展开全文
  • 数据库存txt和图片

    千次阅读 2017-11-28 08:59:22
    数据库存储txt文本和jpg图片 环境:MySql+SQLyog+...存储图片用blob类型 1、首先建表 create table t_t ( id int(16) NOT NULL AUTO_INCREMENT, longText longtext, picture blob, PRIMARY KEY (`id`) ) ;
  • 达梦数据库存储二进制大文件(图片、文件等),主要通过BFILE、BLOB类型。
  • sqlite3支持的数据类型:NULL、INTEGER、REAL、TEXT、BLOB但是,sqlite3也支持如下的数据类型smallint 16位整数integer 32位整数decimal(p,s) p是精确值,s是小数位数float 32位实数double 64位实数char(n)...
  • 为了要实现一个在网页上显示出图像的需求,而这些图像又是可以从后台来CRUD的,所以我打算采用数据库存图片的解决方案,数据库使用mysql。   mysql存二进制数据一共有四种类型:TinyBlob, Blob, MediumBlob , ...
  • 由于项目特殊性为使用者分别本地部署,无固定服务器,且截图数量有限可控,于是没用更合理的数据库存路径形式而是直接将图片以blob格式存入库 Screenshot.java public class Screenshot { private Integer id; ...
  • import java.io.IOException;import java.io.OutputStream;import java.sql.Blob;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;...
  • Blob类型转为json格式问题

    万次阅读 2017-12-04 17:16:39
    首先我先声明哈,我只是发现其转换为json格式的时候出现的问题,解决的办法之后再填补...很奇怪,以为是富文本编辑器js的问题,但查看数据库,发现数据并没有像F12查看的内容一样,数据库存的还是完整的, 仔细找发现,
  • 使用mysql时,将图像作为BLOB存储在数据库中是一个坏主意,因为它会使数据库非常大,这对正常使用数据库是有害的.然后,最好将图像文件保存在磁盘上并保存数据库中的链接.但是,我认为这与MongoDB不同,因为增加数据库文件...
  • 启动quartz报以下错误: QuartzManager: Couldn't retrieve job because the BLOB couldn't be deserialized: null ...是因为quartz移动包导致数据库存中的数据不对导致的 将quartz_trigger和qua
  • 展开全部一、使用嵌入式关系型SQLite数据库存62616964757a686964616fe59b9ee7ad9431333363393631储数据在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL、INTEGER、REAL(浮点数字)、 TEXT...
  • 今天在测试往数据库存图像、读图像以及更新图像时,前面存和读都没问题,但是后面用一张新图new.jpg更新时就出现上面的异常,图像字段为img,BLOB类型。  Data truncation即字段过长,放不下。网上找了半天都是...
  • 今天在测试往数据库存图像、读图像以及更新图像时,前面存和读都没问题,但是后面用一张新图new.jpg更新时就出现上面的异常,图像字段为img,BLOB类型。  Data truncation即字段过长,放不下。网上找了半天都是...
  • DISQLite3161

    2008-09-10 16:01:37
    将一个完整的数据库存放在一个独立的磁盘文件当中. 支持最大2 GB (241 bytes) 的数据库. 只要有足够的空间就可以存储任意大小的文本和二进制(BLOB)数据. 自包含的: 不要依赖额外的库或者DLL. 超小的数据库: 仅仅...
  • 今天想把远程服务器的一个数据库拷贝到本机,开始用数据传输,报了2006MySQL错误,将远程库存储为一个SQL文件在本地执行的时候也报这个。 查资料后发现是因为远程数据库中的表有BLOB导致的,解决办法就是在my.ini这...
  • 将一个完整的数据库存放在一个独立的磁盘文件当中. 支持最大2 GB (241 bytes) 的数据库. 只要有足够的空间就可以存储任意大小的文本和二进制(BLOB)数据. 自包含的: 不要依赖额外的库或者DLL. 超小的数据库: 仅仅...
  • Visual C++范例大全

    2012-07-18 13:02:34
    实例4:使用函数模板实现不同数据类型的极值函数 7 1.2 C++常用的操作与算法 8 实例5:使用C++实现格式化数据的I/O 8 实例6:实现数字金额的中文大写转换 10 实例7:将十进制数转换为二进制输出 11 实例8:产生...
  • 实例004——使用函数模板实现不同数据类型的极值函数 实例005——使用C++实现格式化数据的IO 实例006——实现数字金额的中文大写转换 实例007——将十进制数转换为二进制输出 实例008——产生随机数 实例009...
  • 实例004——使用函数模板实现不同数据类型的极值函数 实例005——使用C++实现格式化数据的IO 实例006——实现数字金额的中文大写转换 实例007——将十进制数转换为二进制输出 实例008——产生随机数 实例...
  • C++范例大全(400)

    2013-06-29 21:23:07
    实例004——使用函数模板实现不同数据类型的极值函数 实例005——使用C++实现格式化数据的IO 实例006——实现数字金额的中文大写转换 实例007——将十进制数转换为二进制输出 实例008——产生随机数 实例009...
  • 实例004——使用函数模板实现不同数据类型的极值函数 实例005——使用C++实现格式化数据的IO 实例006——实现数字金额的中文大写转换 实例007——将十进制数转换为二进制输出 实例008——产生随机数 实例009...
  • VC++6.0示例程序光盘

    热门讨论 2012-03-18 13:40:03
    实例004——使用函数模板实现不同数据类型的极值函数 实例005——使用C++实现格式化数据的IO 实例006——实现数字金额的中文大写转换 实例007——将十进制数转换为二进制输出 实例008——产生随机数 实例009...
  • VC++6.0示例程序光盘.part1

    热门讨论 2011-02-21 09:17:43
    实例004——使用函数模板实现不同数据类型的极值函数 实例005——使用C++实现格式化数据的IO 实例006——实现数字金额的中文大写转换 实例007——将十进制数转换为二进制输出 实例008——产生随机数 实例009...
  • 实例004——使用函数模板实现不同数据类型的极值函数 实例005——使用C++实现格式化数据的IO 实例006——实现数字金额的中文大写转换 实例007——将十进制数转换为二进制输出 实例008——产生随机数 实例009...
  • 实例004——使用函数模板实现不同数据类型的极值函数 实例005——使用C++实现格式化数据的IO 实例006——实现数字金额的中文大写转换 实例007——将十进制数转换为二进制输出 实例008——产生随机数 实例009...
  • MySQL命令大全

    2018-01-15 11:19:17
    5.BLOB TEXT类型,最大长度为(2^16-1)个字符。 6.VARCHAR型:变长字符串类型 5.导入数据库表  ()创建.sql文件  ()先产生一个库如auction.c:mysqlbin>mysqladmin -u root -p creat auction,会提示输入...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
关键字:

数据库存blob