Administrando banco de dados MySQL

Já vimos em outro post como configurar o mysql no slackware, agora vamos
ver como se trabalhar com o banco mysql, tendo em base que se banco
já esteje rodando legalzinho vamo lá:


Se como eu, você acessa o mysql através de outro micro, as permissões
de acesso devem ser alteradas:
# mysql -u root -p
mysql>
mysql> GRANT ALL ON *.* to root@192.168.0.1 identified by ‘anna’;
ou outro usuario

mysql> GRANT ALL ON *.* to diego@localhost identified by ‘anna’;

dando permissão somente acesso a um unico banco ao usuário:

mysql> GRANT ALL ON anna.* TO diego@localhost identified by ‘anna’;
Query OK, 0 rows affected (0.00 sec)

Para que as alterações referentes ao acesso a banco de dados e ao
servidor como um todo tenham efeito, é necessário que ao final de toda
rotina seja digitado o comando FLUSH PRIVILEGES, responsável por
validar as atualizações no MySQL:

mysql> FLUSH PRIVILEGES;

Vamos dar um exemplo criando um banco e duas tabelas e inserindo dados
em uma delas e trabalharemos um pouco nelas.
Entre no banco de dados local com o usuário que acabamos de criar:

#mysql -u diego –p
mysql>
mysql> CREATE DATABASE Cad;
Query OK, 1 row affected (0.00 sec)

Vamos verificar:

mysql>
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| anna               |
| cad                |
| mysql              |
| test               |
+--------------------+
5 rows in set (0.00 sec)
mysql>

Pronto criado nosso banco  :)


Vamos criar duas tabela neste banco, primeiro temos que escolher o
banco onde queremos criar nossas tabelas uando o comando “use’:

mysql> USE  cad;
Database changed

Estamos no baco agora é só criar as :)

mysql> CREATE TABLE `cadastro1` (
  `codigo` int(5) NOT NULL auto_increment,
  `nome` varchar(40) NOT NULL default '',
  `sobrenome` varchar(25) NOT NULL default '',
  `idade` varchar(2) NOT NULL default '',
  `end` varchar(200) NOT NULL default '',
  `cidade` varchar(20) NOT NULL default '',
  PRIMARY KEY  (`codigo`)
) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=latin1;

