linguagem de manipulação de dados. 2 conteúdos introdução ao sql comando select – extracção...

27
Linguagem de Manipulação de Dados

Upload: internet

Post on 22-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Linguagem deManipulação de Dados

Page 2: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Linguagem de Manipulação de Dados 2

Conteúdos

Introdução ao SQL Comando SELECT – Extracção de Dados

Pesquisas Simples Restrições na pesquisa de dados (Cláusula Where) Ordenação Junção de Tabelas Funções de Agregação Cláusulas Group By e Having Subpesquisas Uniões

Page 3: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Linguagem de Manipulação de Dados 3

Introdução ao SQL

Linguagem Standard para manipulação de dados É reconhecida por qualquer SGBD Serve de interface entre o utilizador e o Sistema

Gestor (como SQL Server, MS Access, Oracle, etc.) Os comando SQL correspondem a instruções

que visam manipular ou aceder aos dados existentes na Base de Dados

Page 4: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Linguagem de Manipulação de Dados 4

Características da Linguagem SQL

Com a linguagem SQL é possível: Criar, Alterar e Remover tabelas, chaves, índices,

views, etc; Inserir, Alterar e Apagar dados; Interrogar a Base de Dados (Pesquisar dados); Controlar o acesso dos utilizadores; Obter a garantia da consistência e integridade dos

dados.

Page 5: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Comando SELECT

A interrogação de qualquer Base de Dados Relacional faz-se sempre utilizando o comando SELECT

Em seguida é apresentada a sintaxe do comando onde: Parêntesis rectos indicam que o componente é opcional; Chavetas indicam que o utilizador terá que escolher um

dos valores colocados entre as chavetas; Palavras maiúsculas representam as palavras reservadas.

Linguagem de Manipulação de Dados 5

Page 6: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Comando SELECT

SELECT Campo1, Campo2, …, CampoN, *FROM Tabela1, …, TabelaK[WHERE Condição][GROUP BY …][HAVING …][ORDER BY …]

Linguagem de Manipulação de Dados 6

Page 7: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Pesquisas Simples

Aplicação simplificada do comando SELECT

SELECT Campo1, Campo2, …, CampoN, *FROM Tabela1, …, TabelaK

Em seguida são apresentados alguns exemplos de pesquisas simples.

Linguagem de Manipulação de Dados 7

Page 8: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Pesquisas Simples

Tendo em conta a seguinte tabela:

Seleccione todos os registos da tabela

SELECT BI, NomeFROM Empregado

ouSELECT * FROM Empregado

ou

SELECT empregado.BI, empregado.Nome FROM Empregado

Linguagem de Manipulação de Dados 8

Page 9: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Pesquisas Simples

Para as pesquisas que se seguem vamos assumir a seguinte tabela:

Linguagem de Manipulação de Dados 9

Page 10: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Pesquisas Simples

Seleccionar todos os nomes registados (sem repetições de nomes)

SELECT DISTINCT NomeFROM Empregado

Renomear Colunas e Tabelas

SELECT BI, Salario [AS] OrdenadoFROM Empregado [AS] Emp

ouSELECT Emp.BI, Emp.Salario AS OrdenadoFROM Empregado Emp

Linguagem de Manipulação de Dados 10

Page 11: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Pesquisas Simples

Apresentar o ordenado real (líquido) dos empregados (Salário - Descontos)

SELECT BI, Nome, Salario - Descontos AS OrdenadoFROM Empregado

Apresentar os empregados com o ordenado líquido superior a 500

SELECT BI, Nome, Salario-Descontos AS Ord FROM EmpregadoWHERE Salario - Descontos > 500

Linguagem de Manipulação de Dados 11

Page 12: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Cláusula WHERE

Permite restringir o número de linhas a apresentar.

Para se restringir o conjunto de registos é necessário enviar uma condição ao comando SELECTSELECT …FROM ..WHERE Condição

Linguagem de Manipulação de Dados 12

Page 13: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Operador Descrição

= Igual a

> Maior que

< Menor que

>= Maior ou Igual que

<= Menor ou Igual que

<> Diferente

Linguagem de Manipulação de Dados 13

Operadores RelacionaisOperador Exemplo

AND Cond1 AND Cond2

OR Cond1 OR Cond2

NOT NOT Condição

Operadores Lógicos

Operadores

Page 14: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Linguagem de Manipulação de Dados 14

Operador Descrição Exemplo

BETWEEN Entre dois valores BETWEEN Valor1 AND Valor2

IN Pertencente a um conjunto de valores

Campo IN (val1, val2, valN)

IS Tratamento de Nulos. Permite verificar se um campo está vazio.

Campo IS NULL

LIKE Comparação de Strings.Permite fazer comparações de partes da string através de WildCards.

Campo LIKE ‘T*’

Access Outros SGBD Significado

* % Qualquer string

? _ (underscore)

Um carácter qualquer

Wildcards

Outros operadores

Page 15: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Cláusula ORDER BY

A resposta a uma pergunta pode ser ordenada segundo uma ou mais colunas.

Para proceder à ordenação usa-se a cláusula ORDER BY seguido das colunas que queremos ordenar.

Por defeito as colunas são ordenadas ascendentemente.

