Escolar Documentos
Profissional Documentos
Cultura Documentos
A LINGUAGEM SQL
CREATE - comando usado para criar uma nova base de dados, e para
criar novas tabelas
numa base de dados.
DROP - um comando utilizado para eliminar tabelas e ndices.
ALTER - usado para modificar uma tabela (criar, alterar ou eliminar
campos).
A LINGUAGEM SQL
A LINGUAGEM SQL
A LINGUAGEM SQL
Comando SELECT
SELECT permite efectuar pesquisas e sub-pesquisas sobre a informao
contida numa base de dados, mostrando o resultado sobre a forma de tabela virtual
SELECT [ DISTINCT | DISTINCTROW | TOP n [PERCENT] ]
<lista_campos>
FROM <nome_tabela> {<alias>}{, <nome_tabela> {<alias>}}
[WHERE <critrio_pesquisa>]
[GROUP BY lista_campos_a_agrupar ]
[HAVING <critrio_para_agrupar>]
[ORDER BY <nome_campo> [ASC|DESC] {,<nome_campo> [ASC|DESC]}]
A LINGUAGEM SQL
Comando SELECT
O comando SELECT tem de possuir obrigatoriamente as duas primeiras
linhas, todas outras opes so indicadas entre parntesis rectos:
SELECT lista_campos
FROM lista_tabelas
A LINGUAGEM SQL
Comando SELECT
Se quisermos seleccionar todas as colunas de uma tabela, basta indicarmos o smbolo *.
Pelo que para seleccionar todas os campos da tabela alunos fariamos:
SELECT *
FROM alunos;
A LINGUAGEM SQL
Comando SELECT
Caso existam campos de mais do que uma tabela indicados nesta lista, cada campo ser
precedido pelo nome da tabela, separado de um ponto
A LINGUAGEM SQL
DISTINCT
A opo DISTINCT omitir registos que
campos indicados.
Suponhamos que queremos ver todos os ltimos nome dos autores, e apenas
este campo, queremos sem dvida evitar repeties de valores desse campo. Ento
faramos:
A LINGUAGEM SQL
DISTINCTROW
A opo DISTINCTROW omitir dados baseados em registos integralmente
duplicados.
Por exemplo poderamos criar um query que far a juno (join) nas tabelas de
Leitores e de Requisies pelo campo codleitor. A tabela de leitores no contm valores
duplicados no campo codleitor, porque se trata de um campo chave, mas isso no
acontece no caso da tabela de Requisies.
Imaginemos que queremos fazer o join das duas tabelas baseadas no campo
codleitor, ento faramos:
A LINGUAGEM SQL
TOP n [PERCENT]
Devolve um certo nmero de registos que caibam no topo ou em baixo de um
intervalo indicado na clusula ORDER BY.
Suponhamos que queremos o conjunto dos 5 registos da tabela LEITORES,
dos leitores mais velhos, que satisfaam a condio de morar em Faro.
SELECT TOP 5, PrimNome, OutrosNomes, UltNome
FROM Alunos
WHERE localidade = Faro
ORDER BY idade DESC;
A LINGUAGEM SQL
TOP n [PERCENT]
Devolve um certo nmero de registos que caibam no topo ou em baixo de um
intervalo indicado na clusula ORDER BY.
Se quisermos 10 % dos leitores, dos leitores mais velhos, que satisfaam a mesma
condio, teramos:
SELECT TOP 10 PERCENT, PrimNome, OutrosNomes, UltNome
FROM Alunos
WHERE localidade = Faro
ORDER BY idade DESC;
A LINGUAGEM SQL
Clusula FROM
A clusula FROM lista_tabelas, serve para indicar a lista de tabelas sobre as
quais ser aplicada a pesquisa, devem ser separadas por vrgulas.
SELECT <lista_campos>
FROM <nome_tabela> {<alias>}{, <nome_tabela> {<alias>}}
A LINGUAGEM SQL
Clusula FROM
nome_tabelas alias
A lista_tabelas indica as tabelas que participam na pesquisa, e aparecem
separadas por vrgulas.
Poder-se- criar um alias da tabela, isto um outro nome pelo qual a
tabela conhecida, permitindo que sejam feitas operaes sobre o mesmo campo.
SELECT X.codaluno,Y.codaluno
FROM alunos AS X, alunos AS Y ;
A LINGUAGEM SQL
A LINGUAGEM SQL
adio
subtraco
multiplicao
diviso
A LINGUAGEM SQL
Sum (exp)
Avg (exp)
Max (exp)
Min (exp)
A LINGUAGEM SQL
Exemplos:
A LINGUAGEM SQL
Exemplos:
A LINGUAGEM SQL
Exemplos:
SELECT Sum(valor)
FROM multas;
A LINGUAGEM SQL
Clusula WHERE
Esta clusula estabelece o critrio que define que registos das tabelas indicadas na
clusula WHERE so afectadas pelo SELECT e tem o seguinte formato:
SELECT <lista_campos>
FROM <lista_tabelas>
WHERE <critrio_pesquisa>
A LINGUAGEM SQL
Clusula WHERE
No critrio_pesquisa aparecem os operadores lgicos AND, OR e NOT.
Existem trs tipos de critrios de pesquisa:
I.
Comparao;
II.
Ligao;
III.
Sub-interrogaes (subquerys).
A LINGUAGEM SQL
Clusula WHERE
I.
A LINGUAGEM SQL
Clusula WHERE
I.
A LINGUAGEM SQL
Clusula WHERE
Vejamos mais alguns exemplos do comando SELECT com a clusula WHERE
A LINGUAGEM SQL
Clusula WHERE
Vejamos mais alguns exemplos do comando SELECT com a clusula WHERE
A LINGUAGEM SQL
Clusula WHERE
Vejamos mais alguns exemplos do comando SELECT com a clusula WHERE
Seleccionar os leitores cujo nome comece por uma letra de R a Z (maisculas ou
minsculas).
SELECT nome
FROM leitores
WHERE nome LIKE [R-Z]* OR nome LIKE [r-z]*
A LINGUAGEM SQL
A LINGUAGEM SQL
Clusula WHERE
Vejamos mais alguns exemplos do comando SELECT com a clusula WHERE
Mostrar o ttulo e a localizao de todos os livros cujo assunto seja generalidades.
SELECT livros.titulo, livros.localizao
FROM livros, assuntos, livrosassuntos livass
WHERE livros.isbn = livass.isbn AND lisass.codassunto = assuntos.codassunto
AND assuntos.nomeassunto LIKE generalidades
Este comando ilustra uma operao de juno (join), a qual sabemos decomposta
numa projeco de uma restrio de um produto.
Se observarmos o comando atentamente verificamos que a clusula FROM define um
produto entre as tabelas livros, assuntos e livrosassuntos.
Os campos indicados logo depois do comando SELECT executam uma projeco,
definindo os campos que iro figurar na tabela virtual resultante do query.
A clusula WHERE estabelece a restrio, definindo as condies a que uma linha da
tabela produto deve obedecer para que ser possa figurar no resultado da query.
A LINGUAGEM SQL
III. Sub-interrogaes
Podemos fazer uma sub-query, i.e., o critrio de pesquisa da clusula WHERE
pode ser uma novo comando SELECT.
Se fizermos uma sub-query o comando SELECT no poder conter a clusula
ORDER BY, e apenas poder ter um campo na lista de campos.
possvel usar uma das cinco opes:
A LINGUAGEM SQL
Clusula WHERE
Vejamos mais alguns exemplos do comando SELECT com a clusula WHERE
O nome dos leitores que ainda no devolveram os livros
SELECT primnome, ultnome
FROM leitor
WHERE codleitor = ANY
(SELECT codleitor
FROM requisitardevolver
WHERE datadev is NULL);
No exemplo apresentado temos uma query dentro outra query (ie, uma query com
subquery). Neste caso, a subquery determinar todos os codreq da tabela reqdev em
que o campo datadev estar em branco. A query princpal mostrar o primeiro e o
ltimo nome dos leitores cujo codleitor figure nos registos encontrados pela subquery.
A LINGUAGEM SQL
Clusula WHERE
Vejamos mais alguns exemplos do comando SELECT com a clusula WHERE
Todos os ISBN ilustrados cujo ttulo Os Lusadas
SELECT isbn
FROM livros
WHERE ilustra = S AND isbn IN
(SELECT isbn
FROM livros
WHERE titulo = Os Lusadas);
No exemplo apresentado atrs, temos querys dentro de querys (ie, uma query
com subquery). Como explicao do funcionamento da segunda query
poderamos dizer que a subquery, indicada entre parentesis, ir determinar os isbn
de todos os livros da tabela livros em que o ttulo seja Os Lusadas. Desses isbn
encontrados, o comando ir mostrar apenas aqueles em que o campo ilustra tenha
o valor S. Ie, na globalidade apenas sero mostrados os isbn dos livros com o
titulo Os Lusadas e com ilustraes.
A LINGUAGEM SQL
Clusula GROUP BY
A clusula GROUP BY combina os registos com valores iguais de um
campo num nico registo. Cria-se um valor para cada registo se incluirmos as
funes de agregao do SQL, tal como o Sum ou o Count, no comando SELECT.
SELECT <lista_campos>
FROM <lista_tabelas>
WHERE <critrio_pesquisa>
[GROUP BY lista_campos_a_agrupar ]
A LINGUAGEM SQL
Clusula GROUP BY
Vejamos o seguinte exemplo do comando SELECT com a clusula GROUP BY.
Contar o nmero de requisies de livros de cada leitor.
SELECT codleitor, Count(isbn) AS Total_Requisies
FROM RequisitarDevolver
GROUP BY codleitor
A LINGUAGEM SQL
Clusula HAVING
Especifica que registos agrupados sero mostrados pelo comando SELECT com a
clusula GROUP BY. Depois do GROUP BY ter agrupado os registos, o HAVING
mostrar os registos agrupados que satisfaam as condies da clusula HAVING.
SELECT <lista_campos>
FROM <lista_tabela>
[WHERE <critrio_pesquisa>]
[GROUP BY lista_campos_a_agrupar ]
[HAVING <critrio_para_agrupar>]
A LINGUAGEM SQL
Clusula HAVING
Vejamos o seguinte exemplo do comando SELECT com a clusula HAVING.
Mostrar o total de requisies de cada leitor, para leitores com mais de 3
requisies.
A LINGUAGEM SQL
Clusula HAVING
Vejamos o seguinte exemplo do comando SELECT com a clusula HAVING.
Mostrar a mdia de requisies de cada leitor com mdia superior ou igual a 20
requisies.
A LINGUAGEM SQL
Clusula ORDER BY
Classifica os dados exibidos por um campo ou campos em ordem
ascendente ou descendente.
SELECT <lista_campos>
FROM <lista_tabelas>
[WHERE <critrio_pesquisa>]
[ORDER BY <nome_campo> [ASC|DESC] {,<nome_campo> [ASC|DESC]}]
Por defeito a ordem de classificao ascendente de (A-Z,0-9). A
palavra reservada ASC no final de cada campo que se queira classificar por
ordem ascendente. E a palavra reservada DESC utiliza-se depois de cada campo
que se deseja classificar por ordem descendente.
A LINGUAGEM SQL
Clusula ORDER BY
Vejamos alguns exemplos.
Lista classificada por ordem crescente pelo ltimo nome dos leitores
registados. Para leitores com nome igual ordena depois pelo primeiro nome.
A LINGUAGEM SQL
Clusula ORDER BY
Vejamos alguns exemplos.
Lista classificada por ordem descendente pelo titulo dos livros registados.
SELECT titulo
FROM livros
ORDER BY titulo DESC