Embed
Email

Banco de Dados Aplicado ao Desenvolvimento de Software

Document Sample

Shared by: Jun Wang
Categories
Tags
Stats
views:
7
posted:
11/15/2011
language:
pages:
25
BANCO DE DADOS APLICADO AO

DESENVOLVIMENTO DE

SOFTWARE

BDD

DML – CONSULTANDO DADOS EM

TABELAS

Estrutura Básica



SELECT => PROJEÇÃO

FROM => TABELA OU PRODUTO CARTESIANO DELAS

WHERE => SELEÇÃO



Coluna1[,Coluna2 [,...] ] (Condição(Tabela1 [X Tabela2 [X ... ] ]))



SELECT Coluna1[,Coluna2 [, ... ] ]

FROM Tabela1,[Tabela2 [, ... ] ]

WHERE Condição

DML – CONSULTANDO DADOS EM

TABELAS

Estrutura Genérica



SELECT [DISTINCT | ALL] { * | [Tabela.]Coluna1 [AS

Alias1]

[ [Tabela.]Coluna2 [AS Alias2] [, ...]]}

FROM Tabela1 [, Tabela2 [, ... ] ]

[WHERE {Condição Simples | Condição de Sub-consulta}

]

[ORDER BY Coluna1 [ASC | DESC] [,Coluna2 [ASC |

DESC] [, ... ]]]

[GROUP BY Coluna1 [,Coluna2 [, ... ]] [HAVING

Condição ] ]

[ {UNION | IMTERSECT | EXCEPT} SELECT ... ]

DML – CONSULTANDO DADOS EM

TABELAS





 SELECT/FROM - Projeta os dados da(s) tabela(s), de

acordo com os critérios especificados.

 A projeção do resultado é em uma estrutura tipo

tabela

 Basta informar o que se quer, sem se preocupar como

fazer isto (SQL Não é procedural).

 Na cláusula SELECT, pode-se utilizar operadores

aritméticos e funções de agregações, para projetar

cálculos.

DML – CONSULTANDO DADOS EM TABELAS

Exemplos:



/* Projetar todas as informações dos autores */

SELECT CodAutor, Nome, Nascimento

FROM AUTOR ;

OU

SELECT *

FROM AUTOR ;



/* Projetar a média dos valores dos livros */

SELECT AVG (Valor)

FROM LIVRO;



/*Projetar todos os livros(títulos) e seus valores com 10% de desconto*/

SELECT Titulo, Valor - (Valor * 0.1)

FROM LIVRO;



/* Projetar a quantidade de autores cadastrados */

SELECT COUNT (*) AS QUANTIDADE, „ud‟ AS UNIDADE

FROM AUTOR;

DML – CONSULTANDO DADOS EM

TABELAS

Em SQL a eliminação de linhas duplicadas não é feita

automaticamente, devendo a mesma ser especificada

explicitamente.



ALL é o padrão quando não especificado DISTINCT.

Exemplos:



/* Projetar todas as cidades das editoras sem duplicatas */

SELECT ALL Cidade

/* Projetar todas as cidades

FROM EDITORA;

das editoras repetidamente*/

OU

SELECT Cidade SELECT DISTINCT Cidade

FROM EDITORA; FROM EDITORA;

DML – CONSULTANDO DADOS EM

TABELAS

Uma coluna pode ser especificada pelo nome da sua tabela

(Tabela.Coluna), bem como, ser renomeada durante a

consulta

(Coluna AS ColunaRenomeada)

/* Projetar todos os nomes e respectivos nascimentos

da tabela autor.

NOTE: mesmo especificando Tabela.Coluna, FROM é

obrigatório */



SELECT AUTOR.Nome, AUTOR.Nascimento

FROM AUTOR;



/* Projetar todos os títulos dos livros e seus valores em

dobro */



SELECT Titulo, Valor * 2 as Dobro

FROM LIVRO;

DML – CONSULTANDO DADOS EM

TABELAS

 WHERE - Especifica quais linhas da(s) tabela(s) listada(s)

