Você está na página 1de 28

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:


jmarquescunha@gmail.com

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

Você também pode gostar