SQLite数据类型BLOB的详细介绍

1,411 阅读5分钟

内存类是一组由SQLite提供的五种基本的数据类型。BLOB让你在一个中央数据库中使用网络浏览器提供文件、照片和其他媒体资产。BLOB是 "二进制大对象 "的缩写。它是一种数据库,具有存储无限量数据的能力,已被用于存储所有类型的记录或信息。本文将探讨Blob类型在我们的表格记录中的使用。

让我们从这篇文章开始,先登录,然后打开Ubuntu 20.04的终端。用Ctrl+Alt+T打开后,我们需要通过 "apt "软件包使用 "update "指令,使我们的系统具备最新的功能。要继续这个过程,可能需要一个登录用户的密码。添加你的密码并继续。

更新成功后,我们需要使用apt软件包的升级指令,再加上当前登录用户的密码来升级我们的系统。

同时,这个过程可能需要你的许可才能继续升级系统,因为它需要系统中508MB的空间。

更新和升级成功后,我们需要使用 "sqlite3 "指令在我们的终端shell上启动sqlite3 shell,即SQL数据库的C-module。SQLite数据库外壳将被生成,我们现在可以向它添加命令。

在研究BLOB类型的SQLite数据库之前,我们首先要看一下最常见和最常用的SQLite数据库类型。为此,我们将利用SELECT指令内的typeof()函数和函数参数中插入的值。因此,我们已经开始了我们的第一个插图,在typeof()函数参数中使用了SELECT指令的NULL值。这条指令的执行一直在为一个值 "Null "返回null类型。

之后,我们在typeof()函数的括号内使用了值 "50",用SELECT指令查找一个值的类型。它为值 "50 "返回了类型 "integer"。之后,我们在typeof()函数内尝试了值 "10.9"。这个SELECT指令显示,值10.9是一个实数。在typeof()函数内的下两个SELECT查询中,字符 "A "已经与单反号和双反号一起被使用。这两条SELECT指令返回值 "A "是文本。

在这之后,我们使用单反逗号内的数字100,用typeof()函数确定其类型。结果发现,反转逗号内的数值100被当作文本类型。让我们在SQLite数据库的SELECT指令中的typeof()函数中使用BLOB类型值。BLOB值必须在单引号开始前包含字符 "x",然后是四个字符值。我们一直在使用三个指令在typeof()函数内使用BLOB类型值。我们在指令中尝试了前两个带有大写 "X "字符的值,以及最后一个带有小 "X "字符的值。前面三个指令的输出结果显示这三个值的类型为 "blob"。

sqlite>SELECTtypeof(NULL);  
  
sqlite>SELECTtypeof(50);  
  
sqlite>SELECTtypeof(10。9);  
  
sqlite>SELECTtypeof( "A" );  
  
sqlite>SELECTtypeof('A');  
  
sqlite>SELECTtypeof('100');  
  
sqlite>SELECTtypeof(X'3100');  
  
sqlite>SELECTtypeof(X'1000);  
  
sqlite> SELECT typeof(x'1000')。

现在,让我们看看如何在Ubuntu 20.04的SQLite表中添加BLOB型数据。首先,我们只需要在数据库中建立一个表。所以,我们一直在用CREATE TABLE命令创建表 "Test"。这个表将包含两列,即ID和类型。ID列将包含整数类型的数据,并将是指定的主键。

创建表后,我们用INSERT INTO指令在其中插入了总共6条记录,后面是表的名称。第一条记录包含整数,第二条记录包含实数,第三和第四条记录包含文本类型的值,第五条记录包含NULL,最后一条记录包括BLOB类型的值。在添加了这些记录后,我们试图获取表 "Test "的所有列,同时使用 "typeof() "函数中的 "Types "函数来显示这些类型。结果发现,这些记录已经按照之前解释的格式显示出来了。

sqlite>CREATE TABLETEST(IDINT PRIMARY KEY,Types);  
  
sqlite>INSERT INTOTEST(Types) VALUES (10);  
  
sqlite>INSERT INTOTEST(Types) VALUES (10.99);  
  
sqlite\> INSERT INTOTEST(Types) VALUES ('678');  
  
sqlite\> INSERT INTOTEST(Types) VALUES (9999);  
  
sqlite>INSERT INTOTEST(Types) VALUES(NULL);  
  
sqlite>INSERT INTOTEST(Types) VALUES (X'9999');  
  
sqlite>SELECTID,Types,typeof(Types) FROMTest;

你也可以根据你的选择,使用ORDER BY子句和使用 "Types "函数保持平等的列的名称来组织这个表。

sqlite>SELECTID,Types,typeof(Types) FROMTestORDER BYTypes;

在前面的例子中,我们在最后部分显示了BLOB类型的值。再次使用INSERT INTO指令,在表 "Test "中插入所有四个BLOB类型的值,使用同样的指令。

sqlite\> INSERT INTOTEST(Types) VALUES (X'5678');  
  
sqlite\> INSERT INTOTEST(Types) VALUES (X'2414');  
  
sqlite\> INSERT INTOTEST(Types) VALUES(X'0000');  
  
sqlite\> INSERT INTOTEST(Types) VALUES (X'0234');

在插入四条新记录后,我们一直在使用Test列中的ID和Types列,使用查询中的typeof()函数显示其中包含'blob'类型的所有记录。它返回5条BLOB类型的记录,如下图所示。

sqlite>SELECTID,TypesFROMTestWHEREtypeof(Types) \= 'blob';

使用带有简单的 "*"字符的SELECT指令和包含表 "Test "名称的FROM子句,我们列出了表中所有的10列值。

sqlite>SELECT \* FROMTest;

让我们按照DELETE指令从类型为 "blob "的表中输入数值,并显示其余的数值。它显示五条记录已经被留下。

sqlite>DELETE FROMTestWHEREtypeof(Types) \= 'blob';

总结

这篇文章是关于在SQLite的表中使用BLOB类型。我们插入了BLOB记录,使用typeof()函数显示它们,并删除了它们。你可以在任何操作系统中使用所有这些查询,并获得我们在本文中提出的相同结果。