SQL

Primeiros passos com MySQL

No artigo anterior vimos os principais comandos SQL (DQL, DDL e DML).

Neste artigo estaremos utilizando os comandos abordados no artigo anterior para criarmos o nosso primeiro banco de dados MySQL utilizando o terminal.

Entenda o que é SQL

SQL ou Structured Query Language (Linguagem de Consulta Estruturada) é uma linguagem padrão de gerenciamento de dados que interage com os principais bancos de dados baseados no modelo relacional. Alguns dos principais sistemas que utilizam SQL são: Oracle, PostgreSQL, Firebird, MySQL, entre outros.

Sendo assim, utilizando a linguagem SQL, os desenvolvedores podem ter uma comunicação com o banco de dados de maneira simples e ágil a partir dos seus comandos.

MySQL - Desenvolvedor
Curso de MySQL - Desenvolvedor
CONHEÇA O CURSO

Agora, você precisa entender o que é o MySQL

MySQL é um sistema de gerenciamento de banco de dados (SGBD) que utiliza a linguagem SQL como interface.

Lançado sobre a licença GPL, possui como desenvolvedor a Oracle Corporation. É multiplataforma, ou seja, possui suporte para diferentes sistemas operacionais (Windows, Linux e Mac).

É, sem dúvidas, o SGBD mais popular do mundo, tendo como clientes grandes empresas como: Google, PayPal, Cisco, NetFlix, Uber, GitHub, entre outras.

Vantagens do MySQL

O MySQL possui diversas vantagens, fazendo com que este seja um dos principais SGBDs do mercado. Dentre estas vantagens, podemos citar:

  • É gratuito;
  • Open source;
  • Como já dissemos acima, é multiplataforma;
  • Possui uma comunidade ativa;
  • Pode ser utilizado em qualquer tipo de aplicação (das mais simples às mais robustas);
  • Facilidade de programação e aprendizado.

Instalando o MySQL

Agora já estamos prontos para iniciarmos o nosso primeiro banco de dados.

O primeiro passo é baixarmos o MySQL em nossa máquina. Para isso, acessamos o site do MySQL e realizaremos o seu download.

Ao acessar o link acima, o site reconhecerá o sistema operacional que você está utilizando, te dando a opção do download para o mesmo. Como estou utilizando o Windows, estarei realizando os passos a partir deste sistema operacional, mas lembramos que os passos são basicamente os mesmos para qualquer SO que você esteja utilizando.

A sua instalação segue o padrão das demais “Next”, se atentando apenas a alguns passos durante a mesma, como: Aceitar os termos de uso, informar o tipo de instalação, método de autenticação, criar sua senha do Root, aplicar as configurações e “Finish”. O banco de dados estará pronto para o uso! 🙂

Após a instalação, vamos começar?

Agora, abriremos seu CLI (Interface de linha de comando).

Logo de início, será necessário digitar a senha root definida no passo anterior (de instalação).

Pronto!

Após inserirmos a senha, nosso CLI estará pronto para utilizarmos os comandos SQL para criarmos o nosso banco de dados.

Desta forma, digitamos o seguinte comando:

CREATE DATABASE nome_do_banco;

Após criar o banco de dados, precisamos informar ao MySQL que este será utilizado. Para isso utilizamos o seguinte comando:

USE nome_do_banco;

Pronto!

Já criamos o nosso banco de dados e agora já estaremos prontos para o utilizarmos na criação da nossa primeira tabela.

Para isso, usaremos o comando abaixo:

CREATE TABLE usuario (id INT, nome VARCHAR (255), PRIMARY KEY(id));

Esta tabela terá dois campos, conforme podemos visualizar acima, que será o ID do usuário e seu nome.

Para que cada registro possua um identificador único no banco de dados, precisamos determinar que o ID da tabela usuário será uma PRIMARY KEY. Desta forma, não haverão usuários cadastrado no banco de dados com o mesmo ID.

