Teoria Prática De Banco De Dados Com MySQL

Teoria Prática De Banco De Dados Com MySQL

Olá pessoal!

Talvez você esteja cursando uma graduação em sistemas de informação, ciência da computação ou seja um curioso do mundo da tecnologia, assim como eu. Uma das primeiras coisas que precisamos aprender é como armazenar e acessar dados, afinal esse é o principal objetivo da Tecnologia da Informação.

Para te ajudar a entrar nesse mundo, preparei alguns slides rápidos que vão te dar uma visão geral do que são e como funcinam os banco de dados. Vamos conhecer um dos principais bancos de dados do mundo e que você pode começar a usar agora sem gastar nada, o MySQL.

Veja abaixo os slides e uma descrição completa.

##Os Bancos de Dados

Introdução

Pra começar vamos ver um pouquinho da história dos bancos de dados e já vamos partir pra prática que é o que interessa.

A ideia original com a apresentação era que cada um instalasse o MySQL e uma ferramenta de auxílio chamada MySQL Workbench, essa ferramenta facilita o acesso e a manutenção do banco de dados. Você pode instalar o MySQL Workbench nesse link e o próprio MySQL nesse outro link.

Talvez você esteja usando a máquina do trabalho para aprender e não pode instalar aplicativos novos, ou seu computador é bem velhinho e te deixa com raiva quando você tenta instalar alguma coisa. Eu sei bem como é, não se preocupe, vou te ensinar como você pode ter um servidor de desenvolvimento e testes gratuito.

###Usando o MySQL sem instalar

Com a evolução dos navegadores, da internet e da computação em nuvem não precisamos mais instalar aplicativos no nosso computador, um exemplo são os ambientes de desenvolvimento integrados (IDE na sigla em inglês), vou assumir que você vai seguir os passos abaixo para o resto do artigo, mas se instalar o servidor na sua máquina e tiver alguma dúvida deixe um comentário que eu respondo te auxiliando.

  1. Vamos usar o CodeAnywhere, uma IDE na nuvem muito poderosa e fácil de usar, crie sua conta gratuita para ter direito a uma DevBox (uma máquina virtual), caso queira criar mais DevBox você pode fazer uma assinatura.
  2. Depois da conta criada vamos criar uma DevBox genérica para nosso aprendizado: CodeAnywhere Na tela da IDE clique em DevBox; Nova DevBox Selecione PHP e clique em Next; Ubuntu Selecione Ubuntu, dê um nome para a sua nova DevBox e clique em Create; Criando Aguarde um pouquinho… Criado Pronto! Sua DevBox está funcionando e com o MySQL já instalado.
  3. Para acessar o MySQL digite mysql -h localhost -u root no terminal da IDE.

Primeiros Bancos

No início da computação todas as informações eram armazenadas em arquivos, e como os papeis impressos não estavam relacionados.

Tentando resolver esse problema surgiu o Banco de Dados Hierárquico, os dados ficavam relacionados em uma árvore, como uma estrutura de pastas que é usada até hoje no seu computador.

Esse modelo permitia que uma informação tivesse apenas um relacionamento do tipo pai - filho, para evoluir surgiu o Banco de Dados em Rede que permitia que um registro tivesse mais de um pai. Isso resolveu alguns problemas, mas mesmo assim esses modelos eram muito restritivos para os tipos de relacionamentos.

Bancos Relacionais

A revolução dos dados começou quando surgiram os Bancos de Dados Relacionais, em conjunto com a ascenção da computação pessoal e a grande necessidade de aplicações mais robustas e complexas para as empresas.

O Modelo Relacional utiliza uma estrutura de tabelas e chaves que consegue imitar com maior fidelidade o mundo real, usando como fundamento alguns principios de matemática básica.

Teoria dos Conjuntos

No ensino fundamental aprendemos sobre a Teoria dos Conjuntos, mas para entender como os bancos relacionais usam a teoria dos conjuntos vamos pensar em duas familias. Os Capuletos e os Montecchios, cada familia possui seus membros isolados, mas pode acontecer de uma Capuleto se casar com um Montecchio, se sua história não fosse trágica provavelmente teriam filhos, esses filhos representariam uma união das duas familias, criando um novo sub conjunto.

