Skip to content

JSON

在MySQL 5.7中,就已经支持JSON数据类型。在MySQL 8.x版本中,JSON类型提供了可以进行自动验证的 JSON文档和优化的存储结构,使得在MySQL中存储和读取JSON类型的数据更加方便和高效。

sql
CREATE TABLE table_json (
  x JSON
);

INSERT INTO table_json ()
VALUES ('{"foo": "foo", "bar": "bar"}');

# 当需要检索JSON类型的字段中数据的某个具体值时,可以使用 ->->> 符号。
SELECT x -> '$.foo' AS value1, x -> '$.bar' AS value2
FROM table_json;

任何字段如果为非负数,必须是 UNSIGNED 小数类型为 DECIMAL,禁止使用 FLOAT 和 DOUBLE。 说明:在存储的时候,FLOAT 和 DOUBLE 都存在精度损失的问题,很可能在比较值的时候,得 到不正确的结果。如果存储的数据范围超过 DECIMAL 的范围,建议将数据拆成整数和小数并 分开存储。 如果存储的字符串长度几乎相等,使用 CHAR 定长字符串类型。 VARCHAR 是可变长字符串,不预先分配存储空间,长度不要超过 5000。如果存储长度大 于此值,定义字段类型为 TEXT,独立出来一张表,用主键来对应,避免影响其它字段索引效率。