Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como armazenar dados JSON no MySQL


O MySQL permite que você armazene dados JSON no tipo de dados JSON nativo desde a versão 5.7.8. Isso permite que você armazene documentos JSON com facilidade e extraia elementos de dados JSON sem conversão de dados. Neste artigo, veremos como armazenar dados JSON no MySQL.

O tipo de dados MySQL JSON permite que você armazene dados JSON de forma que você possa ler ou pesquisar valores facilmente usando chave ou índice de matriz, tornando-o realmente rápido. Não há necessidade de converter texto em JSON ou vice-versa para consultar dados.



Como armazenar dados JSON no MySQL


Veremos como armazenar dados JSON no MySQL e também como consultar colunas com o tipo de dados JSON.

Aqui está a sintaxe para definir uma coluna JSON
column_name JSON

Observe que uma coluna de tipo de dados JSON não pode ter valor padrão, nem pode ter um índice.

Leia também:Como comparar valores nulos no MySQL



Exemplo de tipo de dados MySQL JSON


Aqui está um exemplo de uma tabela users(id, details) onde id é um número inteiro e chave primária enquanto detalhes é uma coluna de tipo de dados JSON.
create table users(
    id int auto_increment primary key,
    details json
   );



Como inserir JSON no MySQL


Aqui está a consulta SQL para armazenar o documento JSON no MySQL.
insert into users(details)
    values(
      '{ "page": "/" , 
         "name": "Safari", 
         "os": "Mac", 
         "spend": 100, 
         "resolution": { "x": 1920, "y": 1080 } }'
),
(
      '{ "page": "/products", 
         "name": "Chrome", 
         "os": "Windows", 
         "spend": 150,
         "resolution": { "x": 1680, "y": 1050 } }'
),
(
     '{ "page": "/shoes", 
        "name": "Firefox", 
        "os": "Windows", 
        "spend": 200,
        "resolution": { "x": 1280, "y": 800 } }'
);

Vamos extrair dados de colunas JSON usando o operador de caminho de coluna (->)

Aqui está um exemplo para recuperar nomes de navegador para cada usuário.
mysql> select id, details->'$.name' details from users;
+----+-----------+
| id | details   |
+----+-----------+
|  1 | "Safari"  |
|  2 | "Chrome"  |
|  3 | "Firefox" |
+----+-----------+
3 rows in set (0.00 sec)

Você verá que as colunas de detalhes têm aspas duplas. Se você deseja remover aspas duplas, use ->> operador em vez disso
mysql> select id, details->>'$.name' details from users;
+----+-----------+
| id | details   |
+----+-----------+
|  1 |  Safari   |
|  2 |  Chrome   |
|  3 |  Firefox  |
+----+-----------+
3 rows in set (0.00 sec)

Você também pode agregar a cláusula GROUP BY de dados JSON e as funções de agregação. Aqui está um exemplo para contar o número de navegadores em nossos dados.
mysql> SELECT details->>'$.name' detail,
count(detail)
FROM users
GROUP BY details->>'$.name';

Você verá a seguinte saída
+---------+----------------+
| details | count(details) |
+---------+----------------+
| Safari  |              1 |
| Firefox |              1 |
| Chrome  |              1 |
+---------+----------------+
3 rows in set (0.02 sec)

Da mesma forma, você também pode usar dados JSON na cláusula WHERE. Veja um exemplo para selecionar dados com gasto> 100
mysql> SELECT id, SUM(details->>'$.spend') spend
       FROM users
       WHERE details->>'$.spend' > 100
       GROUP BY id;

Espero que este artigo o ajude a trabalhar com dados JSON no MySQL. O Ubiq facilita a visualização de dados e o monitoramento em painéis em tempo real. Experimente o Ubiq gratuitamente.