Fundamentos do Oracle

 

Os fundamentos do Oracle abrangem todas as técnicas e comandos básicos usados para gerenciar e manipular dados dentro do Oracle Database. Isso inclui a criação, modificação, e exclusão de tabelas, além de consultas de dados usando SQL.

Passo a Passo: Trabalhando com o Oracle Database

1. Instalação do Oracle Database

Para começar, é necessário instalar o Oracle Database no seu sistema. Acesse o site oficial da Oracle e baixe o instalador adequado para o seu sistema operacional.

2. Conectando ao Oracle Database

Após a instalação, você pode conectar ao Oracle Database usando uma ferramenta como SQL*Plus, SQL Developer, PL/SQL Developer ou outra interface de sua preferência.

Criando e Gerenciando Tabelas

Criando Tabelas

A primeira etapa para trabalhar com dados é criar uma tabela. A instrução CREATE TABLE é usada para definir a estrutura da tabela.  Veja um exemplo:

 

CREATE TABLE funcionarios 
( 
  id NUMBER, 
  nome VARCHAR2(100), 
  data_nascimento DATE, 
  email VARCHAR2(100), 
  codigo_cargo NUMBER, 
  salario NUMBER(12,3) 
);

Conforme mostra abaixo, esta instrução cria uma tabela chamada funcionarios com seis colunas: id, nome, data_nascimento, email, codigo_cargo e salario.

 

ColunasTipo
IDnumber, optional
NOMEvarchar2(100), optional
DATA_NASCIMENTOdate, optional
EMAILvarchar2(100), optional
CODIGO_CARGOnumber, optional
SALARIOnumber(12,3), optional

Observação: Se você quiser adicionar comentários à tabela e às suas colunas para tornar a estrutura mais compreensível, especialmente em tabelas mais complexas, pode usar a instrução COMMENT. Aqui está como você pode fazer isso:

 


Exemplo de Comentários:
-- Comentário na tabela 
COMMENT ON TABLE funcionarios IS 'Tabela que armazena informações dos funcionários'; 

-- Comentários nas colunas 
COMMENT ON COLUMN funcionarios.id IS 'Identificador único do funcionário'; 
COMMENT ON COLUMN funcionarios.nome IS 'Nome completo do funcionário'; 
COMMENT ON COLUMN funcionarios.data_nascimento IS 'Data de nascimento do funcionário'; 
COMMENT ON COLUMN funcionarios.email IS 'Endereço de e-mail do funcionário'; 
COMMENT ON COLUMN funcionarios.codigo_cargo IS 'Código do cargo do funcionário'; 
COMMENT ON COLUMN funcionarios.salario IS 'Salário do funcionário';

Esses comentários ajudam a documentar tanto a tabela quanto as colunas, facilitando o entendimento sobre o propósito de cada um.

Definindo a Chave Primária

 

Para definir a coluna id como chave primária após a criação da tabela, utilizamos a instrução ALTER TABLE para adicionar uma restrição à tabela existente. Veja um exemplo:

 

ALTER TABLE funcionarios 
ADD CONSTRAINT pk_funcionarios PRIMARY KEY (id);

Conforme mostra abaixo, essa instrução adiciona uma chave primária denominada pk_funcionarios à tabela funcionarios, assegurando que os valores na coluna id sejam únicos e não nulos.

 

NomeTipoColunas
PK_FUNCIONARIOSPrimaryID

Para gerenciar os cargos dos funcionários de forma mais eficiente, vamos criar uma tabela adicional chamada cargos.
Utilizaremos novamente a instrução CREATE TABLE para definir a estrutura dessa nova tabela. Veja um exemplo:

 

CREATE TABLE cargos 
( 
  codigo NUMBER PRIMARY KEY, 
  descricao VARCHAR2(100) 
);

Como podemos observar, a chave primária (PRIMARY KEY) é definida diretamente durante a criação da tabela cargos, assegurando que os valores na coluna codigo sejam únicos e não nulos.

 

ColunasTipo
CODIGOnumber, mandatory
DESCRICAOvarchar2(100), optional

Definindo a Chave Estrangeira

 

Para garantir a integridade referencial, é necessário definir uma chave estrangeira na tabela funcionarios que referencie a tabela cargos. Veja um exemplo:

 