Possuímos diversos tipos de dados no SQL, e eles podem ser:

  • Dados Strings: char, varchar, text, entre outros;
  • Dados numéricos: bit, smallint, int, float, entre outros;
  • Dados data: datetime, date, time, year, entre outros.

Neste exemplo utilizamos o INT, onde não é necessário declarar seu tamanho, já que o mesmo possui o tamanho fixo de 4 bytes e o VARCHAR de 255 caracteres.

Depois da criação da tabela, podemos inserir dados. Para isso utilizamos o comando abaixo:

INSERT INTO usuario (id, nome) VALUES (1, ‘Maria’);

Este comando irá inserir o registro com id = 1 e o nome = ‘Maria’. Perceba que dados do tipo VARCHAR, como o nome da tabela usuario, deverá ser inserido com uso de aspas simples.

  • Lembrando que podemos criar quantos usuários quisermos utilizando o comando descrito acima, conforme podemos ver na imagem abaixo:

Após inserirmos os usuários na tabela, utilizamos o comando SELECT para listar os usuários do banco de dados.

Para isso, executamos o seguinte comando:

SELECT * FROM usuario;

O asterisco * representa que serão listados todos os dados pertencentes a esta tabela. Já o FROM será referente ao nome da tabela que os dados serão buscados.

Após utilizarmos o comando SELECT para trazer todos os usuários existentes na tabela, utilizaremos o comando UPDATE para alterarmos, por exemplo, o nome de um dos nossos usuários.

Desta forma, utilizaremos o seguinte comando:

UPDATE usuario SET nome = ‘Maria Silva’ WHERE id =1;

Ou seja, estaremos inserindo o sobrenome Silva ao nome Maria. O comando SET quer dizer justamente isso, “setar” o sobrenome ao usuário de id=1. É necessário inserirmos o “WHERE id=1”, pois haverá alteração somente no usuário de “Maria”.

Após utilizarmos o comando UPDATE acima, usaremos o comando DELETE para deletar um dos usuários da tabela. Desta forma, o comando utilizado será:

DELETE FROM usuario WHERE id =3;

Com isso, estaremos excluindo o usuário de id=3 que corresponde ao usuário de nome “Pedro”.

No comando a seguir, estaremos inserindo uma nova tabela em nosso banco de dados, e dessa vez, o comando responsável por essa alteração será o ALTER TABLE:

ALTER TABLE usuario ADD idade INT AFTER nome;

Ou seja, estaremos alterando a tabela de usuário, adicionando (ADD) o registro “idade” de dado inteiro (INT) após o registro nome.

Conforme podemos observar na imagem abaixo, os dados serão apresentados como NULL (nulo) até inserirmos novos dados a este registro.

Desta forma, podemos utilizar o comando abaixo para inserir as idades correspondentes aos nossos usuários:

UPDATE usuario SET idade = 50 WHERE id = 1;

Um outro comando muito utilizado é o DROP, responsável por remover tabelas do banco de dados ou o próprio banco de dados, como podemos ver abaixo.

Principais comandos SQL

Neste primeiro artigo abordaremos os principais comandos do SQL: DQL, DLL e DML.

Mas afinal, você sabe o que é SQL?

SQL ou Structured Query Language (Linguagem de Consulta Estruturada) é uma linguagem padrão de gerenciamento de dados que interage com os principais bancos de dados baseados no modelo relacional. Alguns dos principais sistemas que utilizam SQL são: Oracle, PostgreSQL, Firebird, MySQL, entre outros.

Sendo assim, utilizando a linguagem SQL, os desenvolvedores podem ter uma comunicação com o banco de dados de maneira simples e ágil a partir dos seus comandos.

MySQL - Desenvolvedor
Curso de MySQL - Desenvolvedor
CONHEÇA O CURSO

DQL, DDL e DML

DQL, DDL e DML são consideradas subconjuntos da linguagem SQL.

Estes comandos são os que permitem a escrita de códigos que irão criar novas estruturas como tabelas, índices, visões, entre outros, permitindo que dados sejam inseridos ou modificados para consultas posteriores.

