SlideShare une entreprise Scribd logo
1  sur  23
BIBLIOGRAFIA DE BANCO DE DADOS
Livros-texto (entre muitos outros):
• Banco de Dados, Uma Visão Prática,Felipe Machado e Mauricio Abreu, Ed.
Érica, 1999.
• Modelagem Conceitual e Projeto de Banco de Dados, Paulo Cougo, Ed.
Campus, 1997.
INTRODUÇÃO CONCEITOS BÁSICOS
• Conjunto de dados sobre o qual uma comunidade de usuários realiza
operações de recuperação e atualização.
• Um BD representa algum aspecto do mundo real, chamado “mini-mundo”
ou “universo de discurso”. As mudanças no mini-mundo são refletidas no
banco de dados.

Mini-mundo

Banco
de
Dados
Aplicações

CONCEITOS BÁSICOS
• Um banco de dados computadorizado pode ser criado e mantido por um
grupo de programas de aplicação escritos especificamente para aquela
tarefa ou por um SISTEMA DE GERÊNCIA DE BANCOS DE DADOS (SGBD).
• Um SGBD é uma coleção de programas de propósito geral que facilita o
processo de definir, construir e manipular bancos de dados para várias
aplicações.
– Definir um banco de dados significa especificar os tipos de dados a
serem armazenados juntamente com uma descrição detalhada de cada tipo.
– Construir o banco de dados é o processo de armazenar os dados
em algum meio de armazenamento controlado pelo SGBD.
– Manipular um banco de dados compreende certas funções como
consultar o banco de dados para recuperar dados específicos, atualizar o
banco de dados para refletir mudanças percebidas no mini-mundo e
produzir relatórios a partir dos dados.
• O banco de dados e o SGBD juntos são chamados genericamente de
SISTEMA DE BANCOS DE DADOS.
SISTEMA DE BANCO DE DADOS
Usuários / Programadores
Sistema de BD
Consultas / Programas de Aplicação

SGBD
Software para processar
consultas / programas

Software para acessar
dados armazenados

Definição
do BD
(Meta-dados)

BD
armazenado
EXEMPLO DE BANCO DE DADOS
Aluno

Disciplina

Nome
José
Antônio

Número
17
8

Nome
Delphi
Estrutura de Dados
Matemática Discreta
Banco de Dados

Pré-Requisito

Histórico-Escolar

Número
INF1310
INF3320
MAT2410
INF3380

Nº Curso
INF3380
INF3380
INF3320
Nº Aluno
17
17
8
8
8
8

Área
INF
INF
Créditos
4
4
3
3

Dept
INF
INF
MAT
INF

Nº Pré-Req
INF3320
MAT2410
INF1310
Nº Curso
MAT2410
INF1310
MAT2410
INF1310
INF3320
INF3380

SISTEMA DE INFORMAÇÃO
• Sistema de informação:
– Dados;
– SGBD;
– O hardware e o sistema operacional;
– As pessoas que usam e administram os dados;
– Os programas de aplicação que acessam e atualizam os dados;
– Os programadores que desenvolvem essas aplicações.

Grau
B
C
A
A
B
A
LINGUAGEM SQL



O nome "SQL" significa "Structured Query Language" - Linguagem
Estruturada de Pesquisa.



Essa linguagem, de grande utilização, teve seus fundamentos no
modelo relacional de Codd (l970). Sua primeira versão recebeu o nome
de SEQUEL ("Structured English Query Language"), sendo definida por
D. D. CHAMBERLIN, entre outros, em 1974, nos laboratórios de pesquisa
da IBM (Califórnia).



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.



A SQL se tornou um padrão de fato, no mundo dos ambientes de
banco de dados relacionais.



Em 1982, o American National Standard Institute (ANSI) tornou a
SQL padrão oficial de linguagem em ambiente relacional.



Infelizmente, como todo padrão que se preze, existem hoje vários
dialetos SQL, cada um, evidentemente, tentando ser mais padronizado
que o outro.



A linguagem SQL foi desenvolvida especialmente para o ambiente
relacional, podendo ser adaptada a qualquer ambiente não relacional.

A LINGUAGEM SQL

*

Linguagem interativa de consulta (query AdHoc);

*

Linguagem de programação para acesso a banco de dados;

*

Linguagem de administração de banco de dados;

*

Linguagem cliente/servidor;

*

Linguagem para banco de dados distribuído;

*

Caminho de acesso a outros bancos de dados em diferentes máquinas.
FUNÇÕES DE UM SGBD

*

Definição de Dados (DDL)- permite ao usuário a definição da
estrutura e organização dos dados armazenados, e as relações que
existem entre eles;

*

Manipulação de Dados (DML)- permite ao usuário ou a um
programa de aplicação, a inclusão, remoção, seleção ou atualização de
dados previamente armazenados no banco;

*

Controle de Acesso- protege os dados de manipulações não
autorizadas;

*

Compartilhamento de Dados- coordena o compartilhamento dos
dados por usuários concorrentes, sem contudo interferir na ação de
cada um deles;

*

Integridade dos Dados- auxilia no processo de definição da
integridade
dos
dados,
protegendo
contra
corrupções,
inconsistências e falhas do sistema de computação.

VANTAGENS DA LINGUAGEM SQL

*

Independência de Fabricante- A SQL é oferecida em praticamente
todos os SGBD'S, e os que ainda não têm estão se encaminhando para
lá. Com isso posso mudar de SGBD sem me preocupar com o novo que
vai chegar;

*

Portabilidade Entre Computadores- A SQL pode ser utilizada desde
um computador pessoal, passando por uma estação de trabalho, até um
computador de grande porte;

*

Redução dos Custos com Treinamento - Baseado no item anterior,
as aplicações podem se movimentar de um ambiente para o outro sem
que seja necessária uma reciclagem da equipe de desenvolvimento;

*

Inglês Estruturado de Alto Nível- A SQL é formada por um conjunto
bem simples de sentenças em inglês, oferecendo um rápido e fácil
entendimento;

*

Consulta Interativa- A SQL provê um acesso rápido aos dados,
fornecendo respostas ao usuário, a questões complexas, em minutos ou
segundos;

*

Múltiplas Visões dos Dados- A SQL permite ao criador do banco de
dados levar diferentes visões dos dados a diferentes usuários;
*

Definição Dinâmica dos Dados- Por meio da SQL, podem-se alterar,
expandir ou incluir, dinamicamente, as estruturas dos dados
armazenados com a máxima flexibilidade.

O EXEMPLO

Todo o nosso percurso pela linguagem SQL será efetuado com base no
exemplo de modelo de dados apresentado na figura abaixo:

0:N

PEDIDO
PEDIDO

1:1

0:N

FAZ

1:1
CLIENTE
CLIENTE

TIRA

1:1
VENDEDOR
VENDEDOR

POSS
UI

1:N

ITEM DE
ITEM DE
PEDIDO
PEDIDO

1:N

TEM

1:1
PRODUTO
PRODUTO
TABELA CLIENTE
Cód. do cliente
720
870
110
222
830
130
410
20
157
180
260
290
390
234

Nome do cliente
Ana
Flávio
Jorge
Lúcia
Mauricio
Edmar
Rodolfo
Beth
Paulo
Lívio
Susana
Renato
Sebastião
José