Nos modelos relacionais você consegue trabalhar com cada familia individualmente ou com seus sub conjuntos de forma muito simples e intuitiva, vamos ver em breve como isso funciona.

MySQL

O MySQL é um Sistema Gerenciador de Bancos de Dados muito popular e acessível, ele funciona em todos os sistemas operacionais populares e é usado por grandes empresas no mundo todo.

Seus princípios estão na facilidade para instalar, configurar e usar, por isso é uma excelente maneira de você começar seus estudos sobre banco de dados antes de avançar para outros mais complexos.

Uma Coleção

Para entendermos na prática os bancos de dados relacionais vamos pensar em tudo como uma coleção de itens, a primeira coisa que me vem na cabeça quando penso em coleções são os albuns de figurinhas, vamos criar um banco de dados para registrar nossos albuns e suas figurinhas.

##O Modelo Relacional

Com o MySQL Workbench podemos criar graficamente nossas tabelas para nosso banco de dados. O mais importante é entender alguns conceitos:

  • Cada tabela representa uma entidade do mundo real;
  • Cada propriedade da entidade é representada por uma coluna na tabela;
  • Cada registro na tabela possui uma identificação exclusiva em um coluna do tipo chave primária;
  • Um registro de uma tabela se relaciona com outro de outra tabela através de uma coluna do tipo chave estrangeira que faz uma referência a chave primária da outra tabela.
  • As colunas possuem tipos de dados que definem como a informação dela é armazenada, alguns dos tipos são:
    • INT: Um número inteiro comum (1, 2, 1000, etc.)
    • FLOAT: Um número de ponto flutuante comum (1,5, 100,59, etc.)
    • BIT: Um valor único (bit), podemos usá-lo para definir coisas como verdadeiro ou falso
    • VARCHAR: Um texto comum
    • TIMESTAMP: Uma representação de data e hora

Vamos pensar no nosso banco de dados, possuímos duas entidades para nossa coleção:

  • Album: Onde vamos registrar todos os nossos albuns de figurinhas, pode possuir as seguintes propriedades:
    • id: A nossa chave primária, vai ser do tipo INT;
    • nome: O nome do album de figurinhas, do tipo VARCHAR;
    • ano: O ano do album de figurinhas, afinal podemos colecionar um mesmo album de vários anos diferentes, do tipo INT.
  • Figurinha: Onde vamos registrar todas as figurinhas do nsso album, pode possuir essas propriedades:
    • id: A chave primária das figurinhas, também do tipo INT;
    • album_id: Uma chave estrangeira que relaciona a figurinha com o seu album, precisa ter o mesmo tipo da chave primária a que se refere, no caso INT;
    • numero: O número da figurinha no album, do tipo INT;
    • especial: Alguns albuns possuem figurinhas especiais, podem ser as brilhantes ou que valem algum prêmio, vamos registrar isso nesse campo com o tipo BIT.

##Comandos SQL Básicos

Para interagir com o banco de dados foi criada uma linguagem estruturada de consulta, o SQL. É uma linguagem padronizada que pode ser usada em todos os bancos de dados relacionais, as vezes apenas com algumas particularidades do banco de dados escolhido.

O SQL possui comandos divididos em sub grupos, o que precisamos conhecer agora são os três mais utilizados:

  • DML - Linguagem de Manipulação de Dados: Que usamos para inserir, atualizar ou remover dados do banco de dados
  • DDL - Linguagem de Definição de Dados: Que usamos para criar, alterar ou remover tabelas do banco de dados
  • DQL - Linguagem de Consulta de Dados: Que usamos para selecionar dados do banco de dados

Criando Estrutura

Para criar tabelas no MySQL usamos o comando CREATE, você pode usar o próprio MySQL Workbench para fazer isso com a ajuda da interface gráfica. Mas se quiser botar a mão na massa segue abaixo o comando SQL:

CREATE DATABASE album_de_figurinhas;

USE album_de_figurinhas;

CREATE TABLE album (
    id INT NOT NULL AUTO_INCREMENT,
    nome VARCHAR(200) NOT NULL,
    ano INT NOT NULL,
    PRIMARY KEY (id)
);

