Baixe o app para aproveitar ainda mais
Prévia do material em texto
SQL - DML 1 SELECT A estrutura básica de uma consulta em SQL consiste em três cláusulas: SELECT, FROM e WHERE 2 SELECT Corresponde à operação de PROJEÇÃO da álgebra relacional. Ela é usada para listar os atributos desejados como resultado de uma consulta 3 FROM É uma lista de relações a serem varridas na execução da expressão A princípio, para consultas, a utilização do SELECT e FROM são obrigatórios em qualquer consulta 4 WHERE Corresponde ao predicado de seleção da álgebra relacional. Consiste em um predicado envolvendo atributos das relações que aparecem na cláusula FROM. As cláusulas ainda podem ser ainda ser compostas com outras cláusulas utilizando operadores lógicos AND e OR 5 SELECT Seleção de colunas específicas Seleção de todas as colunas 6 SELECT Eliminação de Duplicações Utilização de pseudônimos (alias) 7 WHERE Objetivo: filtrar um conjunto de linhas de uma tabela ou um conjunto delas Operadores: =, <>, <, >, IS NULL, IN, BETWEEN, NOT, LIKE 8 Exemplo 9 1) Quais são os funcionários de Juiz de Fora? 2) Quais são os funcionários que possuem carteira de motorista? 3) Quais são os funcionários do sexo feminino? 4) Quais são os funcionários que o nome começa com a letra M? 5) Quais são os funcionários com idade superior a 40 anos? Exemplo - Respostas 10 Exemplo Conjunção e Disjunção de condições 1) Quais são os funcionários de Juiz de Fora que são do sexo masculino? 2) Quais são os funcionários que tem carteira de habilitação e são do sexo feminino? 3) Quais são os funcionários que recebem mais que R$ 750,00 e possuem mais de 30 anos de idade? 4) Quais são os funcionários do sexo masculino OU funcionários que o nome começa com a letra J? 11 Exemplo - Respostas 12 ORDER BY Objetivo: ordenar o resultado de uma consulta A ordenação é feita pelas colunas indicadas na cláusula ASC Ordenação crescente DESC Ordenação decrescente 13 Exemplo 14 1) Ordene os registros pelo nome de maneira ascendente 2) Ordene os registros pelo código 3) Ordene os registros pela idade de maneira decrescente Exemplo - Respostas 15 JOIN Objetivo: combinar linhas de tabelas diferentes, através de valores comuns em colunas correspondentes (basicamente a ligação ocorre através da chave estrangeira) No JOIN as colunas e os dados de ambas as tabelas que estão envolvidas são trazidas no resultado por isto ele é utilizado. 16 JOIN Como você construiria consultas que respondessem as perguntas abaixo: 1) Quais os nomes dos departamentos que possuem empregados que ganham mais de R$ 1000,00? 2) Qual o nome do funcionário e o nome do departamento que ele trabalha? 3) Qual o preço de cada produto que o cliente Luiz Felipe comprou na nota fiscal número 000456? 4) Quais os nomes dos alunos que obtiveram nota maior que 80 na disciplina DCC060? 17 JOIN O que se percebe na verdade, é que as informações requeridas estão em mais de uma tabela ao mesmo tempo, por isto a necessidade de se fazer a junção de tabelas para retornar os dados necessários. O JOIN mais comum é o INNER JOIN que simplesmente retorna todas as linhas que contém o mesmo valor para o campo que faz a ligação entre as duas tabelas. 18 INNER JOIN Retorna todas as linhas da relação R1 e da relação R2 que possuem o mesmo valor para o campo em que foi feito o JOIN 1) Quais os nomes dos departamentos que possuem empregados que ganham mais que R$ 1000,00? 2) Qual o nome do funcionário e o nome do departamento que ele trabalha? 19 Respostas (1) 20 Respostas (2) 21 LEFT JOIN Primeiramente um INNER JOIN é realizado. Depois, para cada linha da relação R1 que não satisfaz a condição do JOIN, é concatenada ainda as colunas da relação R2 porém com valores nulos. Em outras palavras, traz todos os registros de R1, os que satisfazem o JOIN e os que não satisfazem. 22 LEFT JOIN 1) Retorne tantos os alunos que ingressaram no ano de 2005 que estão matriculados na disciplina DCC060 quanto os que não estão. 2) Retorne tantos os empregados que estão alocados para o projeto ‘GED’ quanto os que não estão. 23 Respostas (1) 24 Respostas (2) 25 Esta consulta já não é tão trivial, pois exige além de um LEFT JOIN um INNER JOIN e a informação que precisa retornar está espalhada entre 3 tabelas diferentes Respostas (2) - Continuação 26 RIGHT JOIN Primeiramente um INNER JOIN é realizado. Depois, para cada linha da relação R2 que não satisfaz a condição do JOIN, é concatenada ainda as colunas da relação R1 porém com valores nulos. Em outras palavras, traz todos os registros de R2, os que satisfazem o JOIN e os que não satisfazem. É o caminho inverso do LEFT JOIN 27 RIGHT JOIN 1) Retorne todos os nomes dos produtos que foram e os que não foram vendidos no dia 01/12/2006. 28 Respostas (1) 29 Respostas (1) - Continuação 30 Funções de Agregação Objetivo: Calcular um determinado valor sobre um conjunto de linhas, como por exemplo, média, valor máximo, mínimo, quantas linhas foram retornadas e etc. Funções mais comuns: COUNT AVG MAX MIN SUM 31 COUNT Retorna a quantidade de linhas do grupo COUNT(*) inclui todas as linhas (mesmo as repetidas caso haja) COUNT(coluna) retorna o número de linhas com valores não nulos da coluna especificada COUNT(DISTINCT coluna) retorna o número de linhas com valores distintos naquela coluna 32 COUNT 1) Quantos são os empregados que trabalham no departamento financeiro? 2) Quantas notas fiscais foram geradas entre 01/11/2006 e 30/11/2006? 3) Quantos departamentos possui a empresa? 4) Quantos alunos estão matriculados na disciplina DCC009 no período letivo 3-2006? 33 Respostas - COUNT 34 MAX Retorna o valor máximo da coluna dentro do grupo 1) Qual o maior salário do departamento Recursos Humanos? 2) Qual o maior salário da empresa? 3) Qual a nota fiscal de maior valor que já foi lançada? 4) Qual foi a maior nota na disciplina DCC060 em toda a história? 35 MAX - Respostas 36 MIN Retorna o valor mínimo da coluna dentro do grupo Qual o menor salário do departamento Recursos Humanos? Qual o menor salário da empresa? Qual a nota fiscal de menor valor que já foi lançada? Qual foi a menor nota na disciplina DCC060 em toda a história? 37 MIN - Respostas 38 SUM Retorna o somatório da coluna dentro do grupo 1) Qual o valor da folha de pagamento do departamento Pessoal? 2) Qual o valor das notas fiscais que foi faturado no dia 01/12/2006? 39 SUM - Respostas 40 AVG Retorna a média da coluna dentro do grupo 1) Qual a média de idade do departamento de Informática? 2) Qual foi o valor médio faturado no mês de novembro pela empresa? 41 AVG – Respostas 42 GROUP BY Agrupar valores vindos de funções de agregação por alguma coluna em especial. Por exemplo, quantos funcionários existem por departamento. Qual a média de idade por departamento. Quanto foi faturado por dia no mês de novembro. Questões como estas são respondidas através das funções de agregação porém utilizando ainda a cláusula GROUP BY 43 GROUP BY Um detalhe que nunca deve ser esquecido, cada coluna que aparecer na cláusula SELECT excetuando-se as funções de agregação devem obrigatoriamente aparecer na cláusula GROUP BY 44 GROUP BY 1)Quantos funcionários existem em cada departamento da empresa? 2) Qual a média de idade dos funcionários por departamento da empresa? 3) Qual foram os valores faturados em cada dia do mês em todo o ano na empresa? 4) Qual foi a média das notas dos alunos em cada disciplina do período letivo 3-2006? 45 GROUP BY - Respostas 46 HAVING Restringir os valores vindos de funções de agregação e cláusulas GROUP BY. 1) Quais são os departamentos que possuem média salarial acima de R$ 2000,00? 2) Quais são as disciplinas onde a média de notas dos alunos no período letivo 3-2006 foi acima de 60? 3) Quais foram os dias que o faturamento ultrapassou o valor de R$ 1000,00 no mês de julho? 47 HAVING – Respostas 48
Compartilhar