SQL Comandos Psi m14
description
Transcript of SQL Comandos Psi m14
1
Jorge Pina
1
Módulo 14Linguagem de Manipulação de Dados
Programação e Sistemas de Informação
2015/2016
Jorge Pina
2
Componentes
� A linguagem SQL (Structured Query
Language) é composta por comandos,
cláusulas, operadores e funções de
agregação. Estes elementos combinam-se
nas instruções para criar, actualizar e
manipular as bases de dados.
2
Jorge Pina
3
Comandos
� Existem quatro tipos de comandos SQL:� Os DML (Data Manipulation Language) que
permitem gerar consultas para ordenar, filtrar eextrair dados da base de dados.
� Os DDL (Data Definition Language) que permitemcriar e definir novas bases de dados, campos eíndices.
� Os TCL (Transactional Control Language) quepermitem o controlo de transacções.
� Os DCL (Data Control Language) que permitem ocontrolo de acesso aos dados.
Jorge Pina
4
Comandos DML
Comando Descrição
SELECTUtilizado para consultar registos da base dedados que satisfaçam um determinado critério
INSERTUtilizado para carregar conjuntos de dados nabase de dados numa única operação
UPDATEUtilizado para modificar os valores dos campose registos especificados
DELETEUtilizado para eliminar registos de uma tabelade uma base de dados
3
Jorge Pina
5
Comandos DDL
Comando Descrição
CREATE Utilizado para criar novas tabelas, campos eíndices
DROP Empregue para eliminar tabelas e índices
ALTER Utilizado para modificar as tabelas agregandocampos ou alterando a definição dos campos
Jorge Pina
6
Comandos TCL
Comando Descrição
COMMIT Permite efectivar transacções
ROOLBACK Permite anular transacções
Uma transacção é um conjunto de operações.
4
Jorge Pina
7
Comandos DCL
Comando Descrição
GRANT Utilizado para conceder privilégios aos utilizadoresda BD
REVOKE Usado para retirar privilégios aos utilizadores daBD
Jorge Pina
8
Cláusulas
Cláusula Descrição
FROM Utilizada para especificar a tabela da qual se vão seleccionar
os registos
WHERE Utilizada para especificar as condições que devem reunir os
registos que se vão a seleccionar
GROUP BY
HAVING Utilizada para expressar a condição que deve satisfazer cada
grupo
ORDER BY
Empregue para separar os registos seleccionados em grupos
específicos
Usada para ordenar os registos seleccionados de acordo com
uma ordem específica
5
Jorge Pina
9
Operadores lógicos
Operador Uso
ANDÉ o “E" lógico. Avalia duas condições e devolve umvalor de verdade somente se ambas são certas.
ORÉ o “OU" lógico. Avalia duas condições e devolve umvalor de verdade se alguma das duas está certa.
NOTNegação lógica. Devolve o valor contrário ao daexpressão.
Jorge Pina
10
Operadores de comparação
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 comparação de um modelo
IN Utilizado para especificar registos de uma base de dados
6
Jorge Pina
11
Funções de agregação
� Utilizam-se dentro da cláusula Select
Função Descrição
AVGUtilizada para calcular a média dos valores de um determinado
campo
COUNT Utilizada para devolver o número de registos da selecção
SUMUtilizada 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
Jorge Pina
12
Consultas – comando SELECT (1)
� A sintaxe básica de uma consulta de selecção
é a seguinte:
SELECT campos [AS alias]
FROM tabela
[WHERE…]
[ORDER BY…]
[GROUP BY…]
[HAVING…]
7
Jorge Pina
13
Consultas – comando SELECT (2)
� Considere a tabela seguinte:
numero nome apelido morada data_nasc cod_curso
1 João Silva Av. EUA 01-01-1951 1
2 José Silva Av. Roma 01-01-1952 1
3 Joana Gomes Av. Brasil 01-01-1953 1
4 Joaquim Gomes Av. Berlim 01-01-1954 1
5 João Gomes Av. Berlim 01-01-1955 1
6 João Costa Av. Alm. Reis 01-01-1956 1
7 Júlia Nunes Av. Brasil 01-01-1957 2
Jorge Pina
14
Consultas – comando SELECT (3)
� SELECT * FROM alunos
� Devolve toda a informação de todos os alunos
� SELECT numero, nome FROM alunos
� Devolve o número e o nome de todos os alunos
� SELECT * FROM alunos WHERE morada = ‘Av.
Berlim’
� Devolve toda a informação dos alunos cuja morada
é ‘Av. Berlim’
8
Jorge Pina
15
Consultas – comando SELECT (4)
� SELECT nome, apelido FROM alunos WHERE data_nasc >
‘1955-12-31’
� Devolve o nome dos alunos que nasceram após 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 número se situa entre 3 e 5
Jorge Pina
16
Consultas – comando SELECT (5)
� SELECT nome, apelido FROM alunos ORDER BY apelido
� Devolve o nome e o apelidos de todos os alunos, por ordem alfabética de
apelido
� SELECT nome, apelido FROM alunos ORDER BY apelido DESC
� Devolve o nome e o apelido de todos os alunos, por ordem alfabética
descendente de apelido
� SELECT nome, apelido FROM alunos ORDER BY apelido, nome
� Devolve o nome e o apelido de todos os alunos, por ordem alfabética de
apelido e depois por ordem alfabética 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 alfabética
descendente de apelido e depois por ordem alfabética de nome
9
Jorge Pina
17
Consultas – comando SELECT (6)
� Considere a tabela seguinte:
numero disciplina nota
1 Português 12
2 Português 15
3 Português 11
1 Inglês 8
2 Inglês 17
3 AI 16
6 AI 12
Jorge Pina
18
Consultas – comando SELECT (7)
� SELECT numero, avg (nota) FROM avaliacoes GROUP BY numero
� Devolve o número e a respectiva média das notas de todos os alunos
� SELECT disciplina, avg (nota) FROM avaliacoes GROUP BY disciplina
� Devolve a média de cada uma das disciplinas
� SELECT numero, avg (nota) FROM avaliacoes GROUP BY numero
HAVING avg(nota) >= 15
� Devolve o número e a respectiva média das notas dos alunos com média
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 número, o nome e a respectiva média das notas de todos os
alunos
10
Jorge Pina
19
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 ANDSalario < 500) OR (Cidade = ‘Cancun' AND Estado = 'Casado')
� SELECT * FROM Pedidos WHERE CodPostal Between 2500And 2510
� SELECT IF(CodPostal=2500, ‘Caldas da Rainha', ‘Outra cidade')FROM Editores
Jorge Pina
20
Operador Like
� Utiliza-se para comparar uma expressão de cadeia com ummodelo numa expressão SQL. A sua sintaxe é:
expressão LIKE modelo
� Pode-se utilizar o operador LIKE para encontrar valores noscampos que coincidam com o modelo especificado. Por modelopode-se especificar um valor completo (ex. Andreia), ou podem-se utilizar caracteres especiais como os reconhecidos pelosistema 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*’
11
Jorge Pina
21
Operador Like
� O exemplo seguinte devolve os dados que começam
com a letra P seguidos de qualquer letra entre A e F e
de três dígitos:
LIKE 'P[A-F]###'
� Este exemplo devolve os campos cujo conteúdo
comece com uma letra de A a D seguidas de qualquer
cadeia.
LIKE '[A-D]*'
Jorge Pina
22
Operador IN
� Este operador devolve os registos cujo campoindicado coincide com algum dos existentesnuma lista. A sua sintaxe é:
expressão [NOT] IN (valor1, valor2, . . .)
� Exemplo:
SELECT * FROM Pedidos WHERE Cidade IN(‘Lisboa', ‘Paris‘, ‘Londres’);
12
Jorge Pina
23
Consultas com predicado
Predicado Descrição
ALL devolve todos os campos da tabela
TOP devolve um determinado número deregistos da tabela
DISTINCT Omite os registos cujos camposseleccionados coincidam totalmente
DISTINCTROWOmite os registos duplicados baseando-se na totalidade do registo e não só noscampos seleccionados.
Jorge Pina
24
All
� Se não se inclui nenhum dos predicados assume-se ALL. O motor
de base de dados selecciona todos os registos que cumprem as
condições da instrução SQL. Não é conveniente abusar deste
predicado já que obrigamos o motor da base de dados a analisar a
estrutura da tabela para averiguar os campos que contêm, é muito
mais rápido indicar a lista de campos desejados.
SELECT ALL FROM Empregados
SELECT * FROM Empregados
13
Jorge Pina
25
Top
� Devolve um certo número de registos que entram entre oprincípio ou o fim de um campo especificado por uma cláusulaORDER BY. Suponha-se que queremos recuperar os Nomes dos25 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, ApelidoFROM Estudantes ORDER BY Nota DESC;
Jorge Pina
26
Distinct
� Omite os registos que contêm dados duplicados nos camposseleccionados. Para que os valores de cada campo listado nainstrução SELECT se incluam na consulta devem ser únicos.
� Por exemplo, vários Empregados listados na tabela Empregadospodem ter o mesmo apelido. Se dois registos contêm Lopes nocampo Apelido, a seguinte instrução SQL devolve um únicoregisto:
SELECT DISTINCT Apelido FROM Empregados;
14
Jorge Pina
27
Distinctrow
� Devolve os registos diferentes de uma tabela; a diferença dopredicado anterior que só se fixava no conteúdo dos camposselecionados, este fá-lo no conteúdo do registo completoindependentemente dos campos indicados a cláusula SELECT.
SELECT DISTINCTROW Apelido
FROM Empregados;