tecnologia em sistemas para internet banco de dados em aplicativos web aula 10 1 01/08/2011...

19
TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Upload: internet

Post on 17-Apr-2015

104 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –

TECNOLOGIA EM SISTEMAS PARA INTERNET

Banco de dados em aplicativos WEB

Aula 10

101/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 2: TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –

AgendaLinguagem SQL Consultas interativas –

continuaçãoLinguagem SQL – exercícios.Bibliografia

201/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 3: TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –

Linguagem SQL Consultas interativas –continuaçãoTabela de Junção:

Inner join – Tipo Padrão, apenas pares de tuplas que combinam com a condição de junção, o mesmo que join.

Ex. : SELECT * FROM employee, department WHERE employee.DepartmentID = department.DepartmentID;

301/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Employee.LastName

Employee.DepartmentI

D

Department.Departmen

tName

Department.Departmen

tID

Robinson 34 Clerical 34

Jones 33 Engineering 33

Smith 34 Clerical 34

Steinberg 33 Engineering 33

Rafferty 31 Sales 31

Page 4: TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –

Linguagem SQL Consultas interativas –continuação Variações de Outer Join - continuação:

Left outer join – Toda tupla na tabela da esquerda precisa aparecer no resultado, se ela não tiver tupla tupla combinando, ela é preeenchida com valores null para os atributos da tabela da direita.

SELECT * FROM employee LEFT OUTER JOIN department ON employee.DepartmentID = department.DepartmentID;

401/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Employee.LastNameEmployee.Department

IDDepartment.Departme

ntNameDepartment.Departme

ntID

Jones 33 Engineering 33

Rafferty 31 Sales 31

Robinson 34 Clerical 34

Smith 34 Clerical 34

John NULL NULL NULL

Steinberg 33 Engineering 33

Page 5: TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –

Linguagem SQL Consultas interativas –continuaçãoVariações de Outer Join - continuação:

Right Outer join – Toda tupla da tabela da direita precisa aparecer no resultado, se não houver combinação ela é preenchida com valores null para os atributos da tabela esquerda.

SELECT * FROM employee RIGHT OUTER JOIN department ON employee.DepartmentID = department.DepartmentID;

501/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Employee.LastName Employee.DepartmentID Department.DepartmentName Department.DepartmentID

Smith 34 Clerical 34

Jones 33 Engineering 33

Robinson 34 Clerical 34

Steinberg 33 Engineering 33

Rafferty 31 Sales 31

NULL NULL Marketing 35

Page 6: TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –

Linguagem SQL Consultas interativas –continuação Variações de Outer Join:

Full outer Join – Combina Left e right outer join, combinando os resultados, onde não houver combinação os valores null serão atribuídos para cada relação. Nos permite ver por exemplo cada funcionário que esta em um departamento e também os funcionários que não tem departamento.

SELECT * FROM employee FULL OUTER JOIN department ON employee.DepartmentID = department.DepartmentID;

* Não suportado por alguns BD como MySQL, emula com union

601/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Employee.LastName Employee.DepartmentID Department.DepartmentName Department.DepartmentID

Smith 34 Clerical 34

Jones 33 Engineering 33

Robinson 34 Clerical 34

John NULL NULL NULL

Steinberg 33 Engineering 33

Rafferty 31 Sales 31

NULL NULL Marketing 35

Page 7: TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –

Linguagem SQL Consultas interativas –continuaçãoFunções de agregação em SQL.

Funções são usadas para resumir informações de varias tuplas em uma síntese de tupla única.

Count – Retorna numero de tuplas ou valores SUM – Retorna soma de um conjunto valores. MAX – Retorna Valor Maximo de um conjunto de valores MIN – Retorna Valor Mínimo de um conjunto de Valores AVG – Retorna a Media de um conjunto de valores.

Ex. : Soma dos salários de todos os funcionários, o maior salário, o menor salário e a media dos salários e numero total de funcionários.

Select sum(salario), max(salario), min(salario), avg(salario), count(*) from funcionario;

701/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 8: TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –

Linguagem SQL Consultas interativas –continuaçãoAgrupamento : Cláusulas GROUP BY e HAVING

Agrupamento é usado para criar subgrupos de tuplas antes do resumo.

Clausula group By – Especifica atributos de agrupamento que tambem devem aparecer na clausula select.

Ex.: Selecionar por departamento o numero do funcionário, numero do departamento e salário médio.

Select Dnr, count(*), avg(salario) from funcionario group by Dnr;

801/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 9: TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –

Linguagem SQL Consultas interativas –continuaçãoAgrupamento : Cláusulas GROUP BY e HAVING

Clausula Having – Usada em conjunto com clausula group by restringe resultado a tuplas que satisfaçam uma condição

Ex.: Para projetos com mais de dois funcionários, selecionar numero e nome do projeto e o numero de funcionários

SELECT Projnumero, Projnome, count(*) FROM projeto, trabalha_em WHERE Projnumero=Pnr GROUP BY Projenumero, Projnome HAVING COUNT(*)>2

901/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 10: TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –

Linguagem SQL Consultas interativas –continuaçãoAgrupamento : Cláusulas GROUP BY e HAVING

Clausula Having – Continuação Muito cuidado com duas condições diferentes na mesma consultaEx.: Consulta com numero total de funcionários com salarios > R$ 40.000,00

por departamento.Errado :SELECT Dnome, COUNT(*) FROM Departamento,Funcionario WHERE

Dnumero=Dnr AND Salario>40.000 GROUP BY Dnome HAVING COUNT(*)>5

Correto:SELECT Dnome, COUNT(*) FROM Departamento,Funcionario WHERE

Dnumero=Dnr AND Salario>40.000 AND (SELECT Dnr IN FROM FUNCIONARIO GROUP BY Dnr HAVING COUNT(*)>5);

1001/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 11: TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –

Linguagem SQL Consultas interativas –continuação Especificando Restrições como asserções e ações como

triggers – CREATE ASSERTION E CREATE TRIGGERCREATE ASSSERTION – Asserção declarativa usada para

especificar restrições adicionais fora do escopo de restrições embutidas (Chave Primária e única, integridade de entidade e integridade referencial)

Ex.: Salario de funcionario não podeSer maior que salario do gerente doDepartamento onde trabalha.Pode ser usada, alterada ou excluídaMais tarde através do nome

1101/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 12: TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –

Linguagem SQL Consultas interativas –continuação Especificando Restrições como asserções e ações como

triggers – CREATE ASSERTION E CREATE TRIGGER CREATE TRIGGER - Especifica ação a ser tomada em ocorrência de

eventos e condições específicos Ex. de ações, envio de mensagens pelo SGBD, executar stored

procedures ou disparar atualizações. Ex. de eventos, em geral operações de atualizações ao banco de

dados.

Ex.: Verificar se salário de funcionário > salário de supervisor e informar o supervisor

1201/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 13: TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –

Linguagem SQL Consultas interativas –continuação Exercícios

1. Descreva as seis clausulas da sintaxe de uma consulta de recuperação SQL. Mostre os tipos de construções que podem ser especificados em cada uma das clausulas. Quais das seis clausulas são obrigatórias.

1301/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 14: TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –

Linguagem SQL Consultas interativas –continuação Exercícios

1401/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 15: TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –

Linguagem SQL Consultas interativas –continuação Exercícios – Diagrama para esquema de BD Empresa.

1501/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 16: TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –

Linguagem SQL Consultas interativas –continuação Exercícios – Estado possível para BD Empresa

1601/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 17: TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –

Linguagem SQL Consultas interativas –continuação Exercícios – Estado possível para BD Empresa continuação

1701/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 18: TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –

Linguagem SQL Consultas interativas –continuação Exercícios – Estado possível para BD Empresa continuação

1801/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com

Page 19: TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011 Professor Leomir J. Borba- professor.leomir@gmail.com –

Bibliografia

01/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.com 19

BIBLIOGRAFIA BÁSICA

1DATE, C.J. Introdução a Sistemas de Bancos de Dados. 8ª Ed. Rio de Janeiro: Campus, 2004.

2NAVATHE, S. B.; ELMASRI, R. E. Sistemas de Banco de Dados, 4ª edição, Editora Pearson Addison Wesley, 2005.

3SETZER, V. W., SILVA, F.S.C. Banco de Dados. 1ª Ed. São Paulo: Edgard Blucher, 2005.

BIBLIOGRAFIA COMPLEMENTAR

4COUGO, P. Modelagem Conceitual e Projeto de Banco de Dados, Editora Campus.

5KORTH, H. F.; SILBERSCHATZ, A.; SUDARSHAN, S., Sistemas de Banco de Dados, Editora Makron Books, 1999.

6MACHADO, Felipe Nery Rodrigues: Análise Relacional de Sistemas; São Paulo: Editora Érica, 2001.

7SETZER, V.W., NASSU, E.A. Banco de Dados Orientados a Objetos. São Paulo: Ed. Edgard Blucher, 1999.