DEV Community

Erandir Junior
Erandir Junior

Posted on • Edited on

#SQL na unha: banco de dados e primeiros comandos

Atualmente, para quem é desenvolvedor, há inúmeras bibliotecas, sejam elas QueryBuilders ou ORMs que nos auxiliam na manipulação de um banco de dados, livrando-nos de criar consultas na "mão".

E se por um lado ganhamos com a facilidade em manipular os dados, por outro perdemos por não saber como algumas coisas funcionam. Sendo assim, este artigo servirá para que possamos aprender a manipular um banco, e de certa forma, entender o funcionamento por trás das ferramentas ditas anteriormente.

Resumão sobre banco de dados

Acho que definir o que é e para que serve um banco de dados é subestimar o conhecimento de vocês, mas alguns detalhes que acho importante, precisam ser explicados.

É importante saber que existem diferentes bancos, diferentes formas de manuseio, de como os dados são salvos, etc. Para fins de estudo, e por questão de aprendizado, utilizaremos um banco relacional.

Um banco relacional se caracteriza por seus dados estarem armazenados em tabelas, nas quais essas tabelas podem se relacionar entre si.

Além disso, precisamos de alguma ferramenta para gerenciar um banco, desde controlar o acesso até propriamente manipular os dados. E é aí que entra um SBGD, ou Sistema de Gerenciamento de Banco de Dados, na qual como o próprio informa: gerencia um ou mais bancos de dados.

Tendo um SGBD, precisamos informar que queremos executar determinados comandos, e esses comandos são escritos por meio da Structured Query Language ou Linguagem de Consulta Estruturada.

Com o rápido conhecimento informado acima, e com base nas minhas experiências, o SGBD escolhido foi o MySQL. Ele é bem fácil de ser manuseado, poderoso, além de ser muito utilizado no mercado.

Docker e o MySQL

Existem muitas formas de instalar o MySQL em nossa máquina, escolhi via Docker por ser bem prático e para termos uma padronização, caso não tenha o Docker em sua máquina, siga esses passos.

Após realizar a instalação, iremos baixar uma imagem que contenha o MySQL, neste caso baixaremos a última versão do SGBD, e subiremos um container baseado nessa imagem:

docker run --name mysql-dev -e MYSQL_ROOT_PASSWORD=suasenha mysql
Enter fullscreen mode Exit fullscreen mode

Onde "mysql-dev" é o nome do container.
Onde "suasenha" é a senha de acesso ao banco.

Agora precisamos acessar o container, execute o comando abaixo:

docker exec -it mysql-dev bash
Enter fullscreen mode Exit fullscreen mode

Para sair do container, basta executar o seguinte comando:

exit
Enter fullscreen mode Exit fullscreen mode

Para parar ou iniciar determinado container posteriormente, utilize os comandos abaixo:

docker stop mysql-dev # para um container específico

docker start mysql-dev # inicia um container específico
Enter fullscreen mode Exit fullscreen mode

Acessando o MySQL

Cada SGBD disponibiliza seu próprio comando de acesso. O do MySQL é bem simples, digite o seguinte comando:

mysql -u root -p
Enter fullscreen mode Exit fullscreen mode

Será necessário informar a senha que definimos no primeiro comando docker, e pronto, estamos dentro do nosso SGBD.

Importante informar que o "root" do comando acima, é o usuário padrão do MySQL, é possível manipular os usuários e as permissões desses usuários, mas eu não abordarei esse assunto.

Podemos economizar comandos para chegar ao SGBD, ao invés de acessar o container e depois fazer a chamada de acesso, faremos com que a chamada ao container já execute o comando de acesso ao SGBD:

docker exec -it mysql-dev mysql -u root -p
Enter fullscreen mode Exit fullscreen mode

Basta inserir a senha.

Detalhes

Antes de começarmos a executar alguns comandos, é necessário passar algumas informações muito importantes:

  • Um database (banco) é o nosso local de trabalho;
  • O ; é obrigatório ao final de cada instrução;
  • As palavras dos comandos que faremos, podem ser utilizadas tanto em minúsculo como em maiúsculo, fica a seu critério;
  • Cada SGBD contém uma série de palavras reservadas, que não devemos utilizar para identificar algo.

Realizando primeiros comandos

Primeiro vamos saber com qual versão do SGBD estamos lidando:

select version(); -- a versão exibida no momento em que faço este artigo é a 8.0.27
Enter fullscreen mode Exit fullscreen mode

Comentários são feitos por meio do --.

Agora veremos os databases criados e que o nosso usuário tem acesso:

show databases; -- será exibido todos os bancos que o nosso usuário tem acesso, nesse caso alguns são criados pelo próprio SGBD
Enter fullscreen mode Exit fullscreen mode

Para criarmos um banco, basta executar o comando abaixo informando o nome do banco:

create database dev_article;
Enter fullscreen mode Exit fullscreen mode

Se nós executarmos o comando de listagem novamente, o banco que criamos será exibido também.

Para excluir esse database basta executar o comando abaixo informando o nome do banco:

drop database dev_article;
Enter fullscreen mode Exit fullscreen mode

Para evitar colisão entre nomes de tabelas, podemos adicionar uma verificação antes de criar uma tabela:

create database if not exists dev_article; -- um banco só será criado se não existir um banco com o mesmo nome
Enter fullscreen mode Exit fullscreen mode

Para selecionar um banco para manipularmos, rode o seguinte:

use dev_article;
Enter fullscreen mode Exit fullscreen mode

Para sair do MySQL, rode o comando abaixo:

exit;
Enter fullscreen mode Exit fullscreen mode

Importante

Existem diferentes comportamentos e implementações que diferem um SGBD do outro. Por exemplo, se pegarmos o MySQL e compararmos com o PostgreSQL, podemos verificar inúmeras diferenças, nesse caso a primeira que podemos notar é organização do banco.

A imagem abaixo mostra claramente a organização desses bancos. Enquanto no MySQL criamos um ou mais bancos, e dentro definimos nossas tabelas, no PostgreSQL, criamos um ou mais bancos, porém organizamos nossas tabelas em schemes, a grosso modo, é como se dentro do banco tivessem várias pastas, e dentro delas nossas tabelas.

Comparação de organização entre MySQL e PostgreSQL

Encerramento

Existem muitos outros comandos que iremos executar, porém isso fica para a próxima parte, te vejo por lá.

Top comments (2)

Collapse
 
allecosta profile image
Alexandre Costa

Legal seu artigo!

Collapse
 
erandirjunior profile image
Erandir Junior

Pow mano, vlw, muito obrigado. Já fica aqui meu pedido para você dar uma olhadinha nos outros artigos.