www.samueldiasneto.com: Tutorial MySQL

<<< 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 >>>