You are on page 1of 14

Jorge Pina

Mdulo 14
Linguagem de Manipulao de Dados

Programao e Sistemas de Informao


2015/2016

Jorge Pina

Componentes
 A linguagem SQL (Structured Query
Language) composta por comandos,
clusulas, operadores e funes de
agregao. Estes elementos combinam-se
nas instrues para criar, actualizar e
manipular as bases de dados.

Jorge Pina

Comandos
 Existem quatro tipos de comandos SQL:


Os DML (Data Manipulation Language) que


permitem gerar consultas para ordenar, filtrar e
extrair dados da base de dados.

Os DDL (Data Definition Language) que permitem


criar e definir novas bases de dados, campos e
ndices.

Os TCL (Transactional Control Language) que


permitem o controlo de transaces.

Os DCL (Data Control Language) que permitem o


controlo de acesso aos dados.
3

Jorge Pina

Comandos DML
Comando

Descrio

SELECT

Utilizado para consultar registos da base de


dados que satisfaam um determinado critrio

INSERT

Utilizado para carregar conjuntos de dados na


base de dados numa nica operao

UPDATE

Utilizado para modificar os valores dos campos


e registos especificados

DELETE

Utilizado para eliminar registos de uma tabela


de uma base de dados

Jorge Pina

Comandos DDL
Comando

Descrio

CREATE

Utilizado para criar novas tabelas, campos e


ndices

DROP

Empregue para eliminar tabelas e ndices

ALTER

Utilizado para modificar as tabelas agregando


campos ou alterando a definio dos campos

Jorge Pina

Comandos TCL
Comando
COMMIT

Descrio
Permite efectivar transaces

ROOLBACK Permite anular transaces

Uma transaco um conjunto de operaes.

Jorge Pina

Comandos DCL
Comando

Descrio

GRANT

Utilizado para conceder privilgios aos utilizadores


da BD

REVOKE

Usado para retirar privilgios aos utilizadores da


BD

Jorge Pina

Clusulas
Clusula

Descrio

FROM

Utilizada para especificar a tabela da qual se vo seleccionar


os registos

WHERE

Utilizada para especificar as condies que devem reunir os


registos que se vo a seleccionar

ORDER BY

Usada para ordenar os registos seleccionados de acordo com


uma ordem especfica

GROUP BY

Empregue para separar os registos seleccionados em grupos


especficos

HAVING

Utilizada para expressar a condio que deve satisfazer cada


grupo
8

Jorge Pina

Operadores lgicos
Operador

Uso

AND

o E" lgico. Avalia duas condies e devolve um


valor de verdade somente se ambas so certas.

OR

o OU" lgico. Avalia duas condies e devolve um


valor de verdade se alguma das duas est certa.

NOT

Negao lgica. Devolve o valor contrrio ao da


expresso.

Jorge Pina

Operadores de comparao
Operador

Uso

<

Menor que

>

Maior que

<>

Diferente de

<=

Menor ou Igual a

>=

Maior ou Igual a

Igual a

BETWEEN

Utilizado para especificar um intervalo de valores

LIKE

Utilizado na comparao de um modelo

IN

Utilizado para especificar registos de uma base de dados

10

Jorge Pina

Funes de agregao
 Utilizam-se dentro da clusula Select
Funo

Descrio

AVG

Utilizada para calcular a mdia dos valores de um determinado


campo

COUNT

Utilizada para devolver o nmero de registos da seleco

SUM

Utilizada para devolver a soma de todos os valores de um


determinado campo

MAX

Utilizada para devolver o valor mais alto de um campo especificado

MIN

Utilizada para devolver o valor mais baixo de um campo especificado


11

Jorge Pina

Consultas comando SELECT (1)


 A sintaxe bsica de uma consulta de seleco
a seguinte:
SELECT campos [AS alias]
FROM tabela
[WHERE]
[ORDER BY]
[GROUP BY]
[HAVING]
12

Jorge Pina

Consultas comando SELECT (2)


 Considere a tabela seguinte:
numero

nome

apelido

morada

data_nasc

cod_curso

Joo

Silva

Av. EUA

01-01-1951

Jos

Silva

Av. Roma

01-01-1952

Joana

Gomes

Av. Brasil

01-01-1953

Joaquim

Gomes

Av. Berlim

01-01-1954

Joo

Gomes

Av. Berlim

01-01-1955

Joo

Costa

Av. Alm. Reis

01-01-1956

Jlia

Nunes

Av. Brasil

01-01-1957

2
13

Jorge Pina

Consultas comando SELECT (3)


 SELECT * FROM alunos
 Devolve toda a informao de todos os alunos
 SELECT numero, nome FROM alunos
 Devolve o nmero e o nome de todos os alunos
 SELECT * FROM alunos WHERE morada = Av.
Berlim
 Devolve toda a informao dos alunos cuja morada
Av. Berlim
14

Jorge Pina

Consultas comando SELECT (4)


 SELECT nome, apelido FROM alunos WHERE data_nasc >
1955-12-31
 Devolve o nome dos alunos que nasceram aps 1955
 SELECT nome, apelido FROM alunos WHERE data_nasc <
1954-01-01 OR numero > 6
 Devolve o nome dos alunos que nasceram antes de 1954 ou
cujo numero seja superior a 6
 SELECT nome, apelido FROM alunos WHERE numero
BETWEEN 3 AND 5
 Devolve o nome dos alunos cujo nmero se situa entre 3 e 5
15

Jorge Pina

Consultas comando SELECT (5)




SELECT nome, apelido FROM alunos ORDER BY apelido




SELECT nome, apelido FROM alunos ORDER BY apelido DESC




Devolve o nome e o apelido de todos os alunos, por ordem alfabtica


descendente de apelido

