?>
1-mysql Básico
Exercícios
?>

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.

tela24