USE DATABASE¶
Especifica o banco de dados 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 DATABASE , ALTER DATABASE , DROP DATABASE , SHOW DATABASES
Sintaxe¶
USE [ DATABASE ] <name>
Parâmetros¶
name
Especifica o identificador do banco de dados a ser utilizado 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.
Notas de uso¶
A palavra-chave DATABASE não precisa ser especificada.
USE DATABASE especifica automaticamente PUBLIC como o esquema atual, a menos que o esquema PUBLIC não exista (por exemplo, tenha sido descartado). Para especificar um esquema diferente para uma sessão, use o comando USE SCHEMA.
Exemplos¶
O exemplo a seguir especifica o banco de dados a ser usado para os comandos SQL subsequentes:
USE DATABASE mydb;
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 bancos de dados. Os esquemas, tabelas, dados de tabela e assim por diante podem diferir de um banco de dados para outro.
Quando o comando SHOW SCHEMAS é executado no contexto de database_one
, ele produz uma saída refletindo os objetos nesse banco de dados:
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 |
+-------------------------------+--------------------+
Depois de um comando USE mudar para o banco de dados database_two
, o comando SHOW SCHEMAS produzirá uma saída refletindo um conjunto diferente de objetos:
USE DATABASE database_two;
SHOW SCHEMAS ->> SELECT "created_on", "name" FROM $1 ORDER BY "created_on";
+-------------------------------+--------------------+
| 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 |
+-------------------------------+--------------------+
O exemplo a seguir muda de um banco de dados para outro e depois de volta ao banco de dados original. O nome do banco de dados original é armazenado em uma variável. Execute os seguintes comandos:
SELECT CURRENT_DATABASE();
SET original_database = (SELECT CURRENT_DATABASE());
USE DATABASE database_two;
SELECT CURRENT_DATABASE();
USE DATABASE IDENTIFIER($original_database);
SELECT CURRENT_DATABASE();
A saída desses comandos mostra como o valor atual do banco de dados muda:
>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 |
+--------------+