7-Alterando dados da tabela
Se precisarmos corrigir um dado na tabela temos que ter meio de acessar os registros (linhas).
Existem diferentes maneiras para fazer isso. Podemos por exemplo, deletar a linha e inseri-la novamente... (essa definitivamente não é a melhor forma).
Uma outra forma é deletar a tabela e recarregar o arquivo TXT com as linhas corrigidas (também não é a melhor forma... a menos que você tenha muitas linhas pra corrigir econsiderando que você possui um arquivo TXT com os dados corretos).
A melhor forma de se alterar uma tabela é via o comando UPDATE.
Vamos usar o nosso banco de dados CDTeca para fazer alguns exemplos básicos.
Instrução UPDATE
Veja no site do Reference Manual a sintaxe da instrução UPDATE.
Usando a Instrução UPDATE
Se desejarmos mudar apenas um registro (linha) usamos a instrução UPDATE, especificando qual linha (registro) desejamos mudar. Veja abaixo o comando usado para alterar a primeira linha.
Exemplo 1- Usando UPDATE
mysql> select * from CDs where id=1;
+----+-------------------------+------------+--------+------------+------------+------+
| id | Autor | Album | Pais | TipoMusica | NumMusicas | Ano |
+----+-------------------------+------------+--------+------------+------------+------+
| 1 | Elomar, Xangai e Outros | Cantoria 1 | Brasil | MPB | 13 | 1984 |
+----+-------------------------+------------+--------+------------+------------+------+
1 row in set (0.00 sec)
mysql> update CDs SET TipoMusica='MPB-Regional' where id=1;
Query OK, 1 row affected (0.09 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from CDs where id=1;
+----+-------------------------+------------+--------+--------------+------------+------+
| id | Autor | Album | Pais | TipoMusica | NumMusicas | Ano |
+----+-------------------------+------------+--------+--------------+------------+------+
| 1 | Elomar, Xangai e Outros | Cantoria 1 | Brasil | MPB-Regional | 13 | 1984 |
+----+-------------------------+------------+--------+--------------+------------+------+
1 row in set (0.00 sec)
Como podemos ver no exemplo acima, é muito simples usar o UPDATE. Basta especificarmos o valor (SET campo=novo-valor) e o registro (WHERE campo=valor).
UPDATE - Alterando um Campo em todos Registros (linhas)
Considere que desejamos alterar a coluna NumMusicas em todas as linhas, depois que percebemos que informamos todas as linhas com o número errado de músicas (todas as linhas estão com uma música a mais).
Para fazermos a atualização podemos fazer:
Exemplo 2- Usando UPDATE em todas Linhas
mysql> select * from CDs;
+----+-------------------------+-------------------+------------+--------------+------------+------+
| id | Autor | Album | Pais | TipoMusica | NumMusicas | Ano |
+----+-------------------------+-------------------+------------+--------------+------------+------+
| 1 | Elomar, Xangai e Outros | Cantoria 1 | Brasil | MPB-Regional | 13 | 1984 |
| 2 | Elomar, Xangai e Outros | Cantoria 2 | Brasil | MPB | 10 | 1988 |
| 3 | Pink Floyd | Final Cut | Inglaterra | RockProgress | 12 | 1983 |
| 4 | Pink Floyd | The Wall | Inglaterra | RockProgress | 26 | 1979 |
| 5 | Fleetwood Mac | Rumors | Inglaterra | ClassicRock | 11 | 1977 |
| 6 | Chico Buarque | Meus Caros Amigos | Brasil | MPB | 10 | 1977 |
+----+-------------------------+-------------------+------------+--------------+------------+------+
6 rows in set (0.00 sec)
mysql> UPDATE CDs SET NumMusicas = NumMusicas -1;
Query OK, 6 rows affected (0.10 sec)
Rows matched: 6 Changed: 6 Warnings: 0
mysql> select * from CDs;
+----+-------------------------+-------------------+------------+--------------+------------+------+
| id | Autor | Album | Pais | TipoMusica | NumMusicas | Ano |
+----+-------------------------+-------------------+------------+--------------+------------+------+
| 1 | Elomar, Xangai e Outros | Cantoria 1 | Brasil | MPB-Regional | 12 | 1984 |
| 2 | Elomar, Xangai e Outros | Cantoria 2 | Brasil | MPB | 9 | 1988 |
| 3 | Pink Floyd | Final Cut | Inglaterra | RockProgress | 11 | 1983 |
| 4 | Pink Floyd | The Wall | Inglaterra | RockProgress | 25 | 1979 |
| 5 | Fleetwood Mac | Rumors | Inglaterra | ClassicRock | 10 | 1977 |
| 6 | Chico Buarque | Meus Caros Amigos | Brasil | MPB | 9 | 1977 |
+----+-------------------------+-------------------+------------+--------------+------------+------+
6 rows in set (0.00 sec)
Alterando mais de uma campo
Podemos alterar mais de um campo em um registro. O exemplo a seguir altera as colunas TipoMusica e NumMusicas do registro 2
Exemplo 2- Usando UPDATE em Dois Campos de um Registro
mysql> mysql> select * f where id=2;
+----+-------------------------+------------+--------+------------+------------+------+
| id | Autor | Album | Pais | TipoMusica | NumMusicas | Ano |
+----+-------------------------+------------+--------+------------+------------+------+
| 2 | Elomar, Xangai e Outros | Cantoria 2 | Brasil | MPB | 9 | 1988 |
+----+-------------------------+------------+--------+------------+------------+------+
1 row in set (0.00 sec)
mysql> UPDATE CDs
-> SET TipoMusica = 'MPB-Regional',
-> NumMusicas=10
-> where id=2;
Query OK, 1 row affected (0.05 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from CDs where id=2;
+----+-------------------------+------------+--------+--------------+------------+------+
| id | Autor | Album | Pais | TipoMusica | NumMusicas | Ano |
+----+-------------------------+------------+--------+--------------+------------+------+
| 2 | Elomar, Xangai e Outros | Cantoria 2 | Brasil | MPB-Regional | 10 | 1988 |
+----+-------------------------+------------+--------+--------------+------------+------+
1 row in set (0.00 sec)
update meuscds SET valor = 41 WHERE titulo = "final cut";
Veja como fica a utilização desse comando no mysql.