SQL Comandos Psi m14

14
1 Jorge Pina 1 Módulo 14 Linguagem 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.

description

Apontamentos Modulo 14 PSI - Técnico Gestão e Programação de Sistemas Informáticos

Transcript of SQL Comandos Psi m14

Page 1: 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.

Page 2: SQL Comandos Psi m14

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

Page 3: SQL Comandos Psi m14

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.

Page 4: SQL Comandos Psi m14

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

Page 5: SQL Comandos Psi m14

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

Page 6: SQL Comandos Psi m14

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…]

Page 7: SQL Comandos Psi m14

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’

Page 8: SQL Comandos Psi m14

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

Page 9: SQL Comandos Psi m14

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

Page 10: SQL Comandos Psi m14

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*’

Page 11: SQL Comandos Psi m14

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’);

Page 12: SQL Comandos Psi m14

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

Page 13: SQL Comandos Psi m14

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;

Page 14: SQL Comandos Psi m14

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;