Pesquisa de site

Comandos básicos de administração de banco de dados MySQL - Parte I


Banco de dados é um conjunto estruturado de dados armazenados eletronicamente. O conceito de banco de dados era conhecido por nossos ancestrais mesmo quando não existiam computadores, porém criar e manter tal banco de dados era um trabalho muito tedioso. Em um banco de dados manual, digamos, de 100 páginas, se você tivesse que pesquisar todos os funcionários cujo salário fosse inferior a 10k, pense em quão difícil teria sido, então .

No mundo de hoje você simplesmente não pode escapar do banco de dados. Neste momento, milhões de bases de dados estão a trabalhar em todo o mundo para armazenar e recolher dados de todo o tipo, sejam dados estratégicos, registos de funcionários ou tecnologias web.

O banco de dados é frequentemente denominado processo de back-end, porque não é visível para o usuário final nem o usuário final interage diretamente com o banco de dados. Eles trabalham em processos de front-end, como PHP, VB, ASP.NET, etc. e pedem ao front-end para lidar com o banco de dados no back-end.

Existem vários servidores e clientes de banco de dados disponíveis como Oracle, MySQL, MySQLi, MariaDB, MongoDB etc. menos o mesmo. Dominar um significa obter controle sobre a maioria deles e aprender as consultas de um banco de dados é muito fácil e divertido.

Vamos começar com consultas simples no banco de dados. Estaremos usando o MySQL que vem junto com a maioria das distribuições Linux por padrão, você pode instalá-lo manualmente a partir do repositório, se não estiver instalado por padrão no seu caso.

Bem, uma consulta ao banco de dados é um simples trecho de código que é enviado ao banco de dados para obter resultados personalizados e refinados, conforme necessário.

Instale o banco de dados MySQL

Use o gerenciador de pacotes “yum” ou “apt” para instalar o banco de dados MySQL.

yum install mysql mysql-client mysql-server  (on Yum based Systems)

apt-get install mysql mysql-client mysql-server (on Apt based Systems)
Inicie o MySQL

Inicie o serviço de banco de dados MySQL como:

service mysqld start
or
service mysql start

Bem, a instalação de um banco de dados MySQL levará você à configuração onde será solicitado que você defina a senha de admin, etc. Depois de concluir a instalação e iniciar o servidor, vá para seu MySQL prompt.

mysql -u root -p

Substitua root pelo seu nome de usuário configurado e digite a senha quando solicitado. Se a credencial de login estiver correta, você estará em seu MySQL< prompt em um piscar de olhos.

Welcome to the MySQL monitor.  Commands end with ; or \g.

Your MySQL connection id is 195 

Server version: 5.5.31-0+wheezy1 (Debian) 

Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. 

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>

Agora realizar consultas neste prompt é muito educativo e divertido.

Crie um banco de dados tecmint
mysql> create database tecmint ;
Query OK, 1 row affected (0.02 sec) 

mysql>

Nota: Informa que a consulta estava correta, significa que o banco de dados foi criado. Você pode verificar seu banco de dados recém-criado como.

mysql> show databases; 
+--------------------+
| Database           | 
+--------------------+ 
| information_schema | 
| mysql              | 
| performance_schema | 
| tecmint            | 
| test               | 
+--------------------+ 
9 rows in set (0.00 sec) 
mysql>

Nota: Observe seu banco de dados na saída acima.

Selecione banco de dados

Agora você precisa selecionar o banco de dados para trabalhar nele.

mysql> use tecmint;
Database changed
mysql>
Crie tabelas no MySQL

Aqui estaremos criando uma tabela digamos “minttec” com três campos como:

mysql> CREATE TABLE minttec (
    -> id Int(3), 
    -> first_name Varchar (15), 
    -> email Varchar(20) 
    -> ); 
Query OK, 0 rows affected (0.08 sec) 
mysql>

Nota: A consulta acima diz OK, o que significa que a tabela foi criada sem nenhum erro. Para verificar a tabela, execute a consulta abaixo.

mysql> show tables; 
+-------------------+ 
| Tables_in_tecmint | 
+-------------------+ 
| minttec           | 
+-------------------+ 

1 row in set (0.00 sec) 

mysql>

As coisas estão indo bem até agora. Sim! Você pode visualizar as colunas criadas na tabela “minttec” como:

mysql> show columns from minttec; 

+------------+-------------+------+-----+---------+-------+ 
| Field      | Type        | Null | Key | Default | Extra | 
+------------+-------------+------+-----+---------+-------+ 
| id         | int(3)      | YES  |     | NULL    |       | 
| first_name | varchar(15) | YES  |     | NULL    |       | 
| email      | varchar(20) | YES  |     | NULL    |       | 
+------------+-------------+------+-----+---------+-------+ 
3 rows in set (0.00 sec)

mysql>

