- Um "query block" permite a implementação das operações de selecção, projecção e junção da álgebra relacional.

Documentos relacionados
Definida pelo American National Standard Institute (ANSI) em 1986

Um modelo por si próprio não pode realizar qualquer unidade de trabalho útil. É apenas uma representação da realidade.

{... ou CTRL+O } João Muranho Pág. 1

SQL (Tópicos) Structured Query Language

ANÁLISE E PROJETO DE BANCO DE DADOS

Sumário SELECT + FROM

SQL - Perguntas. André Restivo. Faculdade de Engenharia da Universidade do Porto. February 24, 2012

SQL DML. Frederico D. Bortoloti

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

SQL. Prof. Márcio Bueno.

Banco de Dados I Linguagem SQL Parte 2. Autor: Prof. Cláudio Baptista Adaptado por: Prof. Ricardo Antonello

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

Banco de Dados I. Aula 14 - Prof. Bruno Moreno 11/10/2011

Linguagem de Consulta - SQL

Linguagem de Consulta Estruturada SQL- DML

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

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

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

Apresentação Modelo e SQL. André Luiz Montevecchi

BASES DE DADOS I LTSI/2. Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011

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

Comandos de Manipulação

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

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

SQL. Prof. Roger Cristhian Gomes

Bases de Dados 2005/2006. Aula 5

IMPLEMENTAÇÃO DE BANCO DE DADOS

Álgebra Relacional e SQL operações de interesse

Bancos (Bases) de Dados

A cláusula order by permite ordenar tuplos exemplo: listar por ordem alfabética os nomes dos clientes com empréstimo na agência de Perryridge

Ordenação de tuplos order by

Introdução ao PostgreSQL

Álgebra Relacional e SQL

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Standards ISO e ANSI SQL-86, SQL-89, SQL-92, SQL:1999, SQL:2003

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

Universidade da Beira Interior Cursos: Engenharia Informática, Ensino da Informática, Matemática Aplicada e Matemática /Informática

Agenda. Linguagem de Consulta SQL. 1. Introdução Histórico. 1. Introdução BD Relacionais

STRUCTURED QUERY LANGUAGE (SQL)

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

BCD29008 Banco de dados

Rápida revisão do Modelo Relacional

Á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:

SQL-99: Esquema de BD EMPRESA

Bases de Dados. DML Data Manipulation Language Parte 2

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

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:

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

SQL - Consultas

Structured Query Language (SQL) SQL é uma linguagem normalizada (ANSI) para consultas e actualizações de bases de dados relacionais.

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

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

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

Banco de Dados. Professora: Luciana Faria

Linguagem SQL Comando SELECT Agrupamento de Resultados

SQL (com MySQL) Apresentação OBJETIVOS. Programação

Bases de Dados. Parte V: A Linguagem SQL. Parte V

SQL Consultas Básicas

A U L A 3 S U B G R U P O S D M L E D Q L : I N S E R I N D O E P E S Q U I S A N D O D A D O S E M U M A T A B E L A

Consultas SQL. Andre Noel

Programação SQL. INTRODUÇÃO II parte

SISTEMAS DE BANCO DE DADOS. Prof. Adriano Pereira Maranhão

1. Assinale as afirmações que são verdadeiras e as que são falsas, corrigindo-as:

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

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

Uma expressão básica em SQL consiste em três cláusulas: select, from e where.

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

Básico da Linguagem SQL. Definição de Esquemas em SQL. SQL(Structured Query Language)

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

4. Projecto de Bases de Dados

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

SQL TGD/JMB 1. Projecto de Bases de Dados. Linguagem SQL

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

Subconsulta na Cláusula FROM

Linguagem de Consulta Estruturada SQL- DML

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

ROTEIRO Introdução Álgebra e Cálculo Relacional Operações da Álgebra Relacional Classificação de Operadores da Álgebra Relacional Mapeamento AR -> SQL

SQL. Agregações e agrupamentos. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

Exame de Recurso de Base de Dados Universidade do Algarve 03/Fev/2005, (duração: 2 horas)

Projeto de Banco de Dados

ALGEBRA RELACIONAL. Álgebra Relacional Conjunto básico de operações para o Modelo Relacional O resultado é uma relação

