English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Quando precisamos modificar o nome da tabela de dados ou modificar os campos da tabela de dados, precisamos usar o comando ALTER do MySQL.
Antes de começar este capítulo do tutorial, vamos criar uma tabela, chamada: testalter_tbl.
root@host# mysql -u root -p senha; Insira a senha:******* mysql> use w3codebox; Database changed mysql> create table testalter_tbl -> ( -> i INT, -> c CHAR(1) -> ); Query OK, 0 rows affected (0.05 sec) mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Campo | Tipo | Nulo | Chave | Padrão | Extra | +-------+---------+------+-----+---------+-------+ | i | int(11) | SIM | | NULL | | | c | char(1) | SIM | | NULL | | +-------+---------+------+-----+---------+-------+ 2 linhas no conjunto (0.00 sec)
O seguinte comando usa a instrução ALTER e a cláusula DROP para excluir o campo i criado anteriormente na tabela:
mysql> ALTER TABLE testalter_tbl DROP i;
Se a tabela tiver apenas um campo restante, não é possível usar DROP para excluir o campo.
No MySQL, a cláusula ADD é usada para adicionar colunas à tabela, conforme o exemplo a seguir, adicionando o campo i à tabela testalter_tbl e definindo o tipo de dados:
mysql> ALTER TABLE testalter_tbl ADD i INT;
Após a execução do comando acima, o campo i será automaticamente adicionado ao final dos campos da tabela.
mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Campo | Tipo | Nulo | Chave | Padrão | Extra | +-------+---------+------+-----+---------+-------+ | c | char(1) | SIM | | NULL | | | i | int(11) | SIM | | NULL | | +-------+---------+------+-----+---------+-------+ 2 linhas no conjunto (0.00 sec)
Se precisar especificar a posição do campo adicionado, você pode usar os termos-chave FIRST (definindo como a primeira coluna) e AFTER nome_do_campo (definindo após algum campo).
Tente a seguinte instrução ALTER TABLE, após a execução bem-sucedida, use SHOW COLUMNS para verificar as mudanças na estrutura da tabela:
ALTER TABLE testalter_tbl DROP i; ALTER TABLE testalter_tbl ADD i INT FIRST; ALTER TABLE testalter_tbl DROP i; ALTER TABLE testalter_tbl ADD i INT AFTER c;
As palavras-chave FIRST e AFTER podem ser usadas nas cláusulas ADD e MODIFY, então, se precisar redefinir a posição do campo na tabela, você deve usar DROP para excluir o campo e, em seguida, ADD para adicioná-lo e definir a posição.
Se precisar modificar o tipo e o nome do campo, você pode usar a cláusula MODIFY ou CHANGE na instrução ALTER.
Por exemplo, mude o tipo do campo c para CHAR(1) Mude para CHAR(10) Você pode executar o seguinte comando:
mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);
A sintaxe é significativamente diferente ao usar a cláusula CHANGE. Após a palavra-chave CHANGE, vem o nome do campo que você deseja modificar, seguido do novo nome e tipo do campo. Tente o exemplo a seguir:
mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
Se você quiser modificar o campo j de BIGINT para INT, a instrução SQL será a seguinte:
mysql> ALTER TABLE testalter_tbl CHANGE j j INT;
Quando você modificar um campo, você pode especificar se deve incluir um valor ou se deve definir um valor padrão.
No exemplo a seguir, especificamos o campo j como NOT NULL e com valor padrão100 。
mysql> ALTER TABLE testalter_tbl -> MODIFY j BIGINT NOT NULL DEFAULT 100;
Se você não definir um valor padrão, o MySQL configurará automaticamente o campo como NULL.
Você pode usar o ALTER para modificar o valor padrão do campo, tente o exemplo a seguir:
mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000; mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Campo | Tipo | Nulo | Chave | Padrão | Extra | +-------+---------+------+-----+---------+-------+ | c | char(1) | SIM | | NULL | | | i | int(11) | SIM | | 1000 | | +-------+---------+------+-----+---------+-------+ 2 linhas no conjunto (0.00 sec)
Você também pode usar o comando ALTER com a cláusula DROP para excluir o valor padrão do campo, conforme o exemplo a seguir:
mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT; mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Campo | Tipo | Nulo | Chave | Padrão | Extra | +-------+---------+------+-----+---------+-------+ | c | char(1) | SIM | | NULL | | | i | int(11) | SIM | | NULL | | +-------+---------+------+-----+---------+-------+ 2 linhas no conjunto (0.00 sec) Alterando o Tipo de Tabela:
Para modificar o tipo de tabela de dados, você pode usar o comando ALTER com a cláusula TYPE. Tente o exemplo a seguir, onde alteramos o tipo da tabela testalter_tbl para MYISAM:
Atenção:Pode usar a instrução SHOW TABLE STATUS para verificar o tipo de tabela de dados.
mysql> ALTER TABLE testalter_tbl ENGINE = MYISAM; mysql> SHOW TABLE STATUS LIKE 'testalter_tbl'\G *************************** 1. row **************** Name: testalter_tbl Type: MyISAM Row_format: Fixed Rows: 0 Avg_row_length: 0 Data_length: 0 Max_data_length: 25769803775 Index_length: 1024 Data_free: 0 Auto_increment: NULL Create_time: 2007-06-03 08:04:36 Update_time: 2007-06-03 08:04:36 Check_time: NULL Opções de Criação: Comentário: 1 row in set (0.00 sec)
Se precisar modificar o nome da tabela de dados, você pode usar a cláusula RENAME na declaração ALTER TABLE para fazer isso.
Tente o seguinte exemplo para renomear a tabela de dados testalter_tbl para alter_tbl:
mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;
O comando ALTER também pode ser usado para criar e excluir índices de tabelas de dados MySQL, essa funcionalidade será abordada nos próximos capítulos.