Podemos mudar a direcção da ordenação usando as partículas ASC e DESC.

Linguagem de Manipulação de Dados 15

Page 16: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Esta cláusula, se existir, aparece sempre no final do comando SELECT

SELECT Campo1, Campo2, …, CampoN, *FROM Tabela1, …, TabelaK[WHERE Condição][GROUP BY …][HAVING …][ORDER BY Campo1 [ASC|DESC], Campo2 [ASC|DESC], …]

Linguagem de Manipulação de Dados 16

Cláusula ORDER BY

Page 17: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Pesquisas Simples

Apresentar os empregados ordenados pelo salário de forma decrescente

SELECT BI, Nome, SalarioFROM EmpregadoORDER BY Salario DESC

Apresentar todos os nomes registados (sem repetições de nomes) de forma ordenada

SELECT DISTINCT NomeFROM EmpregadoORDER BY Nome

Linguagem de Manipulação de Dados 17

Page 18: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Suponha as seguintes tabelas

Linguagem de Manipulação de Dados 18

NumEmp Nome Posto NumSeccao

1 Ana Programador 10

2 Nuno Engenheiro 70

CodSeccao Seccao

10 Fabrico

20 Comercial

70 Recursos Humanos

Empregado = {NumEmp, Nome, Posto, NumSeccao}

Seccao = {CodSeccao, Seccao}

Pesquisa com Várias Tabelas

Page 19: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Apresente todos os empregados e nome da secção a que pertencem.SELECT * FROM Empregado, Seccao

Linguagem de Manipulação de Dados 19

NumEmp Nome Posto NumSeccao CodSeccao Seccao

1 Ana Programador 10 10 Fabrico

2 Nuno Engenheiro 70 10 Fabrico

1 Ana Programador 10 20 Comercial

2 Nuno Engenheiro 70 20 Comercial

1 Ana Programador 10 70 Recursos Humanos

2 Nuno Engenheiro 70 70 Recursos Humanos

Resultado Incorrecto!

Pesquisa com Várias Tabelas

Page 20: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Pesquisa com Várias Tabelas

O comando anterior juntou as duas tabelas efectuando o produto cartesiano. Ou seja, associou a cada linha da tabela Empregado

o conjunto das linhas da tabela Seccao. Como a tabela Empregado contém 2 registos e a

tabela Seccao contém 3 registos o resultado final foi de 2*3=6 registos.

Linguagem de Manipulação de Dados 20

Page 21: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Ora o que se pretende é obter a informação existente nas duas tabelas, mas estas estão relacionadas através dos campos NumSeccao (tab. Empregado) e CodSeccao (tab. Seccao).

Portanto interessa visualizar o registo da tabela Seccao que tem o CodSeccao igual. Isto é, em que NumSeccao=CodSeccao.

Linguagem de Manipulação de Dados 21

Pesquisa com Várias Tabelas

Page 22: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Pesquisa com Várias Tabelas

Ou seja:SELECT * FROM Empregado, SeccaoWHERE NumSeccao=CodSeccao

Resultado

Linguagem de Manipulação de Dados 22

NumEmp Nome Posto NumSeccao CodSeccao Seccao

1 Ana Programador 10 10 Fabrico

2 Nuno Engenheiro 70 70 Recursos Humanos

Page 23: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Pesquisa com Várias Tabelas

O comando:SELECT * FROM Empregado, SeccaoWHERE NumSeccao = CodSeccao

É equivalente a:SELECT * FROM Empregado INNER JOIN Seccao ON NumSeccao=CodSeccao

Podendo ainda ser traduzido em:SELECT e.*, s.* FROM Empregado e INNER JOIN Seccao s ON e.NumSeccao=s.CodSeccao

Linguagem de Manipulação de Dados 23

Page 24: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Como se está a pesquisar dados em tabelas que estão relacionadas entre si, é aconselhável utilizar os operadores próprios para realizar essas junções.

Deste modo separam-se as selecções e as junções de uma forma clara.

Uma junção normal em SQL é chamada de junção interna (INNER JOIN).

Após a indicação da junção é necessário referir as colunas responsáveis pela junção (cláusula ON).

Linguagem de Manipulação de Dados 24

Junções de Tabelas (JOIN)

Page 25: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Existem várias variantes do JOIN: INNER JOIN - apenas aparecem os que fazem match; LEFT JOIN – além dos registos que fazem match, os

registos da tabela esquerda que não existam na direita também aparecem.

RIGHT JOIN – além dos registos que fazem match, aparecem todos os restantes registos da tabela direita que não existam na esquerda.

No LEFT JOIN e RIGHT JOIN (Outer Joins) quando o registo não existe numa das tabelas (não existe match) os valores aparecem a NULL.

Linguagem de Manipulação de Dados 25

Junções de Tabelas (JOIN)

Page 26: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Junções de Tabelas (JOIN)

Sintaxe do JOINTabela1 JUNÇÃO Tabela2 CLÁUSULA

Traduzindo para SQLTabela1 [INNER|LEFT|RIGHT] JOIN Tabela2 ON Tabela1.Campo=Tabela2.Campo

Linguagem de Manipulação de Dados 26

Page 27: Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados

Referências

DAMAS, Luís: SQL, FCA

Linguagem de Manipulação de Dados 27