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의 아름다움입니다!

SQL에서 JSON을 사용하는 이유

이제 여러분은 "왜 우리는 데이터베이스에 JSON을 필요로 할까?"라는 의문이 생길 수도 있습니다. 온라인 서점을 운영하고 있다고 상상해 보세요. 어떤 책은 여러 작가가 있을 수도 있고, 다른 책은 단일 작가만 있을 수 있습니다. 어떤 책은 많은 장르를 가질 수도 있고, 다른 책은 몇 가지 장르만 가질 수 있습니다. JSON은 이러한 다양한 정보를 유연하게 저장할 수 있도록 도와줍니다.

SQL JSON 함수: 당신의 새로운 최고 친구들

이제 SQL-JSON 게임의 스타 플레이어들을 만나보겠습니다. 이 함수들은 SQL 데이터베이스에서 JSON 데이터를 다루는 데 도움을 줍니다.

1. JSON_VALUE()

이 함수는 보물 사냥꾼과 같습니다. JSON 데이터 속에서 특정 값을 끌어냅니다.

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

이렇게 결과가 나타납니다:

FirstName
--------
Alice

여기서 우리는 SQL이 JSON 데이터 속에서 "name" 키와 관련된 값을 찾도록 요청하고 있습니다.

2. JSON_QUERY()

JSON_VALUE는 단일 값을 검색하지만, JSON_QUERY는 전체 객체나 배열을 가져올 수 있습니다.

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

결과:

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

이 함수는 중첩된 JSON 구조를 추출할 때 완벽합니다.

3. JSON_MODIFY()

이 함수는 당신의 개인 JSON 편집자입니다. JSON 데이터 내부의 값을 변경할 수 있습니다.

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

결과:

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

우리는 Bob의 생일을 축하했습니다! 그의 나이를 35에서 36으로 변경했습니다.

4. ISJSON()

이 함수는 JSON 탐정입니다. 문자열이 유효한 JSON인지 확인합니다.

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

결과:

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

리턴 값 1은 "네, 이것은 유효한 JSON입니다"를 의미하며, 0은 "아니요, 유효한 JSON이 아닙니다"를 의미합니다.

5. JSON_OBJECT()

이 함수는 JSON 공장과 같습니다. SQL 데이터에서 JSON 객체를 생성합니다.

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

결과:

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

이는 일반 SQL 데이터를 JSON 형식으로 변환하는 훌륭한 방법입니다.

모든 것을 통합해 보자

이제 JSON 함수들을 만나보았으니, 실제 세계에서 이를 어떻게 사용할 수 있는지 보겠습니다. 우리는 이전에 이야기한 온라인 서점을 관리하고 있다고 상상해 보세요.

-- 책 정보를 저장할 테이블 생성
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;

이제 여러분은 테이블을 생성하고, JSON 데이터를 삽입하고, 특정 값을 쿼리하고, JSON을 업데이트하고, 새로운 정보를 JSON 배열에 추가하는 방법을 배웠습니다.

결론

축하합니다! 지금 여러분은 SQL JSON 함수의 세계로 첫 걸음을 내디뎠습니다. 이 강력한 도구들은 SQL 데이터베이스 내에서 유연하고 중첩된 데이터 구조를 다루는 데 도움을 줍니다. 여러분이 계속 여정을 떠나면서, 이 함수들을 활용하여 강력하고 유연한 데이터베이스 솔루션을 만드는 방법을 더 많이 배울 것입니다.

이 개념을 숙지하는 열쇠는 연습입니다. 따라서 자신의 JSON 데이터와 SQL 쿼리를 실험해 보지 마세요. 행복한 코딩을 기원하며, 여러분의 데이터베이스가 항상 정규화되기를 바랍니다!

함수 설명 예제
JSON_VALUE() JSON 문자열에서 스칼라 값을 추출 JSON_VALUE('{"name": "Alice", "age": 30}', '$.name')
JSON_QUERY() JSON 문자열에서 객체나 배열을 추출 JSON_QUERY('{"books": ["SQL 101", "JSON Mastery"]}', '$.books')
JSON_MODIFY() JSON 문자열 내부의 값을 변경 JSON_MODIFY('{"name": "Bob", "age": 35}', '$.age', 36)
ISJSON() 문자열이 유효한 JSON인지 확인 ISJSON('{"name": "Charlie", "age": 40}')
JSON_OBJECT() JSON 객체 생성 JSON_OBJECT('name': 'Dana', 'age': 28)

Credits: Image by storyset