Exercício Aula Passada. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

Documentos relacionados
Roteiro. SQL Linguagem de Manipulação de Dados. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada. Exercício Aula Passada

SQL Linguagem de Manipulação de Dados SQL DML SQL DML. Exemplo Modelo Relacional. Exemplo ME-R SQL DML CONTINUAÇÃO...

GBC043 Sistemas de Banco de Dados

Discussão exercício aula 18. SQL Linguagem de Manipulação de Dados. Discussão exercício aula 18. Discussão exercício aula 18 SQL.

SQL DML. SQL Linguagem de Manipulação de Dados SELECT SELECT SELECT SELECT

Roteiro. SQL: Visões. Suporte de SQL para OLAP SELECT. Detalhando GROUP BY SQL DML CONTINUAÇÃO CONSULTAS AVANÇADAS. Consultas Avançadas Visões

Avisos. SQL: Visões. Roteiro SELECT. Suporte de SQL para OLAP SQL DML CONTINUAÇÃO CONSULTAS AVANÇADAS. Cronograma das próximas aulas

- SQL Linguagem de Manipulação de Dados

IMPLEMENTAÇÃO DE BANCO DE DADOS

Preparação. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 10/12/2013

Álgebra Relacional e SQL

Rápida revisão do Modelo Relacional

SQL Linguagem de Manipulação de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Introdução ao SQL. Aécio Costa

Linguagem SQL. ENG1518 Sistemas de Informação Gerenciais Prof. Marcos Villas

Banco de Dados I. Aula 16 - Prof. Bruno Moreno 04/11/2011

SQL (Tópicos) Structured Query Language

Introdução ao PostgreSQL

Revisão de Bancos de Dados

Preparação criar tabela. Linguagem de Manipulação de Dados (DML) Estudo Dirigido 12/11/2018

ANÁLISE E PROJETO DE BANCO DE DADOS

Orientações. Transações - PostgreSQL. Relembrando: Propriedades desejáveis. Abrir Prompt de comando ROLLBACK

Disciplina: Banco de Dados Tema: SQL Parte 2

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 17. Escola Politécnica da Universidade de São Paulo

GBC043 Sistemas de Banco de Dados

UNIVERSIDADE FEDERAL DA GRANDE DOURADOS PRÓ-REITORIA DE GRADUAÇÃO PROGRAD FACULDADE DE CIÊNCIAS EXATAS E TECNOLOGIA CURSO DE SISTEMAS DE INFORMAÇÃO

Fundamentos de SQL. Curso: Técnico em Redes de Computadores Disciplina: Tecnologias e Linguagem de Banco de dados Professor: Rodrigo da Rocha

Revisão Banco de Dados

Manipulação de Dados com SQL

Linguagem de Consulta - SQL

E-BOOK GUIA RÁPIDO DE SQL W W W. T R E I N A W E B.C O M. B R

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

Banco de Dados. Professora: Luciana Faria

Utilizando o Postgres - comandos SQL para a manipulação de dados

Banco de Dados I Introdução SQL

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

BCD29008 Banco de dados

Page 1. Prof. Constantino Jacob

MODELAGEM DE DADOS - INTRODUÇÃO AO SQL: DML. Prof. Angelo Augusto Frozza, M.Sc.

Banco de Dados. Prof. Dr. Joel da Silva SQL - Introdução

SQL Básica DML. Prof. Marcos A. Schreiner. 22 de outubro de Curso de Licenciatura em Computação

Bancos de Dados Notas de Aula Álgebra Relacional Introdução Prof. Dr. Daniel A. Furtado

Programação em Banco de dados

Comandos de Manipulação


Bancos (Bases) de Dados

Aula 11 SBD SQL Parte 3. Profa. Elaine Faria UFU

'%'! $!0" $ 8 ' %%! % '! $ $$% + ' %!%$/)!'4!+,"/)!)+,/)% *! +,"0''% * %$!*!$$ #!"%&%'%'%$! "94(# ' %'$%$$$%0%$%' *!% %%%'!**% > %% %%!31?

BANCO DE DADOS. info 3º ano. Prof. Diemesleno Souza Carvalho

Banco de Dados II. Aula Prof. Diemesleno Souza Carvalho

SQL BÁSICO. Luiz Antônio Vivacqua Corrêa Meyer

Conceitos básicos. Funcionario SIAPE Nome Lotacao Cargo Salario Admissao

Avisos. Sumário. Atividade em lab Aula 29. Atividade em lab Aula 29. Programando com SQL Triggers EXERCÍCIO LAB SP. Vista da segunda prova