ALTER TABLE funcionarios 
ADD CONSTRAINT fk_codigo_cargo FOREIGN KEY (codigo_cargo) REFERENCES cargos(codigo);

Como demonstrado abaixo, essa instrução adiciona uma chave estrangeira na tabela funcionarios, garantindo que os valores em codigo_cargo correspondam aos valores codigo na tabela cargos.

 

NomeTipoColunasTabelas de referênciaColunas de referência
FK_CODIGO_CARGOForeignCODIGO_CARGOCARGOSCODIGO

Inserindo Dados

Inserindo Registros na Tabela

Para inserir dados em uma tabela, utiliza-se a instrução INSERT INTO. Veja um exemplo:

 

insert into funcionarios
  (ID, NOME, DATA_NASCIMENTO, EMAIL, CODIGO_CARGO, SALARIO)
values
  (1, 'Carlos Silva', to_date('10-05-1980', 'dd-mm-yyyy'), 'carlos.silva@example.com', 1, 3000.000);
  
insert into funcionarios
  (ID, NOME, DATA_NASCIMENTO, EMAIL, CODIGO_CARGO, SALARIO)
values
  (2, 'Ana Souza', to_date('15-08-1990', 'dd-mm-yyyy'), 'ana.souza@example.com', 2, 2500.000);
  
insert into funcionarios
  (ID, NOME, DATA_NASCIMENTO, EMAIL, CODIGO_CARGO, SALARIO)
values
  (3, 'Pedro Lima', to_date('20-03-1985', 'dd-mm-yyyy'), 'pedro.lima@example.com', 3, 6500.000);
  
insert into funcionarios
  (ID, NOME, DATA_NASCIMENTO, EMAIL, CODIGO_CARGO, SALARIO)
values
  (4, 'Mariana Costa', to_date('05-12-1992', 'dd-mm-yyyy'), 'mariana.costa@example.com', 4, 7000.000);
  
insert into funcionarios
  (ID, NOME, DATA_NASCIMENTO, EMAIL, CODIGO_CARGO, SALARIO)
values
  (5, 'Roberto Alves', to_date('25-07-1988', 'dd-mm-yyyy'), 'roberto.alves@example.com', 5, 3000.000);
  
insert into funcionarios
  (ID, NOME, DATA_NASCIMENTO, EMAIL, CODIGO_CARGO, SALARIO)
values
  (6, 'Fernanda Santos', to_date('28-09-1983', 'dd-mm-yyyy'), 'fernanda.santos@example.com', 3, 3000.000);
  
insert into funcionarios
  (ID, NOME, DATA_NASCIMENTO, EMAIL, CODIGO_CARGO, SALARIO)
values
  (7, 'Lucas Oliveira', to_date('15-07-1989', 'dd-mm-yyyy'), 'lucas.oliveira@example.com', 3, 4500.000);
  
insert into funcionarios
  (ID, NOME, DATA_NASCIMENTO, EMAIL, CODIGO_CARGO, SALARIO)
values
  (8, 'Camila Pereira', to_date('10-04-1985', 'dd-mm-yyyy'), 'camila.pereira@example.com', 3, 1950.000);

Conforme mostra abaixo, estas instruções inserem oito registros na tabela funcionarios.

 

IDNOMEDATA_NASCIMENTOEMAILCODIGO_CARGOSALARIO
1Carlos Silva10/05/1980carlos.silva@example.com13000,000
2Ana Souza15/08/1990ana.souza@example.com22500,000
3Pedro Lima20/03/1985pedro.lima@example.com36500,000
4Mariana Costa05/12/1992mariana.costa@example.com47000,000
5Roberto Alves25/07/1988roberto.alves@example.com53000,000
6Fernanda Santos28/09/1983fernanda.santos@example.com33000,000
7Lucas Oliveira15/07/1989lucas.oliveira@example.com34500,000
8Camila Pereira10/04/1985camila.pereira@example.com31950,000

Agora, vamos inserir alguns registros na tabela cargos. Veja um exemplo:

 

insert into cargos 
  (CODIGO, DESCRICAO) 
values 
  (1, 'Analista de Sistemas');
  
insert into cargos 
  (CODIGO, DESCRICAO)