Linguagem de Consulta de Dados

DQL ou Data Query Language possui apenas um único comando: O SELECT.

O SELECT é um dos principais comandos utilizados em SQL, pois com ele é possível realizar consultas aos dados que pertencem a uma determinada tabela. É um comando composto de várias opções que permite a elaboração de consultas das mais simples a mais elaboradas.

Um exemplo que podemos fornecer a cerca do uso do SELECT é quando possuímos em nosso banco de dados vários usuários e precisamos listar todos eles de uma só vez. Desta forma utilizaremos o seguinte comando:

SELECT * FROM usuarios;

Ao ser executado, o comando acima irá retornar todos os usuários armazenados no banco de dados.

Linguagem de Definição de dados

DDL ou Data Definition Language (Linguagem de Definição de dados) permite ao usuário definir as novas tabelas e os elementos que serão associados a elas. É responsável pelos comandos de criação e alteração no banco de dados, sendo composto por três comandos: CREATE, ALTER e DROP.

O comando CREATE DATABASE é responsável pela criação de um novo banco de dados vazio, conforme podemos ver abaixo:

CREATE DATABASE banco_teste;

Ao ser executado, estaremos criando o banco de dados chamado “banco_teste”.

Já o comando CREATE TABLE irá criar uma nova tabela. Os bancos de dados relacionais guardam seu dados dentro de tabelas que são divididas em colunas. Desta forma, veremos abaixo a criação de uma tabela de usuário. Ao criar, especificaremos as suas colunas e quais tipos de dados elas irão receber (neste caso, um ID e o nome do usuário).

CREATE TABLE usuario (id INT, nome VARCHAR (255));

O comando ALTER, por sua vez, é o comando utilizado para alterar uma tabela ou um banco de dados já existente.

No exemplo abaixo estaremos adicionando uma nova coluna a nossa tabela de usuário criada acima. Esta nova coluna “idade” será criada após a nossa coluna “nome”, desta forma, usaremos:

ALTER TABLE usuario ADD idade INT AFTER nome;

O comando DROP é utilizado para remoção de uma tabela ou do banco de dados por completo. Desta forma para remover um banco de dados por completo, basta inserirmos o seguinte comando:

DROP DATABASE banco_teste;

Ou excluir uma tabela utilizando o seguinte comando:

DROP TABLE usuario;

Linguagem de Manipulação de Dados

O DML ou Data Manipulation Language (Linguagem de Manipulação de Dados) interage diretamente com os dados dentro das tabelas. Possui três comandos para esta manipulação: INSERT, UPDATE e DELETE.

Estas instruções são utilizadas nas consultas e modificações dos dados que estarão armazenados dentro do banco de dados. No comando INSERT estaremos inserindo dados a uma ou mais tabela de um banco de dados. Desta forma, abaixo veremos a sua sintaxe:

INSERT INTO usuario (id, nome, idade) VALUES (1, 'Maria', 50);

O comando acima irá criar o usuário Maria, com idade de 50 anos e ID 1.

O UPDATE é utilizado para atualizar os dados de uma ou mais tabelas.

UPDATE usuario SET nome = 'Maria Silva' WHERE id = 1;

Ao executar o comando acima, estaremos alterando o nome do usuário que possui o ID 1 para “Maria Silva”.

Já o comando DELETE, como seu próprio significado já diz, utilizaremos para excluir os dados de uma ou mais tabela em nosso banco de dados.

DELETE FROM usuario WHERE id = 1

Desta forma, ao executar o comando acima, estaremos excluindo o usuário que possui o ID 1 do nosso banco de dados.

Concluindo

Neste artigo vimos os principais comandos para criação de tabelas e bases de dados, inserção, remoção e edição de registros, além da criação de consultas.

No próximo artigo veremos como colocar em prática estes comandos e criar nosso primeiro banco de dados.

MySQL - Desenvolvedor
Curso de MySQL - Desenvolvedor
CONHEÇA O CURSO

