TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011...
Transcript of TECNOLOGIA EM SISTEMAS PARA INTERNET Banco de dados em aplicativos WEB Aula 10 1 01/08/2011...
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
AgendaLinguagem SQL Consultas interativas –
continuaçãoLinguagem SQL – exercícios.Bibliografia
201/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.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
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
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
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
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
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
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
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
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
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
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
Linguagem SQL Consultas interativas –continuação Exercícios
1401/08/2011 Professor Leomir J. Borba- [email protected] –http://professorleomir.wordpress.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
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
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
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
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.