logo

Aula 02 – Oracle/SQL – Comandos básicos

Queridos alunos,

abaixo um apanhado de comandos SQL para pesquisa em banco de dados Oracle, começando pelos comandos em sua forma mais básica, gradualmente indo para os mais “avançados”.

Vale lembrar que o comando principal é o SELECT, que pode vir acompanhado de uma série de parametros modificadores, de forma que voce obtenha a saída da pesquisa do jeito que voce precisa. Entao… vamos lá!

OBSERVAÇAO1: Para que voce possa praticar estes exercicios, é necessário que voce tenha feito os procedimentos da “aula01 – banco de dados Oracle – preparando o ambiente

OBSERVAÇAO2: O banco de dados deste laboratório foi populado (preenchido) com dados do lab oficial da Oracle para ambientes de ensino, conforme informado na “aula01”

Sintaxe básica do comando select:

Sintaxe:
select <campos-que-se-deseja-obter-como-saida> from <nome-da-tabela>
Traduçao:
selecione o(s) campo(s) especificado(s) da tabela “x”

Exemplo 01:

select * from employees

Explicaçao:

Este comando retorna TODOS os registros e TODOS (*) os campos da tabela employees

Exemplo 02:

select last_name, employee_id from employees

Explicaçao:

Este comando retorna todos os registros dos campos “last_name”e “employee_id” da tabela employees

Exemplo 03:

select last_name sobrenome, employee_id matricula from employees
ou
select last_name as sobrenome, employee_id as matricula from employees
ou
select last_name “sobrenome do funcionario”, employee_id “matricula do funcionario” from employees
ou
select last_name as “sobrenome do funcionario”, employee_id as “matricula do funcionario” from employees

Explicaçao:

Este comando retorna todos os registros dos campos “last_name”e “employee_id” da tabela employees. observe que nos primeiros exemplos os novos nomes dos campos vem SEM ASPAS, porque utilizei apenas UMA PALAVRA, ja nos ultimos exemplos utilizei aspas, pois utilizei DUAS PALAVRAS para renomear os campos, se voce quiser ver este comando dando erro, tente o comando abaixo (Note que o nome dos campos esta sem aspas):

select last_name as sobrenome do funcionario, employee_id as matricula do funcionario from employees

Comando select para nao mostrar registros duplicados em um determinado campo

OBSERVAÇAO: em alguns casos usaremos o comando basico e, depois, o modificado, para podermos ver a diferença

exemplo 01:

Comando basico: select job_id from employees
(Veja que este comando retorna todos os registros, inclusive os duplicados)

Comando modificado: select distinct job_id from employees
(Veja que este comando nao retonou apenas um tipo de “job_id, excluindo os campos duplicados)

exemplo 02:

select job_id, salary from employees
(Veja que este comando retorna todos os registros dos dois campos, inclusive os duplicados)

select distinct job_id, salary from employees
(Veja que este comando exibe alguns duplicados pois, para ele, apenas quando os valores contidos nos campos job_id e salary sao iguais aos de outro registro, é que ele classifica como duplicado)

Comando select para concatenar dois campos diferentes em apenas um campo de saída

comando 01: select last_name || salary from employees

comando 02: select last_name || salary as “Ganhos por funcionario” from employees

comando 03: select last_name || ‘ ganha um salário de R$ ‘ || salary as “Ganhos por funcionario” from employees

Fazendo calculos com o comando select

Exemplo 01:
select last_name as “sobrenome”, salary as “Salario”, salary+1000 as “salario com acrescimo” from employees
(Note que no ultimo campo acrescentamos 1000 reais ao salario)

Exemplo 02:
select last_name as “sobrenome”, salary as “salario”, commission_pct as “porcentagem da comissao”, salary*commission_pct as “valor da comissao” from employees
(Note que a saida mostrou alguns campos de calculo como “NULL”, isto porque quando a comissao é nula, pois nao houve comissao, inclusive o resultado a comissao é null, pois um valor multiplicado por “nada” é igual a “nada”)

exemplo 03:
select last_name as “sobrenome”, salary as “salario”, commission_pct as “porcentagem da comissao”, nvl(commission_pct,0)*salary as “valor da comissao” from employees
(usando o parametro nvl, para tratamento de valores NULOS, é possivel informar um valor ou texto para substituir campos de conteudo nulo)

exemplo 04:
select last_name as “sobrenome”, salary as “salario”, commission_pct as “porcentagem da comissao”, nvl(commission_pct,1)*salary as “valor da comissao” from employees
(apenas como prova do que aformei acima sobre o parametro NVL, substitui o “nulo”pelo numero 1, veja que o resultado é o proprio salario. Afinal, qualquer valor multiplicado por 1 é igual a ele mesmo)

exemplo 05:
select last_name as “sobrenome”, salary as “salario”, commission_pct as “porcentagem da comissao”, nvl(commission_pct,0)*salary+salary as “valor do salario + comissao” from employees

OBSERVACAO: Existem mais detalhes sobre o comando NVL, inclusive melhoramentos, que veremos nos proximos posts.

