curso
Tutorial do MySQL: Um guia abrangente para iniciantes
Os dados constituem a base de nossa sociedade cada vez mais digital. De aplicativos móveis e sistemas bancários a mecanismos de pesquisa e chatbots de IA de última geração, como o ChatGPT, nenhuma dessas ferramentas seria possível sem dados. Você já se perguntou onde todos esses dados são armazenados? Você adivinhou: bancos de dados.
Um banco de dados é uma coleção organizada de dados estruturados, normalmente armazenados em um sistema de computador. Uma grande parte dos dados em todo o mundo é armazenada em bancos de dados relacionais.
Neste tutorial, vamos nos concentrar no MySQL, um sistema popular de gerenciamento de banco de dados relacional (RDBMS). Apoiado pela Oracle, o MySQL é um banco de dados de código aberto, confiável, escalável e fácil de usar, utilizado por algumas das empresas mais importantes do setor de tecnologia, incluindo Meta, Netflix e Airbnb.
Depois de ler este artigo, você estará pronto para começar a usar essa ferramenta popular e bem estabelecida, desde a instalação no seu computador e a criação de bancos de dados até a realização de consultas SQL básicas e operações mais avançadas. Pronto para o desafio? Vamos começar!
Pré-requisitos e conceitos básicos
Há muitos tipos de bancos de dados, sendo que cada um deles é adequado para armazenar diferentes tipos de dados. Nos últimos anos, novos tipos de bancos de dados foram desenvolvidos para atender à crescente diversidade de formatos de dados. Apesar do surgimento dos chamados bancos de dados NoSQL, os bancos de dados relacionais ainda são os mais populares.
Os bancos de dados relacionais são projetados para armazenar dados como coleções de tabelas predefinidas com linhas e colunas conectadas por meio de um ou mais relacionamentos.
A maneira padrão de criar, gerenciar e se comunicar com bancos de dados é a SQL (Structured Query Language, Linguagem de Consulta Estruturada). O SQL é o bloco de construção de alguns dos mais populares no mercado, incluindo PostgreSQL, SQLite e MySQL.
Para seguir este tutorial, recomendamos um conhecimento básico de SQL. Uma ótima maneira de começar é o nosso Curso de Introdução ao SQL. Você também precisará do MySQL em seu computador, portanto, vamos abordar como instalar o MySQL.
Configuração do MySQL
A instalação da ferramenta é um processo simples. Basta fazer o download do instalador correto no site oficial, dependendo do sistema operacional do seu computador, seja macOS, Windows ou Linux.
Instalação no macOS
Depois de fazer o download do instalador do pacote MySQL, siga as instruções do assistente do instalador. Você pode seguir a instalação padrão, embora também possa personalizar os componentes a serem instalados clicando no botão "Customize" (Personalizar).
Assistente do instalador do pacote MySQL: Personalizar. Fonte: MySQL
Após a instalação bem-sucedida do novo servidor MySQL, conclua as etapas de configuração escolhendo o tipo de criptografia padrão para senhas, definindo a senha da raiz e ativando (ou desativando) o servidor MySQL na inicialização.
Ao instalar usando o instalador de pacotes, os arquivos são instalados em um diretório em /usr/local que corresponde ao nome da versão e da plataforma de instalação.
Instalação no Windows
A instalação do MySQL no Windows é bastante simples. O método recomendado é fazer o download do Windows Installer e permitir que ele instale e configure uma versão específica do MySQL. Se você usar a instalação padrão, o Windows iniciará automaticamente o MySQL como um host local.
Instalação no Linux
O Linux oferece suporte a várias soluções diferentes para a instalação do MySQL. O MySQL recomenda que você use uma das distribuições da Oracle, para a qual vários métodos de instalação estão disponíveis, como você pode encontrar na documentação.
Entendendo o MySQL
Antes de começar a usar o MySQL, vale a pena analisar como o MySQL funciona. Vamos analisar alguns de seus principais conceitos.
Arquitetura do MySQL
Como muitos outros bancos de dados relacionais populares, o MySQL foi projetado como uma arquitetura cliente-servidor.
Nesse modelo de computação, um servidor é projetado para hospedar dados, gerenciar a permissão e as configurações do banco de dados e lidar com a maioria dos recursos e serviços solicitados pelo cliente.
Nas arquiteturas cliente-servidor mais comuns, há um servidor centralizado e vários clientes. Qualquer computador pode ser um servidor se estiver configurado para fornecer um serviço. No entanto, os servidores geralmente são máquinas muito potentes e grandes, pois estão mais bem equipados para lidar com um grande volume de solicitações e dados.
Por outro lado, os clientes podem estar localizados em qualquer tipo de computador.
Arquitetura cliente-servidor. Fonte: DataCamp
No MySQL, esses dois componentes são o cliente MySQL e o servidor MySQL.
Tipos de dados
Os tipos de dados são usados para determinar os valores que uma coluna pode conter. Ele funciona como um tipo de metadados que ajuda o SQL a entender que tipo de dados esperar em cada coluna e como processar consultas em uma coluna específica.
O MySQL suporta tipos de dados SQL regulares em três categorias principais:
- Tipos numéricos
- Tipos de string
- Tipos de data e hora
Nas tabelas a seguir, você pode encontrar uma visão geral dos principais tipos de dados no MySQL.
Tipos de dados numéricos
Tipo de dados |
Descrição |
TINYINT |
Um número inteiro muito pequeno. |
SMALLINT |
Um número inteiro pequeno. |
MEDIUMINT |
Um número inteiro de tamanho médio. |
INT ou INTEGER |
Um número inteiro padrão. |
BIGINT |
Um número inteiro grande. |
FLOAT |
Um número de ponto flutuante. |
DUPLO |
Um número de ponto flutuante de precisão dupla. |
DECIMAL ou NUMÉRICO |
Um número de ponto fixo. |
Tipos de dados de data e hora
Tipo de dados |
Descrição |
DATA |
Um valor de data no formato AAAA-MM-DD. |
TEMPO |
Um valor de hora no formato HH:MM:SS. |
DATA |
Um valor de data e hora no formato AAAA-MM-DD HH:MM:SS. |
TIMESTAMP |
Um valor de registro de data e hora no formato AAAA-MM-DD HH:MM:SS. |
ANO |
Um valor de ano no formato YYYY ou YYY. |
Tipos de dados String
Tipo de dados |
Descrição |
CHAR |
Uma cadeia de caracteres de comprimento fixo. |
VARCHAR |
Uma cadeia de caracteres de comprimento variável. |
TINYTEXT |
Uma string de texto muito pequena. |
TEXTO |
Uma pequena cadeia de texto. |
MEDIUMTEXT |
Uma cadeia de texto de tamanho médio. |
LONGTEXT |
Uma cadeia de texto grande. |
ENUM |
Um objeto de cadeia de caracteres que pode ter apenas um valor, escolhido em uma lista de valores predefinidos. |
SET |
Um objeto de cadeia de caracteres que pode ter zero ou mais valores, escolhidos em uma lista de valores predefinidos. |
Acesso ao MySQL
Depois de instalar o MySQL em seu computador, você pode começar a usá-lo no terminal. Para iniciar o MySQL, você pode acessá-lo com seu nome de usuário e a senha associada. Nesse caso, acessaremos o MySQL com a conta root, juntamente com a senha root que definimos durante a instalação. Como estamos fazendo login na mesma máquina em que o MySQL está sendo executado, não precisamos fornecer informações no parâmetro host (-h):
> mysql -uroot -p
Se quiser adicionar novos usuários, digite:
> CREATE USER 'username' IDENTIFIED BY 'password';
Depois de criar um novo usuário, você pode entrar no MySQL usando esse comando e uma mensagem de boas-vindas será exibida, seguida de um prompt mysql>:
> mysql -u username -p
Welcome to the MySQL monitor. Commands end with; or \g.
Your MySQL connection id is 25
Server version: 8.1.0 MySQL Community Server - GPL
Copyright (c) 2000, 2023, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
Owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Como criar um banco de dados MySQL
Criação de um banco de dados
É hora de criar seu primeiro banco de dados no MySQL. Para este tutorial, queremos criar um banco de dados chamado "datacamp_courses", que conterá informações sobre alguns cursos do DataCamp. O banco de dados é hospedado localmente.
Para criar um banco de dados, use o seguinte comando:
mysql> CREATE DATABASE datacamp_courses;
Para verificar se o banco de dados foi criado, digite o seguinte e será exibida uma tabela com todos os bancos de dados disponíveis:
mysql> SHOW databases;
+--------------------+
| Database |
+--------------------+
| datacamp_courses |
| mysql |
+--------------------+
5 rows in set (0,00 sec)
Agora você está pronto para acessar seu novo banco de dados.
mysql> USE datacamp_courses;
Database changed
Criação de uma tabela
Até agora, você criou seu primeiro banco de dados. Mas ainda está vazio. Agora, vamos criar a primeira tabela do banco de dados. Queremos criar uma tabela chamada "courses" (cursos), com informações sobre vários cursos disponíveis no catálogo de cursos da DataCamp.
É hora de criar sua primeira tabela no banco de dados "datacamp_courses". Queremos criar uma tabela com informações sobre alguns dos cursos do catálogo de cursos da DataCamp.
A chave primária da tabela deve ser course_id (observe que somente essa chave está em negrito) e seu tipo de dados deve ser um número inteiro. Uma chave primária é uma restrição que impõe que os valores da coluna sejam não nulos e exclusivos. Ele permite que você identifique de forma exclusiva uma instância específica ou um conjunto de instâncias presentes na tabela.
As colunas restantes fornecem informações sobre o nome do curso, o instrutor do curso, o tópico do curso e o URL.
Para criar a primeira tabela do banco de dados "datatacamp_courses", use o seguinte comando:
mysql> CREATE TABLE courses (
course_id int NOT NULL,
course_name varchar(250) NOT NULL,
instructor_name varchar(250) NOT NULL,
technology varchar(50) NOT NULL,
topic varchar(50) NOT NULL,
PRIMARY KEY (course_id)
);
Consultas SQL básicas
Você tem seu primeiro banco de dados e sua primeira tabela. Excelente! Agora é hora de adicionar alguns dados à tabela.
Vamos adicionar algumas linhas com alguns cursos populares disponíveis em nosso catálogo com a instrução INSERT. O código a seguir fará a mágica.
INSERT INTO
courses (course_id, course_name, instructor_name, technology, topic) VALUES
(1, 'Introduction to SQL', 'Izzy Weber', 'SQL','Data Manipulation'),
(2, 'Database Design', 'Lis Sulmont', 'SQL', 'Data Engineering'),
(3, 'Data Manipulation with pandas', 'Richie Cotton', 'R','Programming'),
(4, 'Generative AI Concepts', 'Daniel Tedesco', 'Theory', 'AI & Machine Learning');
Para verificar se as linhas foram adicionadas corretamente, vamos visualizar todas as linhas da tabela com o comando SELECT:
SELECT * FROM courses;
+-----------+-------------------------------+-----------------+------------+-----------------------+
| course_id | course_name | instructor_name | technology | topic |
+-----------+-------------------------------+-----------------+------------+-----------------------+
| 1 | Introduction to SQL | Izzy Weber | SQL | Data Manipulation |
| 2 | Database Design | Lis Sulmont | SQL | Data Engineering |
| 3 | Data Manipulation with pandas | Richie Cotton | R | Programming |
| 4 | Generative AI Concepts | Daniel Tedesco | Theory | AI & Machine Learning |
+-----------+-------------------------------+-----------------+------------+-----------------------+
4 rows in set (0,00 sec)
Você deve ter notado que há um erro nos dados que acabamos de adicionar. A tecnologia do curso Manipulação de dados com pandas é Python, nem R. Vamos corrigir o erro com a instrução UPDATE junto com a cláusula WHERE para especificar a linha a ser atualizada
UPDATE courses SET technology = 'Python' WHERE course_id = 3;
SELECT * FROM courses;
+-----------+-------------------------------+-----------------+------------+-----------------------+
| course_id | course_name | instructor_name | technology | topic |
+-----------+-------------------------------+-----------------+------------+-----------------------+
| 1 | Introduction to SQL | Izzy Weber | SQL | Data Manipulation |
| 2 | Database Design | Lis Sulmont | SQL | Data Engineering |
| 3 | Data Manipulation with pandas | Richie Cotton | Python | Programming |
| 4 | Generative AI Concepts | Daniel Tedesco | Theory | AI & Machine Learning |
+-----------+-------------------------------+-----------------+------------+-----------------------+
4 rows in set (0,00 sec)
Por fim, talvez você queira excluir um dos registros da tabela. Por exemplo, vamos excluir o curso Generative AI Concepts:
DELETE from courses WHERE course_name = 'Generative AI Concepts';
SELECT * FROM courses;
+-----------+-------------------------------+-----------------+------------+-------------------+
| course_id | course_name | instructor_name | technology | topic |
+-----------+-------------------------------+-----------------+------------+-------------------+
| 1 | Introduction to SQL | Izzy Weber | SQL | Data Manipulation |
| 2 | Database Design | Lis Sulmont | SQL | Data Engineering |
| 3 | Data Manipulation with pandas | Richie Cotton | Python | Programming |
+-----------+-------------------------------+-----------------+------------+-------------------+
3 rows in set (0,00 sec)
Tópicos avançados
Indexação
Por padrão, quando o MySQL precisar encontrar algumas linhas, ele começará a partir da primeira e lerá da cabeça para a cauda. Esse comportamento pode ser problemático quando seus bancos de dados têm milhões de linhas, pois o processo pode ser muito lento.
Uma ótima maneira de acelerar a forma como o MySQL procura as linhas em suas tabelas é criar um índice. Um índice de um componente de suas tabelas que o MySQL usa para recuperar linhas com colunas específicas mais rapidamente.
Vamos criar um índice em nossa tabela de cursos chamado "idx_course" na coluna "course_id".
CREATE INDEX idx_course
ON courses (course_id);
Une-se
Até o momento, trabalhamos apenas com a tabela de cursos. Mas você só começa a aproveitar todo o potencial dos bancos de dados relacionais, como o MySQL, quando trabalha com várias tabelas ao mesmo tempo.
A ferramenta mágica para combinar várias tabelas é a operação JOIN. Imagine que temos uma segunda tabela em nosso banco de dados chamada "instructors" (instrutores) que contém informações básicas sobre os instrutores do curso DataCamp. O script a seguir cria a tabela e adiciona algumas linhas (fictícias):
mysql> CREATE TABLE instructors (
instructor_id int NOT NULL,
instructor_name varchar(250) NOT NULL,
role varchar(500) NOT NULL,
number_courses int NOT NULL,
PRIMARY KEY (instructor_id)
);
INSERT INTO
instructors (instructor_id, instructor_name, role, number_courses) VALUES
(1, 'Lis Sulmont', 'Data Scientist', 4),
(2, 'Daniel Tedesco', 'Business Analyst', 1),
(3, 'Richie Cotton', 'Data Evangelist',5),
(4, 'Izzy Weber', 'Data Engineer', 2),
(5, 'James Chapman', 'Data Analyst',3);
Imagine que você queira mesclar as duas tabelas para obter as informações dos cursos, bem como os dados associados ao instrutor. Usaremos um INNER JOIN para obter apenas as informações dos cursos que aparecem na tabela de cursos. A coluna comum para fazer a união é "instructor_name".
mysql> SELECT * FROM courses
-> INNER JOIN instructors
-> ON courses.instructor_name = instructors.instructor_name;
+-----------+-------------------------------+-----------------+------------+-------------------+---------------+-----------------+-----------------+----------------+
| course_id | course_name | instructor_name | technology | topic | instructor_id | instructor_name | role | number_courses |
+-----------+-------------------------------+-----------------+------------+-------------------+---------------+-----------------+-----------------+----------------+
| 2 | Database Design | Lis Sulmont | SQL | Data Engineering | 1 | Lis Sulmont | Data Scientist | 4 |
| 3 | Data Manipulation with pandas | Richie Cotton | Python | Programming | 3 | Richie Cotton | Data Evangelist | 5 |
| 1 | Introduction to SQL | Izzy Weber | SQL | Data Manipulation | 4 | Izzy Weber | Data Engineer | 2 |
+-----------+-------------------------------+-----------------+------------+-------------------+---------------+-----------------+-----------------+----------------+
3 rows in set (0,00 sec)
Esse é apenas um tipo de união, mas há outros que são igualmente úteis, dependendo do seu caso de uso. Nosso curso Joining Data in SQL e a folha de dicas sobre JOINS o ajudarão a começar.
Práticas recomendadas do MySQL
Medidas de segurança
Os bancos de dados modernos podem armazenar tabelas com milhões de linhas. Com tantos dados e aplicativos baseados neles, manter esses dados seguros é vital.
Os bancos de dados estão sujeitos a riscos comuns, incluindo o mau gerenciamento do acesso ao banco de dados, senhas fracas e injeções de SQL. Para lidar com essas ameaças e pontos fracos, várias estratégias e medidas podem ser implementadas, incluindo a configuração de privilégios de acesso dependendo do usuário, a criação de acionadores em servidores SQL e a implementação de metodologias de criptografia. Um ótimo lugar para começar a trabalhar com segurança SQL é o nosso Curso de Design de Banco de Dados.
Otimização de desempenho
À medida que avança em sua jornada de codificação SQL, você começará a perceber a importância do desempenho. Uma consulta SQL pode ser escrita de diferentes maneiras. Todos eles funcionam, mas alguns são mais eficientes do que outros.
Há muitas estratégias e truques que podem ajudá-lo a melhorar o desempenho do seu código SQL, incluindo subconsultas e cláusulas SQL, como WHERE, HAVING e DISTINCT.
Mas a eficiência não é apenas uma questão técnica; é também uma questão de ordem e legibilidade. Com pequenas mudanças na maneira de escrever SQL, como o uso de aliases e comentários, você pode fazer uma grande diferença que ajudará você e o restante da sua equipe.
Deseja saber mais sobre a otimização do desempenho do SQL? Confira nosso curso Melhorando o desempenho da consulta no SQL Server
Conclusão
Parabéns por ter chegado ao final deste tutorial do MySQL. Esperamos que você tenha gostado desta introdução ao MySQL e seus recursos. Se você estiver interessado em gerenciamento de banco de dados, aprender o MySQL é uma atitude inteligente.
Mas esse é apenas o começo de sua jornada. Se você quiser saber mais sobre o MySQL e o SQL em geral, o Datacamp o ajudará. Aqui estão alguns recursos para ajudá-lo a começar:
Comece sua jornada SQL hoje mesmo!
curso
Intermediate SQL
curso
Exploratory Data Analysis in SQL
blog
SQL Server, PostgreSQL, MySQL... qual é a diferença? Por onde devo começar?
blog
O que é um banco de dados gráfico? Um guia para iniciantes
tutorial
Tutorial de visão geral do banco de dados SQL
DataCamp Team
3 min
tutorial
Exemplos e tutoriais de consultas SQL
tutorial
Tutorial do SQL Server: Desbloqueie o poder do gerenciamento de dados
Kevin Babitz
13 min
tutorial
Introdução aos acionadores SQL: Um guia para desenvolvedores
Oluseye Jeremiah
13 min