> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-trino-dialect.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> リモートの MySQL サーバー上のデータベースに接続し、ClickHouse と MySQL の間でデータをやり取りするための `INSERT` および `SELECT` クエリを実行できます。

# MySQL

export const CloudNotSupportedBadge = () => {
  return <a href="https://clickhouse.com/docs/products/cloud/guides/cloud-compatibility#list-of-unsupported-features" className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            ClickHouse Cloud ではサポートされていません
        </a>;
};

<CloudNotSupportedBadge />

リモートの MySQL サーバー上のデータベースに接続し、ClickHouse と MySQL の間でデータをやり取りするための `INSERT` および `SELECT` クエリを実行できます。

`MySQL` データベースエンジンはクエリを MySQL サーバー向けに変換するため、`SHOW TABLES` や `SHOW CREATE TABLE` などの操作を実行できます。

次のクエリは実行できません。

* `RENAME`
* `CREATE TABLE`
* `ALTER`

<div id="creating-a-database">
  ## データベースの作成
</div>

```sql theme={null}
CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster]
ENGINE = MySQL('host:port', ['database' | database], 'user', 'password')
[SETTINGS enable_compression=0]
```

**エンジンパラメータ**

* `host:port` — MySQL サーバーのアドレス。
* `database` — リモートデータベースの名前。
* `user` — MySQL のユーザー名。
* `password` — ユーザーのパスワード。

**設定**

<div id="enable-compression">
  ### `enable_compression`
</div>

MySQLプロトコルの接続で zlib 圧縮を有効にします。`1` に設定すると、ClickHouse は MySQLサーバーに対してプロトコルレベルの圧縮を要求します。

デフォルト値: `0`。

例:

```sql theme={null}
CREATE DATABASE mysql_db
ENGINE = MySQL('localhost:3306', 'test', 'my_user', 'user_password')
SETTINGS enable_compression = 1;
```

<div id="tls-ssl">
  ## TLS/SSL
</div>

MySQL への暗号化接続の認証情報は、[named collection](/ja/concepts/features/configuration/server-config/named-collections) のキー (またはキー・バリュー引数) として渡されます。

| パラメータ          | 説明                               |
| -------------- | -------------------------------- |
| `ssl_ca_pem`   | MySQL サーバー証明書の検証に使用する CA 証明書の内容。 |
| `ssl_cert_pem` | 証明書ベース認証に使用するクライアント証明書の内容。       |
| `ssl_key_pem`  | `ssl_cert_pem` に対応する秘密鍵の内容。      |

値には対応する PEM ファイルの内容を指定します。これらは named collection またはクエリにコピーできます。パスワードと同様に、ログおよび `SHOW` クエリではマスクされます。

同じ認証情報は、サーバー上のファイルへのパスとして `ssl_ca`、`ssl_cert`、`ssl_key` に指定することもできます。ただし、**サーバー設定ファイルで定義された named collection 内でのみ**指定でき、このような値はクエリでオーバーライドできません。サーバーは自身の権限でこれらのファイルを開くため、SQL からパスを受け入れると、MySQL ログソースを定義できるユーザーであれば誰でもローカルファイルシステムを調べ、自身に読み取り権限のない証明書と秘密鍵を使って認証できるようになります。

<a id="data_types-support" />

<div id="data-types-support">
  ## 対応するデータ型
</div>