na cláusula FROM são afetadas pela condição.

 Se esta não for especificada, a consulta retornará todas as

linhas da tabela.

 Operadores Utilizados









 A condição de WHERE pode ser de três tipos:

 Comparação

 Ligação entre tabelas (Join)

 Sub-Consulta (Sub-Queries)

DML – CONSULTANDO DADOS EM

TABELAS

Comparação



 Expressão Operador Relacional Expressão

A condição é verdadeira quando a 1a expressão atende ao operador

relacional sobre a 2a expressão.

/* Projetar livros publicados após 30 de maio de 1993 */

SELECT *

FROM LIVRO

WHERE Publicacao > „5/30/93‟;



 Expressão [NOT] BETWEEN Expressão AND Expressão

A condição é verdadeira quando a 1a expressão é um valor

compreendido entre a 2a e 3a expressões (inclusive).

/* Projetar livros com valor de 10.00 a 100.00 */

SELECT *

FROM LIVRO

WHERE Valor BETWEEN 10.00 AND 100.00;

DML – CONSULTANDO DADOS EM

TABELAS

Comparação

 Expressão [NOT] IN (Valores)

A condição é verdadeira se o valor da

expressão é igual a um dos valores entre

parênteses



/* Projetar as Editoras com sede em São

Paulo ou Rio de Janeiro*/



SELECT *

FROM EITORA

WHERE Cidade IN („São Paulo‟, „Rio de

Janeiro‟);

DML – CONSULTANDO DADOS EM TABELAS

Comparação



Coluna [NOT] LIKE ‘Cadeia de Caracteres’

 A condição é satisfeita quando o valor da coluna é igual ao valor da

cadeia de caracteres.

 Caracteres especiais para construção da cadeia de caracteres:

“%” ou “*” ® Usado para representar zero ou mais caracteres.

“_” ou “?” ® Usado para representar um caractere.



/*Projetar todos os autores cujo nome tenha 10 caracteres e inicie com R*/



SELECT *

FROM AUTOR

WHERE Titulo LIKE „R?????????‟;

/*Projetar todos os livros que tenham



Banco de Dados no seu título*/



SELECT *

FROM LIVRO

WHERE Titulo LIKE „%Banco de Dados%‟;

DML – CONSULTANDO DADOS EM

TABELAS

Comparação



Coluna IS [NOT] NULL

A condição é satisfeita quando o valor da coluna for NULL

/*Projetar todos os livros que estão sem preço definido */



SELECT *

FROM LIVRO

WHERE Valor IS NULL



Pode-se misturas os vários tipos de comparação

/*Projetar todos os livros que iniciam com R, estão com preço definido

e foram publicados depois de 1/1/1995*/



SELECT *

FROM LIVRO

WHERE Titulo LIKE „R%‟ and

Valor IS NOT NULL and

Publicacao > „1/1/1995‟

DML – CONSULTANDO DADOS EM

TABELAS

 Ligação entre tabelas (Join)

 Diz-se que tabelas estão relacionadas se tiverem

campos comuns (ch.primária e ch. estrangeira).

 O efeito do JOIN é a criação de uma tabela

temporária em que cada par de linhas, que

satisfação a condição de ligação, são ligados para

formar uma única linha.

 A ligação é sempre estabelecida à frente da

cláusula WHERE usando o operador relacional

da igualdade (=).

 FROM estabelece o produto cartesiano entre as

tabelas listadas

 WHERE filtra as linhas úteis segundo a condição

especificada

DML – CONSULTANDO DADOS EM

TABELAS

 Ligação entre tabelas (Join) – cont.

 Pode-se misturar as cláusulas de comparação, vistas

anteriormente,juntamente com AND, OR e NOT para

formar equações de ligações mais complexas

 Para se ligar várias tabelas, usa-se o operador lógico

AND.

 É preciso ter muito cuidado com os JOINS, pois exigem

alto custo de execução (implicam diretamente na performance).

DML – CONSULTANDO DADOS EM

TABELAS