mysql> CREATE TABLE `cadastro2` (
  `codigo` int(5) NOT NULL auto_increment,
  `nome` varchar(40) NOT NULL default '',
  `ocupacao` varchar(25) NOT NULL default '',
  `idade` varchar(2) NOT NULL default '',
  `area` varchar(200) NOT NULL default '',
  `salario` varchar(2) NOT NULL default '',
  `carro` varchar(20) NOT NULL default '',
  PRIMARY KEY  (`codigo`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Verifcar se foram criadas:

mysql> SHOW TABLES;
+---------------------+
| Tables in anna      |
+---------------------+
|cadastro1            |
|cadastro2            |
+---------------------+
2 rows in set (0.00 sec)
mysql>

Vamos ver como ficou a estrutura das nossas tabelas de um modo geral:

mysql> show fields from cadastro1;
+-----------+------------+------+-----+--------+----------------+
| Field     | Type       | Null | Key | Default| Extra          |
+-----------+------------+------+-----+--------+----------------+
| codigo    | int(5)     | NO   | PRI | NULL   | auto_increment |
| nome      | varchar(40)| YES  |     | NULL   |                |
| sobrenome | varchar(25)| YES  |     | NULL   |                |
| idade     | varchar(2) | YES  |     | NULL   |                |
| end       |varchar(200)| YES  |     | NULL   |                |
| estad     | varchar(2) | YES  |     | NULL   |                |
| cidade    | varchar(20)| YES  |     | NULL   |                |
+-----------+------------+------+-----+--------+----------------+
7 rows in set (0.00 sec)mysql>

mysql> show fields from cadastro2;
+----------+------------+------+-----+--------+----------------+
| Field    | Type       | Null | Key | Default| Extra          |
+----------+------------+------+-----+--------+----------------+
| codigo   | int(5)     | NO   | PRI | NULL   | auto_increment |
| nome     | varchar(40)| YES  |     | NULL   |                |
| ocupacao | varchar(25)| YES  |     | NULL   |                |
| idade    | varchar(2) | YES  |     | NULL   |                |
| area     |varchar(200)| YES  |     | NULL   |                |
| salario  | varchar(2) | YES  |     | NULL   |                |
| carro    | varchar(20)| YES  |     | NULL   |                |
+----------+------------+------+-----+--------+----------------+
7 rows in set (0.00 sec)
mysql>

Pode se usar o comando “DESCRIBE”

mysql> DESCRIBE cadastro1;
mysql> DESCRIBE cadastro2;


O resultado é o mesmo..
Pronto criadas nossas tabelas vamos inserir dados em uma delas:

mysql> INSERT INTO cadastro1 VALUES ('1','Diego','Grassato', '20',
'Mato Grosso', 'SP', 'Gapira');

Ente parentese “()” você coloca os dados conforme foi feito os campos
da tabela “cadastro1? sempre separados por virgula,
e o conteúdo do campo sempre ente aspas simple (’ ‘)
para não ter perca de dados vocês pode colocar desta forma também
para se referenciar certinho ao campo desejado para não ter duvida
nenhuma:

mysql> INSERT INTO cadastro1 (codigo, nome, sobrenome, idade,end,
estad, cidade ) VALUES (’1',’Diego’,’Grassato’, ‘20', ‘Mato Grosso’,
‘Gapira’);

Verificando o conteúdo adicionado acima:
A instrução SELECT é usada para recuperar informações de uma tabela.
A forma geral da instrução é:

SELECT o_que_mostrar
FROM de_qual_tabela
WHERE condições_para_satisfazer;

mysql> SELECT * FROM cadastro1;
+-------+-------+-----------+------+-------------+-------+---------+
| codigo| nome  | sobrenome | idade| end         | estad | cidade  |
+-------+-------+-----------+------+-------------+-------+---------+
| 0     | Diego | Grassato  | 22   | Mato Grosso | SP    |Gapira   |
| 2     | Anna  | Grassato  | 20   | Mato Grosso | SP    |Gapira   |
| 3     | Duna  | Grassato  | 12   | Mato Grosso | SP    |Gapira   |
+-------+-------+-----------+------+-------------+-------+---------+
3 rows in set (0.00 sec)
mysql> 



Você tambem pode filtar a  visulização dos campos q você deseje ver
ou também mescla-los:

mysql> SELECT nome FROM cadastro1;
+-------+
| nome  |
+-------+
| Diego |
| Anna  |
| Dunha |
+-------+
3 rows in set (0.00 sec)

mysql> SELECT nome, sobrenome FROM cadastro1;
+-------+-------------------------+
| nome  | sobrenome               |
+-------+-------------------------+
| Diego | Grassato                |
| Anna  | Teresa Casarin Grassato |
| Dunha | Dunhinha                |
+-------+-------------------------+
3 rows in set (0.00 sec)

Aqui está outra consulta. Ela demonstra que você pode usar o mysql
como uma calculadora simples:

mysql> SELECT SIN(PI()/4), (4+1)*5;
+--------------------+---------+
| SIN(PI()/4)        | (4+1)*5 |
+--------------------+---------+
| 0.7071067811865475 |      25 |
+--------------------+---------+
1 row in set (0.03 sec)


Combinação de padrões

O MySQL fornece combinação de padrões do SQL bem como na forma de
combinação de padrões baseado nas expressões regula-res extendidas
similares àquelas usadas pelos utilitários Unix como o vi, grep e sed.
A combinação de padrões SQL lhe permite você usar _ para coincidir
qualquer caractere simples e % para coincidir um número ar-bitrário
de caracteres (incluindo zero caracter). No MySQL, padrões SQL são
caso insensitivo por padrão. Alguns exemplos são
vistos abaixo. Perceba que você não usa = ou != quando
usar padrões SQL; use os operadores de comparação LIKE ou NOT LI-KE
neste caso.

Para encontrar nomes começando com ‘a’:

mysql> SELECT * FROM cadastro1 WHERE nome LIKE "a%";
+-------+------+---------------+------+------------+-------+-------+
| codigo| nome | sobrenome     | idade| end        | estad | cidade|
+-------+------+---------------+------+------------+-------+-------+
|   2   | Anna | Teresa Casarin| 22   | Mato Grosso| SP    | Gapira|
+-------+------+---------------+------+------------+-------+-------+
1 row in set (0.00 sec)
mysql>

Ateração de dados, vamos alterar a idedade do cadastro de Anna:

mysql> UPDATE cadastro1 SET idade = '18' WHERE nome ='anna';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> SELECT * FROM cadastro1 WHERE nome LIKE “a%”;
+-------+------+---------------+------+------------+-------+-------+
| codigo| nome | sobrenome     | idade| end        | estad | cidade|
+-------+------+---------------+------+------------+-------+-------+
|   2   | Anna | Teresa Casarin| 18   | Mato Grosso| SP    | Gapira|
+-------+------+---------------+------+------------+-------+-------+
1 row in set (0.00 sec)

Ok alterado com sucesso, de 20 passou a ficar com valor 18 em idade.
Vamos alterar o sobrenome, só que para descartamos erros e alterar o
sobrenome de vários outros cadastros vamos ao ivés de usar o campo
no nome vamos usar o campo codigo, pois ele nunca se repete:

mysql> update cadastro1 set sobrenome = “Teresa Casarin Grassato”
where codigo ='2';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> SELECT * FROM cadastro1 WHERE nome LIKE “a%”;
+------+----+------------------------+-----+------------+-------+-------+
|codigo|nome| sobrenome              |idade| end        | estad | cidade|
+------+----+------------------------+-----+------------+-------+-------+
|  2   |Anna| Teresa Casarin Grassato|18   | Mato Grosso| SP    | Gapira|
+------+----+------------------------+-----+------------+-------+-------+
1 row in set (0.00 sec)

Vamos adicionar uma coluna em nossa tabela que ficou faltando a coluna
“data”:

mysql> ALTER TABLE cadastro1 ADD date CHAR(10) NOT NULL;

Veficando:

mysql> DESCRIBE cadastro1;
+-----------+--------------+------+-----+--------+---------------+
| Field     | Type         | Null | Key | Default| Extra         |
+-----------+--------------+------+-----+--------+---------------+
| codigo    | int(5)       | NO   | PRI | NULL   | auto_increment|
| nome      | varchar(40)  | YES  |     | NULL   |               |
| sobrenome | varchar(25)  | YES  |     | NULL   |               |
| idade     | varchar(2)   | YES  |     | NULL   |               |
| end       | varchar(200) | YES  |     | NULL   |               |
| estad     | varchar(2)   | YES  |     | NULL   |               |
| cidade    | varchar(20)  | YES  |     | NULL   |               |
| date      | char(10)     | NO   |     | NULL   |               |
+-----------+--------------+------+-----+--------+---------------+
8 rows in set (0.00 sec)

Digamos que o analista,cometeu um erro no projeto e especificou um
campo há mais na tabela cadastro1, devemos então apagar este campo,
para isto use o comando abaixo, vamos apagar o campo “estad”:

mysql> ALTER TABLE cadastro1 DROP estad;
Query OK, 4 rows affected (0.03 sec)
Records: 4 Duplicates: 0 Warnings: 0

mysql> DESCRIBE cadastro1;
+-----------+--------------+------+-----+--------+---------------+
| Field     | Type         | Null | Key | Default| Extra         |
+-----------+--------------+------+-----+--------+---------------+
| codigo    | int(5)       | NO   | PRI | NULL   | auto_increment|
| nome      | varchar(40)  | YES  |     | NULL   |               |
| sobrenome | varchar(25)  | YES  |     | NULL   |               |
| idade     | varchar(2)   | YES  |     | NULL   |               |
| end       | varchar(200) | YES  |     | NULL   |               |
| cidade    | varchar(20)  | YES  |     | NULL   |               |
| date      | char(10)     | NO   |     | NULL   |               |
+-----------+--------------+------+-----+--------+---------------+
7 rows in set (0.00 sec)

Pronto sem ele… :)
Deletando em massa você pode deletar vários registros desde que
tenham algo em comum entre si, exemplo:

mysql> DELETE FROM cadastro1 WHERE codigo ='3';
Query OK, 1 row affected (0.00 sec)

mysql> SELECT * FROM cadastro1 ;
+-------+-------+-----------+-------+------------+------+-------+
| codigo| nome  | sobrenome | idade | end        | estad| cidade|
+-------+-------+-----------+-------+------------+------+-------+
| 0     | Diego | Grassato  | 22    | Mato Grosso| SP   |Gapira |
| 2     | Anna  | Grassato  | 20    | Mato Grosso| SP   |Gapira |
+-------+-------+-----------+-------+------------+------+-------+
2 rows in set (0.01 sec)

Removemos o registro com o codigo igual a 3 que estava armazenado
na tabela "cadastro1".
Bom, por hoje é só :D

Uma ideia sobre “Administrando banco de dados MySQL

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s