Вы находитесь на странице: 1из 2

Universidade Federal de Mato Grosso do Sul

o e Estat Departamento de Computac a stica Banco de Dados 1

Notas de aula
(Aula do dia 2 de junho)

1
1.1

A Linguagem SQL
Consultas b asicas em SQL
A estrutura SELECT-FROM-WHERE das consultas em SQL

1.1.1

Considerando o esquema de rela ca o abaixo, FUNCIONARIO NomeFunc CPF DataNasc NumDep CPFSuper Salario

DEPARTAMENTO NomeDep PROJETO NomeProj NumProj Custo NumDepto Numero Gerente InicioGer

TRABALHA NO CPFFunc ProjNum Horas

DEPENDENTE CPFDep NomeDepen DataNasc Parentesco

temos que a consulta Um pouco diferente, a consulta SELECT FROM WHERE NomeFunc FUNCIONARIO, DEPARTAMENTO NomeDep = Pesquisa AND NumDep = Numero;

devolve o nome de todos os empregado que trabalham para o departamento de pesquisa. Ela assemelha-se a ` seq u encia de opera co es SELECT-PROJECT-JOIN da a lgebra relacional onde NomeDep = Pesquisa corresponde a ` opera ca o de sele ca o e NumDep = Numero

a ` condi ca o do JOIN. Geralmente, um n umero qualquer de condi co es desses dois tipos podem ser especicadas em uma consulta SQL. A consulta abaixo, por exemplo, envolve duas condi co es de join. SELECT FROM WHERE NomeFunc, NumProj, Numero PROJETO, DEPARTAMENTO, FUNCIONARIO Custo > 10.000 AND NumDepto = Numero AND Gerente = CPF;

A condi ca o NumDep = Numero relaciona cada projeto com o deparatamento que o controla, enquanto que a condi ca o Gerente = CPF relaciona cada departamento com o funcion ario que o gerencia. Na linguagem SQL, o mesmo nome pode ser usado para dois ou mais atributos desde que eles perten cam a rela co es distintas. Se este e o caso, e uma consulta refere-se a dois ou mais atributos com o mesmo nome, e preciso discrimin a-los com o nome da rela ca o (para se evitar ambig uidades). Isto e feito concatenando-se o nome da rela ca o (mais um ponto) ao nome nome do atributo. Assim, supondo que os atributos Numdep de FUNCIONARIO e Numero de DEPARTAMENTO tenham o mesmo nome, NumDep, por exemplo, a consulta que devolve o nome de todos os empregado que trabalham para o departamento de pesquisa deveria ser reescrita: SELECT FROM WHERE NomeFunc FUNCIONARIO, DEPARTAMENTO NomeDep = Pesquisa AND FUNCIONARIO.NumDep = DEPARTAMENTO.NumDep;

Em casos onde uma tabela e referenciada duas vezes em uma consulta, a solu ca o acima n ao evita ambig uidades. Na busca pelo nome dos funcion arios e de seus respectivos supervisores, por exemplo, n ao temos como discriminar o nome dos atributos utilizando o nome da rela ca o. Nesse caso, permite-se a declara ca o de nomes alternativos (aliases ou apelido) a `s rela co es e o uso deles na discrmina ca o dos atributos. Um apelido para uma rela ca o e declarado dentro da cl ausula FROM seguido a ` palavra reservada AS (opcional) que por sua vez segue o nome original da rela ca o. Assim a consulta especicada pode ser expressa da seguinte forma em SQL: SELECT FROM WHERE F.NomeFunc, S.NomeFunc FUNCIONARIO F, FUNCIONARIO S E.CPF = S.CPFSuper;

Вам также может понравиться