Làm cách nào để trích xuất giá trị từ đối tượng JSON trong MySQL?
Bài viết của tôi “SQL vs NoSQL. Sự khác biệt” lưu ý rằng ranh giới giữa cơ sở dữ liệu SQL và NoSQL ngày càng trở nên mờ nhạt, với mỗi bên áp dụng các tính năng từ bên kia. mysql 5. 7+ cơ sở dữ liệu InnoDB và PostgreSQL 9. 2+ đều hỗ trợ trực tiếp các loại tài liệu JSON trong một trường duy nhất. Trong bài viết này, chúng ta sẽ kiểm tra MySQL 8. 0 triển khai JSON chi tiết hơn Show
Lưu ý rằng bất kỳ cơ sở dữ liệu nào cũng sẽ chấp nhận các tài liệu JSON dưới dạng một chuỗi đơn. Tuy nhiên, MySQL và PostgreSQL hỗ trợ dữ liệu JSON được xác thực theo các cặp khóa/giá trị thực thay vì một chuỗi cơ bản Chỉ Vì Bạn Có Thể Lưu trữ JSON…… nó không theo bạn nên Chuẩn hóa là một kỹ thuật được sử dụng để tối ưu hóa cấu trúc cơ sở dữ liệu. Quy tắc Biểu mẫu thông thường đầu tiên (1NF) quy định rằng mọi cột phải chứa một giá trị — quy tắc này rõ ràng bị phá vỡ bằng cách lưu trữ các tài liệu JSON đa giá trị Nếu bạn có các yêu cầu rõ ràng về dữ liệu quan hệ, hãy sử dụng các trường giá trị đơn thích hợp. JSON nên được sử dụng một cách tiết kiệm như là phương sách cuối cùng. Không thể lập chỉ mục các trường giá trị JSON, vì vậy hãy tránh sử dụng nó trên các cột được cập nhật hoặc tìm kiếm thường xuyên. Ngoài ra, ít ứng dụng khách hỗ trợ JSON hơn và công nghệ này mới hơn nên có thể kém ổn định hơn các loại khác Điều đó nói rằng, có những trường hợp sử dụng JSON tốt cho dữ liệu được điền thưa thớt hoặc thuộc tính tùy chỉnh Tạo bảng với trường JSONXem xét một cửa hàng bán sách. Tất cả sách đều có ID, ISBN, tên sách, nhà xuất bản, số trang và dữ liệu quan hệ rõ ràng khác. Giả sử bạn muốn thêm bất kỳ số lượng thẻ danh mục nào vào mỗi cuốn sách. Bạn có thể đạt được điều này trong SQL bằng cách sử dụng
Nó sẽ hoạt động, nhưng nó cồng kềnh và tốn nhiều công sức cho một tính năng nhỏ. Do đó, bạn có thể xác định trường JSON của thẻ trong bảng sách của cơ sở dữ liệu MySQL của mình
Lưu ý rằng các cột JSON không thể có giá trị mặc định, được sử dụng làm khóa chính, được sử dụng làm khóa ngoại hoặc có chỉ mục. Bạn có thể tạo các chỉ mục phụ trên các cột ảo được tạo, nhưng việc giữ lại một giá trị trong một trường riêng biệt sẽ dễ dàng và thực tế hơn nếu cần có các chỉ mục Thêm dữ liệu JSONToàn bộ tài liệu JSON có thể được chuyển qua các câu lệnh INSERT hoặc UPDATE. Ví dụ: các thẻ sách của chúng tôi có thể được truyền dưới dạng một mảng (bên trong một chuỗi)
JSON cũng có thể được tạo bằng những
Cho phép bạn kiểm tra các loại giá trị JSON. Nó sẽ trả về ĐỐI TƯỢNG, Mảng, loại vô hướng (INTEGER, BOOLEAN, v.v.), NULL hoặc lỗi. Ví dụ
Trả về 1 nếu JSON hợp lệ hoặc 0 nếu không
Cố gắng chèn một tài liệu JSON không hợp lệ sẽ gây ra lỗi và toàn bộ bản ghi sẽ không được chèn/cập nhật Tìm kiếm dữ liệu JSONChấp nhận tài liệu JSON đang được tìm kiếm và tài liệu khác để so sánh với. Nó trả về 1 khi tìm thấy kết quả khớp. Ví dụ ________số 8_______Tương tự trả về đường dẫn đến trận đấu đã cho hoặc NULL khi không có trận đấu nào. Nó chuyển qua tài liệu JSON đang được tìm kiếm, 6 để tìm kết quả khớp đầu tiên hoặc 7 để tìm tất cả các kết quả khớp và một chuỗi tìm kiếm (trong đó 8 khớp với bất kỳ số lượng ký tự nào và 9 khớp một ký tự theo cách giống hệt với ). Ví dụ
Đường dẫn JSONMột đường dẫn JSON nhắm mục tiêu các giá trị và có thể được sử dụng để trích xuất hoặc sửa đổi các phần của tài liệu JSON. Chứng minh điều này bằng cách trích xuất một hoặc nhiều giá trị
Tất cả các định nghĩa đường dẫn bắt đầu bằng một 1 theo sau là các bộ chọn khác
Các ví dụ sau đây đề cập đến tài liệu JSON sau đây 0đường dẫn ví dụ
Trích xuất đường dẫn JSON trong truy vấnBạn có thể trích xuất tên và thẻ đầu tiên của bảng sách của mình bằng truy vấn 1Đối với một ví dụ phức tạp hơn, giả sử bạn có một bảng người dùng với dữ liệu hồ sơ JSON. Ví dụ idnameprofile1Craig{ “email”. [“craig@email1. com”, “craig@email2. com”], “twitter”. “@craigbuckler” }2SitePoint{ “email”. [], “twitter”. “@sitepointdotcom” }Bạn có thể trích xuất tên Twitter bằng đường dẫn JSON. Ví dụ 2Bạn có thể sử dụng đường dẫn JSON trong mệnh đề WHERE để chỉ trả về người dùng có tài khoản Twitter 3Sửa đổi một phần của tài liệu JSONCó một số hàm MySQL để sửa đổi các phần của tài liệu JSON bằng cách sử dụng ký hiệu đường dẫn. Bao gồm các
Do đó, bạn có thể thêm thẻ “kỹ thuật” vào bất kỳ cuốn sách nào đã có thẻ “JavaScript” 4Thêm thông tinHướng dẫn sử dụng MySQL cung cấp thêm thông tin về kiểu dữ liệu JSON và các hàm JSON được liên kết Một lần nữa, tôi khuyên bạn không nên sử dụng JSON trừ khi thực sự cần thiết. Bạn có thể mô phỏng toàn bộ cơ sở dữ liệu NoSQL hướng tài liệu trong MySQL, nhưng nó sẽ phủ nhận nhiều lợi ích của SQL và bạn cũng có thể chuyển sang một hệ thống NoSQL thực sự. Điều đó nói rằng, các kiểu dữ liệu JSON có thể tiết kiệm công sức cho các yêu cầu dữ liệu khó hiểu hơn trong ứng dụng SQL Chia sẻ bài viết nàyCraig Buckler Craig là một nhà tư vấn web tự do ở Vương quốc Anh, người đã xây dựng trang đầu tiên của mình cho IE2. 0 vào năm 1995. Kể từ thời điểm đó, anh ấy đã ủng hộ các tiêu chuẩn, khả năng truy cập và các kỹ thuật HTML5 thực hành tốt nhất. Anh ấy đã tạo các thông số kỹ thuật doanh nghiệp, trang web và ứng dụng trực tuyến cho các công ty và tổ chức bao gồm Nghị viện Vương quốc Anh, Nghị viện Châu Âu, Bộ Năng lượng & Biến đổi Khí hậu, Microsoft, v.v. Anh ấy đã viết hơn 1.000 bài báo cho SitePoint và bạn có thể tìm thấy anh ấy @craigbuckler Làm cách nào tôi có thể nhận được giá trị trong một đối tượng JSON?JSONObject có một số phương thức quan trọng để hiển thị các giá trị của các loại khác nhau như phương thức getString() để lấy chuỗi được liên kết với chuỗi khóa, phương thức getInt() để lấy giá trị int được liên kết với khóa, phương thức getDouble() để lấy giá trị kép
Làm cách nào để truy vấn dữ liệu JSON trong MySQL?Dữ liệu mẫu Chọn một trường JSON. Xóa dấu ngoặc kép khỏi kết quả lựa chọn Sử dụng ký hiệu dấu chấm trong đường dẫn lựa chọn Sử dụng trường đã chọn làm điều kiện Kết thúc Làm cách nào để trích xuất các giá trị từ trường JSON lồng nhau trong MySQL?Để truy vấn một đối tượng JSON lồng nhau trong MySQL, bạn có thể sử dụng hàm JSON_EXTRACT() để trích xuất giá trị của khóa lồng nhau rồi sau đó . |