Escolar Documentos
Profissional Documentos
Cultura Documentos
SGBD
Software para processar
Mini-mundo Banco consultas / programas
de
Dados
Aplicações
Software para acessar
dados armazenados
CONCEITOS BÁSICOS
Aluno Nome Número Área O nome "SQL" significa "Structured Query Language" - Linguagem
José 17 INF Estruturada de Pesquisa.
Antônio 8 INF
Essa linguagem, de grande utilização, teve seus fundamentos no
modelo relacional de Codd (l970). Sua primeira versão recebeu o nome
Disciplina Nome Número Créditos Dept
de SEQUEL ("Structured English Query Language"), sendo definida por
Delphi INF1310 4 INF D. D. CHAMBERLIN, entre outros, em 1974, nos laboratórios de pesquisa
Estrutura de Dados INF3320 4 INF da IBM (Califórnia).
Matemática Discreta MAT2410 3 MAT
Banco de Dados INF3380 3 INF Em 1975, foi implementado um protótipo de aplicação dessa nova
linguagem. Entre 1976 e 1977, o SEQUEL foi revisado e ampliado, e
teve seu nome alterado para "SQL" por razões jurídicas.
Pré-Requisito Nº Curso Nº Pré-Req
INF3380 INF3320 A SQL se tornou um padrão de fato, no mundo dos ambientes de
INF3380 MAT2410 banco de dados relacionais.
INF3320 INF1310 Em 1982, o American National Standard Institute (ANSI) tornou a
SQL padrão oficial de linguagem em ambiente relacional.
Histórico-Escolar Nº Aluno Nº Curso Grau
Infelizmente, como todo padrão que se preze, existem hoje vários
17 MAT2410 B
dialetos SQL, cada um, evidentemente, tentando ser mais padronizado
17 INF1310 C
que o outro.
8 MAT2410 A
8 INF1310 A A linguagem SQL foi desenvolvida especialmente para o ambiente
8 INF3320 B relacional, podendo ser adaptada a qualquer ambiente não relacional.
8 INF3380 A
• Sistema de informação:
* Linguagem interativa de consulta (query AdHoc);
– Dados;
* Linguagem de programação para acesso a banco de dados;
– SGBD;
* Linguagem de administração de banco de dados;
– O hardware e o sistema operacional; * Linguagem cliente/servidor;
* Linguagem para banco de dados distribuído;
– As pessoas que usam e administram os dados;
* Caminho de acesso a outros bancos de dados em diferentes máquinas.
– Os programas de aplicação que acessam e atualizam os dados;
TABELA VENDEDOR
Código do Nome do Salário Faixa de TABELA ITEM DO PEDIDO
Vendedor Vendedor Fixo Comissão Número do Código do Quantidade VISÃO GRÁFICA
209 José 1.800 C Pedido produto
111 Carlos 2.490 A 121 25 10
11 João 2.780 C 121 31 35
240 Antônio 9.500 C 97 77 20
101 31 9 CLIENTE PEDIDO ITEM DO PEDIDO
720 Felipe 4.600 A
213 Jonas 2.300 A 101 78 18
101 João 2.650 C 101 13 5 Código do cliente ⌫ Número do pedido ⌫ Número do pedido ⌫
310 Josias 870 B 98 77 5
148 45 8 Nome do cliente Prazo de entrega Código do produto ⌫
250 Maurício 2.930 B
148 31 7
148 77 3
Endereço Código do cliente Quantidade
148 25 10 Cidade Código do vendedor Valor Unitário
148 78 30
TABELA PEDIDO 104 53 32 CEP
Número do Prazo de Código do Código do 203 31 6
Pedido Entrega Cliente Vendedor 189 78 45 UF
143 31 20
121 20 410 209 143 78 10
CGC VENDEDOR PRODUTO
97 20 720 101 105 78 10
101 15 720 101 IE
111 25 10 Código do Vendedor ⌫ Código do produto⌫
137 20 720 720 111 78 70
148 20 720 101 103 53 37 Nome do vendedor Descrição
189 15 870 213 91 77 40
104 30 110 101 Unidade
203 30 830 250
138 22 10 Faixa de comissão
138 77 35
98 20 410 209 138 53 18 Salário fixo Val. Unit.
143 30 20 111 108 13 17
105 15 180 240 119 77 40
111 20 260 240 119 13 6
103 20 260 11 119 22 10
91 20 260 11 119 53 43
138 20 260 11 137 13 8
108 15 290 310 ⌫ : Chave primária
119 30 390 250
127 10 410 11
: Chave estrangeira
CRIAÇÃO E DISTRIBUIÇÃO DE TABELAS
O comando CREAT TABLE cria a tabela solicitada e obedece à Create Table Cliente
seguinte forma: (Cód. do cliente Number Not Null Unique;
<tabela> - É o nome da nova tabela a ser criada; Primary Key (Cód. do cliente)).
<descrição das chaves> - É a lista de colunas que são tratadas como (Número do pedido Number Not Null Unique;
chave estrangeira. Prazo de entrega Date Not Null;
Alguns campos podem receber o valor NULL (nulo) e o campo Cód. do cliente Number;
definido como chave primária, além de não poder receber NULL, deve ser Cód. do vendedor Number Not Null;
um campo UNIQUE (sem repetições – chave primária).
Primary Key (Número do pedido);
Foreign Key (Cód. do cliente);
Create Table Item do Pedido
References Cliente;
(Número do pedido Number Not Null Unique;
Foreign Key (Cód. do vendedor);
Cód. do produto Number Not Null Unique;
References Vendedor ).
Quantidade Number Not Null;
Valor unitário Number Not Null;
Primary Key (Número do pedido, Código do produto);
Create Table Vendedor
Foreign Key (Número do pedido);
(Cód. do vendedor Number Not Null Unique;
References Pedido;
Nome do vendedor VarChar(20) Not Null;
Foreign Key (Código do produto);
Faixa de comissão Number Not Null;
References Produto).
Salário Fixo Number Not Null;
Primary Key(Cód. do vendedor)).
SELECIONANDO TODAS AS COLUNAS DA TABELA
Observações:
Forma: Select <nome(s) da(s) coluna(s)>
Quando a coluna é do tipo caractere, o <valor> deve estar entre
From <tabela> aspas.
Ex.: 'PARAFUSO'.
Problema: Listar todos os produtos com respectivas descrições, Na linguagem SQL, existe a diferenciação entre maiúsculas e
unidades e valores unitários. minúsculas em alguns SGBDs, logo 'PARAFUSO' é diferente de
‘parafuso’.
Problema: Listar o nome do cliente, com seu endereço e CGC.
Problema: Listar o nome e salário dos vendedores. Problema: Listar o código do produto e a quantidade dos itens do pedido
com a quantidade igual a 35.
Problema: Listar o nome e o percentual de 20% de cada salário (criar
uma coluna virtual).
Problema: Listar os clientes que moram em ‘São Paulo’.
Problema: Listar os produtos que tenham unidade igual a ‘M’ e valor Problema: Listar os vendedores que não começam por ‘Jo’
unitário maior que R$1,00.
Problema: Listar as cidades cujo o nome inicia com a letra ‘B’.
Problema: Listar os empregados com salário no intervalo de R$ 2.300,00
à R$ 2.650,00, inclusive.
OPERADORES IN E NOT IN
Problema: Listar os empregados com salário fora do intervalo de R$
2.300,00 à R$ 2.650,00, inclusive.
Forma: Where <nome da coluna> IN <valores>
Problema: Liste os clientes e seus respectivos endereços; dos que moram Where <nome da coluna> NOT IN <valores>
em ‘São Paulo’ ou estejam na faixa de CEP entre ‘30077000’ e ‘30079000’.
Esses operadores pesquisam registros que estão ou não contidos no
Problema: Mostrar todos os pedidos que não tenham prazo de entrega conjunto de <valores> fornecido.
igual a 15 dias.
Forma: Where <nome da coluna> Between <valor1> AND <valor2> Problema: Listar os produtos que não tem sua unidade começando com M.
Where <nome da coluna> NOT Between <valor1> AND <valor2>
Quando se realiza uma seleção, os dados recuperados não estão Forma: Select SUM<nome da coluna>
ordenados.
A SQL prevê a cláusula ORDER BY para realizar uma ordenação dos
dados selecionados. Problema: Mostrar a quantidade total pedida para o produto ‘VINHO’ de
código “78”.
Forma: Select <nome da(s) coluna(s)>
From <tabela>
Where <condição(ões)> CALCULANDO MÉDIAS(AVG)
Order By <nome da(s) coluna(s)> DESC
ou
Order By <número da coluna> ASC
Forma: Select AVG<nome da coluna>
Problema: Mostrar a descrição e o valor unitário de todos os produtos que Forma: Select COUNT(*)
tenham a unidade ‘KG’, em ordem de valor unitário ascendente.
Problema: Quantos vendedores ganham acima de R$ 2.500,00 de salário
fixo?
REALIZANDO CÁLCULOS COM INFORMAÇÃO SELECIONADA
Problema: Determinar o número de clientes e o número de estados
cadastrados.
Com a linguagem SQL pode-se criar uma coluna que não pertença à
tabela original, e que seja fruto do cálculo sobre algum campo da tabela.
UTILIZANDO A CLÁUSULA DISTINCT
Problema: Mostrar o novo salário fixo dos vendedores, de faixa de
comissão ‘C’, calculado com base no reajuste de 75% acrescido de R$
120,00 de bonificação. Ordenar pelo nome do empregado. Normalmente, vários registros dentro de uma tabela podem conter os
mesmos valores, com exceção da chave primária. Com isso, muitas
consultas podem trazer informações erradas. A cláusula DISTINCT, aplicada
em uma consulta, foi criada para não permitir que certas redundâncias,
obviamente necessárias, causem problema.
UTILIZANDO FUNÇÕES SOBRE CONJUNTO
Problema: Quais os produtos, cadastrados na tabela Produto?
Buscando Máximos e Mínimos (MAX, MIN): Problema: Determine quantas cidades diferentes existem na tabela
cliente.
Forma: Select MAX<nome da coluna>, MIN<nome da coluna>
UTILIZANDO FUNÇÕES NÃO AGREGADAS Problema: Quais os clientes que fizeram os pedidos? Listar pelo nome de
cliente.
ATUALIZANDO UM REGISTRO
Problema: Apresentar os vendedores (ordenados) que emitiram pedidos
com prazos de entrega superiores a 15 dias e tenham salários fixos igual ou
superior a R$ 1.000,00.
Forma: Update <nome da tabela>
Set<nome da(s) coluna(s)> = valor
Where <condições>
JUNTANDO MAIS DE DUAS TABELAS
Problema: Alterar o valor unitário do produto ‘parafuso’de R$ 1.25 para
R$ 1.62.
Problema: Mostre os clientes (ordenados) que têm prazo de entrega maior
que 15 dias para o produto “QUEIJO” e que sejam do Rio de Janeiro.
Problema: Atualizar o salário fixo de todos os vendedores em 27%, mais
uma bonificação de R$ 100,00.
Problema: Mostre todos os vendedores que venderam chocolate em
Problema: Acrescentar 2,5% ao preço unitário dos produtos que estejam
quantidade superior a 10 Kg.
abaixo da média dos preços, para aqueles comprados a quilo.