Como criar tabelas temporárias no MySQL

O uso de uma tabela temporária no MySQL, permite realizar testes ou serviços em uma entidade transitória, sem se preocupar em limpar a sujeira depois.
Ao desconectar-se do servidor, as tabelas temporárias são automaticamente descartadas.
Captur de tela - mysql create temporary table

Quando é útil usar tabelas temporárias no MySQL

Algumas operações requerem que a existência de algumas informações seja curta — e que elas sejam removidas, quando não mais forem necessárias.
A parte da remoção pode ser feita automaticamente pelo MySQL.
Você não precisa se lembrar de apagar uma tabela, que não tem mais serventia, com o comando DROP TABLE.
Para isto, basta criar uma tabela, com a opção TEMPORARY, assim: CREATE TABLE TEMPORARY Nome_da_tabela.
Este assunto foi abordado en passant no artigo Como criar tabelas no MySQL. Vamos procurar nos aprofundar um pouco mais neste assunto, aqui.

Como criar tabelas temporárias no MySQL

Você pode criar tabelas temporárias, mais ou menos, da mesma forma que cria as normais. Só que vai acrescentar a opção TEMPORARY.
Se eu quiser criar uma tabela temporária com o nome de ClientesCidadesTemp a partir da tabela ClientesCidades, uso o seguinte comando:

CREATE TEMPORARY TABLE ClientesCidadesTemp SELECT * FROM ClientesCidades;
Query OK, 200 rows affected (0.27 sec)
Records: 200  Duplicates: 0  Warnings: 0

Use o comando EXPLAIN para verificar a nova tabela temporária:

EXPLAIN ClientesCidadesTemp;
+---------------+-----------------------+------+-----+---------+-------+
| Field         | Type                  | Null | Key | Default | Extra |
+---------------+-----------------------+------+-----+---------+-------+
| id            | mediumint(8) unsigned | NO   |     | 0       |       |
| NomeCliente   | varchar(255)          | YES  |     | NULL    |       |
| IdadeCliente  | mediumint(9)          | YES  |     | NULL    |       |
| CidadeCliente | varchar(255)          | YES  |     | NULL    |       |
| CredCliente   | mediumint(9)          | YES  |     | NULL    |       |
+---------------+-----------------------+------+-----+---------+-------+
5 rows in set (0.03 sec)

Entenda melhor as tabelas temporárias

Se há vantagens em usar tabelas temporárias, por outro lado, há algumas características às quais você precisa estar atento:

  • Se você quiser reusar uma tabela temporária, dentro da mesma sessão, vai precisar removê-la, antes. Tentar criar uma segunda tabela com o mesmo nome da primeira, temporária, vai resultar em erro, caso ela não tenha sido apagada.
  • Uma das propriedades das tabelas temporárias permite que possam ser criadas com o mesmo nome de uma outra tabela permanente e preexistente.
    Neste caso, a tabela permanente fica “escondida”, durante a sessão ou enquanto a temporária ainda existir.
    Isto pode ser útil para criar e testar queries, usando o nome de uma tabela existente, sem afetá-la.
  • Algumas APIs, suportam conexões persistentes em um ambiente web. O seu uso previne que as tabelas temporárias expirem, como já é de esperar, ao fim do script — e possam continuar a ser usadas por outros scripts.
  • O MySQL é um ambiente de servidor de banco de dados com capacidade para atender a múltiplos clientes, cada qual com sua sessão.
    Desta forma, é possível que cada cliente tenha aberto uma tabela temporária. E nada impede que elas tenham os mesmos nomes — cada qual na sua sessão.
  • Há vários outros cuidados a serem tomados, quando estamos lidando com um ambiente de tabelas temporárias.
    Se o seu script cria e modifica tabelas temporárias que “escondem” tabelas permanentes com o mesmo nome, é necessário criar rotinas que verifiquem e testem se você ainda está trabalhando na tabela temporária, como esperado.
    Se um dos programas cliente fizer uma reconexão, após uma queda, você poderá alterar uma tabela permanente, em vez de uma temporária.

Referências:
Leia mais sobre como fazer conexões (persistentes) a um servidor MySQL a partir de um script PHP.

Como criar novo usuário no MySQL

Neste post, vou mostrar algumas formas de criar um novo usuário no servidor de banco de dados MySQL e como acessar o sistema através dele.
É interessante conhecer e saber usar o sofisticado sistema de gestão de usuários, do MySQL, que controla quem pode acessar e de onde pode fazê-lo.
Uma vez que é uma atividade administrativa, de superusuário, você precisa ter acesso ao root para realizar os procedimentos descritos aqui e usar o comando GRANT do SQL para ajustar privilégios dos usuários criados – e, só pra lembrar, quando falamos em root no MySQL, não estamos nos referindo ao root no Linux. Cada um no seu quadrado.

Como atribuir uma senha à sua conta administrativa

Se foi você quem instalou o sistema, provavelmente já configurou detalhes como a senha do root.
Para atribuir uma senha nova (pela primeira vez) à sua conta root, use o mysqladmin, no terminal:

mysqladmin -u root password NOVASENHA

Se for o caso de alterar uma senha preexistente, use o comando como segue – por exemplo, vamos trocar a senha de uruguay para brasil:

mysqladmin -u root -puruguay password brasil

Sim. A senha deve ficar “grudada” à opção -p.

LEIA MAIS

Como criar uma conta de usuário no MySQL

No tópico anterior, nos certificamos de ter condições de entrar na conta administrativa do MySQL, root. Agora vamos entrar, no banco de dados, para iniciar o procedimento de criar contas para outros usuários.
Entre no MySQL, usando a senha root, já cadastrada:

mysql -u root -p

ou

mysql -u root -h localhost -p

Crie um novo banco de dados MySQL chamado exemplo:

CREATE DATABASE exemplo;

Entre no banco de dados, com o comando USE:

USE exemplo;

Agora crie, com o comando GRANT um usuário chamado papaleguas, com todos os privilégios sobre o banco de dados exemplo — troque a senha minhasenha pela que mais lhe convier:

GRANT ALL ON exemplo.* TO papaleguas@localhost IDENTIFIED BY 'minhasenha';

Como conectar ao banco de dados MySQL usando a minha nova conta de usuário

Para entrar no MySQL, usando uma conta de usuário comum, como a que foi criada no tópico anterior, já fazendo uso do banco de dados exemplo, use o seguinte procedimento:
Se estiver dentro do MySQL, use o comando QUIT, para sair:

QUIT;

Em seguida, na linha de comando…

mysql -u papaleguas -p exemplo

ou

mysql -u papaleguas -h localhost -p exemplo

onde,

  • -u papaleguas — é o nome do usuário MySQL;
  • -h localhost — é o nome do servidor local, onde se encontra instalado o MySQL – você deve sempre alterar estas variáveis para atender as suas condições;
  • -p — quando esta opção é fornecida sem a senha (grudadinha), o sistema a pedirá antes de entrar;
  • exemplo — ao fornecer o nome de um banco de dados, antes de entrar, o sistema já se conecta a ele após a autenticação. Isto é opcional. Você pode escolher o banco de dados que deseja usar, depois de entrar no MySQL

Espero ter conseguido sanar suas dúvidas com esta explicação.
Quer ler mais sobre MySQL? Então, use o sistema de busca do site!