Endereço
Rua 17 nº 19
Av. Pres. Vargas 10
Rua Caiapó 123
Rua Itabira 123 L.9
Av. Paulista 1236
Rua da Praia sn
Largo da Lapa 27 s
Av. Climério n.45
Tv. Moraes c/3
Av. Beira Mar n.1256
Rua Lopes Mendes 12
Rua Meireles n.123
Rua da Igreja n.10
Quadra 3bl.3 sl. 1003

TABELA VENDEDOR
Código do
Vendedor
209
111
11
240
720
213
101
310
250

Nome do
Vendedor
José
Carlos
João
Antônio
Felipe
Jonas
João
Josias
Maurício

Salário
Fixo
1.800
2.490
2.780
9.500
4.600
2.300
2.650
870
2.930

Faixa de
Comissão
C
A
C
C
A
A
C
B
B

TABELA PEDIDO
Número do
Pedido
121
97
101
137
148
189
104
203
98
143
105
111
103
91
138
108
119
127

Prazo de
Entrega

Código do
Cliente

Código do
Vendedor

20
20
15
20
20
15
30
30
20
30
15
20
20
20
20
15
30
10

410
720
720
720
720
870
110
830
410
20
180
260
260
260
260
290
390
410

209
101
101
720
101
213
101
250
209
111
240
240
11
11
11
310
250
11

Cidade
Niterói
São Paulo
Curitiba
B.Horizonte
São Paulo
Salvador
Rio de Janeiro
São Paulo
Londrina
Florianópolis
Niterói
São Paulo
Uberaba
Brasília

CEP
24358310
22763931
30078500
22124391
3012683
30079300
30078900
25679300
30077500
30046500
30225900
30438700
22841650

UF
RJ
SP
PR
MG
SP
BA
RJ
SP
PR
SC
RJ
SP
MG
DF

CGC
12113231/0001-34
22535126/9387-9
14512764/9834-9
28315213/9348-8
32816985/7465-6
23463284/234-9
12835128/2346-9
32485126/7326-8
32848223/324-4
12736571/2347-4
21763571/232-9
13276571/1231-4
32176547/213-3
21763576/1232-3

IE
2134
4631
2985
9343
7121
7431
9280
1923
2530
1820
9071
2931

TABELA ITEM DO PEDIDO
Número do
Pedido
121
121
97
101
101
101
98
148
148
148
148
148
104
203
189
143
143
105
111
111
103
91
138
138
138
108
119
119
119
119
137

Código do
produto
25
31
77
31
78
13
77
45
31
77
25
78
53
31
78
31
78
78
25
78
53
77
22
77
53
13
77
13
22
53
13

Quantidade
10
35
20
9
18
5
5
8
7
3
10
30
32
6
45
20
10
10
10
70
37
40
10
35
18
17
40
6
10
43
8
TABELA PRODUTO
Código do
produto
25
31
78
22
30
53
13
45
87
77

Unidade do
produto
Kg
BAR
L
M
SAC
M
G
M
M
M

Descrição do
produto
Queijo
Chocolate
Vinho
Linho
Açúcar
Linha
Ouro
Madeira
Cano
Papel

Valor
unitário
0,97
0,87
2,00
0,11
0,30
1,80
6,18
0,25
1,97
1,05

VISÃO GRÁFICA

CLIENTE
CLIENTE
Código do cliente 
Código do cliente 
Nome do cliente
Nome do cliente
Endereço
Endereço
Cidade
Cidade
CEP
CEP
UF
UF
CGC
CGC
IE
IE

PEDIDO
PEDIDO
Número do pedido 
Número do pedido 
Prazo de entrega
Prazo de entrega
Código do cliente 
Código do cliente 
Código do vendedor 
Código do vendedor 

VENDEDOR
VENDEDOR
Código do Vendedor 
Código do Vendedor 

Nome do vendedor
Nome do vendedor
Faixa de comissão
Faixa de comissão
Salário fixo
Salário fixo

 : Chave primária
 : Chave estrangeira

ITEM DO PEDIDO
ITEM DO PEDIDO
Número do pedido 
Número do pedido 
Código do produto 
Código do produto 
Quantidade
Quantidade
Valor Unitário
Valor Unitário

PRODUTO
PRODUTO
Código do produto
Código do produto
Descrição
Descrição
Unidade
Unidade
Val. Unit.
Val. Unit.
CRIAÇÃO E DISTRIBUIÇÃO DE TABELAS
O comando CREAT TABLE cria a tabela solicitada e obedece à
seguinte forma:
CREAT TABELA <tabela>
(<descrição das colunas>);
(<descrição das chaves>);
PRIMARY KEY (colunas);
FOREIGN KEY (colunas);
REFERENCES <tabela>.
<tabela> - É o nome da nova tabela a ser criada;
<descrição das colunas> - É uma lista de colunas (campos) e seus
respectivos tipos de dados (smallint, char, maney, varchar, integer,
decimal, float, real, date, time, timestamp, logical, number);
<descrição das chaves> - É a lista de colunas que são tratadas como
chave estrangeira.
Alguns campos podem receber o valor NULL (nulo) e o campo
definido como chave primária, além de não poder receber NULL, deve ser
um campo UNIQUE (sem repetições – chave primária).
Create Table Item do Pedido
(Número do pedido Number Not Null Unique;
Cód. do produto Number Not Null Unique;
Quantidade Number Not Null;
Valor unitário Number Not Null;
Primary Key (Número do pedido, Código do produto);
Foreign Key (Número do pedido);
References Pedido;
Foreign Key (Código do produto);
References Produto).
Create Table Cliente
(Cód. do cliente Number Not Null Unique;
Nome do cliente VarChar(20);
Endereço VarChar(50);
Cidade VarChar(20);
CEP VarChar(9);
UF VarChar(2);
CGC VarChar(12);
IE VarChar(20);
Primary Key (Cód. do cliente)).

Create Table Pedido
(Número do pedido Number Not Null Unique;
Prazo de entrega Date Not Null;
Cód. do cliente Number;
Cód. do vendedor Number Not Null;
Primary Key (Número do pedido);
Foreign Key (Cód. do cliente);
References Cliente;
Foreign Key (Cód. do vendedor);
References Vendedor ).

Create Table Vendedor
(Cód. do vendedor Number Not Null Unique;
Nome do vendedor VarChar(20) Not Null;
Faixa de comissão Number Not Null;
Salário Fixo Number Not Null;
Primary Key(Cód. do vendedor)).
Create Table Produto
(Cód. do produto Number Not Null Unique;
Descrição VarChar(50);
Unidade Varchar(3);
Valor Unitário Number Not Null;
Primary Key (Cód. do Produto)).

EXTRAINDO DADOS DE UMA TABELA
COMANDO SELECT:
O comando SELECT tem palavras-chaves em um comando básico:
a) SELECT - Especifica as colunas.
β

b) FROM - Especifica as tabelas.
c ) WHERE - Especifica as linhas.

SELECIONANDO COLUNAS ESPECÍFICAS DA TABELA:

 Forma:

Select <nome(s) da(s) coluna(s)>
From <tabela>

Problema: Listar todos os produtos com respectivas descrições,
unidades e valores unitários.
Problema: Listar o nome do cliente, com seu endereço e CGC.
Problema: Listar o nome e salário dos vendedores.
Problema: Listar o nome e o percentual de 20% de cada salário (criar
uma coluna virtual).
SELECIONANDO TODAS AS COLUNAS DA TABELA
Select *
From<tabela>

 Forma:

