01 - Álgebra relacional ea linguagem sql - aula 1

86
Álgebra relacional e a Linguagem SQL Prof. Anderson Simeão CENTRO UNIVERSITÁRIO DE BARRA MANSA COPEP – COORDENADORIA DE PÓS-GRADUAÇÃO E PESQUISA PÓS-GRADUAÇÃO EM TECNOLOGIA E PROJETO DE BANCO DE DADOS

Upload: robson-rodrigues-freitas

Post on 04-Nov-2015

220 views

Category:

Documents


0 download

DESCRIPTION

algebra relacional

TRANSCRIPT

Slide 1

lgebra relacional e a Linguagem SQLProf. Anderson Simeo

CENTRO UNIVERSITRIO DE BARRA MANSA

COPEP COORDENADORIA DE PS-GRADUAO E PESQUISAPS-GRADUAO EM TECNOLOGIA E PROJETO DE BANCO DE DADOS

Ps-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL1CONTEDO PROGRAMTICOEstrutura dos bancos de dados relacionaisOperaes fundamentais de lgebra relacional (seleo, projeo, unio, diferena de conjuntos, produto cartesiano, renomeao )Outras operaes de lgebra relacional (interseo de conjuntos, juno natural, diviso , atribuio )Operaes estendidas da lgebra relacional ( projeo generalizada, funes agregadas, junes externas, valores nulos)Modificao do banco de dados ( Excluso, Insero, Atualizao )Historia do SQLDefinio de dados e estrutura bsica das consultas SQLOperaes de conjuntosFunes agregadas e valores nulosSubconsultas aninhadasConsultas complexas e visesModificao de banco de dadosPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL2BIBLIOGRAFIABSICA:

C.J. DATE INTRODUO A SISTEMAS DE BANCO DE DADOSABRAHAM SILBERSCHATZ / HENRY F. KORTH / S. SUDARSHAN SISTEMAS DE BANCO DE DADOSCOMPLEMENTAR:C.J. DATE - SQL AND RELATIONAL THEORY: HOW TO WRITE ACCURATE SQL CODEKOPPELAARS, TOON / HANN, LEX DE APPLIED MATHEMATICS FOR DATABASE PROFESSIONALSMARKLYN, BILL / WHITEHORN MARK INSIDE RELATIONAL DATABASE Ps-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL3COMPOSIO DA NOTAPRIMEIRA LISTA DE EXERCCIOS - VALOR: 2,0

SEGUNDA LISTA DE EXERCCIOS VALOR: 2,0

PROVA VALOR: 6,0Ps-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL4Captulo 1O Modelo RelacionalPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL5Foi introduzido por Codd (1970);Tornou-se um padro de fato para aplicaes comerciais, devido sua simplicidade e performance; um modelo formal, baseado na teoria matemtica das relaes;Um dos SGBDs precursores que implementaram este modelo foi o System R (IBM). Baseados em seus conceitos, surgiram: DB2 (IBM), SQL-DS (IBM), Oracle, Informix, Ingres, Sybase entre outros.Modelo Relacional - HistricoPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL6O Modelo Relacional representa os dados em um BD como uma coleo de relaes (tabelas);Cada tabela ter um nome, que ser nico, e um conjunto de atributos (colunas) com seus respectivos nomes e domnios;Todos os valores de uma coluna so do mesmo tipo de dados.Conceitos do Modelo RelacionalPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL7Conceitos do Modelo RelacionalMatrNomeEnderFunoSalarioDep100AnaRua da Juaras, 12Secretria700,00D1250PedroRua J. Silva, 24Engenheiro2000,00D1108AndrRua Itlia, 33Tcnico1000,00D2210PauloRua Par, 98Engenheiro2200,00D2105SniaRua Oliveiras, 76Engenheiro2500,00D1Exemplo: Tabela de empregados de uma empresaPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL8TerminologiaNa terminologia de BD Relacional, uma linha chamada tupla, um nome de coluna chamado atributo e uma tabela chamada relao;DefiniesDomnio: Um domnio D um conjunto de valores atmicos.Ex. Fone: conjunto de 10 dgitos;CPF: conjunto de 11 dgitos;Idade_Empregado: 16 viola a restrio de chave.Operaes de atualizao em relaesPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL16Insero:- 3. Inserir => viola restrio de integridade de entidade. 4. Inserir viola a restrio de integridade referencial.Operaes de atualizao em relaesPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL17InseroO que fazer quando se detectar uma violao de integridade?- Rejeitar a insero (podendo explicar o porqu);- Tentar corrigir a anomalia para depois inserir.Operaes de atualizao em relaesPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL18Remoo1. Remover da tabela Empregado a tupla com matrcula = 100 => Remoo aceita sem problemas.2. Remover da tabela Departamento a tupla com Dep = D1 => Viola a regra de integridade referencial, pois existem empregados que esto alocados neste departamento.Operaes de atualizao em relaesPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL19Remoo- O que fazer quando em uma remoo ocorrer uma violao?- Rejeitar a remoo;- Dar o efeito cascata na remoo, removendo todas as tuplas referenciadas por aquela tupla que est sendo removida.Operaes de atualizao em relaesPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL20Modificao1. Modificar o salrio do empregado com matrcula = 250 => operao aceita sem problemas.2. Modificar o departamento da tupla de empregado com matrcula 210 para D1 => operao aceita sem problemas.Operaes de atualizao em relaesPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL21Modificao3. Modificar o departamento do empregado com matrcula = 108 para D9 viola a integridade referencial;4. Modificar a matrcula do empregado 100 para 250 => viola a regra de identidade de chave.Operaes de atualizao em relaesPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL22Captulo 2lgebra Relacional

