×

Chèn dữ liệu vào JSON với JSON_INSERT() trong MySQL

Khi làm việc với cơ sở dữ liệu MySQL, JSON là một định dạng dữ liệu rất hữu ích và được sử dụng phổ biến để trao đổi và lưu trữ thông tin một cách có cấu trúc. MySQL cung cấp nhiều chức năng để làm việc với dữ liệu JSON, và một trong những chức năng quan trọng đó là JSON_INSERT(). Chức năng này cho phép bạn thêm dữ liệu vào một tài liệu JSON hiện có mà không cần thay đổi cấu trúc của các phần khác.

Cách sử dụng JSON_INSERT()

Chúng ta sẽ bắt đầu với cú pháp cơ bản của JSON_INSERT():

JSON_INSERT(json_doc, path, val[, path, val] ...)
  • json_doc: Đây là tài liệu JSON hiện tại mà bạn muốn chèn thêm dữ liệu.
  • path: Đường dẫn (path) quy định vị trí mà dữ liệu mới sẽ được chèn vào.
  • val: Giá trị mà bạn muốn chèn vào tài liệu JSON.

Bạn có thể thêm nhiều đường dẫn và giá trị cùng một lúc bằng cách lặp lại cặp pathval.

Ví dụ cụ thể

Giả sử bạn có một bảng tên là employees với một cột tên details chứa dữ liệu JSON. Dưới đây là bảng ban đầu của bạn:

CREATE TABLE employees (
    id INT PRIMARY KEY,
    details JSON
);

INSERT INTO employees (id, details) VALUES
(1, '{"name": "John", "age": 30, "department": "HR"}'),
(2, '{"name": "Jane", "age": 25, "department": "Finance"}');

Bây giờ, bạn muốn thêm một thông tin mới vào tài liệu JSON trong cột details. Cụ thể, bạn muốn thêm trường email cho mỗi nhân viên.

UPDATE employees
SET details = JSON_INSERT(details, '$.email', 'john@example.com')
WHERE id = 1;

Sau khi thực hiện câu lệnh này, dữ liệu JSON cho nhân viên có id = 1 sẽ trông như thế này:

{
    "name": "John",
    "age": 30,
    "department": "HR",
    "email": "john@example.com"
}

Tương tự, bạn có thể thực hiện thao tác chèn cho nhân viên khác:

UPDATE employees
SET details = JSON_INSERT(details, '$.email', 'jane@example.com')
WHERE id = 2;

Và kết quả sẽ là:

{
    "name": "Jane",
    "age": 25,
    "department": "Finance",
    "email": "jane@example.com"
}

Chèn nhiều dữ liệu cùng lúc

Chức năng JSON_INSERT() cũng cho phép chèn nhiều cặp đường dẫn và giá trị cùng một lúc. Giả sử bạn muốn chèn cả phoneaddress cho nhân viên có id = 1:

UPDATE employees
SET details = JSON_INSERT(details, '$.phone', '123-456-7890', '$.address', '123 Main St')
WHERE id = 1;

Kết quả JSON sẽ là:

{
    "name": "John",
    "age": 30,
    "department": "HR",
    "email": "john@example.com",
    "phone": "123-456-7890",
    "address": "123 Main St"
}

Lưu ý khi sử dụng JSON_INSERT()

  • Không thay thế giá trị có sẵn: JSON_INSERT() sẽ không thay thế đường dẫn đã tồn tại. Nếu đường dẫn đã tồn tại, JSON_INSERT() sẽ giữ nguyên giá trị cũ.
  • Tạo mới nếu cần thiết: Nếu đường dẫn không tồn tại, JSON_INSERT() sẽ tạo đường dẫn và chèn giá trị vào.

Kết luận

JSON_INSERT() là một công cụ mạnh mẽ và tiện lợi cho việc quản lý dữ liệu JSON trong MySQL. Bằng cách sử dụng cú pháp đơn giản nhưng hiệu quả, bạn có thể dễ dàng thêm thông tin vào tài liệu JSON mà không cần thay đổi những phần khác của tài liệu. Điều này giúp việc quản lý và mở rộng dữ liệu trở nên linh hoạt và tiết kiệm thời gian hơn.

Comments