SQL Structured Query Language: Professora: Kele Belloze E-Mail: Kele - Belloze@
SQL Structured Query Language: Professora: Kele Belloze E-Mail: Kele - Belloze@
SQL
Structured Query Language
Professora: Kele Belloze
E-mail: [email protected]
5
Modelo relacional
• Cliente(idCliente, nomeCliente)
• TelCliente(idCliente, telefone)
• Pedido(idPedido, dtPedido, motivoCancel, situacao, idCliente,
idMesa)
• ItemConsumo(idItem, nomeItem, precoUnit, descricao,
categoria)
• PedidoItem(idPedido, idItem, quantidade)
• Mesa(idMesa)
• Nota(numeroNota, dataPagamento, idPedido)
6
DDL – LINGUAGEM DE DEFINIÇÃO
DE DADOS
Comandos de Modificação do Esquema (DDL)
• Criar banco de dados (CREATE DATABASE)
– Permite criar um novo banco de dados. O banco de dados
é criado e depois são inseridas as relações (tabelas) que o
compõe.
• Exemplo:
– Exemplo:
DROP TABLE Itens_Consumo;
– Exemplo:
– Exemplo:
SELECT Nome
FROM Alunos
WHERE Numero <= 3000
– Operadores que podem ser utilizados na cláusula WHERE: =, <>, <, >,
<=, >=, or, and, not.
Consultar Dados
• A lista completa de atributos é representada pelo
caracter *
SELECT *
FROM Alunos
WHERE Numero <= 3000
Consultar Dados
• Uso de múltiplas tabelas
– Exemplo: Selecionar os códigos de disciplinas que possuem alunos matriculados.
SELECT Cod
FROM Alunos, Disciplinas
WHERE Alunos.Numero = Disciplinas.Num
Consultar Dados
• Renomeação de múltiplas tabelas
– O operador ‘.’ (ponto) pode ser utilizado para distinguir atributos de
tabelas diferentes.
SELECT Cod
FROM Alunos A, Disciplinas D
WHERE A.Numero = D.Num
SELECT Cod
FROM Alunos, Disciplinas
WHERE Numero = Num
Consultar Dados
• Tuplas duplicadas
– Em geral, tabelas em SQL são coleções (ou seja, podem permitir
duplicações).
– A eliminação de linhas duplicadas de uma tabela pode ser feita pela
utilização da palavra chave distinct após o comando select.
– Exemplo:
...
order by nome_atributo [asc | desc], ...
SELECT Nome
FROM Alunos
order by Nome
Consultar Dados
• Comparação de cadeias de caracteres
– Igual (=), Diferente (!= ou <>)
– ||: operação de concatenação de duas cadeias de caracteres
– like: operador para a verificação se a cadeia de caracteres obedece a certo
padrão
• Dois símbolos utilizados na construção de padrões (de cadeias de caracteres):
%: representa uma cadeia de caracteres quaisquer
_: representa um caracter
– Exemplo:
(nome like ‘%a_’) é verdadeiro para todos os nomes que possuem o caracter ‘a’ como
segunda letra contada do final para o início.
SELECT Nome
FROM Alunos
WHERE Nome like ‘%a_’
Consultar Dados
• Valores nulos
– Pode-se verificar se o valor de um atributo é nulo (‘is null’) ou não
(‘is not null’):
– Exemplo:
...
WHERE (X is null) and (Y is not null)
...
Consultar Dados
• Funções de agregação
– count (*), count (atributos): conta o número de tuplas (linhas)
– Exemplo:
– Exemplo:
SELECT min(Nota),max(Nota),avg(Nota)
FROM Alunos
Consultar Dados
• Cláusulas de agrupamento
– As linhas de uma tabela podem ser particionadas em grupos de
linhas, onde cada grupo tem todas as suas linhas preenchidas com
um mesmo valor para cada um dos atributos especificados na
cláusula ‘group by’.
– Exemplo:
SELECT Nome
FROM Alunos
WHERE (Nome, Numero) not in
(SELECT Nome, Numero
FROM Alunos
WHERE Numero <> 1235)
Consultar Dados
• Precedência nas avaliações de SELECTS
– Selects aninhados são avaliados antes dos selects externos, a menos
que eles dependam de atributos externos.
– Caso um select aninhado dependa de um atributo externo, ele deve
ser reavaliado para cada instância do atributo externo (exemplo a
seguir):
Consultar Dados
• Precedência nas avaliações de SELECTS
– Exemplo:
SELECT Nome
FROM Alunos as A1
WHERE exists (SELECT *
FROM Alunos as A2
WHERE A1.Numero <> A2.Numero
and A1.Sexo = A2.Sexo)
Exercícios
• Considere o seguinte esquema relacional:
– Fornecedores(fid: integer, fnome: string, end: string)
– Pecas(pid: integer, pnome: string, cor:string)
– Catalogo(fid: integer, pid: integer, preco: real)
• No esquema acima, as chaves estão sublinhadas. A
tabela Catalogo lista o preço praticado pelos
fornecedores para cada peça fornecida.
1. Obtenha o nome dos fornecedores que fornecem alguma
peça vermelha.
2. Obtenha o nome dos fornecedores que fornecem alguma
peça que custe 100 ou 150.
3. Obtenha o fid dos fornecedores que fornecem alguma
peça vermelha ou que custe 150.
Exercícios