SELECT nome, apelido FROM alunos ORDER BY apelido, nome




Devolve o nome e o apelidos de todos os alunos, por ordem alfabtica de


apelido

Devolve o nome e o apelido de todos os alunos, por ordem alfabtica de


apelido e depois por ordem alfabtica de nome

SELECT nome, apelido FROM alunos ORDER BY apelido DESC, nome


ASC


Devolve o nome e o apelido de todos os alunos, por ordem alfabtica


descendente de apelido e depois por ordem alfabtica de nome
16

Jorge Pina

Consultas comando SELECT (6)


 Considere a tabela seguinte:
numero

disciplina

nota

Portugus

12

Portugus

15

Portugus

11

Ingls

Ingls

17

AI

16

AI

12

17

Jorge Pina

Consultas comando SELECT (7)




SELECT numero, avg (nota) FROM avaliacoes GROUP BY numero




SELECT disciplina, avg (nota) FROM avaliacoes GROUP BY disciplina




Devolve a mdia de cada uma das disciplinas

SELECT numero, avg (nota) FROM avaliacoes GROUP BY numero


HAVING avg(nota) >= 15


Devolve o nmero e a respectiva mdia das notas de todos os alunos

Devolve o nmero e a respectiva mdia das notas dos alunos com mdia
igual ou superior a 15

SELECT av.numero, al.nome, avg (av.nota) FROM avaliacoes av, alunos al


WHERE av.numero = al.numero GROUP BY av.numero


Devolve o nmero, o nome e a respectiva mdia das notas de todos os


alunos
18

Jorge Pina

Outros exemplos com SELECT (1)


 SELECT * FROM Empregados WHERE Idade > 25 AND Idade <
50
 SELECT * FROM Empregados WHERE (Idade > 25 AND Idade <
50) OR Salario = 100
 SELECT * FROM Empregados WHERE NOT Estado = 'Solteiro'
 SELECT * FROM Empregados WHERE (Salario > 100 AND
Salario < 500) OR (Cidade = Cancun' AND Estado = 'Casado')
 SELECT * FROM Pedidos WHERE CodPostal Between 2500
And 2510
 SELECT IF(CodPostal=2500, Caldas da Rainha', Outra cidade')
FROM Editores
19

Jorge Pina

Operador Like
 Utiliza-se para comparar uma expresso de cadeia com um
modelo numa expresso SQL. A sua sintaxe :
expresso LIKE modelo
 Pode-se utilizar o operador LIKE para encontrar valores nos
campos que coincidam com o modelo especificado. Por modelo
pode-se especificar um valor completo (ex. Andreia), ou podemse utilizar caracteres especiais como os reconhecidos pelo
sistema operativo para encontrar um conjunto de valores (ex.
LIKE An*, LIKE *ia, LIKE *dre*)
SELECT empregados WHERE nome LIKE An*
SELECT empregados WHERE nome LIKE *ia
SELECT empregados WHERE nome LIKE *dre*
20

10

Jorge Pina

Operador Like
 O exemplo seguinte devolve os dados que comeam
com a letra P seguidos de qualquer letra entre A e F e
de trs dgitos:
LIKE 'P[A-F]###'
 Este exemplo devolve os campos cujo contedo
comece com uma letra de A a D seguidas de qualquer
cadeia.
LIKE '[A-D]*'
21

Jorge Pina

Operador IN
 Este operador devolve os registos cujo campo
indicado coincide com algum dos existentes
numa lista. A sua sintaxe :
expresso [NOT] IN (valor1, valor2, . . .)
 Exemplo:
SELECT * FROM Pedidos WHERE Cidade IN
(Lisboa', Paris, Londres);
22

11

Jorge Pina

Consultas com predicado


Predicado

Descrio

ALL

devolve todos os campos da tabela

TOP

devolve um determinado nmero de


registos da tabela

DISTINCT

Omite os registos cujos campos


seleccionados coincidam totalmente

DISTINCTROW

Omite os registos duplicados baseandose na totalidade do registo e no s nos


campos seleccionados.
23

Jorge Pina

All
 Se no se inclui nenhum dos predicados assume-se ALL. O motor
de base de dados selecciona todos os registos que cumprem as
condies da instruo SQL. No conveniente abusar deste
predicado j que obrigamos o motor da base de dados a analisar a
estrutura da tabela para averiguar os campos que contm, muito
mais rpido indicar a lista de campos desejados.
SELECT ALL FROM Empregados
SELECT * FROM Empregados

24

12

Jorge Pina

Top
 Devolve um certo nmero de registos que entram entre o
princpio ou o fim de um campo especificado por uma clusula
ORDER BY. Suponha-se que queremos recuperar os Nomes dos
25 primeiros estudantes:

SELECT TOP 25 Nome, Apelido FROM


Estudantes ORDER BY Nota DESC;
 Se desejamos 10 por cento do curso:

SELECT TOP 10 PERCENT Nome, Apelido


FROM Estudantes ORDER BY Nota DESC;
25

Jorge Pina

Distinct
 Omite os registos que contm dados duplicados nos campos
seleccionados. Para que os valores de cada campo listado na
instruo SELECT se incluam na consulta devem ser nicos.
 Por exemplo, vrios Empregados listados na tabela Empregados
podem ter o mesmo apelido. Se dois registos contm Lopes no
campo Apelido, a seguinte instruo SQL devolve um nico
registo:

SELECT DISTINCT Apelido FROM Empregados;

26

13

Jorge Pina

Distinctrow
 Devolve os registos diferentes de uma tabela; a diferena do
predicado anterior que s se fixava no contedo dos campos
selecionados, este f-lo no contedo do registo completo
independentemente dos campos indicados a clusula SELECT.

SELECT DISTINCTROW Apelido


FROM Empregados;

27

14

You might also like