Vamos explorar como funcionam as tabelas temporárias no MariaDB. Primeiro, temos que nos conectar ao servidor. Por exemplo (use seus próprios detalhes de conexão):
mariadb -h 127.0.0.1 -u root -p"RootPassword!" --database demo
Agora, só para ressaltar algo, vamos criar uma tabela padrão (permanente). Veja como:
CREATE TABLE t ( c INT );
Esta tabela, t
, persistirá no banco de dados mesmo depois de sairmos do cliente:
exit
Quando reconectamos e verificamos as tabelas existentes usando SHOW TABLES;
, a tabela t
ainda estará listada:
mariadb -h 127.0.0.1 -u root -p"RootPassword!" --database demo
SHOW TABLES;
+----------------+ | Tables_in_demo | +----------------+ | t | +----------------+
Tudo isso é bastante óbvio, mas agora vamos recriar esta tabela e tentar algo diferente:
CREATE OR REPLACE TEMPORARY TABLE t ( c INT );
Observe a palavra-chave TEMPORARY
. Após criar esta tabela, se executarmos SHOW TABLES;
, ele aparece na lista. Podemos inserir dados nele, consultá-los e juntá-los a outras tabelas. Ela se comporta como uma tabela normal durante a sessão atual. Porém, se sairmos do cliente, reconecte e execute SHOW TABLES;
novamente, a tabela temporária t
não será listada.
Uma tabela temporária existe apenas durante a sessão em que foi criada e outras sessões não poderão vê-la.
As tabelas temporárias são bastante úteis para operações de dados transitórias. Por exemplo, considere uma tabela chamada products
em nosso banco de dados:
CREATE TABLE products ( id INT NOT NULL AUTO_INCREMENT, code VARCHAR(100) NOT NULL, name VARCHAR(250) NOT NULL, description TEXT DEFAULT NULL, PRIMARY KEY (id), UNIQUE KEY code (code) )
Podemos criar uma tabela temporária que imite a estrutura dos products
:
CREATE TEMPORARY TABLE t LIKE products;
Podemos confirmar isso executando:
DESCRIBE t;
+-------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | code | varchar(100) | NO | UNI | NULL | | | name | varchar(250) | NO | | NULL | | | description | text | YES | | NULL | | +-------------+--------------+------+-----+---------+----------------+
Inicialmente, t
estará vazio. No entanto, suponha que queiramos transferir alguns dados de products
para t
. Vamos supor que queremos incluir apenas produtos que contenham o número 0 em seu código:
INSERT INTO t SELECT * FROM products WHERE code LIKE '%0%';
Depois de executar este comando, se consultarmos a tabela temporária t
:
SELECT * FROM t;
+----+--------+------------------+---------------------------------------------------+ | id | code | name | description | +----+--------+------------------+---------------------------------------------------+ | 1 | BG2024 | BugBlaster | Eradicates software bugs with a single scan. | | 3 | FW001 | FireWhale | An oversized, comprehensive firewall solution. | | 4 | CLD404 | CloudNine Finder | Find your way back from cloud outages and errors. | +----+--------+------------------+---------------------------------------------------+
Vemos os dados filtrados.
As tabelas temporárias oferecem uma maneira poderosa de lidar com dados para processamento temporário sem afetar o armazenamento de dados persistente. Eles são particularmente úteis em cenários onde os dados precisam ser manipulados ou transformados temporariamente. Você pode usar tabelas permanentes para esse tipo de manipulação de dados, mas as tabelas temporárias são úteis quando você precisa de limpeza automática, risco reduzido de conflitos de nomenclatura, isolamento e segurança e gerenciamento de recursos para desempenho de consulta.