Você está na página 1de 58

Escola Secundária D.

Dinis
Curso Profissional TIS

Disciplina – Sistemas de Informação

Módulo44––Servidor
Módulo ServidordedeDados
Dados-
SQL
Programação SQL
Usar as bases de dados

• Criar a Base de Dados:


– CREATE DATABASES nome_da_Base de dados;

• Ver as bases de dados existentes:


– SHOW DATABASES;

• Usar uma base de dados existente;


– USE nome_da_base_dados;

• Remover uma base de dados:


– DROP DATABASE nome_da_base_dados;
Criar Tabelas
• CREATE TABLE
Exemplo:
• Criar a tabela empregado(Id, Nome, Data_Nasc, Salário)
Mostrar as Tabelas
• SHOW TABLES;

• SHOW COLUMNS FROM nome_da_tabela;


Outros Atributos
• Especificar se uma coluna pode ser ou não nula
– NULL
– NOT NULL

• Associar um valor por defeito


– DEFAULT ‘valor’
– DEFAULT 123

• Chave primária
– PRIMARY KEY

• Referir Chave primária composta por um ou mais campos


– PRIMARY KEY (atrib1, atrib2)

• Referir Chave externa


– REFERENCES tabela(atributo)

• Referir Chave externa composta por um ou mais campos


– FOREIGN KEY(Atrib1, Atrib2) REFERENCES tabela(Atrib1, Atrib2)
Exemplo I
Exemplo II
Exemplo
Tabela com chave constituída por vários campos
Inserir Valores na Tabela
• INSERT INTO nome_da_tabela VALUES (valor1, valor2,
…);

• INSERT INTO nome_da_tabela(atributo1,…) VALUES


(valor1,…);
Alterar Estrutura das Tabelas
 • Adicionar um campo:
 – ALTER TABLE nome_da_tabela ADD nome_coluna
tipo_coluna;
 • Modificar um campo:
 – ALTER TABLE nome_da_tabela MODIFY nome_Coluna
tipo_coluna;
 • Apagar um campo:
 – ALTER TABLE nome_da_tabela DROP nome_coluna;
Apagar a tabela
• Apaga a tabela:

– DROP TABLE nome_da_tabela;

• Apaga a tabela se não estiver referenciada por outra:

– DROP TABLE nome_da_tabela RESTRICT;

• Apaga a tabela e todas as tabelas associadas à tabela:

– DROP TABLE nome_da_tabela CASCADE;


Alterar e Apagar Dados
• Apagar

– DELETE FROM nome_tabela WHERE campo=valor;

• Alterar

– UPDATE nome_tabela SET campo=novo_valor WHERE


campo2=valor;
Alterar e Eliminar registos em tabelas

Relacionadas
• Alterar valores na tabela mãe e automaticamente na
tabela filho:
– ON UPDATE CASCADE
• Eliminar valores na tabela mãe e automaticamente na
tabela filho:
– ON DELETE CASCADE
Selecções
Comando SELECT
Selecções Simples
• Seleccionar todos os registos
– SELECT Codigo, Localidade FROM Postal;

• Seleccionar todas as colunas


– SELECT * FROM Pessoa;
Selecções Simples
• Seleccionar algumas das colunas da tabela

– SELECT Id, Nome, Telefone FROM Pessoa;


Restrição (Cláusula WHERE)
• Restringir um conjunto de registos a apresentar
Operadores Relacionais
Selecções com operadores relacionais
• Seleccionar pessoas com ordenado maior ou igual que 1000
– SELECT * FROM Pessoa WHERE Salario>=1000;

• Seleccionar Nome de pessoas com ordenado menor que 1000


– SELECT Nome FROM Pessoa WHERE Salario<1000;
Operadores Lógicos
Selecções com operadores lógicos
• Seleccionar pessoas com ordenado entre 1000 e 1200
– SELECT * FROM Pessoa WHERE Salario>=1000 AND
Salario<=1200;

 Seleccionar pessoas que não fazem parte da selecção anterior


(ordenado inferior a 1000 ou superior a 1200)
– SELECT * FROM Pessoa WHERE NOT(Salario>=1000 AND
Salario<=1200);
– SELECT * FROM Pessoa WHERE Salario<1000 OR Salario>1200);
Outros Operadores
Selecções com operador BETWEEN
• Seleccionar pessoas com ordenado entre 1000 e 1200
– SELECT * FROM Pessoa WHERE Salario BETWEEN
1000 AND 1200;

Seleccionar pessoas que não fazem parte da selecção anterior


(ordenado inferior a 1000 ou superior a 1200)
– SELECT * FROM Pessoa WHERE Salario NOT
BETWEEN 1000 AND 1200;
Selecções com operador IN
• Seleccionar códigos postais de Ermesinde Gondomar;
– SELECT * FROM Postal WHERE Localidade IN
(‘Ermesinde’, ‘Gondomar’);

• Seleccionar códigos postais que não pertençam a Ermesinde ou


Gondomar;
– SELECT * FROM Postal WHERE Localidade NOT IN
(‘Ermesinde’, ‘Gondomar’);
Selecções com operador IS [NOT] NULL
• Seleccionar pessoas cujo campo salário é nulo:
– SELECT * FROM Pessoa WHERE Salario IS NULL;