Problema: Listar todas as colunas de vendedor.
Problema: Listar todas as colunas de produto.

SELECIONANDO SOMENTE ALGUNS REGISTROS DA TABELA
 Forma:

Select <nome(s) da(s) coluna(s)>
From <tabela>
Where <nome da coluna> <operador> <valor>

OPERADORES RELACIONAIS








=
<>
<
>
>=
<=








Igual
Diferente
Menor do que
Maior do que
Maior ou igual do que
Menor ou igual do que

Observações:


Quando a coluna é do tipo caractere, o <valor> deve estar entre
aspas.
Ex.: 'PARAFUSO'.



Na linguagem SQL, existe a diferenciação entre maiúsculas e
minúsculas em alguns SGBDs, logo 'PARAFUSO' é diferente de
‘parafuso’.

Problema: Listar o código do produto e a quantidade dos itens do pedido
com a quantidade igual a 35.
Problema: Listar os clientes que moram em ‘São Paulo’.
Problema: Listar os vendedores com salário maior ou igual a R$ 2.300,00.
Problema: Listar o nome e a cidade dos clientes não residentes no Rio de
Janeiro (RJ).

OPERADOR DE CONCATENAÇÃO
Exemplo: Select (código_do_produto ||’ ‘||

descrição_do_produto) as Cód_Dês
From Produto.
OPERADORES LÓGICOS
 AND
 OR
 NOT

 “e”
 “ou”
 “negação”

Problema: Listar os produtos que tenham unidade igual a ‘M’ e valor
unitário maior que R$1,00.
Problema: Listar os empregados com salário no intervalo de R$ 2.300,00
à R$ 2.650,00, inclusive.
Problema: Listar os empregados com salário fora do intervalo de R$
2.300,00 à R$ 2.650,00, inclusive.
Problema: Liste os clientes e seus respectivos endereços; dos que moram
em ‘São Paulo’ ou estejam na faixa de CEP entre ‘30077000’ e ‘30079000’.
Problema: Mostrar todos os pedidos que não tenham prazo de entrega
igual a 15 dias.

Operadores Between e NOT Between
 Forma: Where <nome da coluna> Between <valor1> AND <valor2>
Where <nome da coluna> NOT Between <valor1> AND <valor2>

Problema: Listar o código e a descrição dos produtos que tenham o valor
unitário na faixa de R$0.32 até R$2.00.
Problema: Listar os vendedores com salário fixo no intervalo de 1.800,00
à 3.650,00.
Problema: Listar os vendedores com salário fixo fora do intervalo de
1.800,00 à 3.650,00.
OPERADORES LIKE E NOT LIKE

 Forma:

Where <nome da coluna> Like <valor>
Where <nome da coluna> NOT Like <valor>

Os operadores LIKE e NOT LIKE só trabalham sobre colunas que sejam
do tipo CHAR.
% - substitui uma palavra
_ - substitui um caractere
Problema: Listar os produtos que tenham a sua unidade começando por K.
Problema: Listar os vendedores que não começam por ‘Jo’
Problema: Listar as cidades cujo o nome inicia com a letra ‘B’.

OPERADORES IN E NOT IN
 Forma: Where <nome da coluna> IN <valores>
Where <nome da coluna> NOT IN <valores>
Esses operadores pesquisam registros que estão ou não contidos no
conjunto de <valores> fornecido.
Problema: Listar os vendedores que são da faixa de comissão A e B.
Problema: Listar os clientes que tem como cidade Niterói ou Curitiba.
Problema: Listar os produtos que não tem sua unidade começando com M.

OPERADORES IS NULL E IS NOT NULL
 Forma: Where <nome da coluna> IS NULL <valores>
Where <nome da coluna> IS NOT NULL <valores>
Problema: Mostrar os clientes que não tenham inscrição estadual.
Problema: Mostrar todos os vendedores que tenham faixa de comissão.
ORDENANDO OS DADOS SELECIONADOS
Quando se realiza uma seleção, os dados recuperados não estão
ordenados.
A SQL prevê a cláusula ORDER BY para realizar uma ordenação dos
dados selecionados.
 Forma: Select <nome da(s) coluna(s)>
From <tabela>
Where <condição(ões)>
Order By <nome da(s) coluna(s)>
ou
Order By <número da coluna>

DESC
ASC

Problema: Mostrar em ordem alfabética a lista de vendedores e seus
respectivos salários fixos.
Problema: Listar os nomes, cidades e estados de todos os clientes,
ordenados por estado e cidade de forma decrescente.
Problema: Mostrar a descrição e o valor unitário de todos os produtos que
tenham a unidade ‘KG’, em ordem de valor unitário ascendente.

REALIZANDO CÁLCULOS COM INFORMAÇÃO SELECIONADA
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.
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.

UTILIZANDO FUNÇÕES SOBRE CONJUNTO
Buscando Máximos e Mínimos (MAX, MIN):
 Forma:

Select MAX<nome da coluna>, MIN<nome da coluna>

Problema: Mostrar o menor e o maior salário dos vendedores.
TOTALIZANDO COLUNA(SUM)
 Forma:

Select SUM<nome da coluna>

Problema: Mostrar a quantidade total pedida para o produto ‘VINHO’ de
código “78”.

CALCULANDO MÉDIAS(AVG)
 Forma: Select AVG<nome da coluna>
Problema: Qual a média dos salários fixos dos vendedores?

CONTANDO OS REGISTROS(COUNT)
 Forma:

Select COUNT(*)

Problema: Quantos vendedores ganham acima de R$ 2.500,00 de salário
fixo?
Problema: Determinar o número de clientes e o número de estados
cadastrados.

UTILIZANDO A CLÁUSULA DISTINCT
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.
Problema: Quais os produtos, cadastrados na tabela Produto?
Problema: Determine quantas cidades diferentes existem na tabela
cliente.
AGRUPANDO INFORMAÇÕES SELECIONADAS (GROUP BY)
Utilizando a cláusula GROUP BY, é possível organizar a seleção de dados
em grupos determinados.
 Forma: Select <nome da(s) coluna(s)>
From <tabela>
Where condição(ões)
Group By <nome da(s) coluna(s)>
Order By <nome da(s) coluna(s)>
Problema: Listar o número de produtos que cada pedido contém.
Problema: Listar os clientes, sendo os mesmos agrupados por UF e
ordenados por nome do cliente.

AGRUPANDO DE FORMA CONDICIONAL (HAVING)
A cláusula HAVING realiza as restrições das linhas resultantes da
mesma forma que a cláusula WHERE o faz em um SELECT.
Podemos igualmente continuar com a cláusula WHERE selecionando as
condições da seleção.
 Forma: Select <nome da(s) coluna(s)>
From <tabela>
Group By <nome da(s) coluna(s)>
HAVING condição(ões)
Problema: Listar os pedidos que têm mais do que 3 produtos.
Problema: Listar o total do salário fixo a cada vendedor, cujo total é acima
de 2.000,00. Agrupados por faixa de comissão.

UTILIZANDO FUNÇÕES NÃO AGREGADAS
Cláusula EXTRACT:
Extrai dia, mês ou ano da data armazenada.
Problema: Listar os clientes que fazem aniversário no ano de 1978 e
estado igual RJ.
Cláusula UPPER:
RECUPERANDO DADOS DE VÁRIAS TABELAS (JOINS)

