22.4.5 Документы в таблицах
В MySQL таблица может содержать традиционные реляционные данные, значения JSON или оба типа. Можно объединить традиционные данные с JSON-документами, сохраняя документы в столбцах с родным типом данных JSON.
Примеры в этом разделе используют таблицу city в схеме world_x.
Описание таблицы city
Таблица city имеет пять столбцов (или полей).
+---------------+------------+-------+-------+---------+------------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+------------+-------+-------+---------+------------------+
| ID | int(11) | NO | PRI | null | auto_increment |
| Name | char(35) | NO | | | |
| CountryCode | char(3) | NO | | | |
| District | char(20) | NO | | | |
| Info | json | YES | | null | |
+---------------+------------+-------+-------+---------+------------------+
Вставка записи
Чтобы вставить документ в столбец таблицы, передайте методу values() правильно сформированный JSON-документ в нужном порядке. В приведенном ниже примере документ передается как последнее значение для вставки в столбец Info.
mysql-py> db.city.insert().values(
None, "San Francisco", "USA", "California", '{"Population":830000}')
Выбор записи
Можно выполнить запрос с условием поиска, которое оценивает значения документов в выражении.
mysql-py> db.city.select(["ID", "Name", "CountryCode", "District", "Info"]).where(
"CountryCode = :country and Info->'$.Population' > 1000000").bind(
'country', 'USA')
+------+----------------+-------------+----------------+-----------------------------+
| ID | Name | CountryCode | District | Info |
+------+----------------+-------------+----------------+-----------------------------+
| 3793 | New York | USA | New York | {"Population": 8008278} |
| 3794 | Los Angeles | USA | California | {"Population": 3694820} |
| 3795 | Chicago | USA | Illinois | {"Population": 2896016} |
| 3796 | Houston | USA | Texas | {"Population": 1953631} |
| 3797 | Philadelphia | USA | Pennsylvania | {"Population": 1517550} |
| 3798 | Phoenix | USA | Arizona | {"Population": 1321045} |
| 3799 | San Diego | USA | California | {"Population": 1223400} |
| 3800 | Dallas | USA | Texas | {"Population": 1188580} |
| 3801 | San Antonio | USA | Texas | {"Population": 1144646} |
+------+----------------+-------------+----------------+-----------------------------+
9 rows in set (0.01 sec)
Связанная информация
Для получения дополнительной информации см.
Подробное описание типа данных см. в Разделе 13.5, «Тип данных JSON».
© 2025 Oracle
Licensed under the GPLv2 License.