RU (Русский) Перевод

SQL - Функции JSON: Пособие для начинающих

Здравствуйте, будущие маги баз данных! Сегодня мы отправимся в увлекательное путешествие в мир функций SQL и JSON. Не волнуйтесь, если вы никогда не писали ни строчки кода раньше — я буду вашим дружелюбным проводником, и мы будем двигаться шаг за шагом. К концу этого руководства вы будете управляться с данными JSON, как профи!

SQL - JSON Functions

Что такое JSON?

Прежде чем мы погрузимся в функции SQL, давайте поговорим о JSON. JSON означает JavaScript Object Notation и является популярным способом хранения и обмена данными. Представьте его как способ организации информации в формате, который легко читается как людьми, так и компьютерами.

Например, вот данные JSON о книге:

{
"title": "The SQL Adventure",
"author": "Jane Coder",
"year": 2023,
"genres": ["Technology", "Education"]
}

Смотрится аккуратно и организованно, не так ли? Вот красота JSON!

Почему использовать JSON в SQL?

Теперь вы можете задаться вопросом: "Зачем нам JSON в наших базах данных?" Представьте, что вы управляете интернет-магазином книг. Some книги могут иметь нескольких авторов, а другие — одного. Some могут иметь множество жанров, а другие — всего несколько. JSON позволяет нам гибко хранить эту разнородную информацию, не создавая множество отдельных таблиц.

Функции SQL JSON: Ваши новые лучшие друзья

Познакомимся с основными игроками в нашей игре с SQL и JSON. Эти функции помогают нам работать с данными JSON в наших базах данных SQL.

1. JSON_VALUE()

Эта функция resembles a treasure hunter. Она копается в ваших данных JSON и вытаскивает конкретное значение.

SELECT JSON_VALUE('{"name": "Alice", "age": 30}', '$.name') AS FirstName;

Это вернет:

FirstName
--------
Alice

Здесь мы просим SQL заглянуть в наши данные JSON и найти значение, связанное с ключом "name".

2. JSON_QUERY()

While JSON_VALUE retrieves a single value, JSON_QUERY can fetch an entire object or array.

SELECT JSON_QUERY('{"books": ["SQL 101", "JSON Mastery"]}', '$.books') AS BookList;

Результат:

BookList
--------
["SQL 101", "JSON Mastery"]

Эта функция ideal when you need to extract nested JSON structures.

3. JSON_MODIFY()

Эта функция resembles your personal JSON editor. Она позволяет вам изменять значения внутри ваших данных JSON.

DECLARE @json NVARCHAR(100) = '{"name": "Bob", "age": 35}';
SELECT JSON_MODIFY(@json, '$.age', 36) AS UpdatedJSON;

Результат:

UpdatedJSON
-----------
{"name": "Bob", "age": 36}

Мы сделали Бобу день рождения! Мы changed его возраст с 35 до 36.

4. ISJSON()

Эта функция resembles our JSON detective. Она проверяет, является ли строка действительным JSON.

SELECT ISJSON('{"name": "Charlie", "age": 40}') AS IsValidJSON;

Результат:

IsValidJSON
-----------
1

Значение 1 означает "Да, это действительный JSON", а 0 означает "Нет, это не действительный JSON".

5. JSON_OBJECT()

Эта функция resembles a JSON factory. Она создает JSON объекты из ваших данных SQL.

SELECT JSON_OBJECT('name': 'Dana', 'age': 28) AS PersonJSON;

Результат:

PersonJSON
----------
{"name":"Dana","age":28}

Это отличной способ преобразовать ваши обычные данные SQL в формат JSON.

Объединяем все вместе

Теперь, когда мы познакомились с нашими функциями JSON, давайте посмотрим, как мы можем использовать их в реальном сценарии. Представьте, что мы управляем интернет-магазином книг, о котором мы говорили раньшe.

-- Создаем таблицу для хранения информации о книгах
CREATE TABLE Books (
BookID INT PRIMARY KEY,
BookInfo NVARCHAR(MAX)
);

-- Вводим некоторые образцовые данные
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"]}');

-- Запрос для получения заголовков книг
SELECT
BookID,
JSON_VALUE(BookInfo, '$.title') AS Title
FROM Books;

-- Запрос для получения всех жанров
SELECT
BookID,
JSON_QUERY(BookInfo, '$.genres') AS Genres
FROM Books;

-- Обновляем год книги
UPDATE Books
SET BookInfo = JSON_MODIFY(BookInfo, '$.year', 2023)
WHERE BookID = 1;

-- Добавляем новый жанр к книге
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;

-- Проверяем, является ли BookInfo действительным JSON
SELECT
BookID,
ISJSON(BookInfo) AS IsValidJSON
FROM Books;

И вот оно! Мы создали таблицу, inserted JSON данные, queried конкретные значения, updated наш JSON и даже добавили новую информацию в наши массивы JSON.

Заключение

Поздравления! Вы только что сделали свои первые шаги в мир функций SQL JSON. Эти мощные инструменты позволяют нам работать с гибкими, вложенными структурами данных прямо в наших базах данных SQL. По мере вашего движения вперед, вы найдете еще больше способов использования этих функций для создания robust, гибких решений баз данных.

Remember, ключ к maîtriser этих концепций — это практика. Так что не бойтесь experimenting с своими данными JSON и SQL запросами. Счастливого кодирования, и пусть ваши базы данных всегда будут нормализованы!

Credits: Image by storyset