Você está na página 1de 3

Universidade Federal de Mato Grosso do Sul

Departamento de Computac¸ao˜ Banco de Dados 1

Notas de aula

e Estat´ıstica

(Aula do dia 31 de maio)

1 A Linguagem SQL

Nas se¸c˜oes anteriores, discutiu-se as opera¸c˜oes da algebra´ relacional (e do c´alculo relacional de tuplas e de dom´ınios). O aprendizado dessas opera¸c˜oes ´e de fundamental importˆancia para a compreens˜ao dos tipos de consultas que podem ser realizadas sobre uma base de dados relacional. Apesar disso, as opera¸c˜oes da algebra´ relacional s˜ao consideradas t´ecnicas (formais) demais para a maioria dos usu´arios de SGBDs comerciais. Essa desvantagem associada as` opera¸c˜oes da algebra´ relacional deu origem a uma outra linguagem de consulta, denominada SQL.

Acrˆonimo de Structured Query Language (linguagem estruturada de consulta), a SQL

inclui algumas caracter´ısticas da algebra´ relacional, mas boa parte dela basea-se no c´alculo relacional de tuplas. Como essa ultima,´ uma consulta expressa em SQL deixa claro ’o que’ deve ser recuperado, e n˜ao ’como’ a recupera¸ca˜o deve ser feita. Vale notar tamb´em que

a SQL ´e tanto uma DDL 1 quanto uma DML 2 . Ou seja, ela possui tanto instru¸c˜oes para

defini¸c˜ao de uma base de dados quanto para atualiza¸c˜ao e busca em bases desse tipo. Nesta se¸c˜ao, daremos ˆenfase as` instru¸c˜oes da linguagem que permitem a busca por certas tuplas (e atributos) da base de dados.

1.1 Consultas b´asicas em SQL

A SQL possui um senten¸ca b´asica para a recupera¸c˜ao de informa¸c˜oes em uma base de dados:

a senten¸ca SELECT 3 .

1.1.1 A estrutura SELECT-FROM-WHERE das consultas em SQL

A senten¸ca SELECT ´e composta basicamente de trˆes cl´ausulas:

WHERE.

SELECT, FROM e

A cl´ausula SELECT corresponde a` opera¸c˜ao de proje¸c˜ao da algebra´ relacional. Em outras palavras, ela ´e utilizada para relacionar os atributos desejados no resultado de uma consulta. O resultado de uma consulta em SQL, assim como na algebra´ relacional, ´e uma

rela¸c˜ao.

E importante observar por´em que tabelas resultantes de consultas em SQL podem

´

1 Esqueceu o que ´e uma DDL? Volte para a aula do dia 3 de mar¸co. 2 Esqueceu o que ´e uma DML tamb´em? Volte para a aula do dia 3 de mar¸co. 3 Vale notar que essa senten¸ca n˜ao possui nenhuma rela¸c˜ao com a opera¸c˜ao de sele¸c˜ao da algebra´ relacional

1

incluir duas tuplas idˆenticas. Para que as duplicidades sejam eliminadas, ´e preciso inserir a palavra DISTINCT ap´os o SELECT.

A cl´ausula FROM corresponde a` opera¸c˜ao de produto cartesiano da algebra´

Ela associa as rela¸c˜oes que ser˜ao pesquisadas durante a avaliaa¸c˜ao de uma consulta.

relacional.

A cl´ausula WHERE corresponde a` opera¸c˜ao de sele¸c˜ao da algebra´

relacional. Ela consiste

de um predicado envolvendo atributos das rela¸c˜oes que aparecem na cl´ausula FROM.

Uma consulta t´ıpica em SQL tem o seguinte formato:

SELECT

<lista de atributos>

FROM

<lista de tabelas>

WHERE

<condi¸c˜ao>;

onde:

<Lista de atributos> ´e uma lista de nomes de atributos cujos valores s˜ao recuperados pela consulta. O asterisco ‘*’ pode ser usado para denotar todos os atributos.

<Lista de tabelas> ´e uma lista de nomes de tabelas necess´arias ao processamento da consulta;

<condi¸c˜ao> ´e uma express˜ao condicional que identifica as tuplas a serem recuperadas pela consulta.

Assim, considerando o esquema de rela¸c˜ao abaixo,

FUNCIONARIO

NomeFunc CPF DataNasc NumDep CPFSuper Salario
NomeFunc
CPF
DataNasc
NumDep
CPFSuper
Salario

DEPARTAMENTO

NomeDep Numero Gerente InicioGer
NomeDep
Numero
Gerente
InicioGer

PROJETO

NomeProj NumProj Custo NumDepto
NomeProj
NumProj
Custo
NumDepto

TRABALHA NO

CPFFunc ProjNum Horas
CPFFunc
ProjNum
Horas

DEPENDENTE

CPFDep NomeDepen DataNasc Parentesco
CPFDep
NomeDepen
DataNasc
Parentesco

temos que a consulta

SELECT

DataNasc, NumDep

FROM

FUNCIONARIO

WHERE

NomeFunc = ’Jos´e’;

2

devolve a data de nascimento e numero´ cion´arios que se chamam Jos´e 4 .

do departamento onde trabalham todos os fun-

4 Note aqui a possibilidade da tabelas resultante incluir duas ou mais tuplas idˆenticas.

3