📊 Fundamentos de BD e SQL
A base de todo conhecimento de um DBA Oracle
Você está no Conteúdo Compacto
Resumo da trilha em uma única página
Introdução
Bem-vindo ao início de sua jornada para se tornar um Administrador de Banco de Dados (DBA) Oracle. Este primeiro módulo é a base de todo o conhecimento que você irá adquirir. Aqui, vamos explorar os conceitos essenciais que sustentam os bancos de dados relacionais e aprender a linguagem fundamental para interagir com eles: o SQL.
1.1 Conceitos de BD Relacional
A estrutura fundamental
Um banco de dados relacional é um sistema que organiza os dados em tabelas. Pense em uma tabela como uma planilha, com linhas e colunas. Cada linha representa um registro (por exemplo, um cliente) e cada coluna representa um atributo desse registro (por exemplo, nome, email, telefone).
Conceitos Principais
A estrutura fundamental de armazenamento, composta por linhas e colunas.
Um atributo específico de uma tabela. Possui um nome e um tipo de dado (texto, número, data, etc.).
Um registro único dentro de uma tabela.
Chave Primária: Uma ou mais colunas que identificam unicamente cada linha. Não pode haver duas linhas com a mesma PK.
Chave Estrangeira: Uma coluna que se refere à chave primária de outra tabela. Cria o "relacionamento" entre tabelas.
1.2 Modelagem de Dados
Diagrama Entidade-Relacionamento
A modelagem de dados é o processo de criar um diagrama que representa a estrutura do banco de dados. O modelo mais comum é o Diagrama Entidade-Relacionamento (DER).
Entidade
Objeto do mundo real sobre o qual armazenamos informações (ex: CLIENTES, PRODUTOS).
Atributo
Característica de uma entidade (ex: nome do cliente, preço do produto).
Relacionamento
Associação entre entidades (ex: CLIENTE faz PEDIDO).
📷 Diagrama ER: Veja a imagem diagrama_er.png na seção de Recursos para um exemplo visual.
1.3 O Ambiente Oracle
SQL Developer e SQL*Plus
Para interagir com o banco de dados Oracle, utilizamos ferramentas cliente. As duas mais importantes para um DBA são:
SQL Developer
Interface gráfica (GUI) completa e gratuita da Oracle. Permite escrever e executar queries SQL, administrar objetos, importar/exportar dados.
Ideal para o dia a diaSQL*Plus
Ferramenta de linha de comando (CLI). Menos amigável, mas extremamente poderosa para automação e execução de scripts.
Essencial para DBAs1.4 A Linguagem SQL
A base de tudo
SQL (Structured Query Language) é a linguagem padrão para gerenciar e manipular bancos de dados relacionais. Ela é dividida em subconjuntos de comandos:
DQL
Data Query Language
Para consultas. Comando: SELECT
DML
Data Manipulation Language
Comandos: INSERT, UPDATE, DELETE
DDL
Data Definition Language
Comandos: CREATE, ALTER, DROP
DCL
Data Control Language
Comandos: GRANT, REVOKE
1.5 Comandos SQL na Prática
Exemplos com tabelas reais
Tabelas de Exemplo
Tabela: DEPARTAMENTOS
| DEPT_ID (PK) | NOME_DEP |
|---|---|
| 10 | 'FINANCEIRO' |
| 20 | 'TI' |
| 30 | 'RH' |
Tabela: EMPREGADOS
| EMP_ID (PK) | NOME_EMP | SALARIO | DEPT_ID (FK) |
|---|---|---|---|
| 101 | 'JOÃO SILVA' | 5000 | 10 |
| 102 | 'ANA LIMA' | 7000 | 20 |
| 103 | 'CARLOS SOUZA' | 6500 | 20 |
| 104 | 'MARIA GOMES' | 4000 | 10 |
SELECT: Consultando Dados
O comando SELECT é usado para buscar dados.
Sintaxe: SELECT colunas FROM tabela WHERE condição
-- Selecionar todos os empregados
SELECT * FROM EMPREGADOS;
-- Selecionar nome e salário dos empregados do departamento de TI (DEPT_ID = 20)
SELECT NOME_EMP, SALARIO FROM EMPREGADOS WHERE DEPT_ID = 20;
INSERT: Inserindo Novos Dados
O INSERT adiciona novas linhas a uma tabela.
-- Inserir um novo departamento
INSERT INTO DEPARTAMENTOS (DEPT_ID, NOME_DEP) VALUES (40, 'VENDAS');
-- Inserir um novo empregado
INSERT INTO EMPREGADOS (EMP_ID, NOME_EMP, SALARIO, DEPT_ID)
VALUES (105, 'PEDRO COSTA', 5500, 40);
UPDATE: Atualizando Dados
O UPDATE modifica registros existentes na tabela.
-- Aumentar o salário dos empregados do Financeiro em 10%
UPDATE EMPREGADOS
SET SALARIO = SALARIO * 1.10
WHERE DEPT_ID = 10;
DELETE: Removendo Dados
⚠️ Cuidado: Use sempre a cláusula WHERE para não apagar todos os dados!
-- Remover o empregado com ID 105
DELETE FROM EMPREGADOS WHERE EMP_ID = 105;
1.6 Joins, Funções e Subqueries
Recursos avançados de SQL
Joins: Combinando Tabelas
O JOIN permite combinar linhas de duas ou mais tabelas com base em uma coluna relacionada.
-- Selecionar o nome de cada empregado e o nome do seu departamento
SELECT E.NOME_EMP, D.NOME_DEP
FROM EMPREGADOS E
JOIN DEPARTAMENTOS D ON E.DEPT_ID = D.DEPT_ID;
Funções: Manipulando Dados
O Oracle oferece uma vasta biblioteca de funções para manipular texto, números e datas.
Agregação
COUNT(), SUM(), AVG(), MAX(), MIN()
String
UPPER(), LOWER(), SUBSTR()
Numéricas
ROUND(), TRUNC()
-- Contar quantos empregados existem em cada departamento
SELECT DEPT_ID, COUNT(*) AS TOTAL_EMPREGADOS
FROM EMPREGADOS
GROUP BY DEPT_ID;
Subqueries: Consultas Aninhadas
Uma subquery é uma consulta SELECT dentro de outra consulta. Úteis para filtros complexos.
-- Encontrar empregados que ganham mais que a média salarial
SELECT NOME_EMP, SALARIO
FROM EMPREGADOS
WHERE SALARIO > (SELECT AVG(SALARIO) FROM EMPREGADOS);
Exercícios Práticos
Hora de praticar!
Cenário: Livraria
Você foi contratado como DBA júnior de uma pequena livraria. O banco de dados possui as seguintes tabelas:
Tabela: AUTORES
| AUTOR_ID | NOME_AUTOR | PAIS_ORIGEM |
|---|---|---|
| 1 | 'J.K. Rowling' | 'Reino Unido' |
| 2 | 'George Orwell' | 'Reino Unido' |
| 3 | 'Machado de Assis' | 'Brasil' |
Tabela: LIVROS
| LIVRO_ID | TITULO | ANO | PRECO | AUTOR_ID |
|---|---|---|---|---|
| 101 | 'Harry Potter...' | 1997 | 35.00 | 1 |
| 102 | '1984' | 1949 | 28.50 | 2 |
| 103 | 'Dom Casmurro' | 1899 | 22.00 | 3 |
| 104 | 'A Revolução dos Bichos' | 1945 | 25.00 | 2 |
1. SELECT Básico
Escreva uma query para selecionar o título e o ano de publicação de todos os livros.
2. SELECT com WHERE
Escreva uma query para encontrar todos os livros publicados antes de 1950.
3. INSERT
Insira um novo autor: ID 4, Nome 'J.R.R. Tolkien', País 'África do Sul'.
4. INSERT
Insira um novo livro: ID 105, Título 'O Hobbit', Ano 1937, Preço 45.00, Autor ID 4.
5. UPDATE
O preço do livro '1984' subiu. Atualize para 32.75.
6. DELETE
O livro 'O Hobbit' foi removido do catálogo. Apague-o.
7. JOIN
Mostre o título de cada livro e o nome do seu respectivo autor.
8. Função de Agregação
Calcule o preço médio de todos os livros.
9. Subquery
Encontre o título dos livros que são mais caros que a média.
10. JOIN com WHERE
Liste os títulos dos livros escritos por autores do 'Reino Unido'.
📋 Ver Gabarito dos Exercícios
1. SELECT Básico
SELECT TITULO, ANO_PUBLICACAO FROM LIVROS;
2. SELECT com WHERE
SELECT * FROM LIVROS WHERE ANO_PUBLICACAO < 1950;
3. INSERT Autor
INSERT INTO AUTORES (AUTOR_ID, NOME_AUTOR, PAIS_ORIGEM)
VALUES (4, 'J.R.R. Tolkien', 'África do Sul');
4. INSERT Livro
INSERT INTO LIVROS (LIVRO_ID, TITULO, ANO_PUBLICACAO, PRECO, AUTOR_ID)
VALUES (105, 'O Hobbit', 1937, 45.00, 4);
5. UPDATE
UPDATE LIVROS SET PRECO = 32.75 WHERE TITULO = '1984';
6. DELETE
DELETE FROM LIVROS WHERE TITULO = 'O Hobbit';
7. JOIN
SELECT L.TITULO, A.NOME_AUTOR
FROM LIVROS L
JOIN AUTORES A ON L.AUTOR_ID = A.AUTOR_ID;
8. Função de Agregação
SELECT AVG(PRECO) AS PRECO_MEDIO FROM LIVROS;
9. Subquery
SELECT TITULO, PRECO
FROM LIVROS
WHERE PRECO > (SELECT AVG(PRECO) FROM LIVROS);
10. JOIN com WHERE
SELECT L.TITULO
FROM LIVROS L
JOIN AUTORES A ON L.AUTOR_ID = A.AUTOR_ID
WHERE A.PAIS_ORIGEM = 'Reino Unido';
🎉 Módulo 1 Concluído!
Parabéns! Você aprendeu os fundamentos de SQL. No próximo módulo, vamos começar a administração do Oracle Database.