Sistema de Gestão de Bases de dados
ISUTC INSTITUTO SUPERIOR DE
TRANSPORTES E COMUNICAÇÕES
O Grupo da Disciplina
DEPARTAMENTO DE TECN. DA
INFORMAÇÃO E COMUNICAÇÃO
Ano Lectivo 2023
Sistemas de Gestão de Base de Dados
_________________
2º semestre
CONTEÚDO
• Consultas Com Uma Tabela
– Cláusula WHERE
– Condições Compostas
– Ordenação dos Resultados
– Funções de Agregação
– Consultas Agrupadas
• Actividades práticas 15 e 16 (TPC)
MODELO FISICO
SQL
(Structured Query Language )
1. CONSULTAS NUMA ÚNICA
Base de Dados
TABELA
6
Comandos SQL
1. Consultas Com Uma Tabela
• Sintax:
Base de Dados
7
Comandos SQL
1. Consultas Com Uma Tabela
• SELECT - especifica os atributos cujos valores interessa conhecer.
Base de Dados
• FROM - especifica as tabelas envolvidas no processamento em questão
• WHERE - especifica a condição de restrição que permite restringir o número de linhas
a apresentar.
• GROUP BY - permite agrupar informação.
• HAVING - especifica as restrições ao nível dos grupos que são processados.
• ORDER BY - especifica a ordenação dos resultados.
8
Comandos SQL
1. Consultas Com Uma Tabela
• Exemplos:
ESTUDANTE (est_num, est_apelido, est_nome, est_sexo, est_bi, est_nacionalidade,est_morada, est_telef, est_email)
Base de Dados
INSCRICAO(num_est, cod_disc, insc_data, nota)
DISCIPLINA (disc_cod, disc_nome)
• (a) Imprimir o número e o nome de todos os estudantes.
• SELECT est_num, est_nome
• FROM estudante;
• (b) Imprimir todos os dados de estudantes.
• SELECT *
• FROM estudante;
• (c) Imprimir os números dos inscritos.
• SELECT DISTINCT num_est
9
• FROM inscricao;
Comandos SQL
1.1 Cláusula WHERE
• Utilizamos para fazer filtragem de resultado.
Base de Dados
Testes feitos:
– Comparação
– Intervalo
– Conjunto
– Valores nulos
– Correspondência com padrões
10
Comandos SQL
• 1.1 Cláusula WHERE
Base de Dados
11
Comandos SQL
• 1.1 Cláusula WHERE
Base de Dados
12
Comandos SQL
• 1.1 Cláusula WHERE
Exemplos:
Dadas as seguintes tabelas
Base de Dados
13
Comandos SQL
• 1.1 Cláusula WHERE
Exemplos:
(a) Imprimir todos os dados de empregados que estão no departamento 01.
Base de Dados
SELECT *
FROM empregado
WHERE cod_dept=’01’;
(b) Imprimir o número, bi,nome e data de nascimento de todos os empregados
cuja data de nascimento esta entre 01/01/1980 a 31/12/1985.
SELECT emp_num, emp_bi, emp_nome, emp_data_nasc
FROM empregado
WHERE emp_data_nasc BETWEEN ‘01/01/1980’AND ‘31/12/1985’;
14
Comandos SQL
• 1.1 Cláusula WHERE
Exemplos:
(c) Imprimir todos os empregados que estao nos departamentos 01, 02 e 04.
SELECT *
Base de Dados
FROM empregado
WHERE cod_dept IN (“01”,”02”,”04”);
(d) Imprimir empregados sem número de telefone
SELECT *
FROM empregado
WHERE emp_telef IS NULL;
(e) Imprimir bi e nome de empregados com número de telefone.
SELECT emp_bi, emp_nome
FROM empregado
15
WHERE emp_telef IS NOT NULL;
Comandos SQL
• 1.1 Cláusula WHERE
Exemplos:
(f) Imprimir os empregados cujo nome contém a palavra “ca”.
Base de Dados
SELECT *
FROM empregado
WHERE emp_nome LIKE “%ca%”;
(g) Imprimir os empregados cujo nome tem como segunda letra “o”
SELECT *
FROM empregado
WHERE emp_nome LIKE “_o%”;
(h) Imprimir os empregados cujo nome começa pela letra “b”
SELECT *
FROM empregado
16
WHERE emp_nome LIKE “b %”;
Base de Dados
ACTIVIDADE 15
17
ESTUDANTE
est_nu est_apel est_no est_se est_bi est_nacionali est_morad est_tel est_email
m ido me xo dade a ef
0001 Bobo Dércio M 100111 Moçambicana B. 8220128 derciobobe@transco
M Leberdade 4 m.co.mz
0002 Sulude Joyce F 101200Y Malawiana B. Nyerere 0287391 Joyce.sulude@gmail.
2 com
0005 Chaúma Ivan M 104000 Portuguesa C. Madeira 3200000 Ivan.chauma@trans
N 1 com.co.mz
0003 Mussá Jéssica F 100050I Moçambicana B. Alto Maé 8200010 Jessica.mussa@trans
Base de Dados
0 com.co.mz
0006 Laimoni Yara F 100200K Moçambicana B. 8400100 Yara.laimoni@transc
Xipamanine 0 om.co.mz
0007 Razak Imran M 100510L Moçambicana B. Alto Maé 8200101 Imran.razak@transc
0 om.co.mz
0009 Parruque Paula F 110020 Moçambicana B. Alto Maé 8601000 Paula.parruque@tra
B 2 nscom.co.mz
DISCIPLINA
disc_cod disc_nome
SGBD Sistemas de Gestão de Base de Dados
ASI Aplicações e Serviços de Internet
ANT Antenas
RIP Redes IP 18
PDS Processamento Digital de Sinais
SCII Sistemas de Comunicação II
INSCRICAO
Num_est Cod_disc Insc_data nota
0003 SGBD 20/06/2014 17
0005 SGBD 10/06/2015 7
Base de Dados
0003 SGBD 02/06/2013 5
0001 ANT 17/07/2015 18
0006 RIP 12/06/2014 11
0007 SGBD 29/06/2015 15
0006 PDS 30/06/2013 4
0005 RIP 12/06/2012 8
0009 SGBD 13/06/2013 13
0009 ASI 19/06/2015 2
0001 ANT 25/02/2011 2
19
Com recurso a sql apresente consultas para impressão de:
1. Todos os dados de estudantes.
2. Numero, apelido e nome de estudantes.
Base de Dados
3. Numero, apelido e nome de estudantes de nacionalidade moçambicana.
4. Numero, apelido e nome de estudantes residentes no Alto Maé.
5. Numero, apelido e nome de estudantes com número de telefone da
Tmcel.
6. Numero, apelido e nome de estudantes com email da transcom
7. Numero, apelido e nome de estudantes cujo nome tem como segunda
letra "a".
8. Numero, apelido e nome de estudantes cujo nome termina pela letra "a".
9. Numero, apelido e nome de estudantes estrangeiros.
10. Actualizar a nacionalidade da estudante Joyce para "Brasileira".
20
Comandos SQL
• 1.2 Condições Compostas
Sintax
Base de Dados
21
Comandos SQL
• 1.2 Condições Compostas
Exemplo:
Base de Dados
Imprimir os nomes dos empregados que estão nos departamentos de 1 a 3 e sem
número de telefone?
SELECT emp_nome
FROM empregado
WHERE (cod_dept BETWEEN 1 AND 3) AND (emp_telef IS NULL);
22
Comandos SQL
• 1.3 Ordenação dos Resultados
Base de Dados
Sintax
ASCendente, DESCendente
23
Comandos SQL
• 1.3 Ordenação dos Resultados
Exemplos:
(a) Imprimir todos empregados com número de telefone na ordem crescente de
Base de Dados
data de nascimento.
SELECT *
FROM empregado
WHERE emp_telef IS NOT NULL
ORDER BY emp_data_nasc ASC;
(b) Imprimir todos os empregados ordenado por idade e departamento.
SELECT *
FROM empregado
ORDER BY emp_data_nasc, cod_dept; 24
Comandos SQL
• 1.4 Funções de Agregação
Base de Dados
Têm por objectivo executar cálculos sobre o resultado de um comando SELECT
(resumir) e são elas:
SUM ( ) - Devolve a soma de todos os valores da coluna
AVG ( ) - Devolve a média de todos os valores da coluna
MAX ( ) - Devolve o maior valor da coluna
MIN ( ) - Devolve o menor valor da coluna
COUNT ( ) - Devolve o número de valores de uma coluna
25
COUNT (*) - Devolve o número de linhas
Comandos SQL
• 1.4 Funções de Agregação
Sintax
Base de Dados
26
Comandos SQL
• 1.4 Funções de Agregação
Exemplos:
(a) Quantos departamentos possuem empregados?
SELECT COUNT(DISTINCT cod_dept)
Base de Dados
FROM empregado;
(b) Quantos empregados foram registados na base de dados?
SELECT COUNT(*)
FROM empregado;
(c) Qual é o numero total de empregados e quantos tem telefone?
SELECT COUNT(*), COUNT(emp_telef)
FROM empregado;
NB: Nas funcões de agregação SUM( ), AVG( ), MIN( ), MAX( ), COUNT( ) os 27
valores NULL são ignorados.
Comandos SQL
• 1.5 Consultas Agrupadas
Em algumas ocasiões é necessário agrupar registos.
Exemplo: Calcular a media de salários para cada departamento.
Base de Dados
Sintax:
Exemplo:
Imprimir o total de empregados por cada departamento.
SELECT cod_dept, COUNT(*)
FROM empregado
GROUP BY cod_dept;
NB: Qualquer coluna que não seja uma função de agregação só pode estar na
cláusula SELECT se estiver na cláusula GROUP BY. (rigidamente obrigatório no 28
Oracle- vede http://raelcunha.com/oracle.php)
Comandos SQL
• 1.5 Consultas Agrupadas
Restrições sobre os Grupos: Cláusula HAVING
HAVING actua unicamente sobre o resultado dos grupos e esta é utilizada sempre
que se pretende restringir o conjunto dos GRUPOS de registos a considerar.
Base de Dados
Sintax:
Exemplo:
Imprimir o total de empregados por idade, mas somentes para idades que
ocuparam no mínimo três departamentos.
SELECT emp_data_nasc, COUNT (*)
FROM empregado
GROUP BY emp_data_nasc
HAVING COUNT (DISTINCT cod_dept)>=3;
29
ACTIVIDADE 16 (TPC)
Com recurso a sql apresente consultas para impressão de:
1. Numero, apelido e nome de estudantes ordenados por apelido.
2. Total de estudantes por sexo.
3. Numero, apelido e nome de estudantes moçambicanos com numero de telefone de Tmcel.
4. Média das notas por disciplina.
5. Total de notas por disciplina, somente para as disciplinas com mais de 2 notas.
6. Total de estudantes por disciplina.
7. Média de notas positivas por disciplina.
8. Máxima nota na disciplina de SGBD.
9. Disciplina onde registou-se maior nota no ano de 2013.
Extra:
i) Numeros de estudantes insccritos nas disciplinas de SGBD e RIP.
ii) Total de inscrições por estudante
iii) Total de disciplinas por estudante
iv) Total de notas positivas por disciplina
v) Media global de cada estudante (use somentes notas positivas)
vi) Numero de vezes que cada estudante reprovou.
GARANTE O TEU FUTURO
COM UMA FORMAÇÃO SÓLIDA
Prolong. da Av. Kim Il Sung (IFT/TDM) Edifício D1
Maputo, Moçambique
www.facebook.com/isutc
www.transcom.co.mz/isutc