Ligação entre tabelas (Join) - exemplos

/* Projetar todos os livros (título) e seus autores (nome)

nomeando a tabela para facilitar a digitação*/:



SELECT AU.Nome, LI.Titulo

FROM AUTOR AU, LIVRO LI

WHERE AU.CodAutor = LI.CodAutor;



/* Projetar todos os autores (nome), seus livros (título) e

editoras (razão), onde a razão da editora seja Campos ou

Makron */:



SELECT AUTOR.Nome, LIVRO.Titulo, EDITORA.Razao

FROM AUTOR, LIVRO, EDITORA

WHERE AUTOR.CodAutor = LIVRO.CodAutor AND

LIVRO.CodEditora = EDITORA.CodEditora AND

EDITORA.Razao IN („Campos‟, „Makron‟);

DML – CONSULTANDO DADOS EM

TABELAS

Sub-Consulta (Sub-Queries)



 As sub-consultas podem retornar um valor simples, ou um

conjunto

de valores.

 Sub-consultas que retornam um valor simples

 Usadas para fazer comparação elemento-elemento

 WHERE expressão {= | | > | >= |

(SELECT AVG (Valor)

FROM LIVRO) ;

DML – CONSULTANDO DADOS EM

TABELAS

 Sub-consultas que retornam um conjunto de valores

 Usadas para fazer comparação elemento-conjunto

 Podem ser definidas através das cláusulas IN, ANY, ALL e

EXISTS.

 WHERE expressão [NOT] IN (Sub-Consulta)



Estabelece uma relação de pertinência (Î) entre elementos e

conjuntos (tabelas). Sua avaliação retorna um valor

booleano.



/*Projetar autores (nome) que possuem livros sem valor*/



SELECT Nome

FROM AUTOR

WHERE CodAutor NOT IN

(SELECT CodAutor

FROM LIVRO

WHERE Valor > 0);

DML – CONSULTANDO DADOS EM

TABELAS

Sub-consultas que retornam um conjunto de valores

WHERE expressão { = | | > | >= | ANY

(SELECT CodAutor (SELECT Nascimento

FROM LIVRO FROM AUTORES)

WHERE Valor = 0);

DML – CONSULTANDO DADOS EM

TABELAS

Sub-consultas que retornam um conjunto de valores

WHERE expressão { = | | > | >= | ALL ® tem mesmo efeito que NOT IN



/*Projetar os livros (título) que têm valor maior que todos os livros da

editora

Makron */



SELECT Titulo

FROM LIVRO

WHERE Valor > ALL

(SELECT Valor

FROM LIVRO Li, Editora Ed

WHERE Li.CodEditora = Ed.CodEditora AND Ed.Razao =

„Makron‟);

DML – CONSULTANDO DADOS EM

TABELAS

Sub-consultas que retornam um conjunto de valores

WHERE expressão [NOT] EXISTE (Sub-consulta)

Verifica a existência de dados numa lista de valores da

subconsulta

Retorna VERDADE ou FALSIDADE, conforme a sub-consulta

retorne

ou não linhas de resultado



/*Projete todos os autores que têm livros

publicados nas editoras Makron ou Campos*/



SELECT Au.Nome

FROM AUTOR Au

WHERE EXISTS

(SELECT *

FROM LIVRO Li, EDITORA Ed

WHERE Li.CodAutor=Au.CodAutor AND

Li.CodEditora=Ed.CodEditora AND

Ed.Razao IN („Makron‟, „Campos‟));

DML – CONSULTANDO DADOS EM

TABELAS

ORDER BY - Ordenar os resultados pelos valores de uma ou

mais colunas.

As linhas são ordenadas pela primeira coluna após ORDER BY.

Quando as linhas de uma coluna possuem valores iguais, estas serão

classificadas pelo valor da segunda coluna após ORDER BY e assim

por diante.



Tipos de Ordenação:

ASC => Ascendente

DESC => Decrescente

Exemplo:



/* Projetar o nome e o nascimento dos autores em ordem decrescente do

nascimento. Para datas iguais, considerar a ordem alfabética do nome do

autor*/



SELECT Nome, Nascimento

FROM AUTOR

ORDER BY Nascimento DESC, Nome ASC;

DML – CONSULTANDO DADOS EM

TABELAS

GROUP BY - agrupa os resultados por valores idênticos.

Utiliza-da com as funções de agregação, mas pode ser usada sem

estas.

OBS: Os campos do GROUP BY devem aparecer no SELECT!

Exemplos:

/* Projetar a média dos valores dos livros por editora */



SELECT EDITORA.Razao, AVG (LIVRO.Valor)

FROM LIVRO, EDITORA

WHERE LIVRO.CodEditora=EDITORA.CodEditora

GROUP BY EDITORA.Razao ;



/* Projetar todas as editoras (razão) que publicaram livros */



SELECT EDITORA.Razao

FROM LIVRO, EDITORA

WHERE LIVRO.CodEditora=EDITORA.CodEditora

GROUP BY Editora.Razao;

DML – CONSULTANDO DADOS EM

TABELAS

HAVING - Utilizada para filtrar o resultado dos grupos

Só é atendida depois do Agrupamento !

Só existe se associada à cláusula GROUP BY (mas o oposto não)

Vem depois do GROUP BY e antes do ORDER BY

A condição só pode envolver os campos/funções do SELECT

Exemplos:



/* Projetar as editoras (código), cujo o preço médio dos livros é > 60*/

SELECT CodEditora, AGV(Valor) AS MediaValor

FROM LIVRO

GROUP BY CodEditora

HAVING MediaValor > 60;



/* Projetar os autores (nome) que publicaram mais de 3 livros*/

SELECT AUTOR.Nome, COUNT(DISTINCT LIVRO.Titulo)

FROM LIVRO, AUTOR

WHERE AUTOR.CodAutor = LIVRO.CodAutor

GROUP BY AUTOR.Nome

HAVING COUNT(DISTINCT LIVRO.Titulo) > 3;

DML – CONSULTANDO DADOS EM

TABELAS

 Operações sobre Conjuntos



 Aplicáveis apenas em tabelas compatíveis

 UNION (È) - Faz a união, eliminando linhas

repetidas.

 Acrescenta-se ALL para manter as linhas

repetidas

 INTERSECT (Ç) - Retorna apenas as linhas

que pertencem às duas tabelas

 EXCEPT (–) - Retorna apenas as linhas que

pertencem à primeira tabela, com exceção das

que aparecem na segunda.

DML – CONSULTANDO DADOS EM

TABELAS

Considere:



MEDICO (CodMedico, Nome, CRM) e

PACIENTE (CodPaciente, Nome);

DEPOSITANTE (CPF, Nome, Agencia, Conta) e

DEVEDOR (CPF, Nome, Agencia, Conta).

UNION /* Projetar todos os clientes da agência A1

com empréstimo ou depósito */

/* Projetar o nome de todas (SELECT *

as pessoas cadastradas FROM DEPOSITANTE

no hospital */ WHERE Agencia = „A1‟)

(SELECT Nome UNION ALL

FROM MEDICO) (SELECT *

UNION FROM DEVEDOR

(SELECT Nome WHERE Agencia = „A1‟);

FROM PACIENTE);


Related docs
Other docs by Jun Wang
HUMAN RESOURCE MANAGEMENT_22_
Views: 10  |  Downloads: 0
Human Resource Management_11_
Views: 7  |  Downloads: 0
Human Resource Management_10_
Views: 4  |  Downloads: 0
Human Resource Management_3_
Views: 7  |  Downloads: 0
Human Resource Management 13e_1_
Views: 5  |  Downloads: 0
Human Resource Management 12e_12_
Views: 2  |  Downloads: 0
Human Resource Management 11e_1_
Views: 1  |  Downloads: 0
Human Resource Management 10e_14_
Views: 1  |  Downloads: 0
By registering with docstoc.com you agree to our
privacy policy

You are almost ready to download!

You are almost ready to download!