如何在 SQL 中正确存储数据列表

60 阅读3分钟

当您需要在 SQL 中存储一个数据列表时,您可能会遇到以下问题:

  • 数据列表的长度可能不同,因此您无法为每个数据项分配一个单独的列。
  • 将数据列表存储为字符串虽然简单,但可能会导致数据难以处理和查询。
  • 将数据列表序列化后存储可以解决长度不一致的问题,但当数据列表包含数百个项目时,可能会对数据库造成压力。

2、解决方案

您可以使用以下方法来解决上述问题:

  • 创建一个辅助表,其中包含两个或多个列,其中一列或多列用于标识主表中的行,另一列用于存储数据列表中的名称。
  • 将数据列表存储为 JSON 格式字符串。JSON 是一种流行的数据交换格式,它可以将复杂的数据结构表示为文本。
  • 使用关系型数据库中的数组数据类型。数组数据类型可以存储多个值,并且可以方便地查询和更新。

以下是如何使用辅助表来存储数据列表的示例:

CREATE TABLE main_table (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  PRIMARY KEY (id)
);

CREATE TABLE list_table (
  id INT NOT NULL AUTO_INCREMENT,
  main_table_id INT NOT NULL,
  item VARCHAR(255) NOT NULL,
  PRIMARY KEY (id),
  FOREIGN KEY (main_table_id) REFERENCES main_table(id)
);

INSERT INTO main_table (name) VALUES ('Matthew');
INSERT INTO list_table (main_table_id, item) VALUES (1, 'James');
INSERT INTO list_table (main_table_id, item) VALUES (1, 'Sandy');
INSERT INTO list_table (main_table_id, item) VALUES (1, 'May');

SELECT * FROM main_table;
+----+--------+
| id | name   |
+----+--------+
| 1  | Matthew |
+----+--------+

SELECT * FROM list_table;
+----+--------------+--------+
| id | main_table_id | item   |
+----+--------------+--------+
| 1  | 1             | James  |
| 2  | 1             | Sandy  |
| 3  | 1             | May    |
+----+--------------+--------+

通过使用辅助表,您可以将数据列表存储在单独的表中,并使用外键将数据列表与主表中的行相关联。这种方法可以使数据更易于管理和查询。

如果您需要存储更复杂的数据结构,例如包含嵌套列表或字典的数据结构,则可以使用 JSON 格式字符串。JSON 格式字符串是一种流行的数据交换格式,它可以将复杂的数据结构表示为文本。以下是如何将 JSON 格式字符串存储在 SQL 数据库中的示例:

CREATE TABLE data_table (
  id INT NOT NULL AUTO_INCREMENT,
  json_data JSON NOT NULL,
  PRIMARY KEY (id)
);

INSERT INTO data_table (json_data) VALUES ('{
  "name": "Matthew",
  "date": "12-07-2013",
  "users": ["James", "Sandy", "May"],
  "email": "matthew@whatever.com"
}');

SELECT * FROM data_table;
+----+----------------------------------------------------+
| id | json_data                                         |
+----+----------------------------------------------------+
| 1  | {"name": "Matthew", "date": "12-07-2013", "users": ["James", "Sandy", "May"], "email": "matthew@whatever.com"} |
+----+----------------------------------------------------+

通过使用 JSON 格式字符串,您可以将复杂的数据结构存储在 SQL 数据库中。这种方法可以使数据更易于存储和检索。

如果您使用的是关系型数据库,您还可以使用数组数据类型来存储数据列表。数组数据类型可以存储多个值,并且可以方便地查询和更新。以下是如何使用数组数据类型来存储数据列表的示例:

CREATE TABLE data_table (
  id INT NOT NULL AUTO_INCREMENT,
  names VARCHAR(255)[] NOT NULL,
  PRIMARY KEY (id)
);

INSERT INTO data_table (names) VALUES (ARRAY['James', 'Sandy', 'May']);

SELECT * FROM data_table;
+----+--------------------+
| id | names             |
+----+--------------------+
| 1  | {James, Sandy, May} |
+----+--------------------+

通过使用数组数据类型,您可以将数据列表存储在关系型数据库中。这种方法可以使数据更易于管理和查询。