Até agora viemos trabalhando com a recuperação de dados sobre
uma única tabela, mas o conceito de banco de dados reúne, evidentemente,
várias tabelas diferentes.
Para que possamos recuperar informações de um banco de dados
temos, muitas vezes, a necessidade de acessar simultaneamente várias
tabelas. Algumas dessas consultas necessitam realizar uma junção (JOIN)
entre tabelas, para desta poder extrair as informações necessárias para a
consulta formulada.

O CONCEITO DE QUALIFICADORES DE NOME

O qualificador de nome consiste no nome da tabela seguido de um
ponto e o nome da coluna na tabela.
Exemplo: O qualificador de nome para a coluna “DESCRIÇÃO” da
tabela “PRODUTO” será:
PRODUTO.descrição
Os qualificadores de nome são utilizados em uma consulta para
efetivar a junção (JOIN) entre tabelas, uma vez que o relacionamento entre
tabelas é realizado por meio de chaves estrangeiras.

Problema: Juntar a tabela cliente com pedido.
Problema: Quais os clientes que fizeram os pedidos? Listar pelo nome de
cliente.
Obs.: A equação apresentada na cláusula where é chamada de EQUAÇÃO
DE JUNÇÃO.
Podemos utilizar as cláusulas LIKE, NOT LIKE, IN, NOT IN, NUL,
NOT NULL e misturá-las com os operadores AND, OR e NOT, dentro de uma
cláusula WHERE na junção entre tabelas.
Problema: Quais os clientes que têm prazo de entrega superior a 15 dias e
que pertencem aos estados de São Paulo (‘SP’) ou Rio de Janeiro (‘RJ’)?
Problema: Mostrar os clientes e seus respectivos prazos de entrega,
ordenados do maior para o menor.
Obs.: Para que não seja necessário escrever todo o nome da tabela nas
qualificações de nome, podemos utilizar ALIASES (sinônimos) definidos na
própria consulta. A definição dos ALIASES é feita na cláusula FROM e
utilizada normalmente nas outras cláusulas (Where, Order By, Group By,
Having, Select).

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.

JUNTANDO MAIS DE DUAS TABELAS
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: Mostre todos os vendedores que venderam chocolate em
quantidade superior a 10 Kg.
Problema: Quantos clientes fizeram pedidos com o vendedor João?
Problema: Quantos clientes da cidade do Rio de Janeiro e Niterói tiveram
seus pedidos tirados com o vendedor João?

UTILIZANDO CONSULTAS ENCADEADAS (SUBQUERIES)
O que é uma subquery? Em linhas gerais, é quando o resultado
de uma consulta é utilizada por outra consulta, de forma encadeada e
contida no mesmo comando SQL.
Problema: Que produtos participam em qualquer pedido cuja quantidade
seja 10?
Problema: Quais vendedores ganham um salário fixo abaixo da média?
Problema: Quais os produtos que não estão presentes em nenhum pedido?
INSERINDO, MODIFICANDO E APAGANDO REGISTROS
Adicionando Registro à Tabela:

 Forma:

Insert Into <nome da tabela>
(<nome da(s) coluna(s)>)
values (<valores>)

ATUALIZANDO UM REGISTRO
 Forma: Update <nome da tabela>
Set<nome da(s) coluna(s)> = valor
Where <condições>
Problema: Alterar o valor unitário do produto ‘parafuso’de R$ 1.25 para
R$ 1.62.
Problema: Atualizar o salário fixo de todos os vendedores em 27%, mais
uma bonificação de R$ 100,00.
Problema: Acrescentar 2,5% ao preço unitário dos produtos que estejam
abaixo da média dos preços, para aqueles comprados a quilo.

APAGANDO REGISTROS DA TABELA
 Forma: Delete From <nome da tabela>
Where <condição>
Problema: Apagar todos os vendedores com faixa de comissão nula.
Problema: Apagar todos os registros de pedidos realizados por vendedores
fantasmas (operação caça-fantasma).

UTILIZANDO VIEWS
As tabelas criadas em um banco de dados relacional têm existência
física dentro do sistema de computação. Muitas vezes é necessário criar
tabelas que não ocupem espaço físico, mas que possam ser utilizadas como
as tabelas normais. Essas são chamadas de VIEWS (tabelas virtuais).
Como as TABELAS REAIS, as VIEWS devem ser criadas.
 Forma:

Create View < nome da View>
(<nome da(s) coluna(s)>) as
Select <nome da(s) coluna(s)>
From<nome da tabela>
Where <condição>

As VIEWS são utilizadas para se ter uma particular visão de uma
tabela, para que não seja necessária a utilização do conjunto como um
todo.

Problema: Criar uma VIEW que contenha só os produtos pedidos a metro.
Problema: Cria uma VIEW contendo o código do vendedor, o seu nome e o
salário fixo médio no ano.

Contenu connexe

Similaire à Sql

Introdução à Banco de Dados
Introdução à Banco de DadosIntrodução à Banco de Dados
Introdução à Banco de DadosBruno Siqueira
 
Introdução a Banco de Dados (Parte 1)
Introdução a Banco de Dados (Parte 1)Introdução a Banco de Dados (Parte 1)
Introdução a Banco de Dados (Parte 1)Mario Sergio
 
Convivendo e migrando para microservices
Convivendo e migrando para microservicesConvivendo e migrando para microservices
Convivendo e migrando para microservicesDanilo Iurovski
 
Aula 2 - SGBDs e Modelos de Bancos de Dados.pptx
Aula 2 - SGBDs e Modelos de Bancos de Dados.pptxAula 2 - SGBDs e Modelos de Bancos de Dados.pptx
Aula 2 - SGBDs e Modelos de Bancos de Dados.pptxJoseph Donald
 
Aula 4 - Sistemas Gerenciadores de Banco de Dados
Aula 4 - Sistemas Gerenciadores de Banco de DadosAula 4 - Sistemas Gerenciadores de Banco de Dados
Aula 4 - Sistemas Gerenciadores de Banco de DadosVitor Hugo Melo Araújo
 
BIODATA: SOFTWARE WEB PARA GERENCIAMENTO DE COLETA DE DADOS BIOMÉDICOS
BIODATA: SOFTWARE WEB PARA GERENCIAMENTO DE COLETA DE DADOS BIOMÉDICOSBIODATA: SOFTWARE WEB PARA GERENCIAMENTO DE COLETA DE DADOS BIOMÉDICOS
BIODATA: SOFTWARE WEB PARA GERENCIAMENTO DE COLETA DE DADOS BIOMÉDICOSAdilmar Dantas
 
SLIDE 1 PARTE 01 - BANCO DE DADOS.pptx
SLIDE 1 PARTE 01 - BANCO DE DADOS.pptxSLIDE 1 PARTE 01 - BANCO DE DADOS.pptx
SLIDE 1 PARTE 01 - BANCO DE DADOS.pptxCesarDias26
 
Bancos de dados móveis
Bancos de dados móveisBancos de dados móveis
Bancos de dados móveisUFMA
 
Projeto de Banco de Dados - Capítulo 1
Projeto de Banco de Dados - Capítulo 1Projeto de Banco de Dados - Capítulo 1
Projeto de Banco de Dados - Capítulo 1Januário Neto
 
