Mysql 如何存储数据,例如书籍?

Mysql 如何存储数据,例如书籍?,mysql,database,blob,Mysql,Database,Blob,在我的数据库中,我有1000多本书,平均100页左右,可能更多或更少。我在想: 是否可以将每本书存储在一个字段中?比如: INSERT INTO bookContent VALUE("book contents from first page to end..."); 其中bookContent将是整个书籍内容 如果将它们存储到MySQL中不是一个好主意,那么最好的方法是什么? 简言之,是的,但由于大多数类型的数据都有一个最大长度,因此您需要使用二进制数据类型,例如blob,它的最大值太高,您

在我的数据库中,我有1000多本书,平均100页左右,可能更多或更少。我在想:

是否可以将每本书存储在一个字段中?比如:

INSERT INTO bookContent VALUE("book contents from first page to end...");
其中bookContent将是整个书籍内容

如果将它们存储到MySQL中不是一个好主意,那么最好的方法是什么?
简言之,是的,但由于大多数类型的数据都有一个最大长度,因此您需要使用二进制数据类型,例如blob,它的最大值太高,您永远无法达到它

您可能需要使用mysql\u real\u escape\u string之类的函数来转义字符串 处理特殊字符。我在存储歌词,为了防止出错,我不得不转义字符串

在perl$connect->quotebook内容中,从第一页到最后。。。; 在尝试将值插入表之前

我不确定仅仅插入整本书是否明智。至少应该有一个唯一的book字段,这样,如果需要,您可以有另一个包含author、title、publisher等的表。如果表中没有其他字段或其他表,您将无法轻松查询某些书籍

你想看所有福尔摩斯的书。。。。这并不容易。数据库的运行速度将非常慢,因为它必须搜索每本书的内容来查找夏洛克·福尔摩斯

现在,如果表中有作者、出版商、标题等,则

select * from book where author="Sir Aurthur Conan Doyle";
select * from book where title="Sherlock Holmes";
这些查询的运行速度将比此查询快几个数量级

SELECT * FROM book WHERE book LIKE '%Sherlock Holmes%';
根据每本书的实际大小(以千字节或兆字节为单位),上述查询可能会让您的cpu在一段时间内保持99%


对于数据类型大小。

我们需要更多信息,了解您试图做些什么来提供有根据的答案。MySQL单元格到底是什么?根据他发布的查询,我猜“单元格”是指一行。@Chris:他指的是单个字段。您想稍后搜索这本书吗?是否要返回整本书的内容?它只是为了存档吗?就我个人而言,我喜欢将数据分解成逻辑部分,但正如Michael P所说,这实际上取决于您计划如何处理存储的数据。如果您使用的字段类型具有足够高的值,则可以将其存储为单个字段,但在大多数情况下,它不会非常有效。我能想到的唯一原因是,如果你想将DB用作共享和发送等的通用文件系统,请在Google上查找关键字BLOB。