Foi nada menos que uma magia. De qualquer forma vou falar sobre os tipos de declaração e seu significado.

  1. Int é inteiro
  2. Varchar é um char com comprimento variável conforme definido. O valor após Type é o comprimento do campo até o qual ele pode armazenar dados.

OK, agora precisamos adicionar uma coluna como 'sobrenome' após a coluna 'nome'.

mysql> ALTER TABLE minttec ADD last_name varchar (20) AFTER first_name; 
Query OK, 0 rows affected (0.16 sec)
Records: 0  Duplicates: 0  Warnings: 0

Agora, verifique isso em sua tabela.

mysql> show columns from minttec; 

+------------+-------------+------+-----+---------+-------+ 
| Field      | Type        | Null | Key | Default | Extra | 
+------------+-------------+------+-----+---------+-------+ 
| id         | int(3)      | YES  |     | NULL    |       | 
| first_name | varchar(15) | YES  |     | NULL    |       | 
| last_name  | varchar(20) | YES  |     | NULL    |       | 
| email      | varchar(20) | YES  |     | NULL    |       | 
+------------+-------------+------+-----+---------+-------+ 

4 rows in set (0.00 sec) 

mysql>
Adicionar coluna no MySQL

Agora adicionaremos uma coluna à direita, digamos, uma coluna ‘país‘ à direita de e-mail.

mysql> ALTER TABLE minttec ADD country varchar (15) AFTER email; 
Query OK, 0 rows affected (0.16 sec) 
Records: 0  Duplicates: 0  Warnings: 0 

mysql>

Verifique a consulta de inserção da coluna acima.

mysql> show columns from minttec; 

+------------+-------------+------+-----+---------+-------+ 
| Field      | Type        | Null | Key | Default | Extra | 
+------------+-------------+------+-----+---------+-------+
| id         | int(3)      | YES  |     | NULL    |       | 
| first_name | varchar(15) | YES  |     | NULL    |       | 
| last_name  | varchar(20) | YES  |     | NULL    |       | 
| email      | varchar(20) | YES  |     | NULL    |       | 
| country    | varchar(15) | YES  |     | NULL    |       | 
+------------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec) 

mysql>
Inserir valores no campo

Que tal inserir valores no campo?

mysql> INSERT INTO minttec VALUES ('1' , 'Ravi' , 'Saive' , '[email ' , 'India' );
Query OK, 1 row affected (0.02 sec) 

mysql>

Que tal inserir mais de 1 valor por vez na tabela acima.

mysql> INSERT INTO minttec VALUES ('2' , 'Narad' , 'Shrestha' , '[email ' , 'India' ), ('3' , 'user' , 'singh' , '[email ' , 'Aus' ), ('4' , 'tecmint' , '[dot]com' , '[email ' , 'India' );
Query OK, 3 rows affected (0.05 sec) 
Records: 3  Duplicates: 0  Warnings: 0

Verifique a inserção acima.