Álgebra Relacional e SQL operações de interesse

Sumário: 1) Trabalhando com Constraints: - NOT NULL - UNIQUE - PRIMARY KEY - FOREIGN KEY - DEFAULT

Bases de Dados 2005/2006. Aula 5

Linguagem de Consulta - SQL

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Introdução. Introdução. Álgebra Relacional. Linguagens formais de Consulta Modelo Relacional. O que foi visto até agora...

Lista 02 Sistema de Banco de Dados CAP 241 Computação Aplicada I

Consulta sobre múltiplas relações

SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

Banco de Dados I. Prof. Diego Buchinger. Profa. Rebeca Schroeder Freitas Prof. Fabiano Baldo.

AULA 8 EXEMPLOS CRIAR AS TABELAS PROPOSTAS NA AULA E INSERIR OS REGISTROS SUGERIDOS

Informática I. Aula 8. Aula 8-25/09/2006 1

Linguagem de pesquisa declarativa para banco de dados relacional; 1ª Versão - Desenvolvida pela IBM no laboratório de pesquisa de San José;

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

BANCO DE DADOS. Para a criação de um banco de dados, através de scripts SQL, deve-se usar a seguinte sintaxe: CREATE DATABASE <nome_banco_de_dados>

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

Unipar Universidade Paranaense Disciplina: Banco de Dados II 3ª Série Profª: Késsia Marchi Profa. Késsia Marchi

SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

TECNOLOGIA EM SISTEMAS PARA INTERNET PROJETO DE BANCO DE DADOS

Parte I (correspondente à matéria do 1º teste)

GES013 - Sistema de Banco de Dados SQL/DML no PostgreSQL Parte 1 Introdução e Consultas Basicas

SQL. Prof. Msc Denival A. dos Santos

BANCO DE DADOS GERENCIAL 1 A U L A 2

Marcelo Henrique dos Santos

MySql. Introdução a MySQL. Andréa Garcia Trindade

Banco de Dados. Marcio de Carvalho Victorino Exercícios SQL

A U L A 8 C O N S U L T A S U N I N D O D U A S O U M A I S T A B E L A S P A R T E 2

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

Linguagem SQL. Comandos Básicos

Banco de Dados. Álgebra Relacional. João Eduardo Ferreira Osvaldo Kotaro Takai Marcelo Finger

SQL. Prof. Roger Cristhian Gomes

Banco de Dados. Diego Silveira Costa Nascimento. 20 de março de Instituto Federal do Rio Grande do Norte

Consultas SQL. Andre Noel

Linguagem de Consulta Estruturada SQL- DML

SQL-99: Esquema de BD EMPRESA

Escola Secundária de Albufeira. Comandos MySQL. (Páginas Web Dinâmicas: PHP e MySQL) Carlos Nunes

Álgebra Relacional. Conjunto de operações que usa uma ou duas relações como entrada e gera uma relação de saída. Operações básicas:

Curso de Banco de Dados. Prof. Rone Ilídio

Introdução ao Banco de Dados. Banco de Dados

Bancos de Dados. 8. Structured Query Language (SQL)

Banco de Dados Notas de Aula Consultas em SQL Prof. Dr. Daniel A. Furtado

PHP INTEGRAÇÃO COM MYSQL PARTE 1

TLBD II. Continuação

Transcrição:

Ciência da Computação GBC043 Sistemas de Banco de Dados SQL Linguagem de Manipulação de Dados Profa. Maria Camila Nardini Barioni camila.barioni@ufu.br Bloco B - sala 1B137 1 semestre de 2018 2 Escreva consultas em SQL 1. Listar a quantidade total de médicos 2. Listar o nome dos procedimentos e quantos materiais cada um utiliza 3. Listar a média de salário por setor 4. Listar o nome e o custo do procedimento mais barato 5. Listar os nomes dos setores nos quais existam mais de 10 médicos trabalhando 6. Listar os nomes dos médicos que possuem a mesma especialidade dos médicos que gerenciam o setor onde eles trabalham 3 5. Listar os nomes dos setores nos quais existam mais de 10 médicos trabalhando 4 Escreva consultas em SQL 5. Listar os nomes dos setores nos quais existam mais de 10 médicos trabalhando SELECT S.NOME FROM SETOR S, TRABALHA T WHERE S.SIGLA = T.SIGLA GROUP BY S.NOME HAVING COUNT(T.CRM) > 10 6. Listar os nomes dos médicos que possuem a mesma especialidade dos médicos que gerenciam o setor onde eles trabalham 5 6 1