values 
  (2, 'Desenvolvedor');
  
insert into cargos 
  (CODIGO, DESCRICAO)
values 
  (3, 'Gerente de Projetos');

insert into cargos
  (CODIGO, DESCRICAO)
values
  (4, 'Administrador de Banco de Dados');
  
insert into cargos
  (CODIGO, DESCRICAO)
values
  (5, 'Engenheiro de Software');

Conforme mostra abaixo, estas instruções inserem cinco registros na tabela cargos.

 

CODIGODESCRICAO
1Analista de Sistemas
2Desenvolvedor
3Gerente de Projetos
4Administrador de Banco de Dados
5Engenheiro de Software

Consultando Dados

Consultas Básicas

A instrução SELECT é usada para consultar dados de uma tabela. Veja um exemplo:

 

SELECT nome, salario FROM funcionarios;

Conforme mostra abaixo, esta consulta retorna os nomes e salários de todos os funcionários.

 

NOMESALARIO
Carlos Silva3000,000
Ana Souza2500,000
Pedro Lima6500,000
Mariana Costa7000,000
Roberto Alves3000,000
Fernanda Santos3000,000
Lucas Oliveira4500,000
Camila Pereira1950,000

No exemplo anterior, filtramos apenas as colunas nome e salario. Agora se quisermos exibir todas as colunas da tabela, podemos utilizar o asterisco *:

 

SELECT * FROM funcionarios;

Esse comando retornará todos os dados de todas as colunas da tabela funcionarios.

Principais Conceitos de SQL no Oracle

Cláusula WHERE

A cláusula WHERE é usada para filtrar registros com base em condições específicas. Veja um exemplo:

 

SELECT nome, salario FROM funcionarios WHERE salario > 5000;

Conforme podemos ver, esta consulta retorna os nomes e salários dos funcionários cujo salário é superior a 5000.

 

NOMESALARIO
Pedro Lima6500,000
Mariana Costa7000,000

Cláusula ORDER BY

A cláusula ORDER BY é usada para ordenar os resultados de uma consulta com base em uma ou mais colunas. Veja um exemplo:

 

SELECT nome, salario, data_nascimento
  FROM funcionarios
 ORDER BY salario DESC, nome ASC;

Como podemos ver, esta consulta retorna os nomes, salários e datas de nascimento dos funcionários, ordenados em ordem decrescente de salário. Em casos onde os salários são iguais, os resultados são então ordenados em ordem crescente de nome.

 

NOMESALARIODATA_NASCIMENTO
Mariana Costa7000,00005/12/1992
Pedro Lima6500,00020/03/1985
Lucas Oliveira4500,00015/07/1989
Carlos Silva3000,00010/05/1980
Fernanda Santos3000,00028/09/1983
Roberto Alves3000,00025/07/1988
Ana Souza2500,00015/08/1990
Camila Pereira1950,00010/04/1985

Operações JOIN

Operações JOIN são usadas para combinar registros de duas ou mais tabelas com base em uma coluna relacionada. Veja um exemplo:

 

SELECT f.nome, c.descricao AS cargo
  FROM funcionarios f
  JOIN cargos c
    ON f.codigo_cargo = c.codigo;

Conforme mostra a imagem, esta consulta retorna os nomes dos funcionários e os nomes dos cargos correspondentes.

 

NOMECARGO
Carlos SilvaAnalista de Sistemas
Ana SouzaDesenvolvedor
Mariana CostaAdministrador de Banco de Dados
Roberto AlvesEngenheiro de Software
Fernanda SantosGerente de Projetos
Lucas OliveiraGerente de Projetos
Camila PereiraGerente de Projetos
Rafaela LimaGerente de Projetos
Gustavo CostaGerente de Projetos

Observação:

  • A palavra-chave AS é utilizada para renomear uma coluna ou tabela em uma consulta SQL, facilitando a leitura dos resultados. No exemplo, f é um alias para a tabela funcionarios e c é um alias para a tabela cargos. Usar aliases pode tornar a consulta mais concisa e melhorar a clareza, especialmente em consultas complexas com várias tabelas.
  • Sempre é uma boa prática incluir o nome da tabela ou seu alias antes do nome da coluna quando utilizamos JOINs. Isso ajuda a evitar erros de coluna ambígua e torna a consulta mais clara.