O que é o SQLAlchemy?

Desenvolvido para a linguagem de programação Python, o SQLAlchemy é um framework de mapeamento objeto-relacional SQL (ORM) de código aberto sobre a licença MIT.

Mas afinal, o que é o ORM?

Mapeamento objeto-relacional ou simplesmente ORM é uma técnica de programação que auxilia na conversão de dados entre banco de dados relacionais e linguagens de programação que são orientadas à objetos.

A utilização deste Framework faz com que o programador reduza a programação de acesso ao banco de dados, desta forma, obtendo uma produtividade significativa no desenvolvimento de suas aplicações.

Ou seja, ORM trata-se de um Framework que visa auxiliar na redução da impedância, realizando todas as conversões necessárias entre o modelo relacional e o modelo orientado a objetos de maneira automática, geralmente da seguinte forma:

  • Cada classe é interpretada com uma tabela;
  • Cada linha de uma determinada tabela, junto com seu relacionamento é tratada como instância do objeto relacionado à tabela em questão.

Sua utilização também visa retirar a necessidade do desenvolvedor de software em se preocupar com a linguagem SQL (geração dos comandos SQL) e com as conversões necessárias entre os diferentes tipos de dados, já que tudo isto fica a cargo do Framework ORM.

Conseguimos utilizar banco de dados relacionais por meio de objetos escritos em Python, não se preocupando em como este BD está funcionando (relações, campos, etc), apenas mapeando sua estrutura.

Python - SQLAlchemy ORM
Curso de Python - SQLAlchemy ORM
CONHEÇA O CURSO

Voltando ao SQLAlchemy…

Lançado em fevereiro de 2006 tendo como autor Michael Bayer, o SQLAlchemy encontra-se na versão 1.3.6 liberada em 21 de julho de 2019. É um Framework multiplataforma que rapidamente se tornou umas das ferramentas de mapeamento objeto-relacional mais utilizada na comunidade Python, linguagem para qual foi desenvolvida.

O SQLAlchemy é um ORM completo, criado com Python para desenvolvedores de aplicativos, que fornece flexibilidade total do SQL, obtendo um conjunto completo de padrões de persistência de nível corporativo bem conhecidos, que são projetados para acesso a banco de dados eficientes e de alto desempenho.

Com ele, o desenvolvedor não necessita se preocupar com a utilização de códigos SQL no desenvolvimento de aplicações, já que todo acesso ao banco de dados é feito utilizando código Python.

Além disso, o SQLAlchemy possui todas as garantias de segurança necessárias para proteger as aplicações de ataques ao seus bancos de dados, garantindo, assim, a criação de aplicativos simples e seguros.

Aqui no blog possuímos um artigo sobre “Principais tipos de ataques a aplicações web”.

Exemplos de consultas com SQLAlchemy

Como dito anteriormente, com o SQLAlchemy não precisamos nos preocupar com a criação de códigos SQL, já que tudo é feito inteiramente utilizando Python tornando, assim, a aplicação mais simples, como podemos ver nos exemplos abaixo:

Consulta de dados:

alldata = session.query(Filme).all()

O código acima pode ser convertido na seguinte instrução SQL:

SELECT * FROM Filme

Inserção de dados:

f1 = Filme("Star Trek", 2009)
session.add(f1)

O código acima pode ser convertido na seguinte instrução SQL:

INSERT INTO Filme (nome, ano) VALUES ("Star Trek", 2009)

Com isso, podemos ver o quão simples e legível se torna nosso código, não misturando comandos SQL com código Python e mantendo a leitura muito mais eficiente.

Para maiores informações sobre sua documentação, download e notícias sobre o SQLAlchemy, basta acessar seu site.

SQL vs NoSQL, qual usar?

Muito se tem falado da utilização de NoSQL. Existem várias comparações de desempenho realizadas entre ele e o SQL, tendo como a velocidade o fator mais importante na decisão de qual banco utilizar. Há muitas opções de bancos de dados NoSQL com diferentes funcionalidades que podem ser muito úteis. Mas como decidir entre um banco de dados relacional e um não-relacional?