CREATE TABLE figurinha (
    id INT NOT NULL AUTO_INCREMENT,
    album_id INT,
    numero INT NOT NULL,
    especial BIT,
    PRIMARY KEY (id),
    FOREIGN KEY (album_id) REFERENCES album (id)
);

Primeiro criamos um novo banco de dados chamado album_de_figurinhas, selecionamos ele com o comando USE e depois criamos as nossas duas tabelas.

Inserindo Dados

Para inserir registros nas tabelas usamos o comando INSERT, vamos entendê-lo:

INSERT INTO nome_da_tabela (colunas) VALUES (valores);
  • nome_da_tabela: Troque pelo nome da tabela onde vai inserir os registros
  • colunas: Troque por uma lista das colunas que vai preencher
  • valores: Troque por uma lista dos valores que está inserindo

No nosso exemplo vamos criar dois albuns e inserir algumas figurinhas neles (Os números de figurinha que usei são aleatórios, mas se você tem algum dos albuns do exemplo pode usar os números verdadeiros).

INSERT INTO album (nome, ano) VALUES ('Copa do Mundo - Brasil', 2014);
INSERT INTO album (nome, ano) VALUES ('Copa América - Chile', 2015);
INSERT INTO album (nome, ano) VALUES ('UEFA Champions League', 2015);

INSERT INTO figurinha (album_id, numero, especial) VALUES (1, 10, FALSE);
INSERT INTO figurinha (album_id, numero, especial) VALUES (1, 100, TRUE);
INSERT INTO figurinha (album_id, numero, especial) VALUES (1, 57, FALSE);
INSERT INTO figurinha (album_id, numero, especial) VALUES (1, 22, TRUE);
INSERT INTO figurinha (album_id, numero, especial) VALUES (2, 1, FALSE);
INSERT INTO figurinha (album_id, numero, especial) VALUES (2, 15, FALSE);
INSERT INTO figurinha (album_id, numero, especial) VALUES (2, 50, TRUE);
INSERT INTO figurinha (album_id, numero, especial) VALUES (2, 78, FALSE);
INSERT INTO figurinha (album_id, numero, especial) VALUES (NULL, 138, TRUE);

Repare que na hora de inserir as figurinhas usamos os números 1 e 2 para a coluna album_id, isso porque na hora que criamos a tabela album informamos que a coluna id deve ser incrementada automáticamente (auto_increment), assim o MySQL sozinho associa um número em sequência para os novos registros.

Consultas

Para selecionar registros das tabelas usamos o comando SELECT:

SELECT colunas FROM nome_da_tabela;

SELECT colunas FROM nome_da_tabela WHERE condicao;
  • colunas: Troque por uma lista das colunas que quer selecionar, ou use * para selecionar todas
  • nome_da_tabela: Troque pelo nome da tabela onde vai buscar os dados
  • condicao: Troque por uma condição de seleção, para filtrar os resultados

Como exemplo, podemos selecionar todos os albuns que inserimos:

SELECT * FROM album;

Podemos também selecionar todas as figurinhas especiais:

SELECT * FROM figurinha WHERE especial = TRUE;

Atualizando

Para atualizar registros das tabelas usamos o comando UPDATE:

UPDATE nome_da_tabela SET coluna = valor;

UPDATE nome_da_tabela SET coluna = valor WHERE condicao;
  • nome_da_tabela: Troque pelo nome da tabela onde vai buscar os dados
  • coluna: Troque pelo nome da coluna que vai atualizar
  • valor: Troque pelo novo valor para a coluna
  • condicao: Troque por uma condição de seleção, caso contrário todos os registros serão atualizados

Podemos alterar a figurinha número 1 para especial, por exemplo:

UPDATE figurinha SET especial = TRUE WHERE numero = 1;

Excluindo

Para excluir registros das tabelas usamos o comando DELETE:

DELETE FROM nome_da_tabela;

DELETE FROM nome_da_tabela WHERE condicao;
  • nome_da_tabela: Troque pelo nome da tabela onde vai buscar os dados
  • condicao: Troque por uma condição de seleção, caso contrário todos os registros da tabela serão excluídos

Podemos remover a figurinha número 78:

DELETE FROM figurinha WHERE numero = 78;

##Comandos SQL Mais Avançados

Consultas Avançadas