Funções de Agregação

 

Funções de agregação como SUM, AVG, MIN, MAX, e COUNT são usadas para calcular valores a partir de conjuntos de dados. Veja um exemplo:

 

SELECT codigo_cargo, AVG(salario) AS media_salarial
  FROM funcionarios
 GROUP BY codigo_cargo;

Conforme mostra a imagem, esta consulta retorna a média salarial de cada cargo.

 

CODIGO_CARGOMEDIA_SALARIAL
13000
22500
47000
53000
33987,5

Para um guia completo sobre funções de agregação, confira este post.

Subconsultas

 

Subconsultas são consultas aninhadas dentro de outras consultas. Veja um exemplo:

 

SELECT nome
  FROM funcionarios
 WHERE salario > (SELECT AVG(salario) FROM funcionarios);

Conforme mostra abaixo, esta consulta retorna os nomes dos funcionários cujo salário é maior que a média salarial de todos os funcionários.

 

NOME
Pedro Lima
Mariana Costa
Lucas Oliveira

Modificando e Excluindo Dados

Atualizando Registros

Para atualizar dados em uma tabela existente, usa-se a instrução UPDATE. Veja um exemplo:

 

UPDATE funcionarios SET salario = 7800 WHERE id = 1;

Conforme mostra abaixo, esta instrução atualiza o salário do funcionário com id = 1 (Carlos Silva).

 

IDNOMEDATA_NASCIMENTOEMAILCODIGO_CARGOSALARIO
1Carlos Silva10/05/1980carlos.silva@example.com17800,000
2Ana Souza15/08/1990ana.souza@example.com22500,000
3Pedro Lima20/03/1985pedro.lima@example.com36500,000
4Mariana Costa05/12/1992mariana.costa@example.com47000,000
5Roberto Alves25/07/1988roberto.alves@example.com53000,000
6Fernanda Santos28/09/1983fernanda.santos@example.com33000,000
7Lucas Oliveira15/07/1989lucas.oliveira@example.com34500,000
8Camila Pereira10/04/1985camila.pereira@example.com31950,000

Observação:

  • Sempre lembre-se de incluir a cláusula WHERE para especificar quais registros devem ser atualizados. Se você não usar WHERE, todos os registros da tabela serão atualizados com o novo valor, o que pode não ser o desejado. No exemplo, estamos atualizando apenas o salário do funcionário com id = 1.
  • Após realizar uma atualização (UPDATE), inserção (INSERT), ou exclusão (DELETE), é necessário usar COMMIT para salvar as alterações permanentemente. Se você esquecer de fazer isso, as alterações não serão salvas.
  • Caso precise desfazer a atualização, inserção ou exclusão, use ROLLBACK para reverter as alterações feitas antes do último COMMIT.

Excluindo Registros

Para remover registros de uma tabela, utiliza-se a instrução DELETE. Veja um exemplo:

 

DELETE FROM funcionarios WHERE id = 3;

Conforme mostra abaixo, esta instrução exclui o registro do funcionário com id = 3, que é Pedro Lima.

 

IDNOMEDATA_NASCIMENTOEMAILCODIGO_CARGOSALARIO
1Carlos Silva10/05/1980carlos.silva@example.com17800,000
2Ana Souza15/08/1990ana.souza@example.com22500,000
4Mariana Costa05/12/1992mariana.costa@example.com47000,000
5Roberto Alves25/07/1988roberto.alves@example.com53000,000
6Fernanda Santos28/09/1983fernanda.santos@example.com33000,000
7Lucas Oliveira15/07/1989lucas.oliveira@example.com34500,000
8Camila Pereira10/04/1985camila.pereira@example.com31950,000

Observação:

  • Sempre inclua a cláusula WHERE para especificar qual registro deve ser excluído. Sem WHERE, todos os registros da tabela serão removidos, o que pode não ser o desejado.
  • Após realizar a exclusão, use COMMIT para salvar a alteração permanentemente. Se esquecer de usar COMMIT, as alterações não serão salvas.
  • Se precisar desfazer a exclusão, utilize ROLLBACK para reverter as alterações feitas antes do último COMMIT.

