SQL - JSON Functions: A Beginner's Guide
Xin chào các pháp sư cơ sở dữ liệu tương lai! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của các hàm SQL và JSON. Đừng lo lắng nếu bạn chưa bao giờ viết một dòng mã trước đây - tôi sẽ là người hướng dẫn thân thiện của bạn, và chúng ta sẽ cùng nhau bước từng bước. Cuối cùng của bài hướng dẫn này, bạn sẽ xử lý dữ liệu JSON như một chuyên gia!
What is JSON?
Trước khi chúng ta nhảy vào các hàm SQL, hãy nói về JSON. JSON có nghĩa là JavaScript Object Notation, và nó là một cách phổ biến để lưu trữ và trao đổi dữ liệu. Hãy nghĩ về nó như một cách tổ chức thông tin trong một định dạng dễ đọc cho cả con người và máy tính.
Ví dụ, đây là một số dữ liệu JSON về một cuốn sách:
{
"title": "The SQL Adventure",
"author": "Jane Coder",
"year": 2023,
"genres": ["Technology", "Education"]
}
Thấy nó ngăn nắp và tổ chức như thế nào không? Đó là vẻ đẹp của JSON!
Why Use JSON in SQL?
Bây giờ, bạn có thể tự hỏi, "Tại sao chúng ta cần JSON trong cơ sở dữ liệu?" Hãy tưởng tượng bạn đang quản lý một cửa hàng sách trực tuyến. Một số sách có thể có nhiều tác giả, trong khi những sách khác chỉ có một tác giả. Một số có thể có nhiều thể loại, những sách khác chỉ có một ít. JSON cho phép chúng ta lưu trữ thông tin đa dạng này một cách linh hoạt mà không cần tạo ra một loạt các bảng riêng biệt.
SQL JSON Functions: Your New Best Friends
Hãy gặp những cầu thủ ngôi sao trong trò chơi SQL-JSON của chúng ta. Những hàm này giúp chúng ta làm việc với dữ liệu JSON trong cơ sở dữ liệu SQL của mình.
1. JSON_VALUE()
Hàm này giống như một thợ săn kho báu. Nó đào vào dữ liệu JSON của bạn và lấy ra một giá trị cụ thể.
SELECT JSON_VALUE('{"name": "Alice", "age": 30}', '$.name') AS FirstName;
Điều này sẽ trả về:
FirstName
--------
Alice
Ở đây, chúng ta yêu cầu SQL nhìn vào dữ liệu JSON của mình và tìm giá trị liên kết với khóa "name".
2. JSON_QUERY()
Trong khi JSON_VALUE lấy một giá trị duy nhất, JSON_QUERY có thể lấy toàn bộ đối tượng hoặc mảng.
SELECT JSON_QUERY('{"books": ["SQL 101", "JSON Mastery"]}', '$.books') AS BookList;
Kết quả:
BookList
--------
["SQL 101", "JSON Mastery"]
Hàm này hoàn hảo khi bạn cần trích xuất cấu trúc JSON嵌套.
3. JSON_MODIFY()
Hàm này giống như một编辑 JSON cá nhân. Nó cho phép bạn thay đổi các giá trị trong dữ liệu JSON của bạn.
DECLARE @json NVARCHAR(100) = '{"name": "Bob", "age": 35}';
SELECT JSON_MODIFY(@json, '$.age', 36) AS UpdatedJSON;
Kết quả:
UpdatedJSON
-----------
{"name": "Bob", "age": 36}
Chúng ta vừa tổ chức sinh nhật cho Bob! Chúng ta đã thay đổi tuổi của anh ấy từ 35 lên 36.
4. ISJSON()
Hàm này là侦探 JSON. Nó kiểm tra xem một chuỗi có phải là JSON hợp lệ hay không.
SELECT ISJSON('{"name": "Charlie", "age": 40}') AS IsValidJSON;
Kết quả:
IsValidJSON
-----------
1
Giá trị trả về là 1 có nghĩa là "Đúng, đây là JSON hợp lệ", trong khi 0 có nghĩa là "Không, không phải JSON hợp lệ".
5. JSON_OBJECT()
Hàm này giống như một nhà máy JSON. Nó tạo ra các đối tượng JSON từ dữ liệu SQL của bạn.
SELECT JSON_OBJECT('name': 'Dana', 'age': 28) AS PersonJSON;
Kết quả:
PersonJSON
----------
{"name":"Dana","age":28}
Đây là một cách tuyệt vời để chuyển đổi dữ liệu SQL thông thường của bạn thành định dạng JSON.
Putting It All Together
Bây giờ chúng ta đã gặp các hàm JSON, hãy xem chúng ta có thể sử dụng chúng trong một tình huống thực tế như thế nào. Hãy tưởng tượng chúng ta đang quản lý cửa hàng sách trực tuyến mà chúng ta đã nói đến trước đó.
-- Tạo một bảng để lưu trữ thông tin sách
CREATE TABLE Books (
BookID INT PRIMARY KEY,
BookInfo NVARCHAR(MAX)
);
-- Chèn một số dữ liệu mẫu
INSERT INTO Books (BookID, BookInfo)
VALUES
(1, '{"title": "SQL Basics", "author": "John Doe", "year": 2020, "genres": ["Technology", "Education"]}'),
(2, '{"title": "JSON and You", "author": "Jane Smith", "year": 2021, "genres": ["Technology"]}');
-- Truy vấn để lấy tiêu đề sách
SELECT
BookID,
JSON_VALUE(BookInfo, '$.title') AS Title
FROM Books;
-- Truy vấn để lấy tất cả các thể loại
SELECT
BookID,
JSON_QUERY(BookInfo, '$.genres') AS Genres
FROM Books;
-- Cập nhật năm của một cuốn sách
UPDATE Books
SET BookInfo = JSON_MODIFY(BookInfo, '$.year', 2023)
WHERE BookID = 1;
-- Thêm một thể loại mới vào một cuốn sách
UPDATE Books
SET BookInfo = JSON_MODIFY(
BookInfo,
'$.genres',
JSON_QUERY(
CONCAT(
'[',
SUBSTRING(JSON_QUERY(BookInfo, '$.genres'), 2, LEN(JSON_QUERY(BookInfo, '$.genres')) - 2),
',"Programming"]'
)
)
)
WHERE BookID = 2;
-- Kiểm tra xem BookInfo có phải là JSON hợp lệ hay không
SELECT
BookID,
ISJSON(BookInfo) AS IsValidJSON
FROM Books;
Và thế là xong! Chúng ta đã tạo một bảng, chèn dữ liệu JSON, truy vấn các giá trị cụ thể, cập nhật JSON, và thậm chí thêm thông tin mới vào các mảng JSON.
Conclusion
Chúc mừng! Bạn vừa bước những bước đầu tiên vào thế giới của các hàm JSON trong SQL. Những công cụ mạnh mẽ này cho phép chúng ta làm việc với cấu trúc dữ liệu flexibile, nested ngay trong cơ sở dữ liệu SQL của mình. Khi bạn tiếp tục hành trình, bạn sẽ tìm thấy nhiều cách hơn để tận dụng các hàm này để tạo ra các giải pháp cơ sở dữ liệu mạnh mẽ và linh hoạt.
Nhớ rằng, chìa khóa để thành thạo những khái niệm này là thực hành. Vậy đừng ngần ngại thử nghiệm với dữ liệu JSON và các truy vấn SQL của riêng bạn. Chúc bạn may mắn và mong rằng cơ sở dữ liệu của bạn luôn được chuẩn hóa!
Function | Description | Example |
---|---|---|
JSON_VALUE() | Trích xuất một giá trị vô cùng từ một chuỗi JSON | JSON_VALUE('{"name": "Alice", "age": 30}', '$.name') |
JSON_QUERY() | Trích xuất một đối tượng hoặc mảng từ một chuỗi JSON | JSON_QUERY('{"books": ["SQL 101", "JSON Mastery"]}', '$.books') |
JSON_MODIFY() | Thay đổi một giá trị trong một chuỗi JSON | JSON_MODIFY('{"name": "Bob", "age": 35}', '$.age', 36) |
ISJSON() | Kiểm tra xem một chuỗi có phải là JSON hợp lệ hay không | ISJSON('{"name": "Charlie", "age": 40}') |
JSON_OBJECT() | Tạo một đối tượng JSON | JSON_OBJECT('name': 'Dana', 'age': 28) |
Credits: Image by storyset