MySQL 本身并不直接支持数组类型的数据字段,但可以通过以下几种方式来保存数组数据:
MySQL 5.7及以上版本支持JSON类型,可以直接存储数组。
优势:
应用场景:
示例代码:
CREATE TABLE example (
id INT AUTO_INCREMENT PRIMARY KEY,
data JSON
);
INSERT INTO example (data) VALUES ('["apple", "banana", "cherry"]');
SELECT data->"$[1]" AS fruit FROM example;参考链接:
将数组序列化为字符串(如JSON、XML)存储在VARCHAR或TEXT类型的字段中。
优势:
应用场景:
示例代码:
CREATE TABLE example (
id INT AUTO_INCREMENT PRIMARY KEY,
data TEXT
);
INSERT INTO example (data) VALUES ('["apple", "banana", "cherry"]');
SELECT JSON_UNQUOTE(JSON_EXTRACT(data, '$[1]')) AS fruit FROM example;通过创建关联表来存储数组数据。
优势:
应用场景:
示例代码:
CREATE TABLE example (
id INT AUTO_INCREMENT PRIMARY KEY
);
CREATE TABLE example_items (
id INT AUTO_INCREMENT PRIMARY KEY,
example_id INT,
item VARCHAR(255),
FOREIGN KEY (example_id) REFERENCES example(id)
);
INSERT INTO example () VALUES ();
SET @example_id = LAST_INSERT_ID();
INSERT INTO example_items (example_id, item) VALUES (@example_id, 'apple'), (@example_id, 'banana'), (@example_id, 'cherry');
SELECT item FROM example_items WHERE example_id = @example_id;问题: 存储大量数组数据时性能下降。
原因:
解决方法:
通过以上方法,可以根据具体需求选择合适的方式来保存数组字段,并解决可能遇到的问题。
没有搜到相关的文章