MySQL 本身没有原生的数组数据类型,但有几种方法可以实现类似数组的功能:
CREATE TABLE products (
id INT PRIMARY KEY,
name VARCHAR(100),
tags JSON -- 存储数组
);
-- 插入包含数组的JSON
INSERT INTO products VALUES (1, 'Laptop', '["electronics", "computers", "sale"]');
-- 查询包含特定元素的数组
SELECT * FROM products WHERE JSON_CONTAINS(tags, '"electronics"');
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(100),
hobbies TEXT -- 用逗号分隔的字符串
);
-- 插入
INSERT INTO users VALUES (1, 'Alice', 'reading,swimming,hiking');
-- 查询 (使用FIND_IN_SET)
SELECT * FROM users WHERE FIND_IN_SET('swimming', hobbies) > 0;
-- 主表
CREATE TABLE orders (
order_id INT PRIMARY KEY,
customer_name VARCHAR(100)
);
-- 数组项表
CREATE TABLE order_items (
item_id INT AUTO_INCREMENT PRIMARY KEY,
order_id INT,
item_name VARCHAR(100),
FOREIGN KEY (order_id) REFERENCES orders(order_id)
);
-- 查询某个订单的所有项目
SELECT * FROM order_items WHERE order_id = 123;
CREATE TABLE articles (
id INT PRIMARY KEY,
title VARCHAR(100),
categories SET('news', 'sports', 'entertainment', 'technology')
);
-- 插入
INSERT INTO articles VALUES (1, 'Latest Tech', 'technology,news');
JSON类型提供了最接近数组的功能,包括数组操作函数如JSON_ARRAY_APPEND
, JSON_ARRAY_INSERT
等。