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

> Permet de se connecter à des bases de données sur un serveur MySQL distant et d'exécuter des requêtes `INSERT` et `SELECT` afin d'échanger des données entre ClickHouse et MySQL.

# MySQL

export const CloudNotSupportedBadge = () => {
  return <div 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>
            Non pris en charge par ClickHouse Cloud
        </div>;
};

<div id="mysql-database-engine">
  # Moteur de base de données MySQL
</div>

Permet de se connecter à des bases de données hébergées sur un serveur MySQL distant et d’exécuter des requêtes `INSERT` et `SELECT` pour échanger des données entre ClickHouse et MySQL.

Le moteur de base de données `MySQL` traduit les requêtes pour le serveur MySQL, ce qui vous permet d’effectuer des opérations telles que `SHOW TABLES` ou `SHOW CREATE TABLE`.

Vous ne pouvez pas exécuter les requêtes suivantes :

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

<div id="creating-a-database">
  ## Création d’une base de données
</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]
```

**Paramètres du moteur**

* `host:port` — Adresse du serveur MySQL.
* `database` — Nom de la base de données distante.
* `user` — Utilisateur MySQL.
* `password` — Mot de passe de l’utilisateur.

**Réglages**

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

Active la compression zlib pour la connexion via le protocole MySQL. Lorsqu’elle est définie sur `1`, ClickHouse demande au serveur MySQL une compression au niveau du protocole.

Valeur par défaut : `0`.

Exemple :

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

<div id="data_types-support">
  ## Prise en charge des types de données
</div>

| MySQL                            | ClickHouse                                          |
| -------------------------------- | --------------------------------------------------- |
| UNSIGNED TINYINT                 | [UInt8](/fr/reference/data-types/int-uint)          |
| TINYINT                          | [Int8](/fr/reference/data-types/int-uint)           |
| UNSIGNED SMALLINT                | [UInt16](/fr/reference/data-types/int-uint)         |
| SMALLINT                         | [Int16](/fr/reference/data-types/int-uint)          |
| UNSIGNED INT, UNSIGNED MEDIUMINT | [UInt32](/fr/reference/data-types/int-uint)         |
| INT, MEDIUMINT                   | [Int32](/fr/reference/data-types/int-uint)          |
| UNSIGNED BIGINT                  | [UInt64](/fr/reference/data-types/int-uint)         |
| BIGINT                           | [Int64](/fr/reference/data-types/int-uint)          |
| FLOAT                            | [Float32](/fr/reference/data-types/float)           |
| DOUBLE                           | [Float64](/fr/reference/data-types/float)           |
| DATE                             | [Date](/fr/reference/data-types/date)               |
| DATETIME, TIMESTAMP              | [DateTime](/fr/reference/data-types/datetime)       |
| BINARY                           | [FixedString](/fr/reference/data-types/fixedstring) |

Tous les autres types de données MySQL sont convertis en [String](/fr/reference/data-types/string).

[Nullable](/fr/reference/data-types/nullable) est pris en charge.

<div id="global-variables-support">
  ## Prise en charge des variables globales
</div>

Pour une meilleure compatibilité, vous pouvez référencer les variables globales dans le style MySQL, sous la forme `@@identifier`.

Ces variables sont prises en charge :

* `version`
* `max_allowed_packet`

<Note>
  À ce jour, ces variables sont des stubs et ne correspondent à rien.
</Note>

Exemple :

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

<div id="examples-of-use">
  ## Exemples d’utilisation
</div>

Table dans 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)
```

Base de données ClickHouse échangeant des données avec le serveur MySQL :

```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 │
└────────┴───────┘
```
