"SET @변수명 = '{"key" : [value]};" --> 무슨 뜻일까?
SET @json ='{ "usertbl" :
[
{"name":"임재범", "height":182},
{"name":"이승기", "height":182},
{"name":"성시경", "height":186}
]
}' ;
일반적으로 서버에서 클라이언트로 데이터를 보낼 때 사용하는 양식이다. 클라이언트가 사용하는 언어에 관계 없이 통일된 데이터를 주고받을 수 있도록, 일정한 패턴을 지닌 문자열을 생성해 내보내면 클라이언트는 그를 해석해 데이터를 자기만의 방식으로 온전히 저장, 표시할 수 있게 된다.
위 코드에서 {}는 JSON 객체(object)를 나타내며, []는 JSON 배열(array)을 나타낸다.
JSON 객체는 {} 안에 key-value 쌍을 나열하여 표현한다. 이 때 key는 문자열이며, value는 문자열, 숫자, 불리언, 객체, 배열 등의 다양한 데이터 형식일 수 있다. 위 코드에서 "usertbl"은 JSON 객체의 key이며, 그 값으로 배열이 포함되어 있다.
JSON 배열은 [] 안에 값들을 나열하여 표현된다. 값은 문자열, 숫자, 불리언, 객체, 배열 등의 다양한 데이터 형식일 수 있으며, 값들은 쉼표로 구분된다. 위 코드에서는 "usertbl" 객체의 값으로 세 개의 사용자 객체가 배열로 포함되어 있다.
이 코드는 단순히 변수에 문자열 값을 할당하는 것이다. 이 문자열은 구조화된 형식으로 데이터를 표현하는 방법인 JSON 형식이다.
이 변수는 이후의 SQL 문에서 사용될 수 있으며, 예를 들어 JSON에서 데이터를 추출하거나 데이터를 테이블에 삽입하는 데 사용될 수 있다.
JSON은 두 가지 기본적인 데이터 타입인 객체(object)와 배열(array)로 구성된다.
JSON 객체는 중괄호 {}로 표현되며, 다양한 속성(key-value pair)들을 포함한다. 객체의 속성은 속성 이름(key)과 그에 해당하는 값(value)으로 구성되며, key와 value는 : 으로 구분된다. 여러 속성들은 쉼표 ,로 구분됩니다.
예시)
{
"name": "John",
"age": 30,
"isStudent": false,
"address": {
"street": "123 Main St.",
"city": "New York"
}
}
위 예시에서는 name, age, isStudent, address라는 속성이 있으며, 각각의 속성은 해당하는 값과 함께 key-value 쌍을 이루고 있다. address 속성의 값은 또 다른 JSON 객체를 포함하고 있다.
JSON 배열은 대괄호 []로 표현되며, 순서가 있는 값들의 리스트로 구성된다. 배열의 값들은 쉼표 ,로 구분된다.
예시)
["apple","banana", "orange"]
위 예시에서는 apple, banana, orange라는 값이 배열 안에 포함되어 있다. JSON 배열은 객체와 마찬가지로 다른 데이터 타입을 포함할 수 있다. 예를 들어, 배열 안에 객체를 포함할 수도 있다.
JSON 배열은 JSON 객체의 값으로 사용될 수 있다. 즉, JSON 배열은 JSON 객체 안에 포함될 수 있으며, JSON 객체의 속성값으로 사용될 수 있다.
예를 들어, 다음과 같은 JSON 객체가 있다고 가정해보자.
{
"name": "John",
"age": 30,
"fruits": [
"apple",
"banana",
"orange"
]
}
위 예시에서는 fruits 속성이 JSON 배열로 구성되어 있다. 이렇게 JSON 배열을 JSON 객체의 속성값으로 사용함으로써, 여러 가지 데이터를 구조화하고 효율적으로 전달할 수 있다.
반대로, JSON 배열 안에는 JSON 객체를 포함시킬 수도 있다. 예를 들어, 다음과 같은 JSON 배열이 있다고 가정해보자.
[{"name": "John","age": 30},{"name": "Mary","age": 25}]
위 예시에서는 배열 안에 두 개의 JSON 객체가 포함되어 있다. 이렇게 JSON 객체를 JSON 배열 안에 포함시킴으로써, 여러 개의 데이터를 순서대로 나열할 수 있다.
따라서, JSON 객체와 배열은 서로 다른 개념이지만, 이 둘을 적절히 조합하여 데이터를 구조화하고 전달함으로써, 다양한 목적으로 사용할 수 있다.
보너스) 두 개의 테이블이 있을 때, 한 테이블에서 fK를 연결할 때 다른 테이블의 CHAR 길이를 동일하게 해야함.