USE DATABASE

Spécifie la base de données active/courante de la session :

  • Si une base de données n’est pas spécifiée pour une session, tous les objets référencés dans les requêtes et autres instructions SQL exécutées dans la session doivent être entièrement qualifiés avec la base de données et le schéma, aussi connus sous le nom espaces de noms, pour l’objet (sous la forme db_name.schema_name.object_name). Pour plus d’informations sur les noms d’objets entièrement qualifiés, voir Résolution de nom d’objet.

  • Si une base de données est spécifiée pour une session mais que le schéma n’est pas spécifié pour une session, tous les objets référencés dans les requêtes et les autres instructions SQL exécutées dans la session doivent être qualifiés avec le schéma de l’objet (sous la forme schema_name.object_name).

  • Si la base de données et le schéma sont spécifiés pour une session utilisateur, les noms d’objet non qualifiés sont autorisés dans les requêtes et les instructions SQL.

Voir aussi :

CREATE DATABASE , ALTER DATABASE , DROP DATABASE , SHOW DATABASES

Syntaxe

USE [ DATABASE ] <name>
Copy

Paramètres

name

Spécifie l’identificateur de la base de données à utiliser pour la session. Si l’identificateur contient des espaces ou des caractères spéciaux, toute la chaîne doit être délimitée par des guillemets doubles. Les identificateurs entre guillemets doubles sont également sensibles à la casse.

Notes sur l’utilisation

  • Le mot clé DATABASE n’a pas besoin d’être spécifié.

  • USE DATABASE spécifie automatiquement PUBLIC comme le schéma courant, à moins que le schéma PUBLIC n’existe pas (par exemple, il a été détruit). Pour spécifier un schéma différent pour une session, utilisez la commande USE SCHEMA.

Exemples

L’exemple suivant spécifie la base de données à utiliser pour les commandes SQL suivantes :

USE DATABASE mydb;
Copy

L’exemple suivant montre comment les commandes qui font référence à des objets utilisant des noms non complets produisent une sortie différente après une commande USE pour changer de base de données. Les schémas, les tables, les données de table, etc. peuvent différer d’une base de données à l’autre.

Lorsque la commande SHOW SCHEMAS est exécutée dans le contexte de database_one, elle produit une sortie reflétant les objets de cette base de données :

USE DATABASE database_one;
SHOW SCHEMAS ->> SELECT "created_on", "name" FROM $1 ORDER BY "created_on";

+-------------------------------+--------------------+
| 2025-07-11 14:34:24.386 -0700 | PUBLIC             |
| 2025-07-11 14:42:23.509 -0700 | TEST_SCHEMA        |
| 2025-07-11 14:42:29.158 -0700 | STAGING_SCHEMA     |
| 2025-07-11 14:45:43.124 -0700 | INFORMATION_SCHEMA |
+-------------------------------+--------------------+
Copy

Après qu’une commande USE passe à la base de données database_two, la commande SHOW SCHEMAS produit une sortie reflétant un ensemble différent d’objets :

USE DATABASE database_two;
SHOW SCHEMAS ->> SELECT "created_on", "name" FROM $1 ORDER BY "created_on";
Copy
+-------------------------------+--------------------+
| 2025-07-11 14:34:31.496 -0700 | PUBLIC             |
| 2025-07-11 14:43:04.394 -0700 | PRODUCTION_SCHEMA  |
| 2025-07-11 14:44:23.006 -0700 | DASHBOARDS_SCHEMA  |
| 2025-07-11 14:45:54.372 -0700 | INFORMATION_SCHEMA |
+-------------------------------+--------------------+

L’exemple suivant passe d’une base de données à une autre, puis revient à la base de données d’origine. Le nom de la base de données d’origine est stocké dans une variable. Exécutez les commandes suivantes :

SELECT CURRENT_DATABASE();
SET original_database = (SELECT CURRENT_DATABASE());
USE DATABASE database_two;
SELECT CURRENT_DATABASE();
USE DATABASE IDENTIFIER($original_database);
SELECT CURRENT_DATABASE();
Copy

La sortie de ces commandes montre comment la valeur actuelle de la base de données change :

>SELECT CURRENT_DATABASE();
+--------------+
| DATABASE_ONE |
+--------------+

>SET original_database = (SELECT CURRENT_DATABASE());

>USE DATABASE database_two;
>SELECT CURRENT_DATABASE();
+--------------+
| DATABASE_TWO |
+--------------+

>USE DATABASE IDENTIFIER($original_database);
>SELECT CURRENT_DATABASE();
+--------------+
| DATABASE_ONE |
+--------------+