USE SCHEMA¶
Especifica o esquema ativo/atual para a sessão.
Se um banco de dados não for especificado para uma sessão, todos os objetos referenciados em consultas e outras instruções SQL executadas na sessão deverão ser totalmente qualificados com o banco de dados e o esquema, também conhecido como namespace, para o objeto (no formato de
db_name.schema_name.object_name
). Para obter mais informações sobre nomes de objetos totalmente qualificados, consulte Resolução de nome de objeto.Se um banco de dados for especificado para uma sessão, mas o esquema não for especificado para uma sessão, todos os objetos referenciados em consultas e outras instruções SQL executadas na sessão deverão ser qualificados com o esquema do objeto (no formato de
schema_name.object_name
).Se o banco de dados e o esquema forem especificados para uma sessão de usuário, nomes de objeto não qualificados serão permitidos em instruções e consultas SQL.
- Consulte também:
Sintaxe¶
USE [ SCHEMA ] [<db_name>.]<name>
Parâmetros¶
[db_name.]name
Especifica o identificador do esquema a ser usado para a sessão. Se o identificador contiver espaços ou caracteres especiais, toda a cadeia de caracteres deverá ser delimitada por aspas duplas. Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.
A palavra-chave SCHEMA é opcional se o nome do esquema for totalmente qualificado (no formato
db_name.schema_name
).O nome do banco de dados (
db_name
) é opcional se o banco de dados for especificado na sessão do usuário e a palavra-chave SCHEMA for incluída.
Exemplos¶
Use o esquema myschema
com o banco de dados especificado na sessão do usuário:
USE SCHEMA myschema;
Usar o esquema myschema
no banco de dados mydb
:
USE mydb.myschema;
O exemplo a seguir mostra como comandos que se referem a objetos usando nomes não qualificados produzem saídas diferentes após um comando USE para trocar de esquemas. As tabelas, dados de tabela, exibições, funções definidas pelo usuário e assim por diante podem diferir de um esquema para outro.
Quando o comando SHOW TABLES é executado no contexto de schema_one
, ele produz uma saída refletindo os objetos nesse esquema:
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 |
+-------------------------------+-----------+
Depois de um comando USE mudar para o esquema schema_two
, o comando SHOW TABLES produzirá uma saída refletindo um conjunto diferente de objetos:
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 |
+-------------------------------+-----------+
O exemplo a seguir muda de um esquema para outro e depois de volta ao esquema original. O nome do esquema original é armazenado em uma variável. Execute os seguintes comandos:
SELECT CURRENT_SCHEMA();
SET original_schema = (SELECT CURRENT_SCHEMA());
USE SCHEMA schema_two;
SELECT CURRENT_SCHEMA();
USE SCHEMA IDENTIFIER($original_schema);
SELECT CURRENT_SCHEMA();
A saída desses comandos mostra como o valor do esquema atual muda:
>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 |
+------------+