Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách lưu trữ dữ liệu JSON trong MySQL

MySQL cho phép bạn lưu trữ dữ liệu JSON ở kiểu dữ liệu JSON gốc kể từ phiên bản 5.7.8. Điều này cho phép bạn dễ dàng lưu trữ các tài liệu JSON và trích xuất các phần tử dữ liệu JSON mà không cần chuyển đổi dữ liệu. Trong bài viết này, chúng ta sẽ xem xét cách lưu trữ dữ liệu JSON trong MySQL.

Kiểu dữ liệu JSON của MySQL cho phép bạn lưu trữ dữ liệu JSON để bạn có thể dễ dàng đọc hoặc tìm kiếm các giá trị trong đó bằng cách sử dụng chỉ mục khóa hoặc mảng, làm cho nó thực sự nhanh chóng. Không cần chuyển đổi văn bản sang JSON hoặc ngược lại để truy vấn dữ liệu.


Cách lưu trữ dữ liệu JSON trong MySQL

Chúng ta sẽ xem xét cách lưu trữ dữ liệu JSON trong MySQL và cũng như cách truy vấn các cột với kiểu dữ liệu JSON.

Đây là cú pháp để xác định một cột JSON

column_name JSON

Xin lưu ý, cột kiểu dữ liệu JSON không được có giá trị mặc định, cũng như không được có chỉ mục.

Cũng nên đọc:Cách so sánh giá trị rỗng trong MySQL


Ví dụ về kiểu dữ liệu JSON của MySQL

Đây là ví dụ về bảng người dùng (id, chi tiết) ở đâu id là một số nguyên và khóa chính trong khi chi tiết là một cột kiểu dữ liệu JSON.

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


Cách chèn JSON vào MySQL

Đây là truy vấn SQL để lưu trữ tài liệu JSON trong 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 } }'
);

Chúng tôi sẽ trích xuất dữ liệu từ các cột JSON bằng toán tử đường dẫn cột (->)

Dưới đây là một ví dụ để truy xuất tên trình duyệt cho từng người dùng.

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

Bạn sẽ thấy rằng các cột chi tiết có dấu ngoặc kép. Nếu bạn muốn xóa dấu ngoặc kép, hãy sử dụng ->> toán tử thay thế

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

Bạn cũng có thể tổng hợp mệnh đề GROUP BY của dữ liệu JSON và các hàm tổng hợp. Dưới đây là một ví dụ để đếm số lượng trình duyệt trong dữ liệu của chúng tôi.

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

Bạn sẽ thấy kết quả sau

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

Tương tự, bạn cũng có thể sử dụng dữ liệu JSON trong mệnh đề WHERE. Dưới đây là một ví dụ để chọn dữ liệu có chi tiêu> 100

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

Hy vọng rằng, bài viết này sẽ giúp bạn làm việc với dữ liệu JSON trong MySQL. Ubiq giúp dễ dàng trực quan hóa dữ liệu và theo dõi chúng trong trang tổng quan thời gian thực. Dùng thử Ubiq miễn phí.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP PDO - Hàng số

  2. Làm cách nào tôi có thể sử dụng MySQL Errcode 13 với CHỌN VÀO OUTFILE?

  3. có hàm group_concat trong ms-access không?

  4. Cách nhận bản ghi của tháng hiện tại trong MySQL

  5. Truy vấn SQL để xóa cơ sở dữ liệu trong MySQL