CURSO TÉCNICO EM INFORMÁTICA COMPONENTE CURRICULAR: BANCO DE DADOS PROFESSOR (A): Josiane Ferri TURMA: 11/1 - Tarde Consultas SQL Parte II Outras cláusulas que o comando select apresenta são DISTINCT, ORDER BY, GROUP BY, INNER JOIN, entre outras. DISTINCT: Várias linhas de uma tabela podem conter os mesmos valores para as suas colunas (duplicidade), com exceção da chave primária. o Quando desejarmos eliminar a duplicidade, podemos inserir a palavra-chave DISTINCT após a palavra SELECT. select DISTINCT cidade from CadastroAluno; Se não utilizada retorna o número de vezes que houver algum aluno na Cidade de São Leopoldo. GROUP BY: cláusula usada em conjunto com select que agrupa linhas por um atributo definido. select nome, cidade from CadastroAluno group by cidade; ORDER BY: cláusula usada em conjunto com select que ordena por um ou mais atributos especificados em ordem crescente (ASC) ou decrescente (DESC). Por padrão, a ordenação ocorre em ordem crescente. select * from CadastroAluno order by nome; order by nome ASC; order by nome DESC; Padrão Crescente Decrescente.
Antes de especificar a cláusula INNER JOIN, segue abaixo duas funções que auxiliam na construção das query s que desejam recuperar dados de duas ou mais tabelas. Qualificadores de Nomes o Um qualificador de nome consiste do nome da tabela, seguido de um ponto, seguido por um nome de uma coluna da tabela. Por exemplo, o qualificador da coluna NOME da tabela CadastroAluno será CadastroAluno.Aluno. o Os qualificadores de nome são utilizados em uma consulta para efetivar a junção (JOIN) entre as tabelas. Sinônimos de Nomes select CadastroAluno.id_aluno, CadastroAluno.nome, pagto.id_aluno from CadastroAluno, pagto on CadastroAluno.id_aluno = pagto.id_aluno where dia_venc = 25 o Para que não seja necessário escrever o nome INTEIRO da tabela nas qualificações de nomes, podemos utilizar ALIASES definidos na própria consulta. o Esta opção é utilizada quando temos que recuperar dados de mais de uma tabela conforme visto acima, mas queremos minimizar a escrita da nossa query. select a.id_aluno, a.nome, p.id_aluno from CadastroAluno a, pagto p on a.id_aluno = p.id_aluno where dia_venc = 25 o É possível também criar alias para nomes de uma coluna. Utilizando a clásula AS; select nome AS (Nome do Aluno), from CadastroAluno where cidade = Esteio ;
Serão utilizadas as tabelas abaixo como exemplos: CadastroAluno id_aluno Nome Cidade telefone_celular 001 Cássio São Leopoldo 99776655 002 Leonardo Esteio 99887766 003 Jacson Portão 99775544 A mesma do documento anterior (SQL Parte I) Pagto id_pagto dia_venc valor situação id_aluno 001112011 25 500.00 Pago 001 002112011 25 400.00 Pago 002 003112011 20 550.00 Não Pago 003 inner join cláusula usada em conjunto com select para selecionar informações de tabelas diferentes. o Juntamente com o inner join devemos utilizar o operador ON, para realizar a relação entre as tabelas, isto é, realizar a igualdade entre campos iguais pertencentes em ambas as tabelas. select a.nome, p.dia_venc, p.situacao from pagto p INNER JOIN cadastroaluno a on p.id_aluno = a.id_aluno; o O exemplo acima seleciona o nome do aluno da tabela CadastroAluno, o dia de vencimento e situação da tabela pagto. o Quando utilizadas consultas em mais de uma tabela, é obrigatória essa relação executada pela cláusula ON, para que não ocorra duplicidade dos registros retornados pela consulta. o Também pode-se utilizar a cláusula where depois do inner join. select a.id_aluno, a.nome, p.situacao from CadastroAluno a INNER JOIN pagto p on a.id_aluno = p.id_aluno where dia_venc = 25 ; Retorna o Id_Aluno e Nome da tabela CadastroAluno e a Situação da tabela pagto onde do dia_venc for 25.
Recuperando dados de duas ou mais tabelas: Para recuperar dados três tabelas: Antes vamos inserir as tabela de exemplo: CadastroAluno id_aluno Nome Cidade telefone_celular 001 Cássio São Leopoldo 99776655 002 Leonardo Esteio 99887766 003 Jacson Portão 99775544 Disciplinas id_disciplina Nome Dia Hora_inicio Local 001 Introdução Segunda 19:00 Sala 12 - Laboratório 002 Algoritmos Terça 14:00 Sala 12 - Laboratório 003 Banco de Dados Quarta 14:00 Sala 12 - Laboratório AlunoDisciplina id_disciplina id_aluno Situação 001 002 Aprovado 002 002 Aprovado 003 003 Aprovado select a.nome, d.nome, ad.situacao from CadastroAluno a, Disciplinas d, AlunoDisciplina ad where a.id_aluno = d.id_aluno and ad.id_aluno = d.id_aluno O exemplo acima retornará o nome da disciplina, do aluno e a situação, ou seja qual disciplina o aluno cursa e se o mesmo está aprovado nesta.
Funções de Agregação o As funções de agregação são utilizadas em conjunto com o comando select, na parte de definição dos campos. o Segue uma lista de funções: COUNT, SUM, AVG, MAX, MIN, entre outras o COUNT - Retorna o número de linhas. select count(*) from cadatroaluno; o SUM - Retorna a soma de uma coluna específica. select sum(valor) o AVG - Retorna o valor médio de uma coluna específica. select avg(valor) o MAX - Retorna o valor máximo de uma coluna específica. select max(valor) o MIN - Retorna o valor mínimo de uma coluna específica. select min(valor)
Subquerys: o Subquery significa o uso de um comando SQL dentro de outro comando. o Para utilizarmos as subquerys, precisamos da cláusula EXISTS. select nome from cadastroaluno c where EXISTS (select * from pagto p where c.id_aluno=p.id_aluno); o Utilizamos uma subquery quando precisamos de informações que através da estrutura básica do comando não nos permite o retorno esperado. o No exemplo acima retornará o nome do aluno que contiver algum pagamento para ele cadastrado.