Documente Academic
Documente Profesional
Documente Cultură
tabelas.
O comando SELECT.
Provavelmente este ser o comando que mais voc utilizar em suas instrues SQL.
Na verdade cerca de 70 a 80 % de suas instrues SQL utilizaro o
comando SELECT.
Estaremos trabalhando com o banco de dados Access e a sintaxe que usaremos para
nossas instrues SQL ser a suportada pelo Access. Lembre-se que para as instrues
SQL atuarem necessrio que o arquivo esteja aberto. Iremos utilizar o banco de
dados Escola.mdb e as tabelas criadas no artigo - Criando Tabelas .
A instruo SELECT retornar um conjunto de registros , recordset, do
tipo Dynaset/Table.
Basicamente voc dever fornecer duas informaes bsicas:
1. Quais campos(colunas) da tabela deseja obter
2. O nome da Tabela da qual voc quer obter os dados.
Assim uma instruo SELECT para selecionar todos os registros da tabela - tblalunos poder ser escrita como:
SELECT * FROM tblalunos
-O asterico ( * ) o curinga para indicar todos os campos da tabela
-A clusula FROM indica de onde os dados sero extrados.
Para selecionar os campos nome e endereo da tabela tblalunos , faremos:
SELECT nome, endereco FROM tblalunos
- Os nomes dos campos e das tabelas podem ser indicados sem colchtes [] , quando
no existir espaos ou pontuao, e so separados por vrgulas.
Assim para uma tabela de nome Tabela Alunos com os campos : Nome
Aluno e Endereo Aluno seriamos obrigados a escrever:
SELECT [Nome Aluno], [Endereo Aluno] FROM [Tabela Alunos]
Nomeando e Criando Campos Calculados
As vezes os dados que voc est desejando filtrar no tm uma ocorrncia exata, ou
voc pretende realizar uma busca mais irrestrita. Para isso devemos usar a
clusula LIKE. Supondo que desejamos filtrar todos os alunos que tenham o nome
comeado pelas letrar Jos, Atravs da clusula LIKE podemos inserir as letras
desejadas e a SQL far uma busca parcial pela string informada: Algo como:
SELECT nome FROM tblalunos WHERE nome LIKE "Jos*"
Isto retornar os possveis nomes: Jos , Josu, Josimar, Josias, etc...
Note que usamos o asterstico (*) que funciona como um coringa , substituindo os
demais caracteres.
A seguir listamos abaixo as principais ocorrncias :
Tipo de ocorrncia Padro utilizado na Consulta SQL O retorno da Pesquisa
Mltiplos caracteres
b*b
bb, bBb, bccccB
Caractere especial
b[*]b
b*b
Mltiplos caracteres
ab*
abcdefg, abc
Caractere nico
b?b
bbb, b1b,bNb
Dgito nico
b#b
b0b,b1b,b4b
Intervalo de caracteres
[b-h]
c,d,e,f,g
No dgito
[!0-9]
A,a, %, P
Definindo o relacionamento entre as Tabelas: JOIN
Com frequncia voc vai ser obrigado a obter dados de diversas tabelas, pois
trabalhando com o modelo relacional de banco de dados , durante a normalizao os
dados sero colocados em tabelas diferentes para evitar a repetio de informaes.
Para selecionar campos de vrias tabelas , voc deve informar basicamente o seguinte:
O nome de cada tabela na qual cada campo selecionado
Os nomes dos campos dos quais voc est selecionando os dados
O relacionamento entre as tabelas
Assim, supondo que voc deseja obter o nome e a nota de cada aluno do banco de
dados Escola.mdb; se voc observar vai notar que no temos essas informaes em
uma mesma tabela. Os dados que desejamos encontram-se em duas
tabelas: Tblalunos ( o nome do aluno ) , TblNotas ( o codigo do curso e a nota)
A sintaxe para o comando SQL extrair esses dados(nome e nota, ordenados pelo nome
do aluno) :
SELECT tblalunos.nome, tblnotas.nota
FROM tblalunos INNER JOIN tblnotas ON tblalunos.codaluno =
tblnotas.codaluno ORDER BY tblalunos.nome;
Quando voc tm um vnculo entre duas tabelas poder usar a palavra chave INNER
JOIN na clusula FROM de uma instruo SELECT para criar um conjunto de
registros com campos de ambas as tabelas
Naturalmente quanto maior a quantidade de tabelas das quais voc deseja extrair os
seus dados mais complexa a instruo se tornar.
Assim, para obter o nome ,curso e a nota de cada aluno do banco de
dados Escola.mdb; agora os dados que desejamos encontram-se em trs
tabelas: Tblalunos ( o nome do aluno ) , TblNotas ( o codigo do curso e a nota)
e TblCursos.
SELECT tblalunos.nome, tblcursos.nomecurso, tblnotas.nota
FROM tblcursos INNER JOIN (tblalunos INNER JOIN tblnotas ON
tblalunos.codaluno = tblnotas.codaluno) ON tblcursos.codcurso =
tblnotas.codcurso
ORDER BY tblalunos.nome;
A diferena entre a utilizao da clusula WHERE e da JOIN para reunir dados de
mltiplas tabelas que a clusula WHERE produz um recordset somente de leitura.
Para criar um recordset atualizvel devemos usar JOIN
A sintaxe bsica para o JOIN :
tabela 1 [INNER | LEFT | RIGHT ] JOIN tabela 2 ON
tabela1.chave1=tabela2.chave2
Temos 3 opes de clusulas usadas com JOIN e, o comportamento na maneira de
retornar os registros difere em cada caso:
Tipos de
JOIN
INNER
LEFT
RIGHT