Ps-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL23 uma linguagem de banco de dados procedural e formal.- Seja o esquema relacional de uma empresa hipottica, a seguir:- Empregado(matrE, nomeE, endereo, sexo, salrio, supervisor, depto)- Departamento (codD, nomeD, matrGer)- Deplocalizaes (codD, Localizao)- Alocao (matrE, codProj, num_horas)- Projetos (codProj, nome, localizao, depControla)- Dependentes (matrEmp, nomeD, sexo, dataNasc, parentesco)

lgebra RelacionalPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL24Usaremos o esquema do slide anterior para exemplificar os diversos operadores da lgebra Relacional;

lgebra RelacionalPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL25Operao de Seleo ()- Seleciona um subconjunto de tuplas de uma relao, de acordo com uma condio;- Sintaxe: ()- onde = operador de seleo- Predicado: ou - = {=, >, 3000(Empregado)lgebra RelacionalPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL27Exemplo 3: Selecionar os empregados que ganham mais de 1500,00 e trabalham no departamento D1 ou que ganham menos de 1000,00 e trabalham no departamento D2. (salario>1500 and depto=D1) or (salario1000(Empregado) EmpDepto1 dep=D1(Empregado)Resultado matrE(Emp1000) matrE(EmpDepto1)

lgebra RelacionalPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL36Interseo ()A interseo de duas relaes, R S, o conjunto das tuplas que esto em R e em S. As relaes R e S tm que ser unio-compatveis, isto , tm que conter as mesmas colunas.lgebra RelacionalPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL37lgebra RelacionalABCabcdafcbdRABCbgadafSR SABCdafPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL38Exemplo:Obter a matrcula dos empregados que ganham mais que 1000,00 e trabalham no departamento D1. Emp1000 salrio>1000(Empregado) EmpDepto1 depto=D1(Empregado)Resultado matrE(Emp1000) matrE(EmpDepto1)

lgebra RelacionalPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL39Diferena (-)A diferena entre duas relaes, R - S, o conjunto das tuplas que esto em R mas no esto em S. As relaes R e S tm que ser unio-compatveis, isto , tm que conter as mesmas colunas.lgebra RelacionalPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL40lgebra RelacionalABCabcdafcbdRABCbgadafSR - SABCabccbdPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL41Exemplo:Obter a matrcula dos empregados que ganham mais que 1000,00 e no trabalham no departamento D1. Emp1000 salrio>1000(Empregado) EmpDepto1 depto=D1(Empregado)Resultado matrE(Emp1000) - matrE(EmpDepto1)

lgebra RelacionalPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL42Produto CartesianoO produto cartesiano de duas relaes R X S combina cada tupla de R com cada tupla de S.O resultado de R(A1,A2,...,An) X S(B1,B2,...,Bm) uma relao T com n + m atributos: T(A1,A2,...,An, B1,B2,...,Bm).lgebra RelacionalPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL43Exemplo: Para cada empregado do sexo feminino, obter uma lista dos nomes de seus dependentes.lgebra RelacionalPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL44Mulher sexo=F(Empregado)NomesMulheres matrE,nomeE(Mulher)DependentesMulher1 NomesMulheres X DependentesDependentesMulher2 matrE=matrEmp(DependentesMulher1)ResultadonomeD,nomeE(DependentesMulher2)

lgebra RelacionalPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL45JunoA juno de duas relaes A e B, A |X| B, produz uma combinao entre as tuplas da relao A com as tuplas correspondentes da relao B, sendo em princpio correspondente a uma seleo pelos atributos de relacionamento sobre o produto cartesiano dessas tabelas. A |X| B = A.chave1=B.chave2(AXB)lgebra RelacionalPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL46Exemplo: Obter o nome do gerente de cada departamento.DeptoGer Departamento |X| matrGer=MatrE EmpregadoNomeGerente nomeD,nomeE(DeptoGer)lgebra RelacionalPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL47Operador de Diviso () um operador adicional que produz como resultado a projeo de todos os elementos da primeira tabela que se relacionam com todos os elementos da segunda tabela.lgebra RelacionalPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL48lgebra Relacional

Exemplo:Ps-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLCaptulo 3Linguagem SQLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL50HistricoA linguagem SQL surgiu em meados da dcada de 70, sendo resultado de um estudo de E. F. Codd, membro do laboratrio de pesquisa da IBM em San Jos, Califrnia, E. U. A. Este estudo tinha foco em desenvolver uma linguagem que adaptasse ao modelo relacional. O primeiro sistema de BD baseado em SQL tornou-se comercial no final dos anos 70. Ps-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLO sucesso da linguagem foi to grande que obrigou o ANSI (American National Standard Institute) a padronizar as implementaes da linguagem.Assim, nos dias de hoje, a maior parte dos BDs seguem criteriosamente esta padronizao, podendo ter algumas variaes, mas mesmo assim no afetando na padronizao global da linguagem, tornando assim a portabilidade mais fcil.HistricoPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLDivises da linguagem SQLA linguagem SQL possui comandos divididos em trs grupos, que so:DDLDMLDCLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLDivises da Linguagem SQLDDL (Data Definition Language) ou Linguagem de Definio de DadosPermite ao usurio o manuseio de tabelas e elementos associados, tipo chaves primrias, chaves estrangeiras, ndices etc.Normalmente, est restrita aos Administradores de Base de Dados.Ps-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLDML (Data Manipulation Language) ou Linguagem de Manipulao de DadosUsada para inserir, modificar, remover ou consultar dados;Divises da Linguagem SQLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLDCL (Data Control Language) ou Linguagem de Controle de DadosControla os aspectos destinados a autorizao de dados e licenas de usurios para manipulao de dados dentro do BD.Divises da Linguagem SQLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLComandos DDLCriao de tabelasPara a criao de tabelas em um banco de dados, utiliza-se o comando CREATE TABLE.Ps-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLForma geral:CREATE TABLE ( ,... , [clusulas adicionais]);Comandos DDLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLTipos de dados:Integer: valores numricos inteiros;Number: valores numricos;Varchar: valores alfanumricos;Date: datas.Comandos DDLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLClusulas adicionais:Primary Key: chave primria;Foreign Key: chave estrangeira;Not null: campos requeridos;Check: restrio de valores;Default: valores padro.Comandos DDLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLExemplos de criao de tabelas:Tabela Departamento:create table depart(dep_cod integer, dep_nome varchar(20) not null, primary key(dep_cod));Comandos DDLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLTabela Funcionrio:create table func(fun_matr integer, fun_nome varchar(40) not null, fun_sexo varchar(1) not null, fun_dt_adm date not null, fun_salar number(5,2) default 1000 not null, dep_cod integer not null, primary key (fun_matr), foreign key (dep_cod) references depart(dep_cod), check (fun_sexo in (M,F)));

Comandos DDLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLAlterao de tabelasPara alterar estruturas de tabelas, usa-se o comando ALTER TABLE.Comandos DDLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLForma Geral:ALTER TABLE [add ] ou [drop ];Comandos DDLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLExemplo1:Adicionar o campo fun_email na tabela de funcionrios:alter table func add fun_email varchar(30);Comandos DDLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLExemplo 2:Remover o campo para e-mail na tabela de funcionrios:

alter table func drop column fun_email;Comandos DDLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLRemoo de tabelasPara remover tabelas, utiliza-se o comando DROP TABLE.Comandos DDLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLForma geral:

DROP TABLE ;

Comandos DDLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLExemplo: Remover a tabela de funcionrios.

drop table func;Comandos DDLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLDML (Data Manipulation Language)Conjunto de comandos responsveis pela atualizao e consulta dos dados armazenados em um banco de dados.Divises da Linguagem SQLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLComandos DMLIncluso de tuplas

O comando utilizado para este tipo de operao o INSERT.

Ps-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLComandos DMLForma geral:

INSERT INTO ()VALUES ();Ps-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLExemplo: Incluir uma tupla na tabela de funcionrios.

insert into func (fun_matr,fun_nome,fun_sexo,fun_dt_adm,fun_salar,dep_cod,car_cod)values (123,Paulo Santos,M,10/05/1998,1000,05,01);

Comandos DMLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLO mesmo exemplo, porm omitindo-se o nome das colunas.insert into func values (123,Paulo Santos,M,10/05/1998,1000,05,01);

Comandos DMLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLO mesmo exemplo, porm omitindo-se o nome das colunas. Insert into func values (123,Paulo Santos,M,10/05/1998,1000,05);

Nesse caso, os valores devem ser fornecidos na mesma ordem em que as colunas foram definidas na criao da tabela.

Comandos DMLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLO mesmo exemplo, porm omitindo-se o nome de algumas colunas e mudando-se a ordem.insert into func (fun_nome,fun_sexo,fun_dt_adm,dep_cod,fun_matr,car_cod) values (Paulo Santos,M,10/05/1998,05,123,01);

Comandos DMLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLO mesmo exemplo, porm omitindo-se o nome de algumas colunas e mudando-se a ordem.insert into func (fun_nome,fun_sexo,fun_dt_adm,dep_cod,fun_matr) values (Paulo Santos,M,10/05/1998,05,123);

Nesse caso, as colunas omitidas recebem o valor NULL ou o valor definido na clusula DEFAULT.

Comandos DMLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLAlterao de tuplas

Para modificar alguma informao existente em alguma tupla, utiliza-se o comando UPDATE.Comandos DMLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLForma geral:

UPDATE SET =[WHERE ];Comandos DMLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLExemplo 1: Alterar o valor do salrio de todos os funcionrios para 1500,00.

update func set fun_salar = 1500;

Comandos DMLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLExemplo 2: Alterar o valor do salrio de todos os funcionrios lotados no departamento 03 para 1800,00.

update func set fun_salar = 1800 where dep_cod = 03;

Comandos DMLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLRemoo de tuplas

Para este tipo de operao, o comando utilizado o DELETE.Comandos DMLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLForma geral:

DELETEFROM [WHERE ];Comandos DMLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLExemplo 1: Remover todas as informaes de funcionrios.

deletefrom func;Comandos DMLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLExemplo 2: Remover todas as informaes de funcionrios lotados no departamento 11.

deletefrom funcwhere dep_cod = 11;Comandos DMLPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQLExercciosPs-Graduao em Tecnologia e Projeto de Banco de DadosDisciplina: lgebra Relacional e a Linguagem SQL86Plan1RABa1b1a2b1a3b1a4b1a1b2a3b2a2b3a3b3a4b3a1b4a2b4a3b4

Plan2

Plan3

Plan1RSABABa1b1a1b1a2b1a2b1a3b1a3b1a4b1a4b1a1b2a1b2a3b2a3b2a2b3a2b3a3b3a3b3a4b3a4b3a1b4a1b4a2b4a2b4a3b4a3b4

Plan2

Plan3

Plan1RSR SABABBa1b1a1b1b1a2b1a2b1b4a4b1a4b1a1b2a1b2a3b2a3b2a2b3a2b3a3b3a3b3a4b3a4b3a1b4a1b4a2b4a2b4a3b4a3b4

Plan2

Plan3