Sistemas de Informação e Bases de Dados 2012/2013. Linguagem SQL

- SQL Linguagem de Manipulação de Dados

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

Ex.: INSERT INTO tmpautor (CDAUTOR, NMAUTOR) VALUES (1, Renato Araújo )

Bases de Dados BDDAD. Linguagem SQL. Comando SELECT Divisão Algébrica. Nelson Freire (ISEP LEI-BDDAD 2015/16) 1/9

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

Manipulando a base de dados

Introdução a Bancos de Dados

Linguagem SQL - Structured Query Language

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

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

Laboratório de Banco de Dados II Aula 04. Prof. Érick de Souza Carvalho

Manipulação de Dados com SQL

Teste Exemplo Revisão da tentativa 1

Linguagem SQL - Structured Query Language

Álgebra Relacional operações adicionais. Encontrar tuplos que obedecem a uma dada relação questões do tipo: quem já leu todos os livros que eu já li?

Prof. Fabiano Taguchi

Transcrição:

2.3 Linguagens relacionais (continuação) SQL Structured Query Language 1) "Query block" Select <lista de atributos> From <lista de relações> Where <expressão lógica> - Um "query block" permite a implementação das operações de selecção, projecção e junção da álgebra relacional. - Um query não especifica a ordem pela qual as operações são executadas. 2) Considere o esquema relacional: Departamento(DepNum, Nome, Local) Empregado(EmpNum, Nome, Categoria, Salario, DepNum) Projecto(ProjNum, Designacao, Fundos) Atribuicao(EmpNum,ProjNum, Funcao) 3) Projecção {Operação que permite seleccionar tuplos de uma tabela. } - O query seguinte constrói uma tabela de números de departamento e categorias de empregados: Select DepNum, Categoria Nota: Não elimina "linhas" repetidas 62/1

Select Distinct DepNum, Categoria Nota: Elimina linhas repetidas ( pode consumir muito tempo) { <DepNum, Categoria> (Empregado) } - É possível ordenar a tabela resultado de um query block: Select Nome, DepNum Order By Nome Ordenação por ordem crescente/decrescente: Select Nome, DepNum Order By Nome ASC, DepNum DESC 4) Restrição {Operação que permite seleccionar tuplos de uma tabela que satisfazem uma dada condição. } - Selecção de todos os empregados que são programadores: { σ < Categoria= Programador > (Empregado) } Select * From empregado Where Categoria = "Programador" Nota: Select * Selecciona todos os atributos. 62/2

- Selecção, projecção e ordenação i)nomes dos empregados que são programadores: Select Nome Where Categoria = "Programador" Order By Nome ii) Nomes dos empregados que são programadores e têm salário superior a 2000. { <Nome> ( σ < Categoria= Programador and Salário > 2000> (Empregado) ) } Select Nome From empregado Where Categoria = "Programador" And Salario > 2000 iii) Empregados que trabalham no departamento 7 ou 9. { σ < DepNum = 7 or DepNum= 9 > (Empregado } Select * From empregado Where DepNum = 7 or DepNum = 9 Equivalente a: Select * From empregado Where DepNum In (7, 9) 62/3

Operadores: =, <>, >, >=, <, <= And, Or, Not In Contains ( não é standard) Exercício: Qual é o resultado do query seguinte? Select Nome Where DepNum In ( Select DepNum From Departamento Where Local = "Lisboa" ) R: Nomes dos empregados que pertencem a departamentos localizados em Lisboa. 5) Junção - Obter uma listagem com o nome dos empregados e a localização dos respectivos departamentos. { <Empregado.Nome, Departamento.Local > ( Empregado <DepNum=DepNum > Departamento) } O símbolo representa Select Empregado.Nome, Departamento.Local, Departamento Where Empregado.DepNum = Departamento.DepNum 62/4

