USE SCHEMA¶
Spécifie le schéma actif/actuel 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 :
Syntaxe¶
USE [ SCHEMA ] [<db_name>.]<name>
Paramètres¶
[db_name.]name
Spécifie l’identificateur du schéma à 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.
Le mot-clé SCHEMA est facultatif si le nom du schéma est entièrement qualifié (sous la forme de
db_name.schema_name
).Le nom de la base de données (
db_name
) est facultatif si la base de données est spécifiée dans la session utilisateur et que le mot-clé SCHEMA est inclus.
Exemples¶
Utilisez le schéma myschema
avec la base de données spécifiée dans la session utilisateur :
USE SCHEMA myschema;
Utiliser le schéma myschema
dans la base de données mydb
:
USE mydb.myschema;
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 schéma. Les tables, les données de table, les vues, les fonctions définies par l’utilisateur, etc. peuvent différer d’un schéma à l’autre.
Lorsque la commande SHOW TABLES est exécutée dans le contexte de schema_one
, elle produit une sortie reflétant les objets de ce schéma :
USE SCHEMA schema_one;
SHOW TABLES ->> SELECT "created_on", "name" FROM $1 ORDER BY "created_on";
+-------------------------------+-----------+
| created_on | name |
|-------------------------------+-----------|
| 2025-07-13 23:48:49.129 -0700 | TABLE_ABC |
| 2025-07-13 23:49:50.329 -0700 | TABLE_DEF |
+-------------------------------+-----------+
Après qu’une commande USE passe au schéma schema_two
, la commande SHOW TABLES produit une sortie reflétant un ensemble différent d’objets :
USE SCHEMA schema_two;
SHOW TABLES ->> SELECT "created_on", "name" FROM $1 ORDER BY "created_on";
+-------------------------------+-----------+
| created_on | name |
|-------------------------------+-----------|
| 2025-07-13 23:52:06.144 -0700 | TABLE_IJK |
| 2025-07-13 23:53:29.851 -0700 | TABLE_XYZ |
+-------------------------------+-----------+
L’exemple suivant passe d’un schéma à un autre, puis revient au schéma d’origine. Le nom du schéma d’origine est stocké dans une variable. Exécutez les commandes suivantes :
SELECT CURRENT_SCHEMA();
SET original_schema = (SELECT CURRENT_SCHEMA());
USE SCHEMA schema_two;
SELECT CURRENT_SCHEMA();
USE SCHEMA IDENTIFIER($original_schema);
SELECT CURRENT_SCHEMA();
La sortie de ces commandes montre comment la valeur du schéma actuel change :
>SELECT CURRENT_SCHEMA();
+------------+
| SCHEMA_ONE |
+------------+
>SET original_schema = (SELECT CURRENT_SCHEMA());
>USE SCHEMA schema_two;
>SELECT CURRENT_SCHEMA();
+------------+
| SCHEMA_TWO |
+------------+
>USE SCHEMA IDENTIFIER($original_schema);
>SELECT CURRENT_SCHEMA();
+------------+
| SCHEMA_ONE |
+------------+