Resumo : neste tutorial, mostraremos como adicionar uma coluna a uma tabela usando a ADD COLUMN
instrução MySQL.
Introdução à instrução MySQL ADD COLUMN
Para adicionar uma nova coluna a uma tabela existente, use a instrução ALTER TABLE ADD COLUMN
da seguinte forma:
ALTER TABLE table_name
ADD COLUMN new_column_name data_type
[FIRST | AFTER existing_column];
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta sintaxe:
- Primeiro, especifique o nome da tabela à qual deseja adicionar uma nova coluna após a
ALTER TABLE
cláusula. - Segundo, especifique a nova coluna e sua definição após a
ADD COLUMN
cláusula. Observe queCOLUMN
a palavra-chave é opcional, portanto você pode omiti-la. - Terceiro, especifique a posição da nova coluna na tabela.
Ao adicionar uma nova coluna a uma tabela, você pode especificar sua posição na tabela. Use a palavra-chave FIRST
se desejar que a nova coluna seja posicionada como a primeira coluna da tabela. Alternativamente, você usa a AFTER existing_column
cláusula para especificar que a nova coluna deve ser adicionada após uma coluna existente.
Se você não especificar explicitamente a posição da nova coluna, a instrução irá adicioná-la automaticamente como a última coluna da tabela.
Para adicionar duas ou mais colunas a uma tabela ao mesmo tempo, você usa várias ADD
cláusulas:
ALTER TABLE table_name
ADD [COLUMN] new_column_name data_type [FIRST|AFTER existing_column],
ADD [COLUMN] new_column_name data_type [FIRST|AFTER existing_column],
...;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Exemplos de MySQL ADD COLUMN
Vejamos alguns exemplos de adição de uma ou mais colunas a uma tabela.
Criaremos uma tabela chamada vendors
com duas colunas id
e name
:
CREATE TABLE vendors (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255)
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
1) Exemplo de adição de uma coluna
Primeiro, adicione uma nova coluna phone
à vendors
tabela:
ALTER TABLE vendors
ADD COLUMN phone VARCHAR(15) AFTER name;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Como especificamos phone
explicitamente a posição da coluna após a name
coluna, a instrução coloca a phone
coluna após a name
coluna.
Segundo, visualize a lista de colunas da tabela de fornecedores usando a DESC
instrução:
DESC vendors;
Saída:
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| phone | varchar(15) | YES | | NULL | |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
Linguagem de código: PHP ( php )
2) Adicionando uma coluna como última coluna
Primeiro, adicione uma nova coluna vendor_group
à vendors
tabela:
ALTER TABLE vendors
ADD COLUMN vendor_group INT NOT NULL;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Nesta instrução, não especificamos a posição da nova coluna, portanto ela adiciona a vendor_group
coluna como a última coluna da vendors
tabela.
Em segundo lugar, veja a vendors
tabela:
DESC vendors;
Saída:
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | int | NO | PRI | NULL | auto_increment |
| name | varchar(255) | YES | | NULL | |
| phone | varchar(15) | YES | | NULL | |
| vendor_group | int | NO | | NULL | |
+--------------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
Linguagem de código: PHP ( php )
3) Exemplo de adição de duas colunas
Primeiro, insira algumas linhas na vendors
tabela.
INSERT INTO vendors(name,phone,vendor_group)
VALUES('IBM','(408)-298-2987',1),
('Microsoft','(408)-298-2988',1);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Segundo, consulte os dados da vendors
tabela:
SELECT
id,
name,
phone,
vendor_group
FROM
vendors;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----+-----------+----------------+--------------+
| id | name | phone | vendor_group |
+----+-----------+----------------+--------------+
| 1 | IBM | (408)-298-2987 | 1 |
| 2 | Microsoft | (408)-298-2988 | 1 |
+----+-----------+----------------+--------------+
2 rows in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
Terceiro, adicione mais duas colunas email
à hourly_rate
tabela vendors
usando duas ADD
cláusulas:
ALTER TABLE vendors
ADD COLUMN email VARCHAR(100) NOT NULL,
ADD COLUMN hourly_rate decimal(10,2) NOT NULL;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Observe que ambas as colunas email
e são . Porém, a tabela já contém dados. Neste caso, o MySQL usará valores padrão para essas novas colunas.hourly_rate
NOT NULL
vendors
Finalmente, recupere os dados da vendors
tabela:
SELECT
id,
name,
phone,
vendor_group,
email,
hourly_rate
FROM
vendors;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+----+-----------+----------------+--------------+-------+-------------+
| id | name | phone | vendor_group | email | hourly_rate |
+----+-----------+----------------+--------------+-------+-------------+
| 1 | IBM | (408)-298-2987 | 1 | | 0.00 |
| 2 | Microsoft | (408)-298-2988 | 1 | | 0.00 |
+----+-----------+----------------+--------------+-------+-------------+
2 rows in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
A saída indica que a email
coluna está preenchida com espaços em branco, não com NULL
valores. E a hourly_rate
coluna é preenchida com 0.00
.
4) Adicionando uma coluna que já existe
Se você adicionar uma coluna que já existe na tabela, o MySQL emitirá um erro. Por exemplo, se você executar a seguinte instrução:
ALTER TABLE vendors
ADD COLUMN vendor_group INT NOT NULL;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
Error Code: 1060. Duplicate column name 'vendor_group'
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Para a tabela com poucas colunas, é fácil ver quais colunas já estão lá. Porém, para uma tabela grande com centenas de colunas, fica mais difícil.
Neste caso, você deseja verificar se já existe uma coluna em uma tabela antes de adicioná-la.
No entanto, não há nenhuma declaração como ADD COLUMN IF NOT EXISTS
disponível. Felizmente, você pode obter essas informações da columns
tabela do information_schema
banco de dados como a seguinte consulta:
SELECT
IF(count(*) = 1, 'Exist','Not Exist') AS result
FROM
information_schema.columns
WHERE
table_schema = 'classicmodels'
AND table_name = 'vendors'
AND column_name = 'phone';
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Saída:
+-----------+
| result |
+-----------+
| Not Exist |
+-----------+
1 row in set (0.00 sec)
Linguagem de código: JavaScript ( javascript )
Na cláusula WHERE , passamos três argumentos: esquema da tabela ou banco de dados, nome da tabela e nome da coluna. Usamos a função IF para retornar se a coluna existe ou não.
Resumo
- Use
ADD COLUMN
a cláusula MySQL naALTER TABLE
instrução para adicionar uma ou mais colunas a uma tabela.