Autor: Jeferson Marques Cunha
1
Autor: Jeferson Marques Cunha
APRENDA A LINGUAGEM SQL COM ORACLE
Aconselho você caro amigo leitor à fazer todos os comandos que virão abaixo sempre digitando e não
utilizar o copiar e colar.
O fato de digitar fixa os comandos em sua mente e facilita o seu aprendizado.
Clique no link abaixo para fazer o download do Oracle Express Edition.
Para fazer o download você precisará se cadastrar no site da oracle.
http://www.oracle.com/technetwork/products/express-edition/downloads/index.html
Nessa mesma tela você também pode baixar o Oracle SQL Developer ou baixar um trial do PLSQL Developer 10 que é
a ferramenta que eu utilizo, é muito profissional e com muitos recursos, acesse nesse endereço =>
http://www.allroundautomations.com/plsqldev.html?gclid=COeGyPqy0LkCFZF7QgodQhEAZA
Instalar o Oracle XE para que possamos começar a brincar com a criação do nosso banco de dados e com a utilização
de comandos SQL.
Vou mostrar passo-a-passo a instalação do Oracle XE, essa instalação é muito simples e não tem
segredo, mesmo porque é um ambiente de treinamento nosso.
2
Autor: Jeferson Marques Cunha
3
Autor: Jeferson Marques Cunha
Digitar a senha do usuário sys e system, será utilizado posteriormente para acessar o banco.
4
Autor: Jeferson Marques Cunha
5
Autor: Jeferson Marques Cunha
No caminho abaixo temos o arquivo que contém as strings de conexão com o nosso banco de dados, o
arquivo tnsnames.ora, edite esse arquivo e verifique que já teremos uma string chamada XE configurada e
pronta para ser utilizada.
6
Autor: Jeferson Marques Cunha
Vamos partir para a instalação do PLSQL Developer versão trial.
7
Autor: Jeferson Marques Cunha
Na tela abaixo, se o caminho da instalação aparecer C:\Program Files (x86) ou Arquivos de Programas
(x86), substitua eliminando o (x86), conforme tela abaixo.
8
Autor: Jeferson Marques Cunha
Pronto, agora que já está instalado o PLSQL Developer, vamos começar a colocar a mão na massa.
Na sua área de trabalho foi criado um ícone do PLSQL Developer.
Dê dois cliques e vamos acessar o banco de dados.
Você vai acessar da seguinte maneira, usuário sys, a senha que você digitou na instalação, Database=XE
e alterar o Connect as para SYSDBA, conforme tela abaixo.
9
Autor: Jeferson Marques Cunha
Clique na pasta branca no canto esquerdo superior e depois clique em SQL Window.
Após fazer isso vamos começar a executar os nossos primeiros comandos SQL.
Lembrando que após cada comando teclar F8 para rodar.
Vamos começar criando um usuário específico para o treinamento.
CREATE USER TREINAMENTO IDENTIFIED BY TREINO DEFAULT TABLESPACE USERS TEMPORARY
TABLESPACE TEMP;
Depois desbloquear o usuário com o comando abaixo:
ALTER USER TREINAMENTO ACCOUNT UNLOCK;
Dar permissão para o usuário logar e vamos dar permissão de DBA porque precisaremos fazer vários
procedimentos como dropar tabelas, criar tabelas, fazer updates. A permissão poderia ser específica para
cada um desses itens que citei acima, mas vamos colocar DBA para termos permissão de fazer tudo.
GRANT CONNECT,DBA TO TREINAMENTO;
10
Autor: Jeferson Marques Cunha
Após digitar o commando aperte F8 para executar o comando. Pronto, o usuário foi criado e agora você já
pode logar com ele.
CRIAR TABELA COM O COMANDO CREATE TABLE
Vamos criar nossa primeira tabela no banco de dados com o comando abaixo.
Será uma tabela onde iremos cadastrar as cidades e seus respectivos códigos.
CREATE TABLE CIDADES (ID_CIDADE NUMBER(4) PRIMARY KEY NOT NULL,
DESC_CIDADE VARCHAR2(100));
Aperte F8.
Pronto sua tabela está criada.
Vou exemplificar a tipagem dos campos:
Observe que o campo ID_CIDADE foi criado como primary key not null, o que isto significa?
R: Ele está querendo dizer que será um campo chave e que não poderá ser nulo. O campo chave significa
que não poderemos ter dois códigos iguais.
Ex: Não poderemos ter duas cidades cadastradas com o código 1 por exemplo.
Mais à frente no insert, vocês verão que não é possível.
Observe que na frente do ID_CIDADE tem um tipo NUMBER(4), o que isto significa?
R: Ele está querendo dizer que o campo onde vai estar o código da cidade pode ter até 4 dígitos
numéricos ou seja, você poderá cadastrar 9999 cidades.
11
Autor: Jeferson Marques Cunha
Observe que na frente do DESC_CIDADE tem um tipo VARCHAR2(100), o que significa?
R: Ele está querendo dizer que o campo onde vai estar a descrição da cidade ou seja o nome da cidade,
pode conter até 100 caracteres alfanuméricos.
O tipo Date, que não foi mostrado aí, que é a data, é colocado somente DATE na frente do campo.
CONSULTAR UM REGISTRO COM O COMANDO SELECT
Depois de criada a tabela, você já pode fazer sua consulta para verificar se está tudo ok.
Vamos então aprender a consultar os dados de uma tabela.
SELECT * FROM CIDADES;
Aperte F8.
Após executar esse comando aparecerá uma tela como esta abaixo.
O * no select acima significa que estou querendo trazer todos os campos da tabela CIDADES.
Existe uma maneira de trazermos somente alguns campos, como mostro no select abaixo.
SELECT DESC_CIDADE FROM CIDADES;
12
Autor: Jeferson Marques Cunha
Basta colocar o nome do campo que você quer trazer antes da cláusula FROM, dessa forma se você
quiser ver somente o nome das cidades, sem o código.
Veja tela abaixo:
Observe que não existe nenhuma cidade cadastrada, precisamos agora aprender a inserir as cidades aí
dentro dessa tabela, esse será o nosso próximo passo.
INSERIR REGISTROS DENTRO DA TABELA COM COMANDO INSERT.
INSERT INTO CIDADES (ID_CIDADE,DESC_CIDADE) VALUES(1,'BARRETOS');
COMMIT;
Sempre rodar um comando de cada vez, marque a linha do insert e aperte F8 e depois marque o commit e
aperte F8.
O comando commit serve para gravar a informação no banco, se não der um commit a informação não
será gravada, o banco automaticamente fará um rollback ou seja, voltará ao estado original.
Vamos agora consultar os dados inseridos na tabela cidades.
SELECT * FROM CIDADES;
Agora a cidade de Barretos já foi inserida no nosso banco de dados dentro da tabela cidades.
13
Autor: Jeferson Marques Cunha
Nesse momento você já conseguiu inserir seu primeiro registro no banco de dados, Parabéns!!!
Observe a tela abaixo como deverá aparecer agora:
EXERCÍCIOS:
1 – Crie uma tabela chamada Clientes e insira nessa tabela os seguintes campos:
• CLIENTE_ID com tipo number(5), lembrando que esse deve ser uma chave primária e não pode
ser nulo.
• NOME do tipo varchar2(100);
• RAZAO_SOCIAL do tipo varchar2(100);
• CPF do tipo number(11);
• CNPJ do tipo number(14);
• DT_CADASTRO do tipo Date;
2 – Insira um registro dentro dessa tabela, segue os dados à inserir.
CLIENTE_ID =1
NOME = SEU NOME
RAZAO_SOCIAL= SEU NOME E SOBRENOME
CPF = 12345678900
CNPJ = 12345678000100
DT_CADASTRO = DATA DO DIA
Obs: A data deve ser inserida nesse formato e entre aspas simples: ‘DD/MM/YYYY’;
DD = DIA
MM=MÊS
YYYY=ANO
14
Autor: Jeferson Marques Cunha
3 – Agora consulte todos os dados inseridos fazendo um select.
APAGANDO UM REGISTRO COM O COMANDO DELETE
Vocês se recordam que existe um registro gravado na tabela CIDADES com o código 1 e o nome da
cidade BARRETOS, correto?
Antes de deletarmos, vamos inserir mais uma cidade em nossa tabela para exemplificarmos melhor.
INSERT INTO CIDADES (ID_CIDADE,DESC_CIDADE) VALUES(2,'GOIANIA');
COMMIT;
Agora vamos rodar uma consulta para nos certificarmos que existem realmente 2 cidades cadastradas.
SELECT * FROM CIDADES;
Vamos agora apagar somente a cidade que contém o código = 1, veja o comando:
DELETE FROM CIDADES WHERE ID_CIDADE = 1;
COMMIT;
Faça um select para conferir como ficou a tabela cidades depois do comando delete.
SELECT * FROM CIDADES;
Explicação: Aqui nesse comando delete, nós colocamos a cláusula WHERE que significa “ONDE”
para selecionar somente o ID_CIDADE = 1 para ser apagado.
15
Autor: Jeferson Marques Cunha
ALTERANDO REGISTROS COM O COMANDO UPDATE
Como sabemos nossa tabela de cidades ficou somente com a cidade de Goiânia que é o código 2.
Vamos agora alterar esse registro e colocar essa cidade com o nome de Barretos e ainda alterar o código
dela para 1.
UPDATE CIDADES
SET ID_CIDADE = 1,
DESC_CIDADE = 'BARRETOS'
WHERE ID_CIDADE = 2
AND DESC_CIDADE = 'GOIANIA'
Obs: Como o campo ID_CIDADE é uma chave, ele nunca será repetido, portanto eu poderia ter feito
o update somente com o ID_CIDADE. Não teria como existir uma outra cidade com o código 2 com
outro nome.
UPDATE CIDADES
SET ID_CIDADE = 1,
DESC_CIDADE = 'BARRETOS'
WHERE ID_CIDADE = 2
Explicação: Estamos fazendo um update que significa “ALTERAR”, o comando set é para
“SETARMOS” os novos valores que vamos querer e a cláusula where novamente selecionando a
cidade com o código 2 e a cláusula AND que significa “E” juntamente com a descrição da cidade
que é “GOIANIA”.
Isso faz com que ele selecione o código = 2 e a cidade de Goiânia e mude esse registro para
código=1 e a cidade passa a ser Barretos.
Execute uma consulta para verificar como ficou a tabela cidades agora.
SELECT * FROM CIDADES;
APRENDENDO A CONSULTAR EM MÚLTIPLAS TABELAS.
Para que possamos iniciar esse trabalho, precisaremos criar uma nova tabela chamada ESTADOS.
CREATE TABLE ESTADOS (ID_ESTADO NUMBER(2) PRIMARY KEY NOT NULL,
UF VARCHAR2(2));
Precisamos inserir os estados dentro da tabela ESTADOS com o comando INSERT.
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (1,'AC')
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (2,'AL')
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (3,'AP')
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (4,'AM')
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (5,'BA')
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (6,'CE');
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (7,'ES');
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (8,'GO');
COMMIT;
16
Autor: Jeferson Marques Cunha
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (9,'MA');
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (10,'MT');
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (11,'MS');
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (12,'MG');
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (13,'PR');
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (14,'PB');
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (15,'PA');
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (16,'PE');
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (17,'PI');
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (18,'RJ');
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (19,'RN');
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (20,'RS');
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (21,'RO');
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (22,'RR');
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (23,'SC');
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (24,'SE');
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (25,'SP');
COMMIT;
INSERT INTO ESTADOS (ID_ESTADO, UF) VALUES (26,'TO');
COMMIT;
APRENDENDO A INSERIR UM NOVO CAMPO EM UMA TABELA UTILIZANDO O COMANDO ALTER
TABLE.
Sintaxe:
ALTER TABLE nome_tabela
ADD ( nome_coluna tipo_dado [tamanho] [restrição],
nome_coluna tipo_dado [tamanho] [restrição])
MODIFY ( nome_coluna tipo_dado [tamanho],
nome_coluna tipo_dado [tamanho])
RENAME COLUMN- utilizado para renomear o nome de uma coluna.
DROP CONSTRAINT nome_restrição
- A opção ADD é utilizada para acrescentar definições de colunas ou restrições.
17
Autor: Jeferson Marques Cunha
- A opção MODIFY é utilizada para alterar as definições da coluna ( tamanho
e/ou tipo de dado, ou acrescentar a restrição de nulo ou não nulo).
- A opção DROP CONSTRAINT é utilizada para excluir restrições de colunas ou
da tabela.
Nota: - Não é possível alterar uma coluna contendo nulos para uma constraint
NOT NULL; também não é possível diminuir o tamanho da coluna ou alterar o
tipo de dado, a menos que esta não contenha dados.
- Para alterar uma restrição, esta deve ser eliminada e então pode-se adicionar
as alterações desejadas, como uma nova restrição.
Aqui estamos inserindo o campo ID_ESTADO na tabela CIDADES, esse campo é que vai identificar que
uma cidade pertence à um certo estado, esse campo não pode ser nulo, por isso o parâmetro not null.
Vamos deletar todos os registros da tabela cidades para que possamos fazer a criação do campo
corretamente.
DELETE FROM CIDADES;
COMMIT;
ALTER TABLE CIDADES ADD ID_ESTADO NUMBER(2) NOT NULL;
Agora precisamos criar uma foreign key para o campo ID_ESTADO da tabela CIDADES para que possa se
relacionar com o campo da ID_ESTADO da tabela ESTADOS.
ALTER TABLE CIDADES ADD CONSTRAINTS ID_ESTADO_FK FOREIGN KEY(ID_ESTADO) REFERENCES
ESTADOS(ID_ESTADO);
Isso significa que toda cidade que iremos cadastrar deve conter o código do estado.
Por exemplo, o ID_ESTADO = 25 pertence ao estado de SP.
Agora para você saber como isso funciona, vamos tentar inserir uma cidade com um ID_ESTADO que não
existe na tabela ESTADOS. Vamos ao teste.
Faça um select na tabela estados para verificar os estados e os códigos.
SELECT * FROM ESTADOS;
Serão vários registros, talvez não mostre todos na tela pra você, então existe uma seta verde que expande
os registros para que possa visualizar todos.
18
Autor: Jeferson Marques Cunha
Agora tente inserir um registro na tabela CIDADES onde o ID_ESTADO não exista na tabela ESTADOS.
INSERT INTO CIDADES (ID_CIDADE,DESC_CIDADE,ID_ESTADO) VALUES (1,'BARRETOS',35);
Será exibida essa mensagem de erro informando que ele não localizou o registro da chave mãe, ou seja
da tabela MASTER ou PAI como queiram falar.
O ID_ESTADO 35 que foi colocado no insert não existe na tabela estados como vocês puderam comprovar
com o select que foi feito na tabela ESTADOS.
Agora vamos alterar o select e colocar corretamente o ID_ESTADO.
INSERT INTO CIDADES (ID_CIDADE,DESC_CIDADE,ID_ESTADO) VALUES (1,'BARRETOS',25);
COMMIT;
Agora com o ID_ESTADO=25 que pertence ao Estado de SP a cidade de Barretos foi inserida
corretamente, confirme:
SELECT * FROM CIDADES;
Vamos cadastrar mais algumas cidades para podermos fazer o select unindo duas tabelas.
INSERT INTO CIDADES (ID_CIDADE,DESC_CIDADE,ID_ESTADO) VALUES (2,'GOIANIA',8);
COMMIT;
INSERT INTO CIDADES (ID_CIDADE,DESC_CIDADE,ID_ESTADO) VALUES (3,'SAO PAULO',25);
COMMIT;
INSERT INTO CIDADES (ID_CIDADE,DESC_CIDADE,ID_ESTADO) VALUES (4,'RIO DE JANEIRO',18);
COMMIT;
INSERT INTO CIDADES (ID_CIDADE,DESC_CIDADE,ID_ESTADO) VALUES (5,'CURITIBA',13);
COMMIT;
19
Autor: Jeferson Marques Cunha
Bom, já temos 5 cidades cadastradas, podemos começar a próxima etapa.
Vamos fazer um select que traga o nome da cidade e o estado da cidade.
Aí você deve estar se perguntando, como vou fazer isso se o estado está em uma tabela e as cidades
Estão na outra?
Vou lhe ensinar a fazer joins, isto é, unir duas ou mais tabelas.
SELECT C.DESC_CIDADE,
E.UF
FROM CIDADES C,
ESTADOS E
WHERE C.ID_ESTADO = E.ID_ESTADO
OBS: Observe que sempre que existe duas tabelas deve haver uma ligação da chave primária com a sua
chave de relacionamento WHERE C.ID_ESTADO = E.ID_ESTADO. Isso é obrigatório para você não ter
problemas de trazer mais informações do que você necessita.
Rode esse select e veja o resultado.
Explicação: Observe que na frente do CIDADES tem uma letra C.
Essa letra é como se fosse um apelido para a tabela cidades.
Utilizo isso para ficar mais fácil de saber de qual tabela está vindo os campos.
Então quando eu coloco C.DESC_CIDADE, significa que estou trazendo o campo DESC_CIDADE da
tabela CIDADES. A mesma coisa acontece com o Estado.
Aqui observamos a importância das foreign Keys ou chaves de relacionamento.
EXERCÍCIOS 2
1 – Criar uma nova tabela de produtos com o nome PRODUTOS e insira nessa tabela os seguintes
campos.
• PRODUTO_ID – tipagem NUMBER(3) - não pode ser nulo e tem que ser chave primária.
• NOME - tipagem VARCHAR2(50)
• VALOR –tipagem NUMBER(6,2)
Obs: O tipo number(6,2) representa o campo para inserção de valores, quer dizer que o
valor do seu produto pode ter até seis dígitos sendo dois deles destinados às casas
decimais.
Ex: R$ 4312,00
2 – Construa uma nova tabela com o nome de PEDIDOS e insira nessa tabela os seguintes campos.
• PEDIDO_ID – tipagem NUMBER(3) - não pode ser nulo e tem que ser chave primária
• CLIENTE_ID – tipagem NUMBER(5) - tem que ser uma foreign key ligando com a tabela
clientes que você já criou no outro exercício.
• PRODUTO_ID – tipagem NUMBER(3) – tem que ser uma foreing key ligando com a tabela de
produtos.
3 – Inserir 5 registros com o código do produto, o nome e o valor para todos os produtos.
4 – Inserir 5 registros com o código do pedido, o código do cliente e código do produto.
5 – Fazer uma consulta(select), trazendo na tela o código do pedido(PEDIDO_ID) , o nome do
cliente(NOME) e o cpf(CPF).
6 – Fazer uma consulta(select), trazendo o número do pedido(PEDIDO_ID) e o nome do produto(NOME).
20
Autor: Jeferson Marques Cunha
3 – Inserir mais 5 registros na tabela cidades, todos os registros devem ser inseridos com datas diferentes.
OBS: Lembre-se que para inserir um pedido onde tenha o código do cliente, esse código de cliente
deve estar cadastrado na tabela de CLIENTES também, o mesmo acontece com o produto na tabela
PRODUTOS, pois o campo CLIENTE_ID e PRODUTO_ID são foreing keys ou seja “chaves de
relacionamento”. Você terá que ligar a tabela PEDIDOS com a tabela CLIENTES e a tabela PEDIDOS
com a tabela PRODUTOS para trazer o resultado no primeiro e no segundo select.
APRENDENDO A FAZER SOMATÓRIA DE VALORES UTILIZANDO O COMANDO SUM.
Agora vamos fazer uma somatória com todos os produtos que você inseriu no exercício acima.
SELECT SUM(VALOR) AS TOTAL
FROM PRODUTOS;
Obs: Esse valor é a soma do valor de todos os produtos. Como o Sum é uma função de grupo, se
tivéssemos trazido mais algum campo teríamos que utilizar o Group By, veremos no próximo
tópico.
APRENDENDO A FAZER AGRUPAMENTO UTILIZANDO O COMANDO GROUP BY.
Para termos um resultado coeso, precisaremos inserir mais alguns itens na tabela de pedidos.
Você com certeza já vai ter cadastrado 5 registros que são os registros do exercício 2.
Precisaremos inserir esses itens em vários pedidos novamente.
Como você já vai ter inserido 5 pedidos, vamos ir na sequência apartir do pedido 6.
INSERT INTO PEDIDOS(PEDIDO_ID, CLIENTE_ID, PRODUTO_ID)
VALUES(6,1,1);
COMMIT;
INSERT INTO PEDIDOS(PEDIDO_ID, CLIENTE_ID, PRODUTO_ID)
VALUES(7,2,1);
COMMIT;
INSERT INTO PEDIDOS(PEDIDO_ID, CLIENTE_ID, PRODUTO_ID)
VALUES(8,3,1);
COMMIT;
INSERT INTO PEDIDOS(PEDIDO_ID, CLIENTE_ID, PRODUTO_ID)
VALUES(9,4,1);
COMMIT;
Você poderá rodar esses inserts todos de uma única vez clicando em File --->New ---->Command Window,
só copiar e colar na tela do command, aparecerá uma tela como essa abaixo, mostrando que os registros
foram inseridos.
21
Autor: Jeferson Marques Cunha
Agora que temos os produtos inseridos vamos fazer um select com sum e group by.
SELECT P.PRODUTO_ID,
SUM(PR.VALOR)
FROM PEDIDOS P,
PRODUTOS PR
WHERE P.PRODUTO_ID = PR.PRODUTO_ID
GROUP BY P.PRODUTO_ID;
EXPLICAÇÃO: Tive que unir a tabela de PRODUTOS porque eu queria somar o valor e o campo
valor pertence à tabela de PRODUTOS e não à tabela de PEDIDOS.
Tive que utilizar o where para dizer que o produto_id da tabela de PEDIDOS tinha que ser o mesmo
produto_id da tabela de PRODUTOS.
E como eu havia dito anteriormente, a cláusula “SUM” juntamente com algum outro campo
necessita de agrupamento. Nesse caso aqui ele agrupou pelo código do produto, ou seja, ele vai
pegar todos os produtos com o mesmo código na tabela de PEDIDOS e vai somar o valor total de
cada produto.
Você só poderá agrupar um campo se ele tiver sido apresentado no select.
APRENDENDO A CONCATENAR CAMPOS.
Concatenar significar colocar um campo na frente do outro ou qualquer símbolo na frente, no meio ou
depois dos campos.
SELECT P.PRODUTO_ID || ' - ' || 'A SOMA DO PRODUTO É R$ ' || SUM(PR.VALOR) AS
SOMA_PRODUTO
FROM PEDIDOS P,
PRODUTOS PR
WHERE P.PRODUTO_ID = PR.PRODUTO_ID
GROUP BY P.PRODUTO_ID;
22
Autor: Jeferson Marques Cunha
Explicação: O símbolo || significa que você quer colocar o resultado de duas colunas em uma
coluna somente. Essa consulta vai nos trazer o código do produto seguido da frase “A SOMA DO
PRODUTO É R$” e na frente o campo valor com o valor total vendido daquele produto.
APRENDENDO A FAZER DISTINÇÃO COM O COMANDO DISTINCT.
O comando distinct serve para você saber quais os códigos que existe dentro de uma tabela sem precisar
trazer todos os registros e sair procurando todos os códigos.
Conforme inserts que fizemos anteriormente, você deve ter cadastrado o mesmo código de produto mais
de uma vez na tabela de pedidos, com isso poderemos exemplificar o comando distinct.
SELECT *
FROM PEDIDOS;
Observe que trouxe 9 linhas o select acima. Agora compare com o select abaixo o número de
linhas.
SELECT DISTINCT(PRODUTO_ID)
FROM PEDIDOS;
23
Autor: Jeferson Marques Cunha
O comando distinct faz com que mostre para você todos os códigos de produtos distintos, ou seja, sem
repetí-los. Agora ele trouxe somente 5 linhas.
APRENDENDO A UTILIZAR O COMANDO MIN E MAX.
Certo de que você fez o exercício 2, se não fez corretamente será necessário fazê-lo para que possa dar
continuidade nesse tópico.
Primeiro execute um select na tabela de clientes e verifique os registros retornados.
SELECT * FROM CLIENTES;
24
Autor: Jeferson Marques Cunha
Observe que tenho registros com datas do dia 12,20,21 e 22, isso vai nos possibilitar fazermos teste com a
menor e maior data.
Abaixo segue o select para trazer a menor data, utilizando o comando MIN.
SELECT MIN(DT_CADASTRO) FROM CLIENTES;
25
Autor: Jeferson Marques Cunha
Agora segue o select para trazer a maior data, utilizando o comando MAX.
SELECT MAX(DT_CADASTRO) FROM CLIENTES;
APRENDENDO A ORDENAR UTILIZANDO O COMANDO ORDER BY.
SELECT C.CLIENTE_ID,
C.DT_CADASTRO
FROM CLIENTES C
ORDER BY C.DT_CADASTRO
Explicação: Esse select faz a ordenação padrão do menor para o maior. Alguns profissionais
utilizam a cláusula ASC no order by para indicar que o produto será ordenado na ascendente,
porém se você executar o order by sem o ASC ele já vai fazer esse tipo de ordenação padrão.
Com o ASC seria assim:
SELECT C.CLIENTE_ID,
C.DT_CADASTRO
FROM CLIENTES C
ORDER BY C.DT_CADASTRO ASC
Você vai perceber que não terá mudança no resultado.
Se você quiser trazer o resultado na descendente, é só utilizar o DESC no order by, conforme select
abaixo:
SELECT C.CLIENTE_ID,
C.DT_CADASTRO
FROM CLIENTES C
ORDER BY C.DT_CADASTRO DESC
26
Autor: Jeferson Marques Cunha
Você vai perceber que a data será ordenada da maior para a menor.
APRENDENDO A UTILIZAR O COMANDO NVL.
Primeiramente vamos inserir um produto com o valor nulo.
INSERT INTO PRODUTOS (PRODUTO_ID, NOME, VALOR) VALUES (6,'RODA ARO 15',NULL);
Execute esse select para certificar-se de como ficou o campo valor do produto com código 6.
SELECT * FROM PRODUTOS;
Após a inserção podemos fazer o teste com o comando NVL.
SELECT PRODUTO_ID,
NOME,
NVL(VALOR,0)
FROM PRODUTOS;
Explicação: O NVL foi utilizado no campo que eu inseri como nulo o produto com código 6.
Execute o seguinte select e irá perceber que ele não irá trazer nulo e sim trará 0 no lugar de nulo.
O NVL, converte um valor nulo em outro valor.
Obs: No lugar de 0, poderia ser qualquer outro número.
APRENDENDO A DELETAR UMA TABELA UTILIZANDO O COMANDO DROP.
Vamos criar uma tabela de teste, com o comando abaixo.
CREATE TABLE TESTE (COD NUMBER);
Agora vamos consultar essa tabela para ter certeza de que ela existe mesmo.
SELECT * FROM TESTE;
Agora vamos à parte mais interessante que é dropar essa tabela.
DROP TABLE TESTE CASCADE CONSTRAINTS;
Explicação: Foi utilizado o comando drop para apagar a tabela teste e o comando cascade
constraints para apagar alguma chave de relacionamento que poderia existir na tabela, como as
foreigns keys que criamos nas outras tabelas.
---------------------------------------------------------------FIM--------------------------------------------------------------------
Agradeço à todos que adquiriram o tutorial, tenho certeza de que dá para começar a mexer com o básico
com SQL apartir desse tutorial.
Se precisarem de alguma explicação sobre o material, podem encaminhar email para:
[email protected]ou acessem o meu blog: http://jmarquescunhadbaoracle.blogspot.com.br/
27
Autor: Jeferson Marques Cunha
No blog vocês encontrarão assuntos variados sobre banco de dados, tanto de Transact PLSQL quanto de
Administração de Banco de Dados.
Autor:
Jeferson Marques Cunha
DBA Oracle/SQL Server
28