LINGUAGEM DE BANCO DE DADOS Gabriela Trevisan Bacharel em Sistemas de Informação Universidade Federal do Rio Grande Pós-Graduanda em Formação Pedagógica de Professores ResultSet • Eliminando tuplas repetidas do ResultSet: • ResultSet é o resultado de um comando SQL. • Utiliza-se a cláusula DISTINCT. select distinct categoria from produto; Elimina dados repetidos. ResultSet • +------------------------+ • | categoria • • • • • • • • | +------------------------+ | SABAO | | AMACIANTE | | DESINFETANTE | | SABAO | | AMACIANTE | | AMACIANTE | +--------------+ +---------------------+ | categoria | +---------------------+ | SABAO | | AMACIANTE | | DESINFETANTE | +--------------+ Produto Cartesiano • Possuímos um produto cartesiano quando mais de uma tabela é declarada na cláusula FROM. • Exemplo: • Selecionar o nome do cliente e o número do pedido relacionado a este cliente: select nome,nro_ped from cliente,pedido where cliente.cod_cli=pedido.cod_cli; +-------------+-----------------------+ | nome | nro_ped | +-------------+------------------------+ | FREE SHOP | PED01 | | CIA LIMPAR | PED02 | | MINI MERCO | PED03 | | FREE SHOP | PED04 | | SUPER MERCO | PED05 | | SUPER MERCO | PED06 | +-------------+---------+ Produto Cartesiano • Um produto cartesiano é a multiplicação das linhas das tabelas envolvidas na consulta e a soma de suas colunas; • Toda vez que temos duas ou mais tabelas na cláusula FROM isso acontece. • A tabela cliente tem 6 linhas e 7 colunas. • A tabela pedido tem 6 linhas e 4 colunas. Produto Cartesiano • Como a primeira cláusula que é executada em uma consulta SQL é a cláusula FROM, podemos dizer que se temos duas ou mais tabelas nesta, a primeira coisa que acontece é o produto cartesiano entre elas. • De forma que o produto cartesiano entre cliente e pedido é uma tabela de 36 linhas e 11 colunas. • Temos a combinação de todas as linhas de uma tabela com todas as linhas de outra tabela. Produto Cartesiano • Como só queremos o nome daquele cliente que fizeram pedidos, então cliente.cod_cli=pedido.cod_cli; • Queremos somente o código dos cliente que fizeram pedidos. • A Cláusula WHERE age sobre o tabelão resultante da cláusula FROM. • É nele onde se procura pela chave estrangeira da tabela pedido que seja igual a chave primária da tabela cliente. Verificação de Campos Vazios • Dizer quer um campo esta vazio significa dizer que este não contém nenhum valor de seu domínio. • select nome from cliente where telefone is not null; • No exemplo acima estamos selecionando todos os cliente que possuem telefone, ou seja, telefone não esta vazio. • Podemos querer selecionar aqueles cliente que não tem telefone cadastrado: • select nome from cliente where telefone is null; Exercícios • Exclua da seleção as linhas repetidas de área de atuação na tabela engenheiro. • Selecionar o nome da construtora e o tipo da obra relacionado a esta construtora: • Retorne a data da obra operário que não há atividades.