Latest web development tutorials

comando MySQL ALTER

Quando precisamos de modificar a tabela de dados ou modificar campo da tabela de dados, você precisará usar o comando MySQL ALTER.

Tutorial antes do início deste capítulo, vamos criar uma tabela, o nome da tabela: testalter_tbl.

root@host# mysql -u root -p password;
Enter password:*******
mysql> use w3big;
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;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| i     | int(11) | YES  |     | NULL    |       |
| c     | char(1) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

Excluir, adicionar ou modificar um campo de tabela

Utilize os seguintes comandos ALTER e cláusula DROP delete criado acima da tabela i campos:

mysql> ALTER TABLE testalter_tbl  DROP i;

Se os dados na tabela único remanescente um campo você não pode usar DROP para excluir o campo.

MySQL usar a cláusula ADD para adicionar colunas quer folha de dados, como exemplos de campos na tabela adicionar i testalter_tbl e definir tipos de dados:

mysql> ALTER TABLE testalter_tbl ADD i INT;

Depois de executar o comando acima, eles campos são automaticamente adicionados ao final do campo de tabela de dados.

mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c     | char(1) | YES  |     | NULL    |       |
| i     | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

Se você precisa especificar a localização do novo campo, (depois de definir localizado em um campo), você pode usar o MySQL fornecer palavra-chave FIRST (conjunto de bits na primeira coluna), após o nome do campo.

Tente o seguinte instrução ALTER TABLE, após a implementação bem-sucedida, o uso MOSTRAR COLUNAS visualizar a estrutura mudança 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;

FIRST e AFTER apenas palavras-chave para cláusula ADD, então se você deseja redefinir a posição do campo tabela de dados sobre a necessidade de usar GOTA excluir um campo e, em seguida, usar Adicionar para adicionar o campo e definir a posição.


Modificar o nome do campo e digite

Se você precisar modificar o tipo de campo e o nome, você pode usar CHANGE ou MODIFY cláusula do comando ALTER.

Por exemplo, o tipo de campo c de CHAR (1) para CHAR (10), você pode executar o seguinte comando:

mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);

Mudança no Uso da cláusula de gramática são muito diferentes. Após a palavra-chave CHANGE, seguido pelo nome do campo que deseja modificar e, em seguida, especifique um novo nome do campo e tipo. Tente os seguintes exemplos:

mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
mysql> ALTER TABLE testalter_tbl CHANGE j j INT;

Efeito do ALTER TABLE em valores nulos e padrão

Quando você modificar o campo, você pode especificar se deseja incluir ou se só definir o valor padrão.

O exemplo a seguir, o campo especificado j não é NULL eo valor padrão é 100.

mysql> ALTER TABLE testalter_tbl 
    -> MODIFY j BIGINT NOT NULL DEFAULT 100;

Se você não definir um valor padrão, o MySQL irá definir automaticamente os padrões de campo para NULL.


Modifique os valores de campo padrão

Você pode usar o ALTER modificar o valor padrão do campo, tente os seguintes exemplos:

mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c     | char(1) | YES  |     | NULL    |       |
| i     | int(11) | YES  |     | 1000    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

Você também pode usar o comando padrão ALTER e DROP cláusulas para excluir o campo, como exemplos:

mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;
mysql> SHOW COLUMNS FROM testalter_tbl;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| c     | char(1) | YES  |     | NULL    |       |
| i     | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)
Changing a Table Type:

Modificar os tipos de tabelas de dados, pode ser realizada utilizando o comando ALTER e cláusula TYPE. Tente os seguintes exemplos, vamos modificar o tipo de MYISAM mesa testalter_tbl:

Nota: Consulte os tipos de tabelas de dados pode usar a instrução SHOW TABLE STATUS.

mysql> ALTER TABLE testalter_tbl TYPE = 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
 Create_options:
        Comment:
1 row in set (0.00 sec)

Modificar o nome da tabela

Se você precisar modificar o nome da tabela de dados, você pode usar a cláusula RENAME na instrução ALTER TABLE para alcançar.

Tente os seguintes exemplos de tabelas de dados testalter_tbl renomear alter_tbl:

mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;

comando ALTER também pode ser usado para criar e eliminar índices de tabelas de dados MySQL, esse recurso vamos introduzir no próximo capítulo.