mysql> select * from minttec; 
+------+------------+-----------+-------------------+---------+ 
| id   | first_name | last_name | email             | country | 
+------+------------+-----------+-------------------+---------+ 
|    1 | Ravi	    | Saive     | [email  | India   | 
|    2 | Narad      | Shrestha  | [email      | India   | 
|    3 | user       | singh     | [email       | Aus     | 
|    4 | tecmint    | [dot]com  | [email  | India   | 
+------+------------+-----------+-------------------+---------+ 

4 rows in set (0.00 sec)

mysql>
Excluir valores no campo

Digamos que a terceira entrada na saída acima seja inválida e precisamos excluí-la.

mysql> DELETE FROM minttec WHERE id = 3;

Query OK, 1 row affected (0.02 sec)

Verifique a operação acima.

mysql> select * from minttec;

+------+------------+-----------+-------------------+---------+ 
| id   | first_name | last_name | email             | country | 
+------+------------+-----------+-------------------+---------+
|    1 | Ravi       | Saive     | [email  | India   | 
|    2 | Narad      | Shrestha  | [email      | India   | 
|    4 | tecmint    | [dot]com  | [email  | India   | 
+------+------------+-----------+-------------------+---------+
3 rows in set (0.00 sec)
Atualizar valores no campo

O id (=4) precisa ser editado.

mysql> UPDATE minttec SET id = 3 WHERE first_name = 'tecmint'; 
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql>

Verifique a consulta acima.

mysql> UPDATE minttec SET id = 3 WHERE first_name = 'tecmint'; 
Query OK, 1 row affected (0.02 sec) 
Rows matched: 1  Changed: 1  Warnings: 0

mysql>

Nota: A consulta acima, conforme realizada, não é uma boa ideia. Isso mudará o id para ‘4’ onde o primeiro nome for ‘tecmint’. É sempre uma boa ideia usar mais de uma coluna com cláusula where para obter erros mínimos, como:

mysql> UPDATE minttec SET id = 6 WHERE first_name = 'tecmint'AND last_name = '[dot]com'; 
Query OK, 1 row affected (0.03 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql>
Excluir coluna no MySQL

Precisamos eliminar (excluir) uma coluna que achamos que não tem importância, digamos ‘país‘aqui.

mysql> ALTER TABLE minttec drop country; 
Query OK, 3 rows affected (0.15 sec)
Records: 3  Duplicates: 0  Warnings: 0

mysql>

Verifique a tabela.

mysql> select * from minttec; 

+------+------------+-----------+-------------------+ 
| id   | first_name | last_name | email             | 
+------+------------+-----------+-------------------+ 
|    1 | Ravi       | Saive     | [email  | 
|    2 | Narad      | Shrestha  | [email      | 
|    6 | tecmint    | [dot]com  | [email  | 
+------+------------+-----------+-------------------+
3 rows in set (0.00 sec) 

mysql>
Renomear tabela no MySQL

Você não acha que o nome da nossa tabela “minttec” não é muito relevante. Que tal alterá-lo para tecmint_table.

mysql> RENAME TABLE minttec TO tecmint_table; 
Query OK, 0 rows affected (0.03 sec)

mysql>
Listar todas as tabelas

Veja todas as tabelas do banco de dados atual.

mysql> show tables; 

+-------------------+ 
| Tables_in_tecmint | 
+-------------------+ 
| tecmint_table     | 
+-------------------+
1 row in set (0.00 sec) 

mysql>

A tabela foi renomeada. Agora faça um backup do banco de dados MySQL acima, em uma única linha de comando, sem qualquer ferramenta sofisticada. Execute o código abaixo em seu terminal e não no prompt do mysql.

mysqldump -u root -p tecmint > tecmint.sql

check the dumped file on your desktop which would have contents something like
-- MySQL dump 10.13  Distrib 5.5.31, for debian-linux-gnu (i686) --
-- Server version 5.5.31-0+wheezy1 -- 
Dump completed on 2013-09-02 12:55:37

É sempre uma boa ideia manter backup de bancos de dados MySQL. Restaurar os dados do MySQL de backup é novamente uma simples linha de código que você precisa executar no prompt do terminal e não no prompt do MySQL.

Mas espere primeiro vamos deletar o banco de dados para verificar se nossa restauração está perfeita.

Excluir um banco de dados
mysql> drop database tecmint; 
Query OK, 1 row affected (0.02 sec)

Verifique o banco de dados ‘tecmint’ em seu servidor de banco de dados.

mysql> show databases; 

+--------------------+ 
| Database           | 
+--------------------+ 
| information_schema | 
| my_database        | 
| mysql              | 
| performance_schema | 
| phpmyadmin         | 
| sisso              | 
| test               | 
+--------------------+

7 rows in set (0.00 sec) 
mysql>

Ótimo! O banco de dados está perdido, mas não precisamos nos preocupar, estamos fazendo o backup.

Restaurar um banco de dados

Para restaurar o banco de dados perdido, execute o seguinte comando.

mysql -u root -p tecmint < tecmint.sql
Enter password:
ERROR 1049 (42000): Unknown database 'tecmint'

OPS! Um erro, ei, não criamos o banco de dados tecmint. Então vá para o prompt do mysql e crie um banco de dados ‘tecmint‘.

mysql> create database tecmint; 
Query OK, 1 row affected (0.00 sec) 

mysql>

Agora é hora de executar o comando de restauração no prompt do shell (estritamente).

mysql -u root -p tecmint < tecmint.sql 
Enter password:

Verifique seu banco de dados.

mysql> show databases; 

+--------------------+ 
| Database           | 
+--------------------+ 
| information_schema | 
| mysql              | 
| performance_schema | 
| tecmint            | 
| test               | 
+--------------------+ 
8 rows in set (0.00 sec)

Verifique o conteúdo do banco de dados.

mysql> show tables from tecmint;

+-------------------+ 
| Tables_in_tecmint | 
+-------------------+ 
| tecmint_table     | 
+-------------------+ 
1 row in set (0.00 sec)

mysql>

Verifique o conteúdo da sua tabela restaurada.

mysql> select * from tecmint_table; 

+------+------------+-----------+-------------------+ 
| id   | first_name | last_name | email             | 
+------+------------+-----------+-------------------+ 
|    1 | Ravi       | Saive     | [email  | 
|    2 | Narad      | Shrestha  | [email      | 
|    6 | tecmint    | [dot]com  | [email  | 
+------+------------+-----------+-------------------+

3 rows in set (0.00 sec)

Definitivamente, este não é o fim, abordaremos o conceito de chave primária, chave estrangeira, tabelas múltiplas e consultas em execução. usando um script PHP simples na próxima parte do artigo.

Não se esqueça de nos contar como você se sentiu ao ler o artigo. Seus comentários são muito apreciados. Mantenha-se saudável e ligado, permaneça conectado ao Tecmint.