Tecnologia em Análise e Desenvolvimento de Sistemas Disciplina: B1SGB - Sistemas Gerenciadores de Banco de Dados Memória de aula Aula 10 1) Incluindo linhas nas tabelas a. Para incluir linhas em tabelas utilize o comando INSERT INTO INSERT INTO tabela [ ( coluna [, coluna,...] ) ] VALUES ( valor [, valor,... ] ) Tabela: nome da tabela que receberá a inclusão. 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 Tabela: nome da tabela que receberá a inclusão. 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 1
3) Alteração de dados UPDATE tabela SET coluna = valor [, coluna = valor,...] [WHERE condição] Tabela: nome da tabela que receberá a inclusã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] Tabela: nome da tabela que receberá a inclusã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: 2
SELECT * FROM cliente 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 registro desta data. 3
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) Cláusula ORDER BY Em geral os resultados de consultas não estão em nenhuma ordem específica. A cláusula order by é o mecanismo que ordena seus conjuntos-resultados usando dados de coluna brutos ou expressões baseadas em dados de coluna. Exemplos: Order by cod_vendedor Order by cod_vendedor, nomeproduto Order by cod_vendedor desc Order by cod_vendedor desc, nomeproduto asc Order by 2 Obs.: o default é ordenação ascendente, ou seja, caso não seja especificado asc ou desc, a ordenação será ascendente. 4
9) Junção a. Ideia similar à Junção da Álgebra Relacional b. Produto Cartesiano P, loja as L ou P cross join loja as L i. Filtro ruim: 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) P join loja as L on (P.codloja = L.codloja) ii. Explicitando que a junção é interna P inner join loja as L on (P.codloja = L.codloja) 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 on (P.codloja = L.codloja) 5
select nomeloja, codproduto, valor from preco as P full outer join loja as L on (P.codloja = L.codloja) Bibliografia ELMASRI, R., NAVATHE, S.B. Sistemas de Banco de Dados. 4ª Ed. São Paulo: Pearson Makron Books, 2005. EXERCÍCIO PARTE I 1. Inclua ao menos duas linhas na tabela ESTADO. 2. Inclua ao menos quatro linhas na tabela CIDADE (duas por estado). 3. Inclua ao menos cinco linhas na tabela BAIRRO. 4. Inclua ao menos três linhas na tabela VENDEDOR. 5. Inclua ao menos três linhas na tabela IMOVEL. 6. Inclua ao menos três linhas na tabela COMPRADOR. 7. Inclua ao menos três linhas na tabela OFERTA. 8. Aumente o preço de venda dos imóveis em 10%. 9. Abaixe o preço de venda dos imóveis do vendedor 1 em 5%. 10. Aumente em 5% o valor das ofertas do comprador 2. 11. Altere o endereço do comprador 3 para R. Ananás, 45 e o estado para RJ. 12. Altere a oferta do comprador 2 no imóvel 4 para 101.000. 13. Exclua a oferta do comprador 3 no imóvel 1. 14. Exclua a cidade 3 do Estado SP. 15. Inclua linhas na tabela FAIXA_IMOVEL: CDFAIXA NMFAIXA VLMINIMO VLMAXIMO 1 BAIXO 0 105000 2 MÉDIO 105001 180000 3 ALTO 180001 999999 6
PARTE II Baseando-se no Modelo de Dados implementado em laboratório, efetue as consultas abaixo. 1) Liste todos os campos e linhas da tabela BAIRRO. 2) Liste todas as linhas e os campos CDCOMPRADOR, NMCOMPRADOR e EMAIL da tabela COMPRADOR. 3) Liste todas as linhas e os campos CDVENDEDOR, NMVENDEDOR e EMAIL da tabela VENDEDOR em ordem alfabética. 4) Repita o comando anterior em ordem alfabética descrescente. 5) Liste todos os bairros do Estado de SP 6) Liste as colunas CDIMOVEL, CDVENDEDOR e VLPRECO de todos os imóveis do vendedor 2. 7) Liste as colunas CDIMOVEL, CDVENDEDOR, VLPRECO e SGESTADO dos imóveis cujo preço de venda seja inferior a 150mil e sejam do Estado do RJ. 8) Liste as colunas CDIMOVEL, CDVENDEDOR, VLPRECO e SGESTADO dos imóveis cujo preço de venda seja inferior a 150 mil ou seja do vendedor 1. 9) Liste as colunas CDIMOVEL, CDVENDEDOR, VLPRECO e SGESTADO dos imóveis cujo preço de venda seja inferior a 150 mil e o vendedor não seja 2. 10) Liste as colunas CDCOMPRADOR, NMCOMPRADOR, NMENDERECO e SGESTADO da tabela COMPRADOR em que o Estado seja nulo. 11) Liste as colunas CDVENDEDOR, NMVENDEDOR, NMENDERECO e SGESTADO da tabela VENDEDOR em que o Estado não seja nulo. 12) Liste todas as ofertas cujo valor esteja entre 100 mil e 150 mil. 13) Liste todas as ofertas cuja data da oferta esteja entre 01/02/2002 e 01/03/2002. 14) Liste todos os vendedores que comecem com a letra M. 15) Liste todos os vendedores que tenham a letra A na segunda posição do nome. 16) Liste todos os compradores que tenham a letra U em qualquer posição do endereço. 17) Liste todas as ofertas cujo imóvel seja 1 ou 2. 18) Liste todos os imóveis cujo código seja 2 ou 3 em ordem alfabética de endereço. 19) Liste todas as ofertas cujo imóvel seja 2 ou 3 e o valor da oferta seja maior que 140 mil, em ordem decrescente de data. 20) Liste todos os imóveis cujo preço de venda esteja entre 110 mil e 200 mil ou seja do vendedor 1 em ordem de área útil. 7
21) Faça uma busca que mostre CDIMOVEL, CDVENDEDOR, NMVENDEDOR e SGESTADO. 22) Faça uma busca que mostre CDCOMPRADOR, NMCOMPRADOR, CDIMOVEL e VLOFERTA. 23) Faça uma busca que mostre CDIMOVEL, VLPREÇO e NMBAIRRO, cujo código do vendedor seja 3. 24) Faça uma busca que mostre todos os imóveis que tenham ofertas cadastradas. 25) Faça uma busca que mostre todos os imóveis e ofertas mesmo que não haja ofertas cadastradas para o imóvel. 26) Faça uma busca que mostre os compradores e as respectivas ofertas realizadas por eles. 27) Faça a mesma busca, porém acrescentando os compradores que ainda não fizeram ofertas para os imóveis. 28) Faça uma busca que mostre todos os endereços de imóveis e os endereços dos imóveis indicados. 29) Acrescente à busca anterior o nome dos vendedores tanto do imóvel quanto do imóvel indicado. 30) Faça uma busca que mostre o endereço do imóvel, o bairro, cidade, estado e o preço do imóvel. 31) Faça uma busca de todos os bairros que possuem imóveis à venda, sem repetição. 32) Faça uma busca de todos os vendedores que tiveram imóveis indicados, apresentando somente uma vez o valor de cada imóvel. 8