Uma tabela de dados MySQL é composta de linhas e colunas. Normalmente, a "coluna" da tabela é chamada de campo (Field), e a "linha" de uma tabela é chamada de registro (Record). À medida que o negócio muda, pode ser necessário adicionar novos campos às tabelas existentes.
MySQL permite adicionar campos no início, meio e fim.
Adicionar campos no final
Um campo completo inclui nome do campo, tipo de dados e restrições. O formato de sintaxe dos campos de adição do MySQL é o seguinte:
ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件];
O formato da sintaxe é explicado da seguinte forma:
- <table name> é o nome da tabela de dados;
- <nome do novo campo> é o nome do campo a ser adicionado;
- <tipo de dados> é o tipo de dados que pode armazenar dados para o campo a ser adicionado;
- [Constraints] é opcional e é usado para restringir os campos adicionados.
O padrão desse formato de sintaxe é adicionar novos campos no final da tabela (após a última coluna).
Observação: nesta seção, adicionamos apenas novos campos, não suas restrições.
Exemplo 1
Crie uma nova tabela de dados do aluno no banco de dados de teste e a instrução SQL e os resultados da execução serão os seguintes:
mysql> USE test;
Database changed
mysql> CREATE TABLE student (
-> id INT(4),
-> name VARCHAR(20),
-> sex CHAR(1));
Query OK, 0 rows affected (0.09 sec)
Use DESC para visualizar a estrutura da tabela do aluno, a instrução SQL e os resultados da execução são os seguintes:
mysql> DESC student;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(4) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.01 sec)
Use a instrução ALTER TABLE para adicionar uma idade de campo do tipo INT, a instrução SQL e os resultados da execução são os seguintes:
mysql> ALTER TABLE student ADD age INT(4);
Query OK, 0 rows affected (0.16 sec)
Records: 0 Duplicates: 0 Warnings: 0
Use DESC para visualizar a estrutura da tabela do aluno e verifique se o campo de idade foi adicionado com sucesso. A instrução SQL e os resultados da execução são os seguintes:
mysql> DESC student;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(4) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| age | int(4) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
Como pode ser visto nos resultados da execução, o campo idade foi adicionado à tabela do aluno, e este campo está na última posição da tabela e o campo foi adicionado com sucesso.
Adicionar campos no início
Por padrão, o MySQL adiciona um novo campo no final da tabela. Se você quiser adicionar um novo campo no início (antes da primeira coluna), você pode usar a palavra-chave FIRST. A sintaxe é a seguinte:
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] FIRST;
A palavra-chave FIRST geralmente é colocada no final da instrução.
Exemplo 2
Use a instrução ALTER TABLE para adicionar o campo stuId do tipo INT à primeira coluna da tabela.A instrução SQL e os resultados da execução são mostrados abaixo.
mysql> ALTER TABLE student ADD stuId INT(4) FIRST;
Query OK, 0 rows affected (0.14 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC student;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| stuId | int(4) | YES | | NULL | |
| id | int(4) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| age | int(4) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
Como pode ser visto nos resultados da execução, o campo stuId foi adicionado à tabela do aluno e este campo está na primeira posição na tabela e o campo foi adicionado com sucesso.
Adicionar campos no meio
Além de permitir que campos sejam adicionados no início e no final da tabela, o MySQL também permite que campos sejam adicionados no meio (após o campo especificado). Neste caso, a palavra-chave AFTER precisa ser usada. A sintaxe é como segue:
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] AFTER <已经存在的字段名>;
AFTER é usado para adicionar um novo campo após um campo existente.
Observe que um novo campo só pode ser adicionado após um campo existente, não antes dele.
Exemplo 3
Use a instrução ALTER TABLE para adicionar um campo chamado stuno com um tipo de dados INT na tabela do aluno, e o campo stuno está localizado atrás do campo name. A instrução SQL e os resultados da execução são os seguintes:
mysql> ALTER TABLE student ADD stuno INT(11) AFTER name;
Query OK, 0 rows affected (0.13 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> DESC student;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| stuId | int(4) | YES | | NULL | |
| id | int(4) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
| stuno | int(11) | YES | | NULL | |
| sex | char(1) | YES | | NULL | |
| age | int(4) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)
Como pode ser visto nos resultados da execução, o campo stuId foi adicionado à tabela do aluno, e este campo está atrás do campo de nome, e o campo foi adicionado com sucesso.