Modificando Estruturas de Tabelas

Adicionando Colunas

Para modificar a estrutura de uma tabela existente, usa-se a instrução ALTER TABLE. Veja um exemplo:

 

ALTER TABLE funcionarios 
ADD data_admissao DATE;

Conforme mostra abaixo, esta instrução adiciona uma nova coluna data_admissao à tabela funcionarios. A coluna será criada no final da tabela e todos os valores serão inicialmente nulos, ou seja, a coluna será criada sem registros.

 

IDNOMEDATA_NASCIMENTOEMAILCODIGO_CARGOSALARIODATA_ADMISSAO
1Carlos Silva10/05/1980carlos.silva@example.com17800,000
2Ana Souza15/08/1990ana.souza@example.com22500,000
4Mariana Costa05/12/1992mariana.costa@example.com47000,000
5Roberto Alves25/07/1988roberto.alves@example.com53000,000
6Fernanda Santos28/09/1983fernanda.santos@example.com33000,000
7Lucas Oliveira15/07/1989lucas.oliveira@example.com34500,000
8Camila Pereira10/04/1985camila.pereira@example.com31950,000

Observação: Caso queira atualizar os valores dessa nova coluna para registros existentes, utilize a instrução UPDATE, que já aprendemos anteriormente.

 


Adicionando Coluna com Valor Padrão e Restrição
ALTER TABLE funcionarios 
ADD status VARCHAR2(10) DEFAULT 'Ativo' CHECK (status IN ('Ativo', 'Desligado'));

Conforme mostrado abaixo, esta instrução adiciona uma nova coluna status à tabela funcionarios. A coluna será criada no final da tabela e todos os valores serão inicialmente ‘Ativo’ devido ao valor padrão especificado. Além disso, um CHECK constraint é aplicado para garantir que a coluna status só possa conter os valores ‘Ativo’ ou ‘Desligado’.

 

IDNOMEDATA_NASCIMENTOEMAILCODIGO_CARGOSALARIODATA_ADMISSAOSTATUS
1Carlos Silva10/05/1980carlos.silva@example.com17800,000Ativo
2Ana Souza15/08/1990ana.souza@example.com22500,000Ativo
4Mariana Costa05/12/1992mariana.costa@example.com47000,000Ativo
5Roberto Alves25/07/1988roberto.alves@example.com53000,000Ativo
6Fernanda Santos28/09/1983fernanda.santos@example.com23000,000Ativo
7Lucas Oliveira15/07/1989lucas.oliveira@example.com24500,000Ativo
8Camila Pereira10/04/1985camila.pereira@example.com31950,000Ativo

Observação: Caso queira atualizar os valores dessa nova coluna para registros existentes, utilize a instrução UPDATE, que já aprendemos anteriormente.

 


Excluindo Colunas

Para remover uma coluna de uma tabela existente, usa-se a instrução ALTER TABLE com a cláusula DROP COLUMN. Veja um exemplo:

 

ALTER TABLE funcionarios 
DROP COLUMN data_admissao;

Esta instrução remove a coluna data_admissao da tabela funcionarios.

 

Observação: Não vamos executar este comando por agora, pois vamos utilizar a tabela com a coluna data_admissao nos próximos tutoriais. Caso queira rodar este comando para testar, lembre-se de que ele irá remover a coluna e seus dados permanentemente. Se você decidir excluir a coluna, certifique-se de que os dados nela contidos não são mais necessários.

Excluindo Tabelas

 

Para excluir uma tabela do banco de dados, utiliza-se a instrução DROP TABLE. Veja um exemplo:

 

DROP TABLE funcionarios;

Caso queira rodar para ver como funciona, lembre-se de refazer os passos anteriores: recriar a tabela e inserir os registros novamente, conforme necessário, pois vamos utilizar está tabela nos próximos tutoriais.

Considerações Finais

 

Dominar os fundamentos do Oracle é essencial para qualquer profissional que trabalha com bancos de dados. Este conhecimento proporciona a base necessária para realizar operações de dados eficientes e precisas, facilitando o avanço para técnicas mais avançadas e complexas.

 

Se você tiver alguma dúvida ou sugestão, deixe um comentário abaixo!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima