MySQL - Comando ALTER
El MySQL ALTER El comando es muy útil cuando desea cambiar el nombre de su tabla, cualquier campo de la tabla o si desea agregar o eliminar una columna existente en una tabla.
Comencemos con la creación de una tabla llamada testalter_tbl.
[email protected]# mysql -u root -p password;
Enter password:*******
mysql> use TUTORIALS;
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)
Soltar, agregar o reposicionar una columna
Si desea eliminar una columna i existente de la tabla MySQL anterior, usará el DROP cláusula junto con la ALTER comando como se muestra a continuación -
mysql> ALTER TABLE testalter_tbl DROP i;
UN DROP La cláusula no funcionará si la columna es la única que queda en la tabla.
Para agregar una columna, use ADD y especifique la definición de la columna. La siguiente declaración restaura lai columna al testalter_tbl -
mysql> ALTER TABLE testalter_tbl ADD i INT;
Después de emitir esta declaración, testalter contendrá las mismas dos columnas que tenía cuando creó la tabla por primera vez, pero no tendrá la misma estructura. Esto se debe a que hay nuevas columnas que se agregan al final de la tabla de forma predeterminada. Así que aunquei originalmente era la primera columna en mytbl, ahora es la última.
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)
Para indicar que desea una columna en una posición específica dentro de la tabla, use FIRST para convertirla en la primera columna o AFTER col_name para indicar que la nueva columna debe colocarse después de col_name.
Prueba lo siguiente ALTER TABLE declaraciones, usando SHOW COLUMNS después de cada uno para ver qué efecto tiene cada uno -
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;
Los especificadores FIRST y AFTER solo funcionan con la cláusula ADD. Esto significa que si desea reposicionar una columna existente dentro de una tabla, primero debeDROP eso y luego ADD en la nueva posición.
Modificar (cambiar) una definición de columna o un nombre
Para cambiar la definición de una columna, use MODIFY o CHANGE cláusula junto con el comando ALTER.
Por ejemplo, para cambiar de columna c de CHAR (1) a CHAR (10), puede usar el siguiente comando:
mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);
Con CHANGE, la sintaxis es un poco diferente. Después de la palabra clave CHANGE, nombre la columna que desea cambiar y luego especifique la nueva definición, que incluye el nuevo nombre.
Pruebe el siguiente ejemplo:
mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
Si ahora usa CHANGE para convertir j desde BIGINT de regreso INT sin cambiar el nombre de la columna, la declaración será como se muestra a continuación:
mysql> ALTER TABLE testalter_tbl CHANGE j j INT;
The Effect of ALTER TABLE on Null and Default Value Attributes- Cuando MODIFICA o CAMBIA una columna, también puede especificar si la columna puede contener valores NULOS y cuál es su valor predeterminado. De hecho, si no hace esto, MySQL asigna automáticamente valores para estos atributos.
El siguiente bloque de código es un ejemplo, donde el NOT NULL la columna tendrá el valor 100 por defecto.
mysql> ALTER TABLE testalter_tbl
-> MODIFY j BIGINT NOT NULL DEFAULT 100;
Si no utiliza el comando anterior, MySQL completará los valores NULL en todas las columnas.
Alterar (cambiar) el valor predeterminado de una columna
Puede cambiar un valor predeterminado para cualquier columna utilizando el ALTER mando.
Pruebe el siguiente ejemplo.
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)
Puede eliminar la restricción predeterminada de cualquier columna utilizando la cláusula DROP junto con la ALTER mando.
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)
Modificar (cambiar) un tipo de tabla
Puede utilizar un tipo de tabla utilizando el TYPEcláusula junto con el comando ALTER. Pruebe el siguiente ejemplo para cambiar eltestalter_tbl a MYISAM tipo de tabla.
Para averiguar el tipo actual de tabla, use el SHOW TABLE STATUS declaración.
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)
Cambiar el nombre (alterar) de una tabla
Para cambiar el nombre de una tabla, use el RENAME opción de la ALTER TABLE declaración.
Pruebe el siguiente ejemplo para cambiar el nombre testalter_tbl a alter_tbl.
mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;
Puede usar el comando ALTER para crear y soltar el comando INDEX en un archivo MySQL. Discutiremos en detalle sobre este comando en el próximo capítulo.