Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak przechowywać dane JSON w MySQL?

MySQL umożliwia przechowywanie danych JSON w natywnym typie danych JSON od wersji 5.7.8. Umożliwia to łatwe przechowywanie dokumentów JSON i wyodrębnianie elementów danych JSON bez konwersji danych. W tym artykule przyjrzymy się, jak przechowywać dane JSON w MySQL.

Typ danych MySQL JSON umożliwia przechowywanie danych JSON w taki sposób, aby można było łatwo odczytywać lub wyszukiwać w nich wartości za pomocą indeksu klucza lub tablicy, dzięki czemu jest to naprawdę szybkie. Nie ma potrzeby konwertowania tekstu do formatu JSON lub odwrotnie w przypadku zapytań o dane.


Jak przechowywać dane JSON w MySQL

Przyjrzymy się, jak przechowywać dane JSON w MySQL, a także jak wysyłać zapytania do kolumn z typem danych JSON.

Oto składnia do zdefiniowania kolumny JSON

column_name JSON

Należy pamiętać, że kolumna typu danych JSON nie może mieć wartości domyślnej ani indeksu.

Przeczytaj także:Jak porównywać wartości Null w MySQL


Przykład typu danych MySQL JSON

Oto przykład tabeli użytkownicy(id, szczegóły) gdzie id jest liczbą całkowitą i kluczem podstawowym, podczas gdy szczegóły to kolumna typu danych JSON.

create table users(
    id int auto_increment primary key,
    details json
   );


Jak wstawić JSON do MySQL

Oto zapytanie SQL do przechowywania dokumentu JSON w 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 } }'
);

Wydobędziemy dane z kolumn JSON za pomocą operatora ścieżki kolumny (->)

Oto przykład pobierania nazw przeglądarek dla każdego użytkownika.

mysql> select id, details->'$.name' details from users;
+----+-----------+
| id | details   |
+----+-----------+
|  1 | "Safari"  |
|  2 | "Chrome"  |
|  3 | "Firefox" |
+----+-----------+
3 rows in set (0.00 sec)

Zobaczysz, że kolumny szczegółów mają podwójne cudzysłowy. Jeśli chcesz usunąć podwójne cudzysłowy, użyj zamiast tego operatora ->>

mysql> select id, details->>'$.name' details from users;
+----+-----------+
| id | details   |
+----+-----------+
|  1 |  Safari   |
|  2 |  Chrome   |
|  3 |  Firefox  |
+----+-----------+
3 rows in set (0.00 sec)

Można również agregować klauzulę GROUP BY danych JSON i funkcje agregacji. Oto przykład, jak zliczyć liczbę przeglądarek w naszych danych.

mysql> SELECT details->>'$.name' detail,
count(detail)
FROM users
GROUP BY details->>'$.name';

Zobaczysz następujące wyjście

+---------+----------------+
| details | count(details) |
+---------+----------------+
| Safari  |              1 |
| Firefox |              1 |
| Chrome  |              1 |
+---------+----------------+
3 rows in set (0.02 sec)

Podobnie możesz również użyć danych JSON w klauzuli WHERE. Oto przykład wybierania danych za pomocą wydatków> 100

mysql> SELECT id, SUM(details->>'$.spend') spend
       FROM users
       WHERE details->>'$.spend' > 100
       GROUP BY id;

Mamy nadzieję, że ten artykuł pomoże ci pracować z danymi JSON w MySQL. Ubiq ułatwia wizualizację danych i monitorowanie ich w pulpitach nawigacyjnych w czasie rzeczywistym. Wypróbuj Ubiq za darmo.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wskazówki dotyczące optymalizacji wydajności MySQL w celu optymalizacji bazy danych

  2. Jak mogę obejść MySQL Errcode 13 za pomocą SELECT INTO OUTFILE?

  3. Nie można utworzyć modelu danych encji — przy użyciu MySql i EF6

  4. Jak przejść przez zbiór wyników mysql?

  5. Jak obliczyć procent dwóch kolumn w MySQL?