Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Banco de Dados SQL (DML)

1,835 views

Published on

Banco de Dados SQL (DML)

Published in: Technology

Banco de Dados SQL (DML)

  1. 1. Banco de Dados SQL – Estrutured Query Language (DML) por: Mário Sergio da Silva
  2. 2. Banco de Dados SQL – Estrutured Query Language (DML) Prof. Mário Sergio da Silva mariosergio30@gmail.com Lattes: http://lattes.cnpq.br/1161794053211014 Atualizado em Maio/2016 Este material é uma adaptação didática que utiliza ilustrações e textos retirados de uma seleção criteriosa de publicações disponíveis livremente na internet, juntamente com conteúdo inédito. (bibliografia disponível no final dos slides)
  3. 3. Conteúdo  Introdução ao SQL- (DDL, DML, DCL)  Instruções INSERT, UPDATE e DELETE  A poderosa cláusula WHERE  A instrução SELECT  As cláusulas ORDER BY, GROUP BY e JOIN
  4. 4. 44 Prof. Mário Sergio 4 SQL (Structured Query Language) é a linguagem padrão universal para manipular bancos de dados relacionais através dos SGBDs. Isso significa que todos os SGBDRs (Sistema de Gerenciamento de Banco de Dados Relacionais) oferecem uma interface para acessar o banco de dados utilizando a linguagem SQL, embora com algumas variações. Logo, saber o que é SQL e como utilizá-la é fundamental para qualquer desenvolvedor de softwares. A “Linguagem Estruturada de Consultas” (SQL, traduzida para o português), é dividida em 3 principais agrupamentos: DDL - (Data Definition Language):Linguagem de Definição de Dados DML (Data Manipulation Language): Linguagem de Manipulação de Dados DCL (Data Control Language): Linguagem de Controle de Dados Nos próximos slides, iremos abordar as instruções DML.
  5. 5. 55 Prof. Mário Sergio 5 As Instruções DML As Instruções de manipulação de dados(DML) em SQL são representados por: Modificam o estado do banco de dados: o INSERT - permite a inclusão de novos registros (linhas) nas tabelas o UPDATE - altera os valores de dados existentes o DELETE - remove registros (linhas) existentes Acessam (consultam) os dados: o SELECT - usado para consultar o BD e retornar os dados de acordo com a que satisfazem a determinada expressão.
  6. 6. 66Prof. Mário Sergio 6 Projeto de Exemplo: “Ensino Voluntário na Ong” o Cada professor tem uma especialidade (formação) em uma disciplina. o São aceitos mais de um professor com a mesma formação o Cada aluno recebe um número de matrícula, ao se cadastrar na Ong, e pode agendar aulas individuais com professores diferentes. o No final de cada aula, o professor atribui uma nota de 1 a 10 o Cada professor pode ensinar vários alunos individualmente Para exemplificar as instruções DML, utilizaremos didaticamente, um projeto simplificado de um sistema acadêmico, conforme modelagem a seguir: O modelo conceitual:
  7. 7. 77 O modelo lógico: Prof. Mário Sergio 7 Projeto de Exemplo: “Ensino Voluntário na Ong”
  8. 8. 88 Prof. Mário Sergio 8 A Instrução INSERT Sintaxe:
  9. 9. 99 Prof. Mário Sergio 9 A Instrução INSERT INSERT INTO ALUNO (CPF, MATRICULA, NOME, GRAU_INSTRUCAO, IDADE) VALUES ('023.999.999-99', '00000001','Beltrano de Tal','Primeiro Grau',15); INSERT INTO DISCIPLINA (NOME, AREA) VALUES ('Português', 'Humanas'); INSERT INTO PROFESSOR (CPF, NOME, TEMPO_ENSINO, DISCIPLINA_ID) VALUES ('123.999.999-99', 'Mário Sergio',6,7), ('456.999.999-99', 'João da Silva',15,1); PROFESSOR_CPF, ALUNO_MATRICULA, NOTA, DATA INSERT INTO AULA VALUES ('000.999.999-99', '00000001',8.5,'2015-02-01'); Exemplos: A coluna ID não precisa ser incluída no INSERT , pois o BD irá gerar um valor incremental para cada novo registro Se os valores estiverem exatamente na ordem em que as colunas foram criadas na tabela, então não precisa informar a lista de colunas no INSERT Inclusão de múltiplos registros em uma única instrução INSERT.
  10. 10. Prof. Mário Sergio 10 A Instrução UPDATE Sintaxe: UPDATE sua_tabela SET coluna = novovalor; UPDATE ALUNO SET IDADE = 13; Define a coluna que se deseja alterar Nome da coluna que terá o valor alterado Novo valor Isto alteraria o valor da coluna Idade de TODOS os alunos para 13 anos. Exemplo: Mas, como escolher qual/quais alunos desejo alterar ? Incluindo a cláusula: WHERE (condição lógica) UPDATE ALUNO SET IDADE = 13 WHERE CPF = '023.999.999-99‘ ; Agora Sim, o update somente afetará os registros que satisfazem a condição lógica, ou seja só alterará a coluna idade nos registros em que: CPF = '023.999.999-99´ -> VERDADEIRO
  11. 11. 1111 Prof. Mário Sergio 11 A Instrução DELETE Sintaxe: DELETE FROM sua_tabela; DELETE FROM ALUNO; Isto APAGARIA TODOS os alunos da tabelas. Exemplo: A cláusula WHERE também pode e deve ser utilizada com a instruções DELETE Incluindo a cláusula: WHERE (condição lógica) DELETE ALUNO WHERE IDADE > 25; Isso excluiria da tabela apenas os alunos que que tem idade maior que 25 anos
  12. 12. 1212 Prof. Mário Sergio 12 A cláusula WHERE (filtro) Exemplo: A cláusula WHERE pode ser utilizada em conjunto com as instruções UPDATE, DELETE E SELECT Sintaxe: WHERE (condição lógica) DELETE ALUNO WHERE GRAU_INSTRUCAO = 'Primeiro Grau‘ AND IDADE < 20; Isso excluiria da tabela apenas os alunos que possuem o primeiro grau E tem idade menor que 20 anos (AS DUAS COISAS) Essa condição segue o padrão das linguagens de programação, assim todos os operadores Relacionais e Lógicos podem ser utilizados.
  13. 13. Prof. Mário Sergio 13 A cláusula WHERE (filtro) Mais Exemplos: UPDATE ALUNO SET IDADE = 13 WHERE CPF = '022.999.999-99‘ ; F F V F 13 A comparação lógica é feita pelo SGBD para cada um dos registros da tabela, para que somente sejam alterados os registros cujo resultado logico seja verdadeiro. Será alterado de 17 pra 13 O filtro com a chave primária, garante que somente um registro será alterado.
  14. 14. Prof. Mário Sergio 14 A cláusula WHERE (filtro) Mais Exemplos: DELETE ALUNO WHERE GRAU_INSTRUCAO = 'Primeiro Grau‘ AND IDADE < 20; F V F A comparação lógica é feita pelo SGBD para cada um dos registros da tabela, para que somente sejam excluídos os registros cujo resultado logico seja verdadeiro. Registros que serão excluídos V
  15. 15. 1515 Prof. Mário Sergio 15 A Instrução SELECT Sintaxe: SELECT colunas1, coluna2,... FROM sua_tabela Especifica a tabela que se deseja recuperar os dados Especifica as colunas separadas por virgula É melhor dar do que receber? Quando se trata de Bancos de Dados, você precisará recuperar seus dados, muito mais vezes do que inseri-lo na base. Para isso há a poderosa instrução SELECT, que permite consultar as importantes informações que foram inseridas em suas tabelas. SELECT * FROM sua_tabela Este * é conhecido como o símbolo Coringa, ele indica que TODAS AS COLUNAS devem ser retornadas na consulta SELECT
  16. 16. 1616 Prof. Mário Sergio 16 A Instrução SELECT Exemplos: SELECT * FROM PROFESSOR SELECT * FROM DISCIPLINA SELECT NOME, TEMPO_ENSINO FROM PROFESSOR SELECT NOME FROM DISCIPLINA
  17. 17. 1717Prof. Mário Sergio 17 A cláusula ORDER BY (Ordenação) Ascendente / Descendente SELECT * FROM DISCIPLINA ORDER BY ID ASC SELECT * FROM DISCIPLINA ORDER BY ID DESC SELECT * FROM DISCIPLINA ORDER BY AREA ASC, NOME DESCSELECT * FROM DISCIPLINA ORDER BY NOME ASC/DESC Quando omite-se é Ascendente Ordena o resultado de uma consulta, de acordo com a coluna escolhida.
  18. 18. Prof. Mário Sergio 18 A cláusula WHERE no SELECT A Cláusula WHERE serve para ESCOLHER (FILTRAR) quais são os registros que queremos CONSULTAR (retornar) A comparação lógica é feita pelo SGBD para cada um dos registros da tabela, para que somente sejam retornados os registros cujo resultado logico seja verdadeiro. SELECT * FROM DISCIPLINA SELECT * FROM DISCIPLINA WHERE (AREA = 'Exatas') F V F V V F F SELECT NOME, SEXO FROM ALUNO SELECT NOME FROM ALUNO WHERE (NOME LIKE '%Tal‘) V V F F Resultado do Filtro Resultado do Filtro
  19. 19. Prof. Mário Sergio 19 A cláusula WHERE no SELECT SELECT CPF, NOME, SEXO, CIDADE FROM ALUNO WHERE (SEXO = 'M' AND CIDADE = 'Olinda‘); F F V F V Resultado do Filtro: Alunos Homens que moram em Olinda SELECT CPF, NOME, SEXO, CIDADE FROM ALUNO
  20. 20. Prof. Mário Sergio 20 Resumo: Escolhendo Colunas e Registros com SELECT... WHERE SELECT CPF, NOME, CIDADE FROM ALUNO WHERE (SEXO = 'M' AND CIDADE = 'Olinda‘); Escolha de 2 registros (linhas) SELECT * FROM ALUNO Escolha de 3 colunas
  21. 21. 2121 Prof. Mário Sergio 21 RESUMO das Sintaxes DML INSERT INTO nometabela (colunas) VALUES (valores); UPDATE nometabela SET coluna = valor DELETE FROM nometabela SELECT (colunas) FROM nometabela WHERE (condições lógicas) A Cláusula WHERE serve para ESCOLHER (FILTRAR) quais são os registros que queremos ALTERAR, EXCLUIR ou CONSULTAR (retornar)
  22. 22. Prof. Mário Sergio 22 Funções de Agregação Efetuam operações sobre um conjunto de registros, de acordo com as colunas e filtro (where) desejados.
  23. 23. Prof. Mário Sergio 23 Funções de Agregação SELECT COUNT(*), SUM(tempo_ensino), MIN(tempo_ensino), MAX(tempo_ensino), AVG(tempo_ensino) FROM PROFESSOR SELECT COUNT(*) as qtd_professores, SUM(tempo_ensino) as soma, MIN(tempo_ensino) as menor, MAX(tempo_ensino) as maior, AVG(tempo_ensino) as media FROM PROFESSOR Alias de Coluna São apelidos para serem exibidos no título das coluna em uma consulta SELECT
  24. 24. Prof. Mário Sergio 24 A Função DISTINCT - DISTINCT - Exibe apenas os registros com valores NÃO REPETIDOS (distintos) de uma determinada coluna. (oculta duplicatas) SELECT DISTINCT(area) FROM disciplina ORDER BY area SELECT DISTINCT(cidade) FROM aluno order by cidade
  25. 25. Prof. Mário Sergio 25 A cláusula GROUP BY (agrupamento) o O GROUP BY é usado para agrupar um conjunto de resultados retornados de uma instrução SELECT baseados em grupos de colunas. o Para cada grupo você pode aplicar funções agregadas, como SUM, AVG, MIN, MAX e COUNT para emitir um resumo das informações. o O GROUP BY é muito útil quando você quer analisar os dados de forma analítica como quantas ordens de venda foram emitidas por um cliente e vendidas por determinado vendedor. Ele é frequentemente usado no sistema de datawarehouse ou BI para produzir relatórios analíticos.
  26. 26. Prof. Mário Sergio26 A cláusula GROUP BY (agrupamento) SELECT COUNT(*) qtdAulas, AVG(nota) as media, SUM(duracao) as duraçãototal, MIN(valor) as aulaMaisBarata, SUM(valor) as valorTotal, SUM(valor) / COUNT(*) as valorMedioAula FROM aula Consulta com funções agregadas SEM AGRUPAMENTO SELECT professor_cpf, COUNT(*) qtdAulas, AVG(nota) as media, SUM(duracao) as duraçãototal, MIN(valor) as aulaMaisBarata, SUM(valor) as valorTotal, SUM(valor) / COUNT(*) as valorMedioAula FROM aula GROUP BY professor_cpf A Mesma Consulta COM AGRUPAMENTO por professor Resumo de Aulas por professor
  27. 27. Prof. Mário Sergio 27 A cláusula JOIN (Junção de tabelas) o Até agora, você aprendeu como recuperar (consultar) dados de uma única tabela separadamente. No entanto, na maioria das vezes você vai precisar consultar dados de várias tabelas relacionadas, formando registros completos para análise. o A cláusula JOIN (também conhecida como INNER JOIN) é responsável pela junção e recuperação de dados de duas ou mais tabelas. o Um JOIN combina os registros de duas tabelas (ou mais) utilizando uma condição lógica para comparar as chaves primarias e estrangeiras das tabelas que queremos juntar. Os registros são retornados apenas quando as linhas correspondem à condição.
  28. 28. Prof. Mário Sergio 28 A cláusula JOIN (Junção de tabelas) Exemplo:
  29. 29. Prof. Mário Sergio 29 A cláusula JOIN (Junção de tabelas) Exemplo: SELECT (colunas das duas tabelas) FROM tabela1 JOIN tabela2 ON (condição) JOIN tabela2 ON (tabela1.colunaFK = tabela2.colunaPK) Essa condição, na grande maioria das vezes é uma comparação entre as chaves primaria e estrangeria das tabelas. Sintaxe: SELECT professor.nome as professor, disciplina.nome as disciplina FROM professor JOIN disciplina ON (professor.disciplina_id = disciplina.id) Consulta Retornada Veja explicação detalhada nos próximos Slides
  30. 30. A cláusula JOIN (Junção de tabelas) SELECT professor.* , disciplina.* FROM professor JOIN disciplina ON ( professor.disciplina_id = disciplina.id ) COLUNAS DA TABELA PROFESSOR COLUNAS DA TABELA DISCIPLINA Esse JOIN retorna o TABELÃO acima, contedo todos os registros e colunas de PROFESSOR, JUNTANDO com os todas as colunas de DISCIPLINA, MAS APENAS os registros que tem relação com PROFESSOR Prof. Mário Sergio 30
  31. 31. Prof. Mário Sergio 31 A cláusula JOIN (Junção de tabelas) SELECT professor.nome, disciplina.nome FROM professor JOIN disciplina ON ( professor.disciplina_id = disciplina.id ) COLUNAS DA TABELA PROFESSOR COLUNAS DA TABELA DISCIPLINA Mas, se ao invés de *, escolhermos apenas as colunas NOME das duas tabelas, teremos: Consulta Retornada
  32. 32. A cláusula JOIN (Junção de tabelas) SELECT professor.nome as professor, disciplina.nome as disciplina FROM professor JOIN disciplina ON ( professor.disciplina_id = disciplina.id ) COLUNAS DA TABELA PROFESSOR COLUNAS DA TABELA DISCIPLINA E agora, colocando Apelido para as colunas, teriamos: Prof. Mário Sergio 32 Consulta Retornada
  33. 33. Prof. Mário Sergio 33 Alias de Tabelas (Apelidando tabelas) Exemplo sem Alias de tabela: SELECTprofessor.nome as professor, disciplina.nome as disciplina FROM professor JOIN disciplina ON (disciplina.id = professor.disciplina_id) É um apelido da tabela para você se referenciar ao especificar suas colunas. É muito útil quando precisamos nos referir várias vezes a mesma tabela em uma instrução SELECT juntamente com a instrução JOIN, ou quando o nome da tabela é muito grande, e você não quer perder tempo digitando seu nome várias vezes Exemplo com Alias de tabela: SELECT p.nome as professor, d.nome as disciplina FROM professor p JOIN disciplina d ON (d.id = p.disciplina_id)
  34. 34. 3434 Prof. Mário Sergio 34 RESUMO da Sintaxe Instrução SELECT simples SELECT (colunas, ou funções_agregação) FROM nometabela JOIN tabela ON (condição) ... WHERE (condições lógicas) ORDER BY colunas ASC/DESC Cláusulas opcionais As funções de Agregação: SUM(), AVG(), COUNT(), MIN(), MAX(), DISTINCT()
  35. 35. 3535 Prof. Mário Sergio 35 RESUMO da Sintaxe Instrução SELECT agrupado ORDER BY colunas ASC, DESC SELECT colunasdoAgrupamento, função_agregação) FROM nometabela WHERE (condições lógicas) GROUP BY colunasdoAgrupamento JOIN tabela2 ON (condição) ... As funções de Agregação: SUM(), AVG(), COUNT(), MIN(), MAX(), DISTINCT
  36. 36. 3636 Prof. Mário Sergio 36 Exercícios 1. Exiba um a listagem, ordenada por nota da maior a menor, de todas as aulas ocorridas no período de 2016-03-01 a 2016-03-30, contendo a colunas: data, nome do aluno, nota, duracao e nome do professor. 2. Considerando a consulta agrupada da pag 26, inclua no resultado da consulta duas novas colunas: nome do professor e área de formação. 3. A ONG precisa saber qual é o custo total da aulas dos alunos do sexo masculino. Para isso mostre uma lista com nome do aluno (cada aluno apenas uma vez), o total de aulas e o valor total, ordenado pelo total de aulas.
  37. 37. 37 Bibliografia  Elmasri & Navathe – Fundamentos de Bancos de Dados  Carlos Alberto Heuser – Projeto de Banco de Dados  Korth e Silberchatz – Sistema de Bancos de Dados  Site do prof Eduardo Henrique Gomes. Disponível em: http://ehgomes.com.br/disciplinas/bdd
  38. 38. 38 Links sobre Linguagens/Banco de Dados  http://www.dialetodigital.com/blog/conteudos-programacao/

×