| MySQL                            | ClickHouse                                                      |
| -------------------------------- | --------------------------------------------------------------- |
| UNSIGNED TINYINT                 | [UInt8](/ja/reference/data-types/int-uint)                      |
| TINYINT                          | [Int8](/ja/reference/data-types/int-uint)                       |
| UNSIGNED SMALLINT                | [UInt16](/ja/reference/data-types/int-uint)                     |
| SMALLINT                         | [Int16](/ja/reference/data-types/int-uint)                      |
| UNSIGNED INT, UNSIGNED MEDIUMINT | [UInt32](/ja/reference/data-types/int-uint)                     |
| INT, MEDIUMINT                   | [Int32](/ja/reference/data-types/int-uint)                      |
| UNSIGNED BIGINT                  | [UInt64](/ja/reference/data-types/int-uint)                     |
| BIGINT                           | [Int64](/ja/reference/data-types/int-uint)                      |
| FLOAT                            | [Float32](/ja/reference/data-types/float)                       |
| DOUBLE                           | [Float64](/ja/reference/data-types/float)                       |
| DATE                             | [Date](/ja/reference/data-types/date)                           |
| DATETIME, TIMESTAMP              | [DateTime](/ja/reference/data-types/datetime)                   |
| BINARY                           | [FixedString](/ja/reference/data-types/fixedstring)             |
| POINT                            | [Point](/ja/reference/data-types/geo#point)                     |
| LINESTRING                       | [LineString](/ja/reference/data-types/geo#linestring)           |
| POLYGON                          | [Polygon](/ja/reference/data-types/geo#polygon)                 |
| MULTILINESTRING                  | [MultiLineString](/ja/reference/data-types/geo#multilinestring) |
| MULTIPOLYGON                     | [MultiPolygon](/ja/reference/data-types/geo#multipolygon)       |
| MULTIPOINT                       | [MultiPoint](/ja/reference/data-types/geo#multipoint)           |
| GEOMETRY                         | [Geometry](/ja/reference/data-types/geo#geometry)               |

空間型の変換 (常に変換される `POINT` を除く) は、デフォルトで有効になっている [`mysql_datatypes_support_level`](/ja/reference/settings/session-settings/mysql#mysql_datatypes_support_level) 設定の `geometry` フラグで制御されます。汎用的な `GEOMETRY` カラム型は、具体的なジオメトリ型の `Variant` である包括的な [`Geometry`](/ja/reference/data-types/geo#geometry) 型にマッピングされます。このようなカラムには任意のサブタイプの値を格納できるため、ClickHouse に対応する型がないサブタイプ (`GEOMETRYCOLLECTION`) の値を読み取ると、読み取り時に例外が発生します。適切なジオメトリ型を使用するため、この非互換性は許容されています。`GEOMETRYCOLLECTION` 型で宣言されたカラムは、他のすべての MySQL データ型と同様に、[String](/ja/reference/data-types/string) に変換されます。

[Nullable](/ja/reference/data-types/nullable) もサポートされています。空間カラムは、次の 3 つの場合、ジオメトリ型ではなく `String` (nullable の場合は `Nullable(String)`) にマッピングされます。`GEOMETRYCOLLECTION` として宣言されている場合、`geometry` フラグが無効で型が `POINT` ではない場合、または `Point` は `Nullable` 内にネストできる唯一のジオメトリ型であるため、カラムが nullable で型が `POINT` ではない場合です。いずれの場合も、文字列には MySQL が返す値がそのまま格納されます。つまり、4 バイトの SRID プレフィックスの後に WKB ペイロードが続くため、WKB デコーダに渡す前に先頭の 4 バイトを取り除いてください。

<div id="global-variables-support">
  ## グローバル変数のサポート
</div>

互換性を高めるため、MySQL スタイルで `@@identifier` としてグローバル変数を参照できます。

サポートされている変数は次のとおりです。

* `version`
* `max_allowed_packet`

<Note>
  現時点では、これらの変数はダミーであり、実際には何にも対応していません。
</Note>

例:

```sql theme={null}
SELECT @@version;
```

<div id="examples-of-use">
  ## 使用例
</div>

MySQLのテーブル:

```text theme={null}
mysql> USE test;
Database changed

mysql> CREATE TABLE `mysql_table` (
    ->   `int_id` INT NOT NULL AUTO_INCREMENT,
    ->   `float` FLOAT NOT NULL,
    ->   PRIMARY KEY (`int_id`));
Query OK, 0 rows affected (0,09 sec)

mysql> insert into mysql_table (`int_id`, `float`) VALUES (1,2);
Query OK, 1 row affected (0,00 sec)

mysql> select * from mysql_table;
+------+-----+
| int_id | value |
+------+-----+
|      1 |     2 |
+------+-----+
1 row in set (0,00 sec)
```

MySQLサーバーとデータをやり取りする ClickHouse 内のデータベース:

```sql theme={null}
CREATE DATABASE mysql_db ENGINE = MySQL('localhost:3306', 'test', 'my_user', 'user_password') SETTINGS read_write_timeout=10000, connect_timeout=100;
```

```sql theme={null}
SHOW DATABASES
```

```text theme={null}
┌─name─────┐
│ default  │
│ mysql_db │
│ system   │
└──────────┘
```

```sql theme={null}
SHOW TABLES FROM mysql_db
```

```text theme={null}
┌─name─────────┐
│  mysql_table │
└──────────────┘
```

```sql theme={null}
SELECT * FROM mysql_db.mysql_table
```

```text theme={null}
┌─int_id─┬─value─┐
│      1 │     2 │
└────────┴───────┘
```

```sql theme={null}
INSERT INTO mysql_db.mysql_table VALUES (3,4)
```

```sql theme={null}
SELECT * FROM mysql_db.mysql_table
```

```text theme={null}
┌─int_id─┬─value─┐
│      1 │     2 │
│      3 │     4 │
└────────┴───────┘
```
