| <<< Voltar | Avançar >>> |
17. Modificando a estrutura de tabelas
Para modificar a estrutura de uma tabela após esta ter sido criada use a instrução alter table. Sua sintaxe é:
alter table TABELA ALTERAÇÃO1, ALTERAÇÃO2, ..... , ALTERAÇÃOn;
As alterações possíveis são descritas na tabela abaixo:
| OPÇÃO | DESCRIÇÃO |
| add [column] COLUNA DESCRIÇÃO [first | after COLUNA] | Adiciona coluna na localização especificada. Se nada for especificado, a nova coluna vai para o final. As descrições da coluna devem seguir o mesmo padrão da instrução create |
| add [column] (DESCRIÇÃO1, DESCRIÇÃO2, ...) | Adiciona uma ou mais colunas no fim da tabela |
| add index [ÍNDICE] (COLUNA1, COLUNA2, ...) | Adiciona um índice à tabela na(s) coluna(s) especificada(s) |
| add primary key (COLUNA1, COLUNA2, ...) | Tranforma a(s) coluna(s) especificada(s) em chave primária da tabela |
| add unique [ÍNDICE] (COLUNA1, COLUNA2, ...) | Adiciona um índice único à tabela na(s) coluna(s) especificada(s) |
| alter [column] COLUNA {set default VALOR | drop default} | Adiciona ou remove um valor padrão a/de uma coluna |
| change COLUNA NOVA_DESCRÇÃO | Altera uma coluna para uma nova descrição. Observe que isto serve para alterar o nome da coluna, pois a descrição de uma coluna inclui seu nome |
| modify COLUNA NOVA_DESCRIÇÃO | Idem a change com a diferença que não altera o nome da coluna, apenas o tipo |
| drop [column] COLUNA | Exclui uma coluna |
| drop primary key | Exclui a chave primária, mas não a coluna |
| drop index ÍNDICE | Exclui o índice especificado |
| rename TABELA | Renomeia uma tabela |
Exemplos de modificações em tabelas:
mysql> describe cliente; +--------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------+----------+------+-----+---------+----------------+ | codigo | int(11) | | PRI | NULL | auto_increment | | nome | char(30) | | | | | +--------+----------+------+-----+---------+----------------+ 2 rows in set (0.00 sec) mysql> alter table cliente modify nome char(50); Query OK, 10 rows affected (0.12 sec) Records: 10 Duplicates: 0 Warnings: 0 mysql> describe cliente; +--------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------+----------+------+-----+---------+----------------+ | codigo | int(11) | | PRI | NULL | auto_increment | | nome | char(50) | YES | | NULL | | +--------+----------+------+-----+---------+----------------+ 2 rows in set (0.00 sec) mysql> alter table cliente add column endereco char(100); Query OK, 10 rows affected (0.03 sec) Records: 10 Duplicates: 0 Warnings: 0 mysql> describe cliente; +----------+-----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-----------+------+-----+---------+----------------+ | codigo | int(11) | | PRI | NULL | auto_increment | | nome | char(50) | YES | | NULL | | | endereco | char(100) | YES | | NULL | | +----------+-----------+------+-----+---------+----------------+ 3 rows in set (0.00 sec) mysql> alter table cliente add column email char(10) after nome; Query OK, 10 rows affected (0.01 sec) Records: 10 Duplicates: 0 Warnings: 0 mysql> describe cliente; +----------+-----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-----------+------+-----+---------+----------------+ | codigo | int(11) | | PRI | NULL | auto_increment | | nome | char(50) | YES | | NULL | | | email | char(10) | YES | | NULL | | | endereco | char(100) | YES | | NULL | | +----------+-----------+------+-----+---------+----------------+ 4 rows in set (0.00 sec) mysql> alter table cliente add column teste float(2) after email; Query OK, 10 rows affected (0.00 sec) Records: 10 Duplicates: 0 Warnings: 0 mysql> describe cliente; +----------+-----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-----------+------+-----+---------+----------------+ | codigo | int(11) | | PRI | NULL | auto_increment | | nome | char(50) | YES | | NULL | | | email | char(10) | YES | | NULL | | | teste | float | YES | | NULL | | | endereco | char(100) | YES | | NULL | | +----------+-----------+------+-----+---------+----------------+ 5 rows in set (0.00 sec) mysql> alter table cliente drop column teste ; Query OK, 10 rows affected (0.00 sec) Records: 10 Duplicates: 0 Warnings: 0 mysql> describe cliente; +----------+-----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +----------+-----------+------+-----+---------+----------------+ | codigo | int(11) | | PRI | NULL | auto_increment | | nome | char(50) | YES | | NULL | | | email | char(10) | YES | | NULL | | | endereco | char(100) | YES | | NULL | | +----------+-----------+------+-----+---------+----------------+ 4 rows in set (0.00 sec) mysql>
| <<< Voltar | Avançar >>> |