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:

CREATE SCHEMA , ALTER SCHEMA , DROP SCHEMA , SHOW SCHEMAS

Sintaxe

USE [ SCHEMA ] [<db_name>.]<name>
Copy

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;
Copy

Usar o esquema myschema no banco de dados mydb:

USE mydb.myschema;
Copy

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";
Copy
+-------------------------------+-----------+
| 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";
Copy
+-------------------------------+-----------+
| 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();
Copy

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 |
+------------+