BANCO DE DADOS RELACIONAIS
BANCO DE DADOS RELACIONAIS BANCO DE DADOS RELACIONAIS
BANCO DE DADOS RELACIONAIS Antonio Pedro
 
Arquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dadosArquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dadosdiogocbj
 

Similaire à Sql (20)

Introdução à Banco de Dados
Introdução à Banco de DadosIntrodução à Banco de Dados
Introdução à Banco de Dados
 
Introdução a Banco de Dados (Parte 1)
Introdução a Banco de Dados (Parte 1)Introdução a Banco de Dados (Parte 1)
Introdução a Banco de Dados (Parte 1)
 
Aula 01
Aula 01Aula 01
Aula 01
 
Convivendo e migrando para microservices
Convivendo e migrando para microservicesConvivendo e migrando para microservices
Convivendo e migrando para microservices
 
BDI_1_conceitos
BDI_1_conceitosBDI_1_conceitos
BDI_1_conceitos
 
Aula 2 - SGBDs e Modelos de Bancos de Dados.pptx
Aula 2 - SGBDs e Modelos de Bancos de Dados.pptxAula 2 - SGBDs e Modelos de Bancos de Dados.pptx
Aula 2 - SGBDs e Modelos de Bancos de Dados.pptx
 
Aula 4 - Sistemas Gerenciadores de Banco de Dados
Aula 4 - Sistemas Gerenciadores de Banco de DadosAula 4 - Sistemas Gerenciadores de Banco de Dados
Aula 4 - Sistemas Gerenciadores de Banco de Dados
 
Banco de Dados - Aula 01
Banco de Dados - Aula 01Banco de Dados - Aula 01
Banco de Dados - Aula 01
 
BIODATA: SOFTWARE WEB PARA GERENCIAMENTO DE COLETA DE DADOS BIOMÉDICOS
BIODATA: SOFTWARE WEB PARA GERENCIAMENTO DE COLETA DE DADOS BIOMÉDICOSBIODATA: SOFTWARE WEB PARA GERENCIAMENTO DE COLETA DE DADOS BIOMÉDICOS
BIODATA: SOFTWARE WEB PARA GERENCIAMENTO DE COLETA DE DADOS BIOMÉDICOS
 
Bd rel
Bd relBd rel
Bd rel
 
BD I - Aula 07 A - Projetando BD
BD I - Aula 07 A - Projetando BDBD I - Aula 07 A - Projetando BD
BD I - Aula 07 A - Projetando BD
 
O que é um Banco de Dados?
O que é um Banco de Dados?O que é um Banco de Dados?
O que é um Banco de Dados?
 
SLIDE 1 PARTE 01 - BANCO DE DADOS.pptx
SLIDE 1 PARTE 01 - BANCO DE DADOS.pptxSLIDE 1 PARTE 01 - BANCO DE DADOS.pptx
SLIDE 1 PARTE 01 - BANCO DE DADOS.pptx
 
Sql01 final
Sql01 finalSql01 final
Sql01 final
 
Bancos de dados móveis
Bancos de dados móveisBancos de dados móveis
Bancos de dados móveis
 
Projeto de Banco de Dados - Capítulo 1
Projeto de Banco de Dados - Capítulo 1Projeto de Banco de Dados - Capítulo 1
Projeto de Banco de Dados - Capítulo 1
 
BANCO DE DADOS RELACIONAIS
BANCO DE DADOS RELACIONAIS BANCO DE DADOS RELACIONAIS
BANCO DE DADOS RELACIONAIS
 
Apostila modelagem de banco de dados
Apostila modelagem de banco de dadosApostila modelagem de banco de dados
Apostila modelagem de banco de dados
 
Dbmod
DbmodDbmod
Dbmod
 
Arquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dadosArquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dados
 