Escreva consultas em SQL 6. Listar os nomes dos médicos que possuem a mesma especialidade dos médicos que gerenciam o setor onde eles trabalham SELECT M.NOME FROM SETOR S, TRABALHA T, MEDICO M WHERE S.SIGLA = T.SIGLA AND T.CRM = M.CRM AND T.ESPECIALIDADE = (SELECT T2. ESPECIALIDADE FROM TRABALHA T2, MEDICO M2, SETOR S2 WHERE T2.CRM = M2.CRM AND M2.CRM = S2.CRM AND S2.SIGLA = S.SIGLA) SQL DML SELECT... FROM... WHERE... lista atributos de uma ou mais tabelas de acordo com alguma condição INSERT INTO... insere dados em uma tabela DELETE FROM... WHERE... remove dados de tabelas já existentes UPDATE... SET... WHERE... altera dados específicos de uma tabela 7 20 SQL DML Exemplo ME-R SELECT... FROM... WHERE... lista atributos de uma ou mais tabelas de acordo com alguma condição Detalhamento sobre JUNÇÕES INSERT INTO... insere dados em uma tabela DELETE FROM... WHERE... remove dados de tabelas já existentes UPDATE... SET... WHERE... altera dados específicos de uma tabela 21 Autor cod_autor nome nascimento M cod_livro cod_autor escreve N Livro publica Editora 22 N 1 cod_livro título valor volume cod_editora cod_editora razão endereço cidade Exemplo Modelo Relacional AUTOR = { COD_AUTOR, NOME, NASCIMENTO } ESCREVE = { COD_AUTOR, COD_} = { COD_, TITULO, VALOR, VOLUME, COD_EDITORA } EDITORA = { COD_EDITORA, RAZAO, ENDERECO, CIDADE } Junção SELECT <lista de atributos e funções> FROM <lista de tabelas> [ WHERE predicado ] [ GROUP BY <atributos de agrupamento> ] [ HAVING <condição para agrupamento> ] [ ORDER BY <lista de atributos> ] ; http://www.postgresql.org/docs/9.2/static/sql-select.html 23 25 2

Junção Natural SQL (primeiras versões) não tem uma representação para a operação de junção Definida em termos de um produto cartesiano uma seleção uma projeção Junção Não é representada explicitamente Cláusulas SELECT e WHERE especificam atributos com mesmo nome usando o nome da tabela e o nome do atributo (nome_tabela.nome_atributo) Cláusula FROM possui mais do que uma tabela Cláusula WHERE inclui as condições de junção 26 27 Junção Relembrando os tipos Existem dois tipos de condição de junção Equi-junções empregam o operador de igualdade Junçõestheta empregam outros operadores como <, >, BETWEEN, etc. Existem três tipos de junção Junção interna: retornam uma linha somente quando os atributos na junção contêm valores que satisfazem a condição de junção Junçãoexterna: retornam uma linha mesmo quando um dos atributos (ou ambas) na condição de junção contém um valor nulo Auto junção: retornam o resultado da junção de uma tabela com ela mesma 28 -- Selecionar todos os títulos dos livros da editora ROCCO SELECT LI.TITULO FROM EDITORA ED, LI WHERE (ED.RAZAO = 'ROCCO') AND (ED.COD_EDITORA = LI.COD_EDITORA); FROM EDITORA FROM 29 /* Selecionar os títulos da tabela livro e os nomes da tabela autor */ SELECT AU.NOME, LI.TITULO FROM AUTOR AU, LI, ESCREVE ES WHERE (AU.NOME = 'PAULO COELHO') AND (AU.COD_AUTOR = ES.COD_AUTOR_ESC) AND (LI.COD_ = ES.COD ESC); É necessário empregar um apelido (alias) para identificar cada referencia para a tabela na consulta AUTOR ESCREVE 30 31 3

Cláusula AS Renomeia atributos deve aparecer na cláusula SELECT útil para a visualização das respostas na tela relações deve aparecer na cláusula FROM útil quando a mesma relação é utilizada mais do que uma vez na mesma consulta Sintaxe nome_antigo AS nome_novo 32 Auxiliada pelo uso de apelidos Exemplo: Nota: exemplo de auto junção Para selecionar o nome de todos os funcionários de uma empresa juntamente com o nome de seus gerentes: EMPREGADO = (id_funcionario, nome, data_nascimento, endereço, cpf, id_gerente) SELECT t1.nome funcionario, t2.nome gerente FROM empregado t1, empregado t2 WHERE t1.id_gerente = t2.id_funcionario; 33 Nota: exemplo de auto junção Auxiliada pelo uso de apelidos Exemplo auto junção Empregado id nome datanasc end cpf gerente 1 José 05/01/1977 R. X, 111 111.111.111-11 NULL 2 Maria 07/07/1978 R. Y, 22 222.222.222-22 1 3 João 11/01/1984 R. Z, 78 333.333.333-33 2 4 Pedro 03/08/1954 R. W, 10 444.444.444-44 1 Nota: exemplo de auto junção Auxiliada pelo uso de apelidos Exemplo auto junção Junção de Empregado t1 e Empregado t2 t1.id t1.nome t1.datanasc 2 Maria 07/07/1978... 1 3 João 11/01/1984... 2 4 Pedro 03/08/1954... 1... t1.gerente t2.id t2.nome t2.datanasc... t2.gerente 1 José 05/01/1977... NULL 2 Maria 07/07/1978... 1 1 José 05/01/1977... NULL 34 35 Junção na cláusula FROM SQL-92 inclusão de operações adicionais na cláusula FROM Operações adicionais no PostgreSQL [INNER] JOIN... ON LEFT [OUTER] JOIN... ON RIGHT [OUTER] JOIN... ON FULL [OUTER] JOIN... ON CROSS JOIN 36 -- Selecionar todos os títulos dos livros da editora ROCCO SELECT LI.TITULO FROM EDITORA ED INNER JOIN LI ON ED.COD_EDITORA = LI.COD_EDITORA WHERE (ED.RAZAO = 'ROCCO'); FROM EDITORA FROM 37 4

/* Selecionar os títulos da tabela livro e os nomes da tabela autor */? /* Selecionar os títulos da tabela livro e os nomes da tabela autor */ SELECT AU.NOME, LI.TITULO FROM AUTOR AU INNER JOIN ( LI INNER JOIN ESCREVE ES ON LI.COD_ = ES.COD ESC) ON AU.COD_AUTOR = ES.COD_AUTOR_ESC WHERE (AU.NOME = 'PAULO COELHO'); AUTOR ESCREVE AUTOR ESCREVE 38 39 Variante da operação de JOIN que baseia-se em valores NULL. O resultado de um OUTER JOIN é igual a de um INNER JOIN mas com a inclusão das tuplas que não satisfazem a condição de JOIN. Três variantes: LEFT OUTER JOIN As tuplas da tabela à esquerda que não obedecem a condição do JOIN aparecem na resposta RIGHT OUTER JOIN As tuplas da tabela à direita que não obedecem a condição do JOIN aparecem na resposta FULL OUTER JOIN As tuplas das duas tabelas que não obedecem a condição do JOIN aparecem na resposta 40 /* Criando as tabelas*/ CREATE TABLE orientador ( id INT PRIMARY KEY, nome VARCHAR(255) ); CREATE TABLE aluno ( matricula INT PRIMARY KEY, nome VARCHAR(255), orientador_id INT REFERENCES orientador(id) ); 41 -- Povoando as tabelas INSERT INTO orientador VALUES (1,'Prof. Luiz'), (2,'Profa. Maria'); INSERT INTO aluno VALUES (1,'Alessandra',NULL), (2,'Walter',2), (3,'Jéssica',NULL); /* execute as seguintes junções nessas duas tabelas e observe os resultados */ INNER JOIN LEFT OUTER JOIN RIGHT OUTER JOIN FULL OUTER JOIN CROSS JOIN 42 43 5

FROM orientador INNER JOIN aluno FROM orientador LEFT OUTER JOIN aluno 44 45 FROM orientador RIGHT OUTER JOIN aluno FROM orientador FULL OUTER JOIN aluno 46 47 Bibliografia FROM orientador CROSS JOIN aluno; Elmasri, Ramez; Navathe, Shamkant B. Sistemas de banco de dados. 4 ed. São Paulo: Addison Wesley, 2005, 724 p. Bibliografia: p. [690]-714. Material didático produzido pelo professor Bruno Travençolo 48 49 6

Leitura complementar para casa Capítulo 8 do livro: Elmasri, Ramez; Navathe, Shamkant B. Sistemas de banco de dados. Manual do SGBD PostgreSQL http://www.postgresql.org/docs/manuals/ Explorar as outras particularidades dos comandos apresentados 50 7