image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
André Santos
André Santos14/11/2022 02:33
Compartilhe

Banco de Dados Relacional | Anotações Introdutórias

  • #SQL Server
  • #PostgreSQL
  • #Banco de dados relacional

O que é um Banco de Dados?

Um banco de dados (BD) é utilizado para organizar e armazenar os dados de um sistema ou empresa. Em um banco de dados relacional, os dados são armazenados em tabelas que se relacionam entre si. Por exemplo:

Produtos podem estar relacionados com categorias ou fornecedores.

Um cliente pode estar relacionado a várias transações.

Conceito de Dados e Informação

Dados: São valores brutos ou observações armazenadas, como nomes ou números. Exemplos:

Nomes: "João", "Árvore".

Números: 10, 20.50.

Informações: Resultam do agrupamento e processamento de dados para gerar sentido. Exemplo:

Dado: "Árvore (Seringueira)".

Informação: "A madeira da árvore é usada para fabricar móveis, a seiva para criar a borracha."

Dados: Fatos brutos, como nomes, números ou eventos. Por exemplo: "João", "Carro", "23".

Informação: Dados organizados que geram sentido ou valor. Por exemplo:

Dado: "Carro".

Informação: "O carro pertence a João e foi comprado por R$30.000."

Estrutura dos Bancos de Dados Relacionais

Tabelas e Relacionamentos

Tabelas: Conjuntos de dados organizados em linhas e colunas. Cada linha é um registro, e cada coluna é um atributo.

Chaves Primárias (Primary Key): Um identificador único para cada registro da tabela.

Chaves Estrangeiras (Foreign Key): Um campo que referencia a chave primária de outra tabela, estabelecendo um relacionamento.

Exemplo prático de criação de tabelas e relacionamento:

CREATE TABLE cliente (

id SERIAL PRIMARY KEY,

nome VARCHAR(50),

email VARCHAR(100)

);

CREATE TABLE transacao (

id SERIAL PRIMARY KEY,

cliente_id INT NOT NULL,

valor NUMERIC(10,2),

FOREIGN KEY (cliente_id) REFERENCES cliente(id)

);

Nesse exemplo:

A tabela cliente armazena os dados dos clientes.

A tabela transacao armazena as transações realizadas por esses clientes, vinculadas pelo campo cliente_id.

Comandos Fundamentais

SELECT

O comando SELECT é usado para buscar dados em uma tabela.

Para retornar todas as colunas de uma tabela:

SELECT * FROM cliente;

Para retornar colunas específicas:

SELECT nome, email FROM cliente;

Adicionando filtros com WHERE:

SELECT nome FROM cliente

WHERE email LIKE '%gmail.com';

Exemplo completo com filtro:

SELECT nome, email

FROM cliente

WHERE ativo = TRUE;

CREATE TABLE

Criação de uma tabela para armazenar dados.

Exemplo de criação de tabela para produtos:

CREATE TABLE produto (

codigo INT NOT NULL,

descricao VARCHAR(100) NOT NULL,

data_validade DATE,

ean VARCHAR(15) NOT NULL,

ind_inativo INT NOT NULL DEFAULT 0,

PRIMARY KEY (codigo)

);

INSERT

Inserir dados em uma tabela:

Inserindo valores em todas as colunas:

INSERT INTO produto VALUES (1, 'Produto A', '2024-12-31', '1234567890123', 0);

Inserindo valores em colunas específicas:

INSERT INTO produto (codigo, descricao, ean)

VALUES (2, 'Produto B', '1234567890456');

UPDATE

Atualizar dados existentes em uma tabela:

UPDATE produto

SET descricao = 'Produto Atualizado'

WHERE codigo = 1;

DELETE

Excluir registros de uma tabela:

DELETE FROM produto

WHERE codigo = 2;

Atenção: Sempre use WHERE para evitar excluir todos os registros.

INDEX

Índices ajudam a acelerar as consultas.

Criando um índice para a tabela produto usando o campo ean:

CREATE INDEX idx_produto_ean

ON produto (ean);

Relacionando Tabelas

Foreign Keys e Relacionamentos

As tabelas podem ser relacionadas utilizando Foreign Keys. Exemplo:

ALTER TABLE estoque

ADD CONSTRAINT fk_estoque_produto

FOREIGN KEY (codigo_produto)

REFERENCES produto(codigo);

Esse comando relaciona a tabela estoque com a tabela produto, dizendo que codigo_produto é uma chave estrangeira que referencia codigo em produto.

Joins: Relacionando Dados

INNER JOIN

Combina registros que possuem correspondência em ambas as tabelas.

Exemplo:

SELECT cliente.nome, transacao.valor

FROM cliente

INNER JOIN transacao ON cliente.id = transacao.cliente_id;

LEFT JOIN

Retorna todos os registros da tabela da esquerda, mesmo que não haja correspondência na tabela da direita.

SELECT cliente.nome, transacao.valor

FROM cliente

LEFT JOIN transacao ON cliente.id = transacao.cliente_id;

RIGHT JOIN

Retorna todos os registros da tabela da direita, mesmo que não haja correspondência na tabela da esquerda.

SELECT cliente.nome, transacao.valor

FROM cliente

RIGHT JOIN transacao ON cliente.id = transacao.cliente_id;

FULL JOIN

Retorna todos os registros de ambas as tabelas, com valores NULL onde não houver correspondência.

SELECT cliente.nome, transacao.valor

FROM cliente

FULL JOIN transacao ON cliente.id = transacao.cliente_id;

CTEs: Common Table Expressions

CTEs organizam consultas longas em blocos reutilizáveis.

Exemplo:

WITH transacoes_altas AS (

SELECT cliente_id, SUM(valor) AS total

FROM transacao

WHERE valor > 1000

GROUP BY cliente_id

)

SELECT cliente.nome, transacoes_altas.total

FROM transacoes_altas

JOIN cliente ON cliente.id = transacoes_altas.cliente_id;

Consultas e Funções Úteis

COUNT: Contar registros.

SELECT COUNT(*) AS total_clientes FROM cliente;

SUM: Somar valores.

SELECT SUM(valor) AS total_transacoes FROM transacao;

AVG: Calcular a média.

SELECT AVG(valor) AS media_transacoes FROM transacao;

LIKE: Realizar buscas parciais.

SELECT * FROM produto

WHERE descricao LIKE '%Produto%';

Gerenciamento de Estruturas

Excluir tabela:

DROP TABLE produto;

Excluir chave estrangeira:

ALTER TABLE estoque

DROP CONSTRAINT fk_estoque_produto;

Com essa explicação detalhada, tanto a teoria quanto a prática de bancos de dados se tornam mais acessíveis, especialmente para iniciantes. Se precisar de mais exemplos ou revisões, é só pedir!

Compartilhe
Recomendados para você
Decola Tech 2025
Suzano - Python Developer
Bootcamp Bradesco - Java Cloud Native
Comentários (2)
Ricardo Gonçalves
Ricardo Gonçalves - 14/11/2022 19:45

Seguindo aqui, pois pretendo usar o PostgreSQL.

Obrigado pelo artigo.

Juarez Souza
Juarez Souza - 14/11/2022 10:15

Ótimo conteúdo, muito bom.