Introdução a MySQL e SQL
O que é um Banco de Dados?
→É uma coleção estruturada e organizada de informação (dados)
→Armazenada em um sistema eletrônico de informática
DBMS (Database Management System)
→É um sistema de gestão de base de dados
→São sistemas otimizados para gerir essa informação
→Ao dizer que vai criar uma base de dados, está dizendo que vai
usar o DBMS para criar uma estrutura para os dados do programa
Cliente → Web Server → DBMS (contem os BD)
Cliente ← Web Server ← DBMS (contem os BD)
O que é o MySQL?
→É um Sistema de Gestão de Banco de Dados (DBMS)
→É gerido pela Oracle, sendo open-source (pode ser usado sem
comprar licença)
outros DBMS: mariaDB; SQLite; PostgreSQL; Oracle Database;
MS SQL Server; mongo DB; redis; etc.
O que é uma Base de Dados Relacional?
→É uma das arquiteturas de bases de dados
→Os dados são armazenados em tabelas
→As tabelas podem ter relações entre si através de chaves
→A comunicação com a base de dados é feita em SQL
O que é SQL?
→SQL = Structures Query Language
→Linguagem utilizada para construir queries
°Queries: são instruções para comunicar com a base de dados
→Utilizando SQL podemos pesquisar, inserir, atualizar e eliminar
dados, bem como alterar a estrutura da nossa base de dados
→SQL é o padrão para comunicar com as Bases de Dados
Relacionais
→Com poucas diferenças SQL é usado em qualquer DBMS
relacional
Conceitos & Termos Principais em BD Relacionais
Base de Dados Relacional: base de dados organizada em tabelas e
onde podem existir relações de dados entre essas tabelas
Tabela: estrutura de dados constituída por colunas e linhas
Query: expressão de SQL para comunicar com a Base de Dados
Data Type: cada coluna tem um tipo de dados próprio, pode ser
números inteiros, string, datas, etc.
Relações Entre Tabelas
Duas tabelas podem estar interligadas
→Primary Key (PK): A chave primaria é um valor único usado
para relacionar dados entre tabelas. Só pode existir uma PK por
tabela.
→Foreign Key (FK): A chave Estrangeira é um valor que dá
suporte à chave primária na execução de queries que devolvem
resultados relacionais.
Relação de um para muitos: é a relação mais comum numa base de
dados relacional. Ex: uma tabela de pessoas e outra tabela com os
e-mails das pessoas, cada pessoa pode ter mais de um e-mail.
Relação de muitos para muitos: é a relação em que uma tabela A
tem vários registros relacionados com uma tabela B e vice-versa.
Relação de um para um: é a relação em que a tabela A tem vários
registros todos diferentes, e a tabela B só tem um registro
relacionado com cada registro da tabela A
O que é um Schema de uma BD e os Data Types?
Schema: é a estrutura das tabelas e as suas relações. Serve para
definir as tabelas, as suas colunas, os tipos de dados de cada
coluna entre outras características, as relações entre tabelas, etc.
Data Types: são os tipos de dados que cada coluna de cada tabela
vai permitir armazenar. Por exemplo, uma coluna pode armazenar
valores numéricos, outra pode receber valores string e outra pode
receber valores do tipo data e hora.
→O Data Type de uma coluna define que valor essa coluna vai
permitir
→Existem mais de 30 Data Types, principais:
• integer: valores numéricos inteiros
• float: valores numéricos com casas decimais
• varchar: valores alfanuméricos (strings)
• DateTime: valores relacionados com datas e horas
O que é necessário para criar um BD MySQL?
→Servidor de MySQL sendo executado
→Formas de criar Base de Dados:
→Utilizando SQL diretamente dentro de uma linguagem de
programação
→Utilizar uma aplicação que permite a gestão visual
→Através de mecanismos de importação de BD existentes
Introdução a Sintaxe de SQL
CRUD: create, read, update, delete
-- → comentários de código
READ (Listar)
→Listar todos os dados da tabela amigos
SELECT * FROM amigos
* = Todos
→Listar todos os nomes dos amigos
SELECT nome FROM amigos
→Listar nomes por ordem alfabética
SELECT nome FROM amigos ORDER BY nome ASC
*ASC = ascendente
→Listar todos os telefones de um amigo por seu id
SELECT * FROM telefones WHERE id = número do ID
→Listar todos os telefones e o nome de um amigo por seu id
SELECT amigos.nome, telefones.numero
FROM amigos, telefones
WHERE amigos.id = telefones.id_amigo
AND telefones.id_amigo = número do ID
→Listar todos os telefones e o nome de um amigo por seu nome
SELECT amigos.nome, telefones.numero FROM amigos,
telefones
WHERE amigos.id = telefones.id_amigo
AND amigos.nome = "nome"
UPDATE (Atualizar)
→Atualizar o nome de Maria para Mariana
UPDATE amigos SET nome = "mariana" WHERE nome =
"maria"
→Atualizar os números de telefone que começam pelo algarismo
4, passando a ser iniciados por 10 seguido pelo número existente
UPDATE telefones SET numero = CONCAT(10,numero)
WHERE numero LIKE '4%'
→Atualizar os números de telefone para que fiquem apenas com
os dois últimos algarismo
UPDATE telefones SET numero = SUBSTRING(numero,2,2)
WHERE telefones.id_amigos = (SELECT id FROM amigos
WHERE nome = "nome")
INSERT (Inserir)
→Inserir novo amigo
INSERT INTO amigos(nome) VALUES ("nome do amigo")
→Inserir 3 novos amigos em uma única query
INSERT INTO amigos VALUES
(0, "rodrigo", NOW(), NOW(), NULL),
(0, "sara", NOW(), NOW(), NULL),
(0, "alexandre", NOW(), NOW(), NULL)
DELETE (deletar)
→Eliminar amigo cujo id é 2
DELETE FROM amigos WHERE id = 2
→Eliminar todos os amigos que o nome começa com A
DELETE FROM amigos WHERE nome LIKE 'A%'
→Eliminar todos os Amigos: DELETE FROM amigos
SQL Fundamental
Notas Sobre a Sintaxe
→Palavras reservadas são case-insensitive (não importa ser
maiúsculo ou minúsculo SELECT = select)
→Queries podem ser criada em uma linha ou em múltiplas
→Quase todas as operações em BD podem ser feitas através de
SQL
→Algumas funções de SQL podem não estar disponíveis em
diferentes DBMS
Comentarios no SQL
→ -- Comentario na linha
→ /* Comentario multilinha */
→Para executar mais de uma operação no SQL deve se separa-lás
por ;
Introdução a SELECT
SELECT serve para selecionar dados de uma ou mais tabelas
→Sintaxe:
SELECT {o que vai ser selecionado} FROM {de onde}
Ex: SELECT nomes, email FROM amigos → todos os nomes e
emails armazenados no BD amigos serão mostrados
→* : indica que tudo deve ser selecionado
Ex: SELECT * FROM amigos → todos os dados armazenados no
BD amigos serão mostrados
→SELECT não altera nenhuma informação do BD só as mostra
→Através do SELECT podemos fazer pequenos cálculos como
por exemplo, buscar por produtos e mostrar o preço de uma dúzia
deles através da multiplicação
Ex:
SELECT produto, preco_unidade, preco_unidade * 12 FROM
produtos
→Podemos adicionar um nome alternativo para o preço da dúzia
através de um Alias (AS)
Ex:
SELECT produto, preco_unidade, preco_unidade * 12 AS duzia
FROM produtos
→Podemos usar valores literais nos resultados (valores que não
estão presentes no BD, mas inserimos somente na visualização,
não alterando o conteúdo do banco de dados, só a mostragem das
tabelas)
Ex:
SELECT produto, “valor literal” valor, preco_unidade FROM
produtos
→Podemos fazer contas matemáticas por meio do SQL, sem
consultar nenhum dado do BD
Ex: multiplicação
SELECT 10 * 5 AS resultado
Ordenar dados com ORDER BY
→ORDER BY é uma cláusula opcional de SELECT
→Permite ordenar as linhas devolvidas pela instrução SELECT
por uma ou mais expressões de ordenação (colunas escolhidas), de
forma ascendente (ASC) ou descendente (DESC)
→Ordenar por ordem crescente os produtos por nome crescente
SELECT produto FROM produtos ORDER BY produto ASC
→Ordenar por ordem decrescente os produtos por nome
decrescente
SELECT produto FROM produtos ORDER BY produto DESC
→Selecionar dados múltiplos e os ordenar por ordem alfabética
SELECT nome, email, cidade FROM clientes ORDER BY nome
ASC
→Ordenar por dados múltiplos
SELECT nome, email, cidade FROM clientes ORDER BY cidade,
nome
°Nesse caso os dados primeiro serão ordenados por cidade,
agrupando clientes da mesma cidade, nesses grupos serão
ordenados por nome em ordem alfabética
→Podemos ordenar dados múltiplos e especificar a ordem ASC ou
DESC de cada dado
SELECT nome, email, cidade FROM clientes ORDER BY cidade
DESC, nome ASC
°Nesse caso os dados primeiro serão ordenados por cidade de
forma decrescente, agrupando clientes da mesma cidade, nesses
grupos serão ordenados por nome em ordem crescente
Limitar número de linhas por LIMIT e OFFSET
→Podemos limitar o número de linhas que serão devolvidas pelo
SQL por meio das cláusulas LIMIT e OFFSET
→LIMIT: limita a quantidade máxima de linhas a ser exibida
→OFFSET: determina qual vai ser a primeira linha a ser exibida,
sempre sendo o próximo ao OFFSET escolhido (OFFSET = 5 a
primeira linha vai ser o 6)
→Limitar a busca aos 10 primeiros clientes de uma tabela
SELECT id, nome, email FROM clientes LIMIT 10
→Limitar a busca aos 10 últimos clientes de uma tabela
SELECT id, nome, email FROM clientes ORDER BY id DESC
LIMIT 10
→Limitar a busca do cliente 6 ao 10 de uma tabela
SELECT id, nome, e-mail FROM clientes LIMIT 5 OFFSET 5
→Em alternativa ao OFFSET podemo usar somente o LIMIT
SELECT id, nome, email FROM clientes LIMIT 10, 3
===================================
SELECT id, nome, e-mail FROM clientes LIMIT 3 OFFSET 10
°As duas operações resultarão no mesmo output
→Podemos usar o LIMIT para buscar produto mais caro e o mais
barato
°Mais CARO
SELECT * FROM produtos ORDER BY preco_unidade DESC
LIMIT 1
°Mais BARATO
SELECT * FROM produtos ORDER BY preco_unidade ASC
LIMIT 1
→Podemos combinar o LIMIT e o OFFSET pra buscar o 3°
produto mais caro ou mais barato
°Mais CARO
SELECT * FROM produtos ORDER BY preco_unidade DESC
LIMIT 1 OFFSET 2
ou
SELECT * FROM produtos ORDER BY preco_unidade DESC
LIMIT 2, 1
°Mais Barato
SELECT * FROM produtos ORDER BY preco_unidade ASC
LIMIT 1 OFFSET 2
ou
SELECT * FROM produtos ORDER BY preco_unidade ASC
LIMIT 2, 1