Documentation Home
MySQL 8.0 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 36.1Mb
PDF (A4) - 36.2Mb


このページは機械翻訳したものです。

20.4.5 テーブル内のドキュメント

MySQL では、テーブルに従来のリレーショナルデータまたは JSON 値 (あるいはその両方) が含まれる場合があります。 ネイティブ JSON データ型を持つカラムにドキュメントを格納することで、従来のデータを JSON ドキュメントと組み合せることができます。

このセクションの例では、world_x スキーマの city テーブルを使用します。

市区町村テーブル摘要

city テーブルには、5 つのカラム (またはフィールド) があります。

+---------------+------------+-------+-------+---------+------------------+
| 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    |                  |
+---------------+------------+-------+-------+---------+------------------+

レコードの挿入

テーブルのカラムにドキュメントを挿入するには、正しい順序で整形式の JSON ドキュメントを values() メソッドに渡します。 次の例では、情報カラムに挿入される最終値としてドキュメントが渡されます。

Press CTRL+C to copy
mysql-py> db.city.insert().values( None, "San Francisco", "USA", "California", '{"Population":830000}')

レコードの選択

式のドキュメント値を評価する検索条件を指定してクエリーを発行できます。

Press CTRL+C to copy
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)

関連情報