Definida pelo American National Standard Institute (ANSI) em 1986



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

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

SQL DML. Frederico D. Bortoloti

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

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

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

Comandos de Manipulação

SQL. Prof. Márcio Bueno.

Bases de Dados 2005/2006. Aula 5

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

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

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

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II

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

Banco de Dados. Prof. Antonio

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

Linguagem de Consulta Estruturada SQL- DML

Introdução às Bases de Dados

Linguagem de Consulta - SQL

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

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

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

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

Introdução ao SQL. Aécio Costa

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

Um modelo de dados é a colecção de, pelo menos, 3 componentes:

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

SQL (Structured Querie Language) Escola Secundária de Emídio Navarro 2001/2002 Estruturas, Tratamento e Organização de Dados

IF685 Gerenciamento de Dados e Informação - Prof. Robson Fidalgo 1

DML - SELECT Agrupando Dados

Bases de Dados 2007/2008. Aula 1. Referências

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

SQL Structured Query Language

SQL: Interrogações simples

ANÁLISE E PROJETO DE BANCO DE DADOS

António Rocha Nuno Melo e Castro

Structured Query Language (SQL)

LINGUAGEM SQL. DML - Linguagem de Manipulação de Dados

SQL (Tópicos) Structured Query Language

Sistemas de Bases de Dados Relacionais Introdução ao SQL. Interrogações diversas sobre a Base de Dados Northwind

Prof.: Clayton Maciel Costa

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

SQL UMA ABORDAGEM INTERESSANTE

Banco de Dados. Structured Query Language SQL. Prof. Walteno Martins Parreira Jr 1.

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

S Q L 31/03/2010. SQL - Structured Query Language Linguagem de Consulta Estruturada

Tarefa Orientada 16 Vistas

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

FEAP - Faculdade de Estudos Avançados do Pará PROFª LENA VEIGA PROJETOS DE BANCO DE DADOS UNIDADE V- SQL

PROGRAMA. Aquisição dos conceitos teóricos mais importantes sobre bases de dados contextualizados à luz de exemplos da sua aplicação no mundo real.

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

Bases de Dados. DML Data Manipulation Language Parte 1

S Q L 15/01/2013. Enfoques de SQL. Enfoques de SQL SQL. Usos de SQL. SQL - Origem/Histórico. Gerenciamento de Dados e Informação

Linguagem de Banco de Dados DML Exercícios

Linguagem de Consulta Estruturada (SQL)

SQL (Structured Query Language)

Bases de Dados. Álgebra Relacional ou Como manipular uma BD SQL. P. Serendero,

PROGRAMA. Objectivos Gerais :

Linguagem SQL - Structured Query Language

SQL é uma linguagem de consulta que implementa as operações da álgebra relacional de forma bem amigável.

Bases de Dados I LEI/2

4.6. SQL - Structured Query Language

Linguagem SQL - Structured Query Language

Curso PHP Aula 08. Bruno Falcão

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

Consultas SQL Parte II

Programação SQL. Manipulação de Dados. DML Data Manipulation Language

COMPETÊNCIAS ESPECÍFICAS Compreender e utilizar a linguagem SQL, na construção e manutenção de uma base de dados.

SQL Consultas Básicas

BANCO DE DADOS Parte 4

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

Banco de Dados. Maurício Edgar Stivanello

SQL BANCO DE DADOS. Linguagem de consulta SQL. Linguagem de consulta SQL. Linguagem de Consulta Estruturada

EXEMPLOS DE COMANDOS NO SQL SERVER

Projeto de Banco de Dados

Tarefa Orientada 15 Manipulação de dados

Desenvolvimento de uma base de dados. Relação. Modelo lógico: SGBD relacional

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

BCD29008 Banco de dados

O que são Bancos de Dados?

Esquema da Relação. Modelo Relacional. Instância da Relação. Exemplo. Uma base de dados é uma colecção de uma ou mais relações com nomes distintos

Projeto e Implementação

Structured Query Language (SQL) Aula Prática

Query SQL (Structured Query Language)

SQL S Q L. Introdução. Enfoques de SQL. SQL - Origem/Histórico. Usos de SQL. SQL - Vantagens. Banco de Dados. Fernando Fonseca Ana Carolina

Os dados no MySQL são armazenado em tabelas. Uma tabela é uma colecção de informação relacionada e consiste em colunas e linhas.

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

NOME SEXO CPF NASCIMENTO SALARIO

14/08/2008. Curso Superior de Tecnologia em Banco de Dados Disciplina: Projeto de Banco de Dados Relacional 1 Prof.: Fernando Hadad Zaidan

Tarefa Orientada 13 Agrupamento e sumário de dados

SQL (Linguagem de Consulta Estruturada)

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

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

Exercícios de Lógica Exercícios de Fixação 08

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

Memória de aula Semanas 15 e 16

EXERCÍCIOS PRÁTICOS. Banco de Dados

select nome from Médicos where codm in (select codm from Consultas where data = 06/06/13 )

Transcrição:

2.3. Linguagens Relacionais SQL Structured Query Language Linguagem para o modelo relacional: Definida pelo American National Standard Institute (ANSI) em 1986 Adoptada em 1987 como um standard internacional pelo International Organization for Standardization (ISO 1987) A linguagem SQL possui duas componentes principais: o Linguagem de definição de dados (DDL) para definição da estrutura de dados e controlo de acesso. o Linguagem de manipulação de dados (DML) para consultar e actualizar os dados. Linguagem não procedimental, isto é, especificamos que informação queremos e não como obter essa informação 1 ) Query block (Bloco base de interrogação) SELECT < lista de atributos> FROM <lista de relações> WHERE <expressão lógica> A estudar detalhadamente nas aulas práticas 61

- 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 Select Distinct DepNum, Categoria Nota: Elimina linhas repetidas ( pode consumir muito tempo) { <DepNum, Categoria> (Empregado) } 62

- É 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. - Selecção, projecção e ordenação i)nomes dos empregados que são programadores: Select Nome Where Categoria = "Programador" 63

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) Operadores: =, <>, >, >=, <, <= And, Or, Not In Contains ( não é standard) 64

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 Exercício: - Qual dos queries 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" 65

Ou And D.Local = "Lisboa" (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 6) Produto Cartesiano Select *, Departamento 66

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 - Números dos programadores que trabalham num projecto: { <EmpNum> ( σ < Categoria = Programador > (Empregado) ) <EmpNum> (Atribuicao) } Select EmpNum 67

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) 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: 68

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? 9) Funções Standard AVG Valor médio SUM Soma de valores COUNT MAX MIN - Qual o salário médio dos programadores? 69

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

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 - Eliminar todos os empregados cujo departamento está localizado em "Lisboa": Delete Where DepNum In ( Select DepNum From Departamento Where Local = "Lisboa") 71

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) 72