• Seleccionar pessoas cujo campo salário não é nulo:


– SELECT * FROM Pessoa WHERE Salario IS NOT
NULL;
Operador LIKE - WildCards
Funções de Agregação
• Têm por objectivo obter informação sobre conjuntos de
linhas especificados na cláusula WHERE ou sobre
grupos de linhas indicadas na cláusula GROUP BY
Selecções com operador LIKE
• Seleccionar pessoas cujo nome começa por s:
– SELECT * FROM Pessoa WHERE Nome LIKE ‘s%’;

 Seleccionar pessoas cujo nome termina em a:


– SELECT * FROM Pessoa WHERE Nome LIKE ‘%a’;
Ordenação
Ordenação por uma coluna ORDER BY
• Ordenar por ordem crescente ascendente) coluna Salario:
– SELECT * FROM Pessoa ORDER BY Salario ASC;

• Seleccionar por ordem decrescente (descendente) da coluna


Salario:
SELECT * FROM Pessoa ORDER BY Salario DESC;
Ordenação por várias colunas
• Ordenar por ordem crescente ascendente) coluna Cod_Postal
e decrescente da coluna Salario:
– SELECT * FROM Pessoa ORDER BY Cod_Postal ASC,
Salario DESC;
Juntando várias tabelas
Join
• Permite extrair, através de um único SELECT,
informação contida em diferentes Tabelas.
• As tabelas têm de estar relacionadas através de chaves
externas.
• A junção entre tabelas faz-se colocando na cláusula
FROM o conjunto de tabelas que se pretende juntar.
Exemplo juntar a tabela pessoa com a tabela postal de forma a
saber a Localidade

– SELECT * FROM PESSOA, POSTAL WHERE


Cod_Postal=Codigo;
Exemplo Juntar a tabela Pessoa com a
tabela Postal de forma a saber a
Localidade
Exemplo 2: Seleccionar a localidade das pessoas
que não têm n.º de telefone
Union
Permite juntar conteúdo de dois mais comandos SELECT
• O Order by apenas pode existir no último select
Intersect
• Permite juntar conteúdo de dois mais comandos SELECT
juntando apenas as linhas que existem nos dois
Minus
• Permite juntar os registos que resultam primeiro select
e que não aparecem no segundo.
Resumo das Junções
Funções de Agregação
Funções de Agregação
• Têm por objectivo obter informação sobre conjuntos de
linhas especificados na cláusula WHERE ou sobre
grupos de linhas indicadas na cláusula GROUP BY.
Exemplos
Funções Min e Max
• Qual salário mais elevado e mais baixo?

– SELECT MAX(Salario) as SalarioMax,


MIN(Salario) as SalarioMin FROM Pessoa;
Função SUM
Função Avg
• Qual médio dos salários dos empregados?
– SELECT AVG(salario) FROM pessoa

• Qual o valor médio dos salários a pagar aos empregados que


vivem em Ermesinde?
– SELECT AVG( salario) FROM pessoa, postal WHERE
localidade=‘Ermesinde’ AND Cod_Postal = Codigo;
Agrupando a Informação
Cláusula GROUP BY
É utilizada para agrupar a informação.
• Divide os resultados de um select em grupos de
resultados que vão ser processados pelas funções
de agregação.
Cláusula GROUP BY
Somar os ordenados por código postal

– SELECT SUM(salario), Cod_Postal FROM pessoa


GROUP BY Cod_Postal;
Restrição ao nível dos grupos HAVING
Exemplo WHERE/HAVING
Seleccionar os empregados com ordenado superior a 1500€:
– SELECT * FROM pessoa WHERE salario>1500;

• Seleccionar qual o total dos ordenados (agrupados por cod


postal), considerando apenas valores superiores a 1500€:
– SELECT SUM(Salario), Cod_Postal FROM pessoa WHERE
salario>1500 GROUP BY Cod_Postal
Exemplo WHERE/HAVING
• Seleccionar qual o total dos ordenados (agrupados por
cod postal), considerando apenas valores superiores a
1500€:
– SELECT SUM(Salario), Cod_Postal FROM pessoa
WHERE salario>1500 GROUP BY Cod_Postal
HAVING AVG(Salario)>11000;
SubQueries
SUBQUERIES
• O resultado de um select é sempre uma nova tabela;

• Logo é possível efectuar um select aos resultados


devolvidos por um outro;

• Quais os nomes e os salários dos indivíduos com o


menor salário da empresa:

– nome salario SELECT nome, FROM pessoa WHERE


salario = (SELECT MIN(salario) FROM pessoa);
Exercício
• Crie as seguintes tabelas, tendo em conta as chaves primárias, as chaves
externas e o tipo de dados mais conveniente:
– Factura(NFactura, Data, Total, NContrib)
– Cliente(NContrib, Nome, Morada, Telefone, Fax)
– Produto(CodProduto, Designação)
– Linha(NFact, NLinha, Cod Produto, Quant, Preço, IVA)
• Insira pelo menos 4 tuplos em cada tabela.
• Crie as seguintes consultas:
– Simples
– Com operadores relacionais
– Com operadores de agregação
– Com operador LIKE
– Juntando duas tabelas

Você também pode gostar