FMU Curso: Ciência da Computação Disciplina: Banco de Dados I Professor: Ecivaldo Matos Memória de aula Semanas 15 e 16 1) Incluindo linhas nas tabelas a. Para incluir linhas em tabelas utilize o comando INSERT INTO INSERT INTO tabela [ ( coluna [, coluna,...] ) ] VALUES ( valor [, valor,... ] ) Coluna: Lista de colunas que terão seus valores atribuídos (opcional) Valor: conteúdo que será incluído em cada coluna. Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo ) Obs.: colunas que não tiverem valores atribuídos terão conteúdo nulo. Caso queira explicitar a inclusão de um valor nulo numa determinada coluna use NULL no lugar correspondente ao valor desta coluna. 2) Incluindo várias linhas INSERT INTO tabela [ ( coluna [, coluna,...] ) ] SELECT comando-select Coluna: Lista de colunas que terão seus valores atribuídos (opcional) Comando-select: comando select que será visto na próxima aula. Exs.: INSERT INTO Estado SELECT * FROM Uf INSERT INTO tmpautor (CDAUTOR, NMAUTOR) SELECT CDAUTOR, NMAUTOR from AUTOR Página 1 de 6
3) Alteração de dados UPDATE tabela SET coluna = valor [, coluna = valor,...] [WHERE condição] Coluna: Lista de colunas que terão seus valores atribuídos (opcional) Valor: novo conteúdo para a coluna. Condição: condição que indicará o limite de atualização das linhas. Ex.: UPDATE CD SET PRECO_VENDA = 15 WHERE CODIGO_CD = 1; UPDATE CD SET PRECO_VENDA = PRECO_VENDA * 1,05 WHERE CODIGO_GRAVADORA = 2; 4) Exclusão de dados DELETE FROM tabela [WHERE condição] Condição: condição que indicará o limite de atualização das linhas. Ex.: DELETE FROM AUTOR WHERE CDAUTOR = 1 5) Cláusulas SELECT e FROM a. Apesar de ser a primeira, ela é a última instrução a ser executada!!! b. Antes de poder determinar o que incluir no conjunto-resultado final, é necessário conhecer todas as colunas que podem ser incluídas nele. c. Para isso, será necessário conhecer um pouco a cláusula FROM d. A cláusula FROM indica a(s) tabelas(s) que participarão do conjunto-resultado da consulta. e. Por exemplo: i. Mostre todas as colunas e todas as linhas da tabela cliente: SELECT * FROM cliente Página 2 de 6
f. Vocês podem selecionar todos os campos indicando-os, ou seja, sem usar * (boa prática) g. Muito relevante na manutenção de BD e de aplicações. SELECT codcliente,nome,cpf,datacadastro,cidade,uf,pais FROM cliente h. Além de selecionar todas as colunas, você pode indicar quais colunas (subconjunto): SELECT codcliente,nome,cpf FROM cliente 6) Cláusula DISTINCT a. Remove possíveis linhas duplicadas no resultado i. Exemplo: Select distinct nomecliente from cliente 7) Cláusula WHERE a. Mecanismo de filtragem de linhas indesejáveis de seu conjunto-resultado. Ex.: Select e.cod_emp, e.nome, e.sobrenome, e.dt_contr, e.cargo From empregado as e Where (e.cargo like analista% or e.cod_emp >= 41) and e.dt_contr > 04-23- 2010 Obs.: lembre-se que atributos do tipo datetime guardam data e hora, inclusive com segundos, como 04-23-2010 01:05:00. Quando não for especificado as horas, minutos e segundos, será considerado 00:00:00. Logo a expressão e.dt_contr > 04-23-2010 permite retornar todos registros desta data. Operadores de comparação: like: valores aproximados para alfanuméricos, geralmente utilizado em conjunto com %, que indica qualquer coisa. O coringa _ indica um caracter, [a-f] indica um caracter entre a e f quaisquer, e [^a-f] indica um caracter que não esteja entre a e f quaisquer. >, <, >=, <=, =, <> (diferente) 8) Junção a. Ideia similar à Junção da Álgebra Relacional Página 3 de 6
b. Produto Cartesiano preco as P, loja as L ou preco as P cross join loja as L i. Filtro ruim: preco as P, loja as L where P.codloja = L.codloja ii. Filtro correto: JOIN c. Junções internas i. Ex.: (junção interna é o join padrão) preco as P join loja as L ii. Explicitando que a junção é interna preco as P inner join loja as L d. Junções externas (outer join) i. Right outer join ii. Left outer join iii. Full outer join select nomeloja, codproduto, valor from preco as P left outer join loja as L select nomeloja, codproduto, valor Página 4 de 6
from preco as P full outer join loja as L Bibliografia ELMASRI, R., NAVATHE, S.B. Sistemas de Banco de Dados. 4ª Ed. São Paulo: Pearson Makron Books, 2005. Página 5 de 6
Exercícios Esquema Relacional Exemplo Ambulatórios(número, andar, capacidade) Médicos(CRM, RG, nome, idade, cidade, especialidade, número) Pacientes(RG, nome, idade, cidade, doença) Consultas(CRM, RG, data, hora) Funcionários(RG, nome, idade, cidade, salário) 1) buscar os dados de todos os médicos e, para aqueles que têm consultas marcadas, mostrar os dados de suas consultas 2) buscar os números de todos os ambulatórios e, para aqueles ambulatórios nos quais médicos dão atendimento, exibir o CRM e o nome dos médicos associados 3) mostrar em uma relação o RG e nome de todos os pacientes e de todos os médicos, apresentando estes dados de forma relacionada para aqueles que possuem consultas marcadas 4) a médica Maria (CRM = 37) transferiu todas as suas consultas do dia 29/04/10 para o dia 08/05/10 5) buscar o nome dos médicos que têm consultas marcadas 6) buscar o número e a capacidade dos ambulatórios do quinto andar e o nome dos médicos que atendem neles 7) buscar os nomes dos pacientes que são crianças (0-12 anos) e têm consulta marcada ou com médico João Santos ou com a médica Maria Souza 8) buscar o número e o andar dos ambulatórios onde nenhum médico dá atendimento 9) buscar o nome e o RG dos pacientes que residem na mesma cidade do paciente Pedro Campos (RG = 1110) 10) buscar o número dos ambulatórios com capacidade superior à capacidade do ambulatório de número 100 11) buscar o nome e o RG dos funcionários que recebem salários iguais ou inferiores ao salário da funcionária Ana (RG = 1001) 12) remover os ambulatórios onde nenhum médico dá atendimento Página 6 de 6