O banco de dados é a organização e armazenamento de informações.
É muito comum entre empresas, precisam guardar e organizar informações, e acessar
posteriormente.
Aplicação (Web/Mobile/Desktop) <-> API <-> BD
Hoje existem diversas formas de
armazenar e organizar essas informações, como por exemplo,
arquivos de texto, excel, banco de dados, etc.
Alguns dos principais tipos de banco
de dados são os relacionais, que são organizados em tabelas,
e os não relacionais, que podem ser
organizados em JSON (texto). SQL / NoSQL
Os bancos de dados relacionais são um conjunto
de dados organizados em tabelas, onde cada linha
representa um registro e cada coluna um campo.
Nome(String) Idade(Int) BlabLa
Vitor 27 BlaBla
Cada coluna pode ter um tipo de dado, como por exemplo,
inteiro, texto, etc. A linguagem SQL é uma das linguagens
mais utilizadas para manipular bancos de dados relacionais.
Eles são muito utilizados para: ecommerce,
sistemas de gestão, sistemas financeiros, etc.
- Bancos Relacionais mais comuns
- Oracle
- MySQL
- PostgreSQL
- SQL Server
- Outros
Já os bancos de dados não relacionais são um conjunto de dados organizados em JSON, onde cada registro é um objeto. Cada objeto pode ter um conjunto de chaves e valores, como por exemplo, nome, idade, etc. A linguagem JSON é uma das linguagens mais utilizadas para manipular bancos de dados não relacionais. Eles são muito utilizados para: aplicações como aplicativos de mensagens, aplicativos de chat, aplicativos de música, etc.
- Banco de dados não relacionais mais comuns
- MongoDB
- CouchDB
- DynamoDB
- Redis
- Outros
- Ex em Excel
- Ex em json
- String:
- CHAR: caracteres, com tamanho fixo e podendo ter tamanho de 0 a 255 caracteres. Default 1
- VARCHAR: texto, com tamanho variável e podendo ter tamanho de 0 a 65535 caracteres. Precisa ser definido o tamanho máximo (255)
- Number
- INT/INTEGER: inteiros, com tamanho fixo e podendo ser entre -2147483648 a 2147483647
- BIGINT: inteiros, com tamanho fixo e podendo ser entre -9223372036854775808 a 9223372036854775807
- FLOAT: números reais, podendo o decimal ter tamanho de 0 a 25 caracteres
- DOUBLE: números reais, podendo o decimal ter tamanho de 25 a 53 caracteres
- DECIMAL: números reais, podendo o decimal ter tamanho de 0 a 38 caracteres porém com maior precisão
- Boolean
- BOOLEAN: valores lógicos, podendo ser true ou false
- Date & Time
- DATE: data, podendo ser definida como dd/mm/yyyy
- DATETIME: data e hora, podendo ser definida como dd/mm/yyyy hh:mm:ss
- TIMESTAMP:
- TIME: hora, podendo ser definida como hh:mm:ss
- YEAR: ano, podendo ser definido como yyyy
- Primary Key (PK - Chave Primária)
- É a chave primária de um registro, ou seja, o dado que identifica um objeto.
- É uma chave primária única, ou seja, não pode haver mais de uma chave primária no mesmo registro.
- Os principais tipos utilizados para identificar:
- INT/INTEGER/BIGINT
- VARCHAR
- Podem ser definidas com o seguinte comportamento:
- Auto Increment: quando um registro é inserido, o valor da chave primária é incrementado automaticamente
- Não Auto Increment: quando um registro é inserido, o valor da chave primária é definido pelo usuário
- Foreign Key (FK - Chave Estrangeira)
- É a chave estrangeira de um registro, ou seja, o dado referente a PK de outro registro.
- Com ela é possível referenciar um registro de outra tabela. Ex.: Um aluno tem uma chave estrangeira para o curso que ele estuda.
- Relacionamentos
- Tipos
- Um para um: Define que um registro de uma tabela é relacionado com apenas um registro de outra tabela. Ex.: Um aluno tem uma matrícula, e essa não pode ter mais de um aluno. 1:1
- Um para muitos: Define que um registro de uma tabela é relacionado com vários registros de outra tabela. Ex.: Um curso pode ter vários alunos e um aluno só pode ter um curso. 1:n / n:1
- Muitos para muitos: Define que um registro de uma tabela é relacionado com vários registros de outra tabela. Ex.: Um professor pode ter vários alunos e um aluno pode ter vários professores. N:N
- Exemplos
- Criar banco de dados
- CREATE DATABASE nome_do_banco;
- Criar tabela
- CREATE TABLE nome_da_tabela (
coluna1 tipo_da_coluna1,
coluna2 VARCHAR(255),
coluna3 INT,
...
colunaN FLOAT,
);
- Criar coluna
- ALTER TABLE nome_da_tabela ADD COLUMN nome_da_coluna tipo_da_coluna;
- ALTER TABLE Aluno ADD COLUMN email VARCHAR(255);
- Criar registro
- INSERT INTO nome_da_tabela (coluna1, coluna2, coluna3, ..., colunaN) VALUES (valor1, valor2, valor3, ..., valorN);
- INSERT INTO Aluno (nome, idade, email) VALUES ('João', 20, '[email protected]');
- Consultar registro
- SELECT * FROM nome_da_tabela;
- SELECT * FROM Aluno;
- Alterar registro
- UPDATE nome_da_tabela SET coluna1 = valor1, coluna2 = valor2, ..., colunaN = valorN WHERE coluna1 = valor1;
- UPDATE Aluno SET nome = 'João', idade = 20 WHERE id = 1;
- Deletar registro
- DELETE FROM nome_da_tabela WHERE coluna1 = valor1;
- DELETE FROM Aluno WHERE id = 1;
https://www.w3schools.com/sql/
- É uma técnica para facilitar o desenvolvimento de aplicações que utilizam banco de dados relacionais, normalmente através de bibliotecas.
- Principais ORMs no python:
- SQLAlchemy
- Django ORM
- Instalando diretamente na máquina
- Docker + Docker Compose
- psql: comando para acessar o banco de dados
- pgAdmin: interface web para acessar o banco de dados