Modificando tipos de campos com comando select (conversao de campos)

Em algumas ocasioes queremos modificar a saida de alguns registros como, por exemplo, uma data, onde queremos que uma data composta por dia, mes e ano seja exibida apenas com o mes. Isto é possivel utilizando o parametro “to_char”, veja os exemplos abaixo:

exemplo 01:
select last_name as “Nome do funcionario”, hire_date as “Data de admissao” from employees
(Note que o campo data de admissao veio com data completa, no entanto isto pode ser modificado, veja o proximo exemplo)

Exemplo 02:
select last_name as “Nome do funcionario”, to_char(hire_date, ‘month’) as “Mes de admissao” from employees

Exmplo 03
select last_name as “Nome do funcionario”, to_char(hire_date, ‘mm’) as “Mes de admissao” from employees

Exmplo 04:
select last_name as “Nome do funcionario”, to_char(hire_date, ‘DAY’) as “Dia de admissao” from employees

Exemplo 05:
select last_name as “Nome do funcionario”, to_char(hire_date, ‘dd’) as “Dia de admissao” from employees

Exemplo 06:
select last_name as “Nome do funcionario”, to_char(hire_date, ‘year’) as “Ano de admissao” from employees

Exemplo 07:
select last_name as “Nome do funcionario”, to_char(hire_date, ‘yyyy’) as “Ano de admissao” from employees

Exemplo 08:
select last_name as “Nome do funcionario”, to_char(hire_date, ‘yy’) as “Ano de admissao” from employees

Exemplo 09:
select last_name as “Nome do funcionario”, to_char(hire_date, ‘fmdd “de” month “de” yyyy’) as “Data de admissao” from employees
(Note que para “concatenar” diversas partes da data usando TO_Char é necessário utilizar o parametro “fm” antes da data. tente sem ele e voce obtera um erro!)

Fazendo calculos de datas com o comando select

Exemplo 01:
select sysdate from dual
(Este comando obtem a data atual do sistema)

Exemplo 02:
select to_char(sysdate,’dd/mm/yyyy’) from dual
(Aqui ja começamos a converter a data para o formato que desejamos)

Exemplo 03:
select last_name as “nome do funcionario”, hire_date as “data da admissao”, sysdate as “Data atual”, sysdate-hire_date as “Tempo de servico em dias” from employees
(Obtemos como resultado a quantidade de dias trabalhados)

Exemplo 04:
select last_name as “nome do funcionario”, hire_date as “data da admissao”, sysdate as “Data atual”, (sysdate-hire_date)/7 as “Tempo de servico em semanas” from employees
(Obtemos como resultado a quantidade de semanas trabalhadas, pois basta dividir a quantidade de dias obtidos por 7, que é o numero de dias que contem uma semana, pura matematica basica!)

Exemplo 05:
select last_name as “nome do funcionario”, hire_date as “data da admissao”, sysdate as “Data atual”, MONTHS_BETWEEN(sysdate,hire_date) as “Tempo de servico em meses” from employees
(O parametro “months_between” serve para informar a quantidade de meses entre uma data inicial e uma data final)

Arredondando valores com comando select e os parametros trun e round

OBSERVAÇAO: Para estes exemplos, utilizaremos o calculo de data acima que usamos para obter dias

Exemplo 01:
select last_name as “nome do funcionario”, hire_date as “data da admissao”, sysdate as “Data atual”, trunc(sysdate-hire_date) as “Tempo de servico em dias” from employees
(O comando “trunc” apenas retira os decimais)

Exemplo 02:
select last_name as “nome do funcionario”, hire_date as “data da admissao”, sysdate as “Data atual”, round(sysdate-hire_date) as “Tempo de servico em dias” from employees
(O parametro round arredonda o valor para mais ou para menos a depender do valor do decimal se for ,4, o arredondamento sera para menos, se for de ,5 acima, o arredondamento sera para mais)

OBSERVACAO: Para testar e entender, faça os testes abaixo:

Teste 01:
select trunc(10-3.1) as cal from dual

teste 02:
select trunc(10-3.6) as cal from dual

teste 03:
select round(10-3.1) as cal from dual

teste 04:
select round(10-3.6) as cal from dual

OBSERVAÇAO: “dual” é um “cenário” que você pode utilizar para fazer operaçoes diversas sem a necessidade de utilizar uma tabela ou visualização específica, por exemplo.




816 Visitas totais: 4 Visitas hoje:
Foto de perfil de Prof. César Felipe Gonçalves Silva
Graduado em gestão de infraestrutura de redes e pós-graduado nesta mesma área pela Universidade Tiradentes (UNIT), uma das maiores universidades do Nordeste. É escritor do Livro “Configuração de switches e roteadores CISCO” (Brasport/2013) e autor de 3 cursos online em vídeo aulas para o Instituto Politécnico de Educação à Distância (IPED – São Paulo). Professor há mais de 16 anos, atualmente escreve seu segundo livro na área de infraestrutura de redes de computadores.

Deixe um comentário

*

captcha *

Pular para a barra de ferramentas