Fundamentos de Gerenciamento de Banco de Dados com MySQL

MySQLBeginner
Pratique Agora

Introdução

Neste laboratório, exploraremos os conceitos fundamentais de gerenciamento de banco de dados usando MySQL. Abordaremos a criação e exclusão de bancos de dados, a seleção de bancos de dados e a recuperação de metadados. Essas habilidades são essenciais para qualquer pessoa que trabalhe com bancos de dados, desde iniciantes até desenvolvedores experientes. Ao final deste laboratório, você terá uma base sólida nas operações básicas de banco de dados MySQL.

Objetivos de Aprendizagem

Ao concluir este laboratório, você será capaz de:

  • Criar e excluir bancos de dados usando vários métodos
  • Selecionar e alternar entre bancos de dados
  • Recuperar metadados importantes sobre seu servidor MySQL e bancos de dados
  • Entender a sensibilidade a maiúsculas e minúsculas (case-sensitivity) dos nomes de bancos de dados no MySQL
Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 86%. Recebeu uma taxa de avaliações positivas de 99% dos estudantes.

Criando e Listando Bancos de Dados

Nesta etapa, aprenderemos como criar bancos de dados e listar os existentes usando o cliente de linha de comando MySQL. Esta é uma habilidade fundamental para qualquer administrador de banco de dados ou desenvolvedor.

Primeiro, vamos abrir uma janela de terminal. No ambiente LabEx, você estará usando um sistema Ubuntu Linux. O terminal já deve estar aberto, mas se não estiver, você pode abri-lo clicando no ícone do terminal.

Agora, vamos iniciar o cliente MySQL:

sudo mysql -u root

Na VM LabEx, você não precisa inserir uma senha para o usuário root.

Captura de tela do terminal do cliente MySQL

Depois de entrar no cliente MySQL, você verá um prompt que se parece com isto: MariaDB [(none)]>. Isso indica que você está conectado ao servidor MariaDB (que é um fork do MySQL), mas ainda não selecionou um banco de dados específico.

Listando Bancos de Dados Disponíveis

Vamos começar listando os bancos de dados disponíveis no seu servidor MySQL:

SHOW DATABASES;

Você deve ver uma saída semelhante a esta:

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.000 sec)

Este comando lista todos os bancos de dados atualmente disponíveis no servidor. Vamos detalhar o que são esses bancos de dados padrão:

  • information_schema: Um banco de dados que fornece acesso aos metadados do banco de dados.
  • mysql: O banco de dados do sistema que contém informações de conta de usuário e privilégios.
  • performance_schema: Um banco de dados para monitorar a execução do MySQL Server em um nível baixo.
  • sys: Um banco de dados que fornece um conjunto de objetos para ajudar a interpretar os dados coletados pelo Performance Schema.

Criando um Banco de Dados

Agora, vamos criar um novo banco de dados chamado 'Hello_World'. No MySQL, usamos o comando CREATE DATABASE para isso:

CREATE DATABASE Hello_World;

Após executar este comando, o MySQL responderá com:

Query OK, 1 row affected (0.000 sec)

Isso significa que o banco de dados foi criado com sucesso. Para confirmar, vamos listar os bancos de dados novamente:

SHOW DATABASES;

Você deve agora ver 'Hello_World' na lista:

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| Hello_World        |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.000 sec)

Ótimo! Você acabou de criar seu primeiro banco de dados.

Sensibilidade a Maiúsculas e Minúsculas dos Nomes de Bancos de Dados

Um conceito importante a entender no MySQL é que os nomes dos bancos de dados são case-sensitive (sensíveis a maiúsculas e minúsculas). Isso significa que 'Hello_World' e 'hello_world' são tratados como dois bancos de dados diferentes. Vamos demonstrar isso:

CREATE DATABASE hello_world;
SHOW DATABASES;

Você deve agora ver 'Hello_World' e 'hello_world' na lista:

MariaDB [(none)]> CREATE DATABASE hello_world;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| Hello_World        |
| hello_world        |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.000 sec)

Isso demonstra que 'Hello_World' e 'hello_world' são tratados como dois bancos de dados distintos. Em seus projetos de banco de dados, geralmente é uma boa prática usar convenções de nomenclatura consistentes para evitar confusão. Muitos desenvolvedores preferem usar todas as letras minúsculas para os nomes dos bancos de dados para evitar possíveis problemas de sensibilidade a maiúsculas e minúsculas.

Criando Bancos de Dados Usando mysqladmin

Nesta etapa, exploraremos um método alternativo para criar bancos de dados usando a ferramenta mysqladmin. Esta ferramenta é um utilitário de linha de comando que permite realizar algumas operações administrativas sem entrar no prompt do MySQL.

Primeiro, vamos sair do cliente MySQL. Você pode fazer isso digitando exit ou quit e pressionando Enter:

exit

Agora que voltamos ao prompt de comando regular, vamos usar mysqladmin para criar um novo banco de dados:

mysqladmin -u root -p create hello_world2

Quando solicitado a senha, basta pressionar Enter (lembre-se, na VM LabEx, o usuário root do MySQL não tem uma senha definida).

O comando mysqladmin que acabamos de usar se decompõe assim:

  • -u root: Isso especifica que estamos conectando como o usuário root.
  • -p: Isso diz ao mysqladmin para solicitar uma senha.
  • create: Esta é a operação que estamos realizando.
  • hello_world2: Este é o nome do banco de dados que estamos criando.

Agora, vamos fazer login novamente no cliente MySQL para verificar se nosso novo banco de dados foi criado:

sudo mysql -u root

Depois de entrar no cliente MySQL, liste os bancos de dados:

SHOW DATABASES;

Você deve ver 'hello_world2' na lista:

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| Hello_World        |
| hello_world        |
| hello_world2       |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
7 rows in set (0.000 sec)

A ferramenta mysqladmin fornece uma maneira rápida de criar bancos de dados diretamente da linha de comando, o que pode ser útil para tarefas de script e automação. É particularmente útil quando você precisa criar bancos de dados como parte de um script maior ou processo automatizado.

Excluindo Bancos de Dados

Agora que criamos vários bancos de dados, vamos aprender como removê-los. No gerenciamento de banco de dados, é tão importante saber como remover bancos de dados quanto criá-los. Manteremos apenas o banco de dados 'Hello_World' e removeremos os outros.

Excluindo um Banco de Dados Usando o Cliente MySQL

Faça login no cliente MySQL se você ainda não estiver lá:

sudo mysql -u root

Agora, vamos excluir o banco de dados 'hello_world':

DROP DATABASE hello_world;
SHOW DATABASES;

Você deve ver que 'hello_world' não está mais na lista:

MariaDB [(none)]> DROP DATABASE hello_world;
Query OK, 0 rows affected (0.002 sec)

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| Hello_World        |
| hello_world2       |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
6 rows in set (0.000 sec)

Observação: Tenha extrema cautela ao usar o comando DROP DATABASE. Ele exclui permanentemente o banco de dados e todo o seu conteúdo sem pedir confirmação. Em um ambiente de produção, você normalmente teria proteções e backups em vigor antes de realizar tais operações.

Excluindo um Banco de Dados Usando mysqladmin

Agora, vamos usar mysqladmin para excluir o banco de dados 'hello_world2'. Este método é considerado mais seguro porque solicita confirmação antes de excluir o banco de dados.

Saia do cliente MySQL digitando exit ou quit e, em seguida, execute o seguinte comando em seu terminal:

mysqladmin -u root -p drop hello_world2

Você será solicitado a confirmar a ação:

Enter password:
Dropping the database is potentially a very bad thing to do.
Any data stored in the database will be destroyed.

Do you really want to drop the 'hello_world2' database [y/N] y
Database "hello_world2" dropped

Digite 'y' e pressione Enter para confirmar. Esta etapa de confirmação extra pode ajudar a evitar exclusões acidentais de banco de dados.

Agora, faça login novamente no cliente MySQL e verifique se 'hello_world2' foi removido:

SHOW DATABASES;

Você deve ver:

MariaDB [(none)]> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| Hello_World        |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.000 sec)

Removemos com sucesso nossos bancos de dados extras, deixando apenas os que precisamos.

Selecionando e Usando Bancos de Dados

Agora que criamos e excluímos bancos de dados, vamos aprender como selecionar e usar um banco de dados específico. Esta é uma habilidade crucial, pois a maior parte do seu trabalho no MySQL envolverá a operação dentro de um banco de dados específico.

Selecionando um Banco de Dados

Para selecionar um banco de dados com o qual trabalhar, use o comando USE seguido pelo nome do banco de dados:

USE Hello_World;

Você deve ver:

Database changed

Isso indica que você agora está trabalhando dentro do banco de dados 'Hello_World'. Quaisquer comandos subsequentes que você executar serão executados no contexto deste banco de dados, a menos que você especifique o contrário.

Listando Tabelas em um Banco de Dados

Para ver as tabelas no banco de dados atual, use o comando SHOW TABLES;:

SHOW TABLES;

Como ainda não criamos nenhuma tabela em nosso banco de dados 'Hello_World', você verá:

Empty set (0.00 sec)

Isso é normal para um novo banco de dados. À medida que você cria tabelas, elas aparecerão nesta lista.

Vamos mudar para um banco de dados diferente e listar suas tabelas para ver como isso funciona com um banco de dados preenchido:

USE mysql;
SHOW TABLES;

Você verá uma lista de tabelas no banco de dados do sistema 'mysql':

MariaDB [mysql]> USE mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [mysql]> SHOW TABLES;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| column_stats              |
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| global_priv               |
| gtid_slave_pos            |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| index_stats               |
| innodb_index_stats        |
| innodb_table_stats        |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| roles_mapping             |
| servers                   |
| slow_log                  |
| table_stats               |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| transaction_registry      |
| user                      |
+---------------------------+
31 rows in set (0.001 sec)

Isso demonstra como alternar entre bancos de dados e visualizar seu conteúdo. O banco de dados 'mysql' contém tabelas do sistema que o MySQL usa para gerenciar permissões, contas de usuário e outros dados internos. Em seus próprios aplicativos, você criará e gerenciará suas próprias tabelas dentro de seus bancos de dados personalizados.

Recuperando Metadados do MySQL

Nesta etapa final, exploraremos como recuperar vários tipos de metadados do MySQL. Metadados são "dados sobre dados" - eles fornecem informações sobre o próprio sistema de banco de dados, em vez dos dados armazenados nele. Essas informações podem ser cruciais para entender e gerenciar seu ambiente MySQL.

Versão do Servidor

Para obter a versão do servidor MySQL, use:

SELECT VERSION();

Você verá uma saída semelhante a:

MariaDB [mysql]> SELECT VERSION();
+----------------------------------+
| VERSION()                        |
+----------------------------------+
| 10.6.12-MariaDB-0ubuntu0.22.04.1 |
+----------------------------------+
1 row in set (0.000 sec)

Essas informações são úteis quando você precisa saber quais recursos estão disponíveis em sua versão atual do MySQL ou ao solucionar problemas específicos da versão.

Banco de Dados Atual

Para ver qual banco de dados você está usando atualmente:

SELECT DATABASE();

A saída mostrará o nome do banco de dados atual ou NULL se nenhum banco de dados estiver selecionado:

MariaDB [mysql]> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| mysql      |
+------------+
1 row in set (0.000 sec)

Isso pode ser útil quando você está trabalhando com vários bancos de dados e precisa confirmar em qual você está operando atualmente.

Usuário Atual

Para ver o usuário atual:

SELECT USER();

Você verá uma saída como:

MariaDB [mysql]> SELECT USER();
+----------------+
| USER()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.000 sec)

Isso mostra o usuário MySQL com o qual você está logado e o host do qual você está se conectando. É útil para verificar suas permissões atuais e detalhes da conexão.

Status e Variáveis do Servidor

Para visualizar todos os indicadores de status do servidor:

SHOW STATUS;

Este comando fornece uma grande quantidade de informações sobre o estado atual do servidor MySQL, incluindo vários contadores e estatísticas.

Para visualizar todas as variáveis de configuração do servidor:

SHOW VARIABLES;

Este comando mostra como seu servidor MySQL está configurado, incluindo configurações de uso de memória, limites de conexão e muitos outros parâmetros.

Ambos os comandos produzirão uma saída extensa. Você pode rolar por ela no terminal ou pode filtrar por informações específicas. Por exemplo, para ver variáveis relacionadas ao buffer pool:

SHOW VARIABLES LIKE '%buffer%';

Esses comandos fornecem informações extensas sobre a configuração e o estado atual do seu servidor MySQL. Entender esses metadados pode ser crucial para otimizar o desempenho, solucionar problemas e garantir que seu servidor esteja configurado corretamente para suas necessidades.

Por exemplo, você pode usar SHOW STATUS para verificar o número de consultas que foram executadas:

SHOW STATUS LIKE 'Questions';

Isso pode fornecer uma saída como:

MariaDB [mysql]> SHOW STATUS LIKE 'Questions';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Questions     | 15    |
+---------------+-------+
1 row in set (0.001 sec)

Isso informa quantos comandos foram executados pelo servidor desde que foi iniciado.

Da mesma forma, você pode usar SHOW VARIABLES para verificar configurações importantes, como o tamanho máximo permitido do pacote:

SHOW VARIABLES LIKE 'max_allowed_packet';

O que pode fornecer uma saída como:

MariaDB [mysql]> SHOW VARIABLES LIKE 'max_allowed_packet';
+--------------------+----------+
| Variable_name      | Value    |
+--------------------+----------+
| max_allowed_packet | 16777216 |
+--------------------+----------+
1 row in set (0.001 sec)

Isso mostra o tamanho máximo de um pacote ou qualquer string gerada/intermediária, o que pode ser importante ao trabalhar com grandes quantidades de dados.

Entender como recuperar e interpretar esses metadados é uma habilidade valiosa para qualquer administrador ou desenvolvedor de banco de dados. Ele permite que você obtenha insights sobre o comportamento e o desempenho do seu sistema de banco de dados, o que pode ser crucial para otimização e solução de problemas.

Resumo

Neste laboratório, abordamos aspectos fundamentais do gerenciamento de banco de dados no MySQL:

  1. Criando bancos de dados usando o cliente MySQL e a ferramenta mysqladmin
  2. Listando bancos de dados existentes e entendendo seus propósitos
  3. Compreendendo a sensibilidade a maiúsculas e minúsculas dos nomes de bancos de dados no MySQL
  4. Excluindo bancos de dados com segurança e a importância da cautela ao fazê-lo
  5. Selecionando e alternando entre bancos de dados
  6. Recuperando metadados importantes sobre o servidor MySQL e os bancos de dados

Essas habilidades formam a base do trabalho com bancos de dados MySQL. À medida que você avança em sua jornada de banco de dados, você construirá sobre esses fundamentos para realizar operações de banco de dados e tarefas de gerenciamento mais complexas.