【问题标题】:Store a variable-sized list of strings in some column在某列中存储可变大小的字符串列表
【发布时间】:2016-06-02 22:36:34
【问题描述】:

我是sql和mysql的新手(其实我是用mariadb实现的)。我需要在某个列中存储一个可变大小的字符串列表。示例:它可能取值

'one'['one', 'two']['one', 'two', 'three'] 就像 python 或其他高级语言中的数组类型。

我可以使用哪种数据类型(如果存在)?

【问题讨论】:

标签: mysql sql database mariadb


【解决方案1】:

没有数据类型可以直接执行您想要执行的操作。相反,您会将“可变大小的字符串列表”存储在另一个表中,并使用现有表中的列来引用该另一个表。这称为联接。

例如,如果您有一个这样的表格...

TABLE: Shelf
id : int
location : varchar(50)
books : int

还有一张桌子

TABLE: Books
bookId: int
Title: varchar(80)

然后您可以通过以下查询找到位置 x 的所有书籍...

SELECT s.location, b.title FROM Shelf s
INNER JOIN Books b on s.books = b.bookId
WHERE s.location = 'x'
ORDER BY b.title;

https://www.sitepoint.com/understanding-sql-joins-mysql-database/ 对此有更好的解释

【讨论】:

  • 谢谢!但是,我不确定这是我必须做的。这意味着我应该创建一个包含 CHAR 条目行的唯一名称的表。这不是很多人工吗?以及应该如何访问具有变量名(基表中列出的名称)的表?
  • 大量手工工作是一个主观术语。对于 MySql 等数据库,连接到其他表是您处理多值数据的方式。如果您确实需要将所有内容折叠到一列中,则需要找到一种不同类型的数据库。想到的多值数据库是 U2 (unidata) 或 OpenQm,这里有一些参考资料 openqm-zumasys.com/openqm/what-is-multivaluenosql-database.org
猜你喜欢
  • 1970-01-01
  • 2023-04-02
  • 2014-07-08
  • 2013-11-21
  • 2011-08-31
  • 2017-12-29
  • 2016-10-18
  • 2014-02-23
  • 1970-01-01
相关资源
最近更新 更多