Sql

  • 1.
  • 2. BIBLIOGRAFIA DE BANCO DE DADOS Livros-texto (entre muitos outros): • Banco de Dados, Uma Visão Prática,Felipe Machado e Mauricio Abreu, Ed. Érica, 1999. • Modelagem Conceitual e Projeto de Banco de Dados, Paulo Cougo, Ed. Campus, 1997.
  • 3. INTRODUÇÃO CONCEITOS BÁSICOS • Conjunto de dados sobre o qual uma comunidade de usuários realiza operações de recuperação e atualização. • Um BD representa algum aspecto do mundo real, chamado “mini-mundo” ou “universo de discurso”. As mudanças no mini-mundo são refletidas no banco de dados. Mini-mundo Banco de Dados Aplicações CONCEITOS BÁSICOS • Um banco de dados computadorizado pode ser criado e mantido por um grupo de programas de aplicação escritos especificamente para aquela tarefa ou por um SISTEMA DE GERÊNCIA DE BANCOS DE DADOS (SGBD). • Um SGBD é uma coleção de programas de propósito geral que facilita o processo de definir, construir e manipular bancos de dados para várias aplicações. – Definir um banco de dados significa especificar os tipos de dados a serem armazenados juntamente com uma descrição detalhada de cada tipo. – Construir o banco de dados é o processo de armazenar os dados em algum meio de armazenamento controlado pelo SGBD. – Manipular um banco de dados compreende certas funções como consultar o banco de dados para recuperar dados específicos, atualizar o banco de dados para refletir mudanças percebidas no mini-mundo e produzir relatórios a partir dos dados. • O banco de dados e o SGBD juntos são chamados genericamente de SISTEMA DE BANCOS DE DADOS.
  • 4. SISTEMA DE BANCO DE DADOS Usuários / Programadores Sistema de BD Consultas / Programas de Aplicação SGBD Software para processar consultas / programas Software para acessar dados armazenados Definição do BD (Meta-dados) BD armazenado
  • 5. EXEMPLO DE BANCO DE DADOS Aluno Disciplina Nome José Antônio Número 17 8 Nome Delphi Estrutura de Dados Matemática Discreta Banco de Dados Pré-Requisito Histórico-Escolar Número INF1310 INF3320 MAT2410 INF3380 Nº Curso INF3380 INF3380 INF3320 Nº Aluno 17 17 8 8 8 8 Área INF INF Créditos 4 4 3 3 Dept INF INF MAT INF Nº Pré-Req INF3320 MAT2410 INF1310 Nº Curso MAT2410 INF1310 MAT2410 INF1310 INF3320 INF3380 SISTEMA DE INFORMAÇÃO • Sistema de informação: – Dados; – SGBD; – O hardware e o sistema operacional; – As pessoas que usam e administram os dados; – Os programas de aplicação que acessam e atualizam os dados; – Os programadores que desenvolvem essas aplicações. Grau B C A A B A
  • 6. LINGUAGEM SQL  O nome "SQL" significa "Structured Query Language" - Linguagem Estruturada de Pesquisa.  Essa linguagem, de grande utilização, teve seus fundamentos no modelo relacional de Codd (l970). Sua primeira versão recebeu o nome de SEQUEL ("Structured English Query Language"), sendo definida por D. D. CHAMBERLIN, entre outros, em 1974, nos laboratórios de pesquisa da IBM (Califórnia).  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.  A SQL se tornou um padrão de fato, no mundo dos ambientes de banco de dados relacionais.  Em 1982, o American National Standard Institute (ANSI) tornou a SQL padrão oficial de linguagem em ambiente relacional.  Infelizmente, como todo padrão que se preze, existem hoje vários dialetos SQL, cada um, evidentemente, tentando ser mais padronizado que o outro.  A linguagem SQL foi desenvolvida especialmente para o ambiente relacional, podendo ser adaptada a qualquer ambiente não relacional. A LINGUAGEM SQL * Linguagem interativa de consulta (query AdHoc); * Linguagem de programação para acesso a banco de dados; * Linguagem de administração de banco de dados; * Linguagem cliente/servidor; * Linguagem para banco de dados distribuído; * Caminho de acesso a outros bancos de dados em diferentes máquinas.
  • 7. FUNÇÕES DE UM SGBD * Definição de Dados (DDL)- permite ao usuário a definição da estrutura e organização dos dados armazenados, e as relações que existem entre eles; * Manipulação de Dados (DML)- permite ao usuário ou a um programa de aplicação, a inclusão, remoção, seleção ou atualização de dados previamente armazenados no banco; * Controle de Acesso- protege os dados de manipulações não autorizadas; * Compartilhamento de Dados- coordena o compartilhamento dos dados por usuários concorrentes, sem contudo interferir na ação de cada um deles; * Integridade dos Dados- auxilia no processo de definição da integridade dos dados, protegendo contra corrupções, inconsistências e falhas do sistema de computação. VANTAGENS DA LINGUAGEM SQL * Independência de Fabricante- A SQL é oferecida em praticamente todos os SGBD'S, e os que ainda não têm estão se encaminhando para lá. Com isso posso mudar de SGBD sem me preocupar com o novo que vai chegar; * Portabilidade Entre Computadores- A SQL pode ser utilizada desde um computador pessoal, passando por uma estação de trabalho, até um computador de grande porte; * Redução dos Custos com Treinamento - Baseado no item anterior, as aplicações podem se movimentar de um ambiente para o outro sem que seja necessária uma reciclagem da equipe de desenvolvimento; * Inglês Estruturado de Alto Nível- A SQL é formada por um conjunto bem simples de sentenças em inglês, oferecendo um rápido e fácil entendimento; * Consulta Interativa- A SQL provê um acesso rápido aos dados, fornecendo respostas ao usuário, a questões complexas, em minutos ou segundos; * Múltiplas Visões dos Dados- A SQL permite ao criador do banco de dados levar diferentes visões dos dados a diferentes usuários;
  • 8. * Definição Dinâmica dos Dados- Por meio da SQL, podem-se alterar, expandir ou incluir, dinamicamente, as estruturas dos dados armazenados com a máxima flexibilidade. O EXEMPLO Todo o nosso percurso pela linguagem SQL será efetuado com base no exemplo de modelo de dados apresentado na figura abaixo: 0:N PEDIDO PEDIDO 1:1 0:N FAZ 1:1 CLIENTE CLIENTE TIRA 1:1 VENDEDOR VENDEDOR POSS UI 1:N ITEM DE ITEM DE PEDIDO PEDIDO 1:N TEM 1:1 PRODUTO PRODUTO
  • 9. TABELA CLIENTE Cód. do cliente 720 870 110 222 830 130 410 20 157 180 260 290 390 234 Nome do cliente Ana Flávio Jorge Lúcia Mauricio Edmar Rodolfo Beth Paulo Lívio Susana Renato Sebastião José Endereço Rua 17 nº 19 Av. Pres. Vargas 10 Rua Caiapó 123 Rua Itabira 123 L.9 Av. Paulista 1236 Rua da Praia sn Largo da Lapa 27 s Av. Climério n.45 Tv. Moraes c/3 Av. Beira Mar n.1256 Rua Lopes Mendes 12 Rua Meireles n.123 Rua da Igreja n.10 Quadra 3bl.3 sl. 1003 TABELA VENDEDOR Código do Vendedor 209 111 11 240 720 213 101 310 250 Nome do Vendedor José Carlos João Antônio Felipe Jonas João Josias Maurício Salário Fixo 1.800 2.490 2.780 9.500 4.600 2.300 2.650 870 2.930 Faixa de Comissão C A C C A A C B B TABELA PEDIDO Número do Pedido 121 97 101 137 148 189 104 203 98 143 105 111 103 91 138 108 119 127 Prazo de Entrega Código do Cliente Código do Vendedor 20 20 15 20 20 15 30 30 20 30 15 20 20 20 20 15 30 10 410 720 720 720 720 870 110 830 410 20 180 260 260 260 260 290 390 410 209 101 101 720 101 213 101 250 209 111 240 240 11 11 11 310 250 11 Cidade Niterói São Paulo Curitiba B.Horizonte São Paulo Salvador Rio de Janeiro São Paulo Londrina Florianópolis Niterói São Paulo Uberaba Brasília CEP 24358310 22763931 30078500 22124391 3012683 30079300 30078900 25679300 30077500 30046500 30225900 30438700 22841650 UF RJ SP PR MG SP BA RJ SP PR SC RJ SP MG DF CGC 12113231/0001-34 22535126/9387-9 14512764/9834-9 28315213/9348-8 32816985/7465-6 23463284/234-9 12835128/2346-9 32485126/7326-8 32848223/324-4 12736571/2347-4 21763571/232-9 13276571/1231-4 32176547/213-3 21763576/1232-3 IE 2134 4631 2985 9343 7121 7431 9280 1923 2530 1820 9071 2931 TABELA ITEM DO PEDIDO Número do Pedido 121 121 97 101 101 101 98 148 148 148 148 148 104 203 189 143 143 105 111 111 103 91 138 138 138 108 119 119 119 119 137 Código do produto 25 31 77 31 78 13 77 45 31 77 25 78 53 31 78 31 78 78 25 78 53 77 22 77 53 13 77 13 22 53 13 Quantidade 10 35 20 9 18 5 5 8 7 3 10 30 32 6 45 20 10 10 10 70 37 40 10 35 18 17 40 6 10 43 8
  • 10. TABELA PRODUTO Código do produto 25 31 78 22 30 53 13 45 87 77 Unidade do produto Kg BAR L M SAC M G M M M Descrição do produto Queijo Chocolate Vinho Linho Açúcar Linha Ouro Madeira Cano Papel Valor unitário 0,97 0,87 2,00 0,11 0,30 1,80 6,18 0,25 1,97 1,05 VISÃO GRÁFICA CLIENTE CLIENTE Código do cliente  Código do cliente  Nome do cliente Nome do cliente Endereço Endereço Cidade Cidade CEP CEP UF UF CGC CGC IE IE PEDIDO PEDIDO Número do pedido  Número do pedido  Prazo de entrega Prazo de entrega Código do cliente  Código do cliente  Código do vendedor  Código do vendedor  VENDEDOR VENDEDOR Código do Vendedor  Código do Vendedor  Nome do vendedor Nome do vendedor Faixa de comissão Faixa de comissão Salário fixo Salário fixo  : Chave primária  : Chave estrangeira ITEM DO PEDIDO ITEM DO PEDIDO Número do pedido  Número do pedido  Código do produto  Código do produto  Quantidade Quantidade Valor Unitário Valor Unitário PRODUTO PRODUTO Código do produto Código do produto Descrição Descrição Unidade Unidade Val. Unit. Val. Unit.
  • 11. CRIAÇÃO E DISTRIBUIÇÃO DE TABELAS O comando CREAT TABLE cria a tabela solicitada e obedece à seguinte forma: CREAT TABELA <tabela> (<descrição das colunas>); (<descrição das chaves>); PRIMARY KEY (colunas); FOREIGN KEY (colunas); REFERENCES <tabela>. <tabela> - É o nome da nova tabela a ser criada; <descrição das colunas> - É uma lista de colunas (campos) e seus respectivos tipos de dados (smallint, char, maney, varchar, integer, decimal, float, real, date, time, timestamp, logical, number); <descrição das chaves> - É a lista de colunas que são tratadas como chave estrangeira. Alguns campos podem receber o valor NULL (nulo) e o campo definido como chave primária, além de não poder receber NULL, deve ser um campo UNIQUE (sem repetições – chave primária). Create Table Item do Pedido (Número do pedido Number Not Null Unique; Cód. do produto Number Not Null Unique; Quantidade Number Not Null; Valor unitário Number Not Null; Primary Key (Número do pedido, Código do produto); Foreign Key (Número do pedido); References Pedido; Foreign Key (Código do produto); References Produto).
  • 12. Create Table Cliente (Cód. do cliente Number Not Null Unique; Nome do cliente VarChar(20); Endereço VarChar(50); Cidade VarChar(20); CEP VarChar(9); UF VarChar(2); CGC VarChar(12); IE VarChar(20); Primary Key (Cód. do cliente)). Create Table Pedido (Número do pedido Number Not Null Unique; Prazo de entrega Date Not Null; Cód. do cliente Number; Cód. do vendedor Number Not Null; Primary Key (Número do pedido); Foreign Key (Cód. do cliente); References Cliente; Foreign Key (Cód. do vendedor); References Vendedor ). Create Table Vendedor (Cód. do vendedor Number Not Null Unique; Nome do vendedor VarChar(20) Not Null; Faixa de comissão Number Not Null; Salário Fixo Number Not Null; Primary Key(Cód. do vendedor)).
  • 13. Create Table Produto (Cód. do produto Number Not Null Unique; Descrição VarChar(50); Unidade Varchar(3); Valor Unitário Number Not Null; Primary Key (Cód. do Produto)). EXTRAINDO DADOS DE UMA TABELA COMANDO SELECT: O comando SELECT tem palavras-chaves em um comando básico: a) SELECT - Especifica as colunas. β b) FROM - Especifica as tabelas. c ) WHERE - Especifica as linhas. SELECIONANDO COLUNAS ESPECÍFICAS DA TABELA:  Forma: Select <nome(s) da(s) coluna(s)> From <tabela> Problema: Listar todos os produtos com respectivas descrições, unidades e valores unitários. Problema: Listar o nome do cliente, com seu endereço e CGC. Problema: Listar o nome e salário dos vendedores. Problema: Listar o nome e o percentual de 20% de cada salário (criar uma coluna virtual).
  • 14. SELECIONANDO TODAS AS COLUNAS DA TABELA Select * From<tabela>  Forma: Problema: Listar todas as colunas de vendedor. Problema: Listar todas as colunas de produto. SELECIONANDO SOMENTE ALGUNS REGISTROS DA TABELA  Forma: Select <nome(s) da(s) coluna(s)> From <tabela> Where <nome da coluna> <operador> <valor> OPERADORES RELACIONAIS       = <> < > >= <=       Igual Diferente Menor do que Maior do que Maior ou igual do que Menor ou igual do que Observações:  Quando a coluna é do tipo caractere, o <valor> deve estar entre aspas. Ex.: 'PARAFUSO'.  Na linguagem SQL, existe a diferenciação entre maiúsculas e minúsculas em alguns SGBDs, logo 'PARAFUSO' é diferente de ‘parafuso’. Problema: Listar o código do produto e a quantidade dos itens do pedido com a quantidade igual a 35. Problema: Listar os clientes que moram em ‘São Paulo’. Problema: Listar os vendedores com salário maior ou igual a R$ 2.300,00.
  • 15. Problema: Listar o nome e a cidade dos clientes não residentes no Rio de Janeiro (RJ). OPERADOR DE CONCATENAÇÃO Exemplo: Select (código_do_produto ||’ ‘|| descrição_do_produto) as Cód_Dês From Produto. OPERADORES LÓGICOS  AND  OR  NOT  “e”  “ou”  “negação” Problema: Listar os produtos que tenham unidade igual a ‘M’ e valor unitário maior que R$1,00. Problema: Listar os empregados com salário no intervalo de R$ 2.300,00 à R$ 2.650,00, inclusive. Problema: Listar os empregados com salário fora do intervalo de R$ 2.300,00 à R$ 2.650,00, inclusive. Problema: Liste os clientes e seus respectivos endereços; dos que moram em ‘São Paulo’ ou estejam na faixa de CEP entre ‘30077000’ e ‘30079000’. Problema: Mostrar todos os pedidos que não tenham prazo de entrega igual a 15 dias. Operadores Between e NOT Between  Forma: Where <nome da coluna> Between <valor1> AND <valor2> Where <nome da coluna> NOT Between <valor1> AND <valor2> Problema: Listar o código e a descrição dos produtos que tenham o valor unitário na faixa de R$0.32 até R$2.00. Problema: Listar os vendedores com salário fixo no intervalo de 1.800,00 à 3.650,00. Problema: Listar os vendedores com salário fixo fora do intervalo de 1.800,00 à 3.650,00.
  • 16. OPERADORES LIKE E NOT LIKE  Forma: Where <nome da coluna> Like <valor> Where <nome da coluna> NOT Like <valor> Os operadores LIKE e NOT LIKE só trabalham sobre colunas que sejam do tipo CHAR. % - substitui uma palavra _ - substitui um caractere Problema: Listar os produtos que tenham a sua unidade começando por K. Problema: Listar os vendedores que não começam por ‘Jo’ Problema: Listar as cidades cujo o nome inicia com a letra ‘B’. OPERADORES IN E NOT IN  Forma: Where <nome da coluna> IN <valores> Where <nome da coluna> NOT IN <valores> Esses operadores pesquisam registros que estão ou não contidos no conjunto de <valores> fornecido. Problema: Listar os vendedores que são da faixa de comissão A e B. Problema: Listar os clientes que tem como cidade Niterói ou Curitiba. Problema: Listar os produtos que não tem sua unidade começando com M. OPERADORES IS NULL E IS NOT NULL  Forma: Where <nome da coluna> IS NULL <valores> Where <nome da coluna> IS NOT NULL <valores> Problema: Mostrar os clientes que não tenham inscrição estadual. Problema: Mostrar todos os vendedores que tenham faixa de comissão.
  • 17. ORDENANDO OS DADOS SELECIONADOS Quando se realiza uma seleção, os dados recuperados não estão ordenados. A SQL prevê a cláusula ORDER BY para realizar uma ordenação dos dados selecionados.  Forma: Select <nome da(s) coluna(s)> From <tabela> Where <condição(ões)> Order By <nome da(s) coluna(s)> ou Order By <número da coluna> DESC ASC Problema: Mostrar em ordem alfabética a lista de vendedores e seus respectivos salários fixos. Problema: Listar os nomes, cidades e estados de todos os clientes, ordenados por estado e cidade de forma decrescente. Problema: Mostrar a descrição e o valor unitário de todos os produtos que tenham a unidade ‘KG’, em ordem de valor unitário ascendente. REALIZANDO CÁLCULOS COM INFORMAÇÃO SELECIONADA 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. 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. UTILIZANDO FUNÇÕES SOBRE CONJUNTO Buscando Máximos e Mínimos (MAX, MIN):  Forma: Select MAX<nome da coluna>, MIN<nome da coluna> Problema: Mostrar o menor e o maior salário dos vendedores.
  • 18. TOTALIZANDO COLUNA(SUM)  Forma: Select SUM<nome da coluna> Problema: Mostrar a quantidade total pedida para o produto ‘VINHO’ de código “78”. CALCULANDO MÉDIAS(AVG)  Forma: Select AVG<nome da coluna> Problema: Qual a média dos salários fixos dos vendedores? CONTANDO OS REGISTROS(COUNT)  Forma: Select COUNT(*) Problema: Quantos vendedores ganham acima de R$ 2.500,00 de salário fixo? Problema: Determinar o número de clientes e o número de estados cadastrados. UTILIZANDO A CLÁUSULA DISTINCT 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. Problema: Quais os produtos, cadastrados na tabela Produto? Problema: Determine quantas cidades diferentes existem na tabela cliente.
  • 19. AGRUPANDO INFORMAÇÕES SELECIONADAS (GROUP BY) Utilizando a cláusula GROUP BY, é possível organizar a seleção de dados em grupos determinados.  Forma: Select <nome da(s) coluna(s)> From <tabela> Where condição(ões) Group By <nome da(s) coluna(s)> Order By <nome da(s) coluna(s)> Problema: Listar o número de produtos que cada pedido contém. Problema: Listar os clientes, sendo os mesmos agrupados por UF e ordenados por nome do cliente. AGRUPANDO DE FORMA CONDICIONAL (HAVING) A cláusula HAVING realiza as restrições das linhas resultantes da mesma forma que a cláusula WHERE o faz em um SELECT. Podemos igualmente continuar com a cláusula WHERE selecionando as condições da seleção.  Forma: Select <nome da(s) coluna(s)> From <tabela> Group By <nome da(s) coluna(s)> HAVING condição(ões) Problema: Listar os pedidos que têm mais do que 3 produtos. Problema: Listar o total do salário fixo a cada vendedor, cujo total é acima de 2.000,00. Agrupados por faixa de comissão. UTILIZANDO FUNÇÕES NÃO AGREGADAS Cláusula EXTRACT: Extrai dia, mês ou ano da data armazenada. Problema: Listar os clientes que fazem aniversário no ano de 1978 e estado igual RJ. Cláusula UPPER:
  • 20. RECUPERANDO DADOS DE VÁRIAS TABELAS (JOINS) Até agora viemos trabalhando com a recuperação de dados sobre uma única tabela, mas o conceito de banco de dados reúne, evidentemente, várias tabelas diferentes. Para que possamos recuperar informações de um banco de dados temos, muitas vezes, a necessidade de acessar simultaneamente várias tabelas. Algumas dessas consultas necessitam realizar uma junção (JOIN) entre tabelas, para desta poder extrair as informações necessárias para a consulta formulada. O CONCEITO DE QUALIFICADORES DE NOME O qualificador de nome consiste no nome da tabela seguido de um ponto e o nome da coluna na tabela. Exemplo: O qualificador de nome para a coluna “DESCRIÇÃO” da tabela “PRODUTO” será: PRODUTO.descrição Os qualificadores de nome são utilizados em uma consulta para efetivar a junção (JOIN) entre tabelas, uma vez que o relacionamento entre tabelas é realizado por meio de chaves estrangeiras. Problema: Juntar a tabela cliente com pedido. Problema: Quais os clientes que fizeram os pedidos? Listar pelo nome de cliente. Obs.: A equação apresentada na cláusula where é chamada de EQUAÇÃO DE JUNÇÃO. Podemos utilizar as cláusulas LIKE, NOT LIKE, IN, NOT IN, NUL, NOT NULL e misturá-las com os operadores AND, OR e NOT, dentro de uma cláusula WHERE na junção entre tabelas. Problema: Quais os clientes que têm prazo de entrega superior a 15 dias e que pertencem aos estados de São Paulo (‘SP’) ou Rio de Janeiro (‘RJ’)?
  • 21. Problema: Mostrar os clientes e seus respectivos prazos de entrega, ordenados do maior para o menor. Obs.: Para que não seja necessário escrever todo o nome da tabela nas qualificações de nome, podemos utilizar ALIASES (sinônimos) definidos na própria consulta. A definição dos ALIASES é feita na cláusula FROM e utilizada normalmente nas outras cláusulas (Where, Order By, Group By, Having, Select). 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. JUNTANDO MAIS DE DUAS TABELAS 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: Mostre todos os vendedores que venderam chocolate em quantidade superior a 10 Kg. Problema: Quantos clientes fizeram pedidos com o vendedor João? Problema: Quantos clientes da cidade do Rio de Janeiro e Niterói tiveram seus pedidos tirados com o vendedor João? UTILIZANDO CONSULTAS ENCADEADAS (SUBQUERIES) O que é uma subquery? Em linhas gerais, é quando o resultado de uma consulta é utilizada por outra consulta, de forma encadeada e contida no mesmo comando SQL. Problema: Que produtos participam em qualquer pedido cuja quantidade seja 10? Problema: Quais vendedores ganham um salário fixo abaixo da média? Problema: Quais os produtos que não estão presentes em nenhum pedido?
  • 22. INSERINDO, MODIFICANDO E APAGANDO REGISTROS Adicionando Registro à Tabela:  Forma: Insert Into <nome da tabela> (<nome da(s) coluna(s)>) values (<valores>) ATUALIZANDO UM REGISTRO  Forma: Update <nome da tabela> Set<nome da(s) coluna(s)> = valor Where <condições> Problema: Alterar o valor unitário do produto ‘parafuso’de R$ 1.25 para R$ 1.62. Problema: Atualizar o salário fixo de todos os vendedores em 27%, mais uma bonificação de R$ 100,00. Problema: Acrescentar 2,5% ao preço unitário dos produtos que estejam abaixo da média dos preços, para aqueles comprados a quilo. APAGANDO REGISTROS DA TABELA  Forma: Delete From <nome da tabela> Where <condição> Problema: Apagar todos os vendedores com faixa de comissão nula. Problema: Apagar todos os registros de pedidos realizados por vendedores fantasmas (operação caça-fantasma). UTILIZANDO VIEWS As tabelas criadas em um banco de dados relacional têm existência física dentro do sistema de computação. Muitas vezes é necessário criar tabelas que não ocupem espaço físico, mas que possam ser utilizadas como as tabelas normais. Essas são chamadas de VIEWS (tabelas virtuais). Como as TABELAS REAIS, as VIEWS devem ser criadas.
  • 23.  Forma: Create View < nome da View> (<nome da(s) coluna(s)>) as Select <nome da(s) coluna(s)> From<nome da tabela> Where <condição> As VIEWS são utilizadas para se ter uma particular visão de uma tabela, para que não seja necessária a utilização do conjunto como um todo. Problema: Criar uma VIEW que contenha só os produtos pedidos a metro. Problema: Cria uma VIEW contendo o código do vendedor, o seu nome e o salário fixo médio no ano.