Vamos complicar um pouquinho os comandos, com SQL é possível:

  • Selecionar apenas alguns resultados
  • Ordernar os resultados selecionados
  • Unir tabelas numa consulta

LIMIT

Para limitar a quantidade de resultados adicionamos o LIMIT no comando SELECT, no exemplo, vamos selecionar apenas 3 figurinhas:

SELECT * FROM figurinha LIMIT 3;

ORDER BY

Para ordernar os resultados do comando SELECT usamos o ORDER BY, vamos ordenar as figurinhas pelo número:

SELECT * FROM figurinha ORDER BY numero;

###Combinação de tabelas na consulta

A maior vantagem dos bancos de dados relacionais é a capacidade de combinar várias tabelas relacionadas em uma única consulta, aqui aplicamos os conceitos da teoria dos conjuntos que vimos a pouco, vamos entender a sintaxe:

SELECT colunas FROM nome_da_tabela JOIN nome_da_outra_tabela ON condicao_de_uniao;
  • colunas: Como na seleção comum troque pelas colunas que quer selecionar, das duas tabelas
  • nome_da_tabela: Troque pelo nome da primeira tabela na seleção
  • nome_da_outra_tabela: Troque pelo nome da segunda tabela na seleção
  • condicao_de_uniao: Troque pela condição de união das duas tabelas, que define quando os registros combinam

Existem três tipos de combinações que podemos fazer:

  • INNER JOIN: Selecionamos apenas o sub conjunto onde os registros combinam nas duas tabelas, no exemplo vamos combinar os albuns e figurinhas em uma consulta
SELECT * FROM album INNER JOIN figurinha ON figurinha.album_id = album.id;
  • LEFT JOIN: Selecionamos todos os registros da primeira tabela e os que combinam da segunda, por exemplo podemos selecionar todos os albuns e apenas as figurinhas que combinam
SELECT * FROM album LEFT JOIN figurinha ON figurinha.album_id = album.id WHERE album.id = 1;
  • RIGHT JOIN: Selecionamos todos os registros da segunda tabela e apenas os que combinam da primeira, neste exemplo vamos selecionar todas as figurinhas e apenas os albuns que combinam
SELECT * FROM album RIGHT JOIN figurinha ON figurinha.album_id = album.id WHERE figurinha.especial = TRUE;

##O Futuro dos Bancos de Dados

Futuro

Atualmente existem outras alternativas para o modelo relacional com comandos SQL, é um modelo muito poderos mas ainda possui algumas restrições, principalmente para novos tipos de aplicações modernas que precisam de cada vez mais desempenho.

Essas alternativas são conhecidas como bancos de dados não relacionais, ou NoSQL. Em breve vou falar mais sobre esses novos bancos que já estão mudando o gerenciamento e armazenamento de dados, conheça alguns exemplos:

  • MongoDB: Um banco de dados orientado a documentos no formato JSON
  • Redis: Um banco de dados de chave-valor
  • Cassandra: Um híbrido entre chave-valor e colunas

#Continue Aprendendo

Nesse artigo tentei te mostrar um pouco dos conceitos de banco de dados com exemplos práticos usando o MySQL, foi apenas uma pincelada no imenso universo dos bancos de dados, você tem muito mais a explorar ainda, veja algumas referências para você continuar seu aprendizado:

  • Centro do Desenvolvedor MySQL: O centro oficial do MySQL para desenvolvedores, possui uma documentação completa, fóruns para tirar dúvidas e ferramentas para desenvolver com MySQL
  • MySQL - Guia do Programador (AD): Esse guia traz exemplos práticos desde o mais básico até o mais avançado do MySQL, um livro para acompanhar a carreira de um novo DBA.
  • Curso Completo de MySQL: A Devmedia possui esse curso com aulas online e gratuitas para iniciantes no mundo dos bancos de dados.
  • Se ficou curioso veja mais sobre a Teoria dos Conjuntos.

Continue explorando e aprendendo, se ficou com alguma dúvida, se encontrou algum erro meu ou se quer apenas conversar deixe o seu comentário abaixo. Se gostou compartilhe para os seus amigos e deixe o seu e-mail no formulário abaixo para receber mais artigos sobre desenvolvimento, aprendizado e produtividade.

Nos vemos em breve, um grande abraço!

comments powered by Disqus