Primeiramente vamos falar um pouco sobre cada tecnologia para que possamos conhecê-las ou relembrá-las.

SQL

SQL é a sigla para “Structured Query Language” que significa, traduzindo para o português, “Linguagem de Consulta Estruturada”. Trata-se de uma linguagem de consulta a banco de dados relacionais. Com o SQL, você pode executar vários comandos para criar, alterar, gerenciar, consultar, dentre outras informações no seu banco de dados. Costumamos dizer que bancos SQL seguem uma modelagem relacional, pois estes se baseiam no fato de que todos seus dados sejam guardados em tabelas.

PostgreSQL - Desenvolvedor
Curso de PostgreSQL - Desenvolvedor
CONHEÇA O CURSO

NoSQL

NoSQL (Not Only SQL) é o termo utilizado para banco de dados não relacionais de alto desempenho, onde geralmente não é utilizado o SQL como linguagem de consulta. O NoSQL foi criado para ter uma performance melhor e uma escalabilidade mais horizontal para suprir necessidades onde os bancos relacionais não são eficazes. No geral, temos 4 tipos de bancos de dados NoSQL:

  • Documento – Os dados são armazenados como documentos. Os documentos podem ser descritos como dados no formato de chave-valor, como por exemplo, o padrão JSON. Um exemplo de banco de dados neste formato é o MongoDB;

  • Colunas – Os dados são armazenados em linhas particulares de tabela no disco, podendo suportar várias linhas e colunas. Também permitem sub-colunas. Um banco de dados dessa família, por exemplo, é o Cassandra;

  • Grafos – Os dados são armazenados na forma de grafos (vértices e arestas). O Neo4j é um banco que utiliza grafos;

  • Chave-valor – Esta família de bancos NoSQL é a que aguenta mais carga de dados, pois o conceito dele é que um determinado valor seja acessado através de uma chave identificadora única. Um exemplo é o banco de dados Riak.

Resumindo: o conceito de modelo relacional (SQL) se baseia no fato de que todos os dados sejam guardados em tabelas. Ao modelo não-relacional (NoSQL) não se aplica o conceito de schema: uma chave de valor é que é utilizada para recuperar valores, conjunto de colunas ou documentos.

Quais são as diferenças?

Uma das diferenças nos bancos de dados NoSQL é que toda a informação é agrupada e guardada no mesmo registro. Já no SQL você precisa ter o relacionamento entre várias tabelas para ter a informação, informação esta disposta no modelo entidade e relacionamento.

O SQL tem certa dificuldade em conciliar a demanda por escalabilidade. Quanto a escalabilidade do NoSQL, deve se levar em consideração a modelagem do sistema. Do que adianta termos um sistema super simples e querermos utilizar o NoSQL apenas pela escalabilidade? Todo o ganho de performance seria perdido quando rodássemos a aplicação.

Um ponto forte do SQL é quanto à consistência das informações. Já o NoSQL garante o último valor atualizado, isso se nenhuma atualização for realizada até o momento da consulta.

Quanto à segurança, ambos estão suscetíveis a ataques.

Concluindo

O NoSQL tem muitas vantagens para ser utilizado. Mas não é por isso que devemos utilizá-lo em todas as situações. Em muitos sistemas, você pode (e até deve) usar o modelo relacional. O NoSQL é mais indicado para aqueles sistemas que tenham necessidades maiores de armazenamento e desempenho.

O NoSQL não veio para substituir o SQL, mas sim para oferecer mais uma alternativa de um banco de dados mais flexível no suporte de dados. Sendo assim, você pode usar ambas as soluções para diferentes casos de uso. Por isso, o mais comum em soluções escalares de sucesso é a utilização de uma arquitetura híbrida, aproveitando o melhor dois dois modelos.

MongoDB - Desenvolvedor
Curso de MongoDB - Desenvolvedor
CONHEÇA O CURSO