Exercício (ver página 62): - Qual dos querys seguintes permite fornecer: "Nomes dos programadores e respectivos departamentos se estes estão localizados em Lisboa"? (1) Select E.Nome, D.Nome E, Departamento D Where E.Categoria = "Programador" And D.Local = "Lisboa" Ou (2) Select E.Nome, D.Nome E, Departamento D Where E.Categoria = "Programador" And D.Local = "Lisboa" And E.DepNum = D.DepNum R: O segundo query. ( Porquê?) Supondo, EmpDep Nome Categoria Salário DepNum 1 E1 Programador 1000 5 2 E2 Programador 1000 6 3 E3 Analista 2000 7 DepNum Nome Local 5 D1 Lisboa 6 D2 Porto 7 D3 Lisboa O resultado do query (1) é: E.Nome D.nome E1 Lisboa E1 Lisboa E2!? Lisboa E2!? Lisboa O resultado do query (2) é: E.Nome D.nome E1 Lisboa 62/5

6) Produto Cartesiano Select *, Departamento 7) União, Intersecção e Diferença União Union Intersecção Intersect Diferença Minus (ou Except) Os operandos têm que ser compatíveis:. têm que ter o mesmo grau, i.e., o mesmo número de colunas;. colunas correspondentes têm de ter o mesmo domínio. - Números dos departamentos que não têm empregados: { <DepNum> (Departamento) - <DepNum> (Empregado) } Select DepNum From Departamento Minus Select DepNum 62/6

- Números dos programadores que trabalham num projecto: { <EmpNum> ( σ < Categoria = Programador > (Empregado) ) <EmpNum> (Atribuicao) } Select EmpNum Where Categoria = "Programador" Intersect Select EmpNum From Atribuicao 8) Divisão - Obter uma tabela com os números de empregado, atribuídos a todos os projectos com fundos superiores a um milhão de euros. { ( <ProjNum> (Atribuicao) ) ( <ProjNum> (σ <Fundos > 1000000 > (Projecto)))} Select Distinct EmpNum From Atribuicao X Where ( Select ProjNum From Atribuicao Where EmpNum = X.EmpNum) Conjunto de projectos atribuídos a cada empregado Contains (Select ProjNum From Projecto Where Fundos > 1000000) 62/7

Notas: X é uma variável de contexto cujo âmbito é a relação atribuição. R1 Contains R2 é verdade se o conjunto de tuplos de R2 é um subconjunto de R1. Exercício: Considere a base de dados exemplo (pág. 32) - Quais os números das obras que receberam fornecimentos de ambos os materiais cimento e areia? Select Unique N_Obra From Fornecimento F Where (Select N_Material From Fornecimento Where N_Obra= F.N_Obra ) Contains ( Select N_Material From Obra Where Nome_Material = Areia Or Nome_Material = Cimento ) Em álgebra relacional? 62/8

9) Funções Standard AVG Valor médio SUM Soma de valores COUNT MAX MIN - Qual o salário médio dos programadores? Select AVG(Salario) Where Categoria = "Programador" - Número de funções diferentes que o empregado 128 executa em projectos: Select COUNT(Distinct Funcao) From Atribuicao Where EmpNum = 128 Nota: Count(*) Número de tuplos que satisfaz a clausula Where. Actualizações: A SQL não é só uma linguagem de query. É possível também inserir, eliminar ou modificar tuplos. 10) Inserção - Inserir o empregado 843 com o nome José e a categoria Programador: 62/9

Insert Into Empregado (EmpNum, Nome, Categoria) Values (843,'José','Programador'). Os atributos não especificados assumem o valor Null.. Se são especificados valores para todos os atributos não é necessário referir os seus nomes Supondo que além das relações definidas em (2) existe também a relação: Candidatos ( EmpNum, Nome, Categoria, Salário, DepNum) O comando Insert into Empregado Select EmpNum, Nome, Categoria, Salário*1.1, DepNum From Candidatos Where Categoria In ( Programador, Analista ) insere na relação empregado tuplos seleccionados da relação Candidatos. 11)Eliminação - Eliminação do tuplo do empregado 843: Delete Where EmpNum = 843 62/10

- Eliminar todos os empregados cujo departamento está localizado em "Lisboa": Delete Where DepNum In ( Select DepNum From Departamento Where Local = "Lisboa") 12) Actualização - Aumentar o salário (em 40%) do empregado 843: Update Empregado Set Salario = Salario * 1.4 Where EmpNum = 843 - Aumentar o salário (em 20%) aos empregados do projecto 10 : Update Empregado Set Salario = Salario * 1.2 Where EmpNum In ( Select EmpNum From Atribuicao Where ProjNum = 10) 62/11