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 o 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
  • Compreender a diferenciação entre maiúsculas e minúsculas (case-sensitivity) nos nomes de bancos de dados no MySQL

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 do 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 do LabEx, você não precisa inserir uma senha para o usuário root.

Captura de tela do terminal do cliente MySQL

Assim que estiver no cliente MySQL, você verá um prompt como este: 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ê deverá 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 sobre contas de usuário e privilégios.
  • performance_schema: Um banco de dados para monitorar a execução do servidor MySQL em baixo nível.
  • 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;

Agora você deve 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.

Diferenciação entre Maiúsculas e Minúsculas (Case-Sensitivity)

Um conceito importante a entender no MySQL é que os nomes dos bancos de dados diferenciam maiúsculas de 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;

Agora você deve ver tanto 'Hello_World' quanto '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 apenas letras minúsculas para nomes de bancos de dados para evitar possíveis problemas de diferenciação entre maiúsculas e minúsculas.

Criando Bancos de Dados Usando o 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 estamos de volta ao prompt de comando normal, vamos usar o mysqladmin para criar um novo banco de dados:

sudo mysqladmin -u root create hello_world2

Nesta VM do LabEx, use sudo com mysqladmin porque a conta de banco de dados root usa autenticação de socket local.

O comando que acabamos de usar funciona da seguinte forma:

  • sudo: Executa o comando com os privilégios de sistema necessários.
  • -u root: Especifica que estamos nos conectando como o usuário root do banco de dados.
  • create: É a operação que estamos realizando.
  • hello_world2: É 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

Assim que estiver 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 oferece 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 ainda não estiver nele:

sudo mysql -u root

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

DROP DATABASE hello_world;
SHOW DATABASES;

Você 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)

Nota: Seja extremamente cauteloso 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 salvaguardas e backups em vigor antes de realizar tais operações.

Excluindo um Banco de Dados Usando o mysqladmin

Agora, vamos usar o 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, depois execute o seguinte comando no seu terminal:

sudo mysqladmin -u root drop hello_world2

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

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 bancos 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)

Limpamos 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, já que a maior parte do seu trabalho no MySQL envolverá operar 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 alternar para um banco de dados diferente e listar suas tabelas para ver como isso funciona com um banco de dados populado:

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 suas próprias aplicações, 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 na sua versão atual do MySQL ou ao solucionar problemas específicos de 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 deles 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 de onde você está se conectando. É útil para verificar suas permissões atuais e detalhes de conexão.

Status e Variáveis do Servidor

Para visualizar todos os indicadores de status do servidor:

SHOW STATUS;

Este comando fornece uma riqueza 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 para uso de memória, limites de conexão e muitos outros parâmetros.

Ambos os comandos produzirão uma saída extensa. Você pode percorrê-la no terminal ou 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 lhe dar uma saída como:

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

Isso informa quantas instruções foram executadas pelo servidor desde que ele foi iniciado.

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

SHOW VARIABLES LIKE 'max_allowed_packet';

O que pode dar 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 de banco de dados ou desenvolvedor. Isso 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, cobrimos aspectos fundamentais do gerenciamento de banco de dados no MySQL:

  1. Criação de bancos de dados usando o cliente MySQL e a ferramenta mysqladmin
  2. Listagem de bancos de dados existentes e compreensão de seus propósitos
  3. Compreensão da diferenciação entre maiúsculas e minúsculas nos nomes de bancos de dados no MySQL
  4. Exclusão segura de bancos de dados e a importância da cautela ao fazê-lo
  5. Seleção e alternância entre bancos de dados
  6. Recuperação de metadados importantes sobre o servidor MySQL e bancos de dados

Essas habilidades formam a base para trabalhar com bancos de dados MySQL. À medida que você avança em sua jornada com bancos de dados, você desenvolverá esses conceitos básicos para realizar operações e tarefas de gerenciamento de banco de dados mais complexas.