Loading...
MySQL 9.5 Reference Manual 9.5의 27.7.1 Creating JSON Duality Views의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
CREATE JSON RELATIONAL DUALITY VIEW statement는 CREATE VIEW statement의 확장입니다.
CREATE JSON RELATIONAL DUALITY VIEW에는 추가적인 절들이 있으며,
SELECT statement에는 몇 가지 제한이 있습니다.
RELATIONAL 키워드는 선택 사항이며, 예제에서는 생략됩니다.
다음 예제에서는 두 개의 테이블인
customers와 orders를 생성하고
각 테이블에 몇 개의 데이터를 삽입합니다:
1mysql> CREATE TABLE customers ( 2 customer_id INT PRIMARY KEY, 3 name VARCHAR(100) 4); 5mysql> CREATE TABLE orders ( 6 order_id INT PRIMARY KEY, 7 customer_id INT, 8 product VARCHAR(100), 9 amount DECIMAL(10,2), 10 FOREIGN KEY (customer_id) REFERENCES customers(customer_id) 11); 12mysql> INSERT INTO customers VALUES (1, "Alice"), (2, "Bob"); 13Query OK, 2 rows affected (0.009 sec) 14Records: 2 Duplicates: 0 Warnings: 0 15mysql> INSERT INTO orders VALUES (1, 1, "Milk", 10), (2, 1, "Curd", 5), (3, 2, "Flour", 20), (4, 2, "Biscuits", 5); 16Query OK, 4 rows affected (0.007 sec) 17Records: 4 Duplicates: 0 Warnings: 0
JSON duality view인 customer_orders_dv와
order_dv는 테이블의 데이터에 대한 계층적 뷰를 제공합니다.
다음 SQL statement를 사용하여 이를 생성할 수 있습니다:
1mysql> CREATE JSON RELATIONAL DUALITY VIEW customer_orders_dv AS 2SELECT JSON_DUALITY_OBJECT( 3 '_id': customer_id, 4 'customer_name': name, 5 'orders': ( 6 SELECT JSON_ARRAYAGG( 7 JSON_DUALITY_OBJECT( 8 'order_id': order_id, 9 'product': product, 10 'amount': amount 11 ) 12 ) 13 FROM orders 14 WHERE orders.customer_id = customers.customer_id 15 ) 16) 17FROM customers; 18mysql> CREATE JSON RELATIONAL DUALITY VIEW order_dv AS 19SELECT JSON_DUALITY_OBJECT( WITH(INSERT,UPDATE,DELETE) 20 '_id' : order_id, 21 'product' : product, 22 'amount' : amount, 23 'customer': ( 24 SELECT JSON_DUALITY_OBJECT( WITH(INSERT,UPDATE) 25 'customer_id': customer_id, 26 'customer_name': name 27 ) 28 FROM customers 29 WHERE customers.customer_id = orders.customer_id 30 ) 31) 32FROM orders;
JSON duality view는 일반 뷰와 동일한 방식으로 SELECT
statement를 지원하여 필요한 데이터를
조회할 수 있도록 합니다.
result set은
data라는 단일 컬럼과
_id라는 고유 로우 식별자로 구성됩니다.
또한 WHERE 절을 사용하여 result를
필터링할 수 있습니다. 다음 예제를 참조하십시오:
1mysql> SELECT JSON_PRETTY(data) FROM customer_orders_dv WHERE data->'$._id' = 1 \G 2*************************** 1. row *************************** 3JSON_PRETTY(data): { 4 "_id": 1, 5 "orders": [\ 6 {\ 7 "amount": 10.00,\ 8 "product": "Milk",\ 9 "order_id": 1\ 10 },\ 11 {\ 12 "amount": 5.00,\ 13 "product": "Curd",\ 14 "order_id": 2\ 15 }\ 16 ], 17 "_metadata": { 18 "etag": "a6f0e76602398bc2df6fdd09494ae07b" 19 }, 20 "customer_name": "Alice" 21} 221 row in set (0.006 sec) 23mysql> SELECT JSON_PRETTY(data) FROM order_dv WHERE data->'$._id' = 2 \G 24*************************** 1. row *************************** 25JSON_PRETTY(data): { 26 "_id": 2, 27 "amount": 5.00, 28 "product": "Curd", 29 "customer": { 30 "customer_id": 1, 31 "customer_name": "Alice" 32 }, 33 "_metadata": { 34 "etag": "c73b5526988116524f005b3ae73bbea8" 35 } 36} 371 row in set (0.004 sec)
27.7 JSON Duality Views
27.7.2 DML Operations on JSON Duality Views (MySQL Enterprise Edition)