arquivo morto - ebrito.com.brebrito.com.br/profa-elaine/morto.pdf · arquivo morto •um elemento...
TRANSCRIPT
Arquivo Morto
• Um elemento importante em manutenção de banco de dados é o arquivo morto (tabela morta). Ele deve ser uma tabela com o mesmo formato da tabela usual (tabela ativa), que será utilizada para armazenar os registros removidos da tabela ativa.
Exemplo
• Vamos criar a tabela morto com a mesma estrutura da tabela Empregados.
• CREATE TABLE morto(codigo integer primary key,nome varchar(40) ,setor char(2),cargo char(20),salario decimal(10,2));admissao date );
• Para arquivar um registro em um arquivo morto antes de removê-lo definitivamente da tabela ativa, é necessário usar a instrução INSERT INTO anexa ao comando SELECT
• A funcionária Andréia Batista de codigo 3 pediu demissão. Antes de remover seu registro de Empregados será feita uma cópia para o arquivo morto.
INSERT INTO mortoSELECT codigo,nome,setor,cargo,salario,admissaoFROM EmpregadosWHERE codigo=3;
Obs: Não podemos usar * para todos os campos pois ocasionará erro de execução
• Após executar o comando anterior, executeSELECT * FROM morto;
• Agora que o registro foi inserido na tabela morto ele pode ser removido da tabela Empregados.
DELETE FROM Empregados WHERE codigo=3
União de dados
• O recurso de união de dados baseia-se na união de mais de uma consulta em uma única consulta por meio de múltiplos comandos SELECT.
• Esse recurso é utilizado com os operadores UNION ou UNION ALL
• ALL representa todos os registros (independente de duplicação). Se ALL for omitido, o comando UNION assume como padrão o valor DISTINCT.
EXEMPLO• Vamos fazer algumas alterações na tabela Empregados,
excluindo empregados demitidos, mas antes vamos copiar seus registros para a tabela morto.
INSERT INTO mortoSELECT codigo,nome,setor,cargo,salario,admissaoFROM EmpregadosWHERE codigo=7;
Faça o mesmo para codigo 9, 25, 4, 2, 5, 15Agora que já foram inseridos em morto podemos excluí-los de Empregados:DELETE FROM Empregados WHERE codigo=7;Faça o mesmo para codigo 9, 25, 4, 2, 5, 15
EXEMPLO
• A titulo de verificação execute as instruções• SELECT * FROM Empregados;• SELECT * FROM morto;• Agora podemos fazer uma demonstração do
operador UNION, que permite o uso de consultas compostas que podem ser formadas por dois ou mais comandos do tipo SELECT.
• Para que o operador UNION funcione corretamente cada SELECT deve possuir o mesmo número de colunas e na mesma ordem e com mesmos tipos de dados.
EXEMPLO
• Para ver todos os empregados que trabalham ou trabalharam na empresa podemos executar a seguinte sintaxe:
SELECT * FROM Empregados UNION SELECT * FROM morto;Se quiser ver em ordem alfabética é necessário usar parenteses como indicado a seguir:(SELECT * FROM Empregados ORDER BY nome)UNION (SELECT * FROM morto ORDER BY nome)ORDER BY nome;
EXERCÍCIOS
• Listar todos os empregados que trabalham ou trabalharam no setor 5 em ordem alfabética pelo campo nome