English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Cuando necesitemos modificar el nombre de una tabla de datos o modificar los campos de una tabla de datos, es necesario usar el comando ALTER de MySQL.
Antes de comenzar este capítulo del tutorial, creemos primero una tabla, llamada: testalter_tbl.
root@host# mysql -u root -p contraseña; Ingrese la contraseña:******* mysql> use w3codebox; Database changed mysql> create table testalter_tbl -> ( -> i INT, -> c CHAR(1) -> ); Query OK, 0 filas afectadas (0.05 sec) mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Campo | Tipo | Nulo | Clave | Valor por defecto | Extra | +-------+---------+------+-----+---------+-------+ | i | int(11) | SÍ | | NULL | | | c | char(1) | SÍ | | NULL | | +-------+---------+------+-----+---------+-------+ 2 filas en conjunto (0.00 sec)
El siguiente comando utiliza la orden ALTER y la cláusula DROP para eliminar el campo i creado anteriormente en la tabla:
mysql> ALTER TABLE testalter_tbl DROP i;
No se puede usar DROP para eliminar un campo si solo queda un campo en la tabla de datos.
En MySQL, se usa la cláusula ADD para agregar columnas a la tabla de datos, como en el siguiente ejemplo se agrega el campo i a la tabla testalter_tbl y se define el tipo de datos:
mysql> ALTER TABLE testalter_tbl ADD i INT;
Después de ejecutar el comando anterior, el campo i se agregará automáticamente al final de los campos de la tabla de datos.
mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Campo | Tipo | Nulo | Clave | Valor por defecto | Extra | +-------+---------+------+-----+---------+-------+ | c | char(1) | SÍ | | NULL | | | i | int(11) | SÍ | | NULL | | +-------+---------+------+-----+---------+-------+ 2 filas en conjunto (0.00 sec)
Si necesita especificar la posición del campo nuevo, puede usar los términos de MySQL FIRST (establecer en la primera columna) y AFTER nombre_de_campo (establecer después de algún campo).
Intente la siguiente declaración ALTER TABLE, después de ejecutar con éxito, use SHOW COLUMNS para ver los cambios en la estructura de la tabla:
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;
Las claves FIRST y AFTER se pueden usar en las cláusulas ADD y MODIFY, por lo que si desea restablecer la posición de los campos de la tabla de datos, primero debe usar DROP para eliminar el campo y luego usar ADD para agregar el campo y establecer la posición.
Si necesita modificar el tipo y el nombre del campo, puede usar la cláusula MODIFY o CHANGE en la orden ALTER.
Por ejemplo, cambie el tipo del campo c a CHAR(1) Cambie a CHAR(10) Puede ejecutar el siguiente comando:
mysql> ALTER TABLE testalter_tbl MODIFY c CHAR(10);
El uso de la cláusula CHANGE cambia mucho la sintaxis. Después del关键字 CHANGE, sigue el nombre del campo que deseas modificar, luego especifica el nuevo nombre de campo y el tipo. Intenta con el siguiente ejemplo:
mysql> ALTER TABLE testalter_tbl CHANGE i j BIGINT;
Si ahora desea cambiar el campo j de BIGINT a INT, la sentencia SQL es la siguiente:
mysql> ALTER TABLE testalter_tbl CHANGE j j INT;
Al modificar un campo, puede especificar si incluye un valor o si configura un valor por defecto.
En el siguiente ejemplo, se especifica que el campo j debe ser NOT NULL y tiene un valor por defecto de100。
mysql> ALTER TABLE testalter_tbl -> MODIFY j BIGINT NOT NULL DEFAULT 100;
Si no configura un valor por defecto, MySQL configurará automáticamente el campo como NULL.
Se puede usar ALTER para modificar el valor por defecto del campo, pruebe el siguiente ejemplo:
mysql> ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000; mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Campo | Tipo | Nulo | Clave | Valor por defecto | Extra | +-------+---------+------+-----+---------+-------+ | c | char(1) | SÍ | | NULL | | | i | int(11) | SÍ | | 1000 | | +-------+---------+------+-----+---------+-------+ 2 filas en conjunto (0.00 sec)
También se puede usar el comando ALTER con la cláusula DROP para eliminar el valor por defecto del campo, como en el siguiente ejemplo:
mysql> ALTER TABLE testalter_tbl ALTER i DROP DEFAULT; mysql> SHOW COLUMNS FROM testalter_tbl; +-------+---------+------+-----+---------+-------+ | Campo | Tipo | Nulo | Clave | Valor por defecto | Extra | +-------+---------+------+-----+---------+-------+ | c | char(1) | SÍ | | NULL | | | i | int(11) | SÍ | | NULL | | +-------+---------+------+-----+---------+-------+ 2 filas en conjunto (0.00 sec) Cambio de tipo de tabla:
Para modificar el tipo de tabla de datos, se puede usar el comando ALTER con la cláusula TYPE. Pruebe el siguiente ejemplo, cambiaremos el tipo de la tabla testalter_tbl a MYISAM:
Atención:Se puede utilizar la sentencia SHOW TABLE STATUS para ver el tipo de tabla de datos.
mysql> ALTER TABLE testalter_tbl ENGINE = MYISAM; mysql> SHOW TABLE STATUS LIKE 'testalter_tbl'\G *************************** 1. row **************** Nombre: testalter_tbl Tipo: MyISAM Formato de fila: Fijo Filas: 0 Longitud promedio de fila: 0 Longitud de datos: 0 Longitud máxima de datos: 25769803775 Longitud de índice: 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 Opciones de creación: Comentario: 1 row in set (0.00 sec)
Si es necesario modificar el nombre de la tabla de datos, se puede usar la cláusula RENAME en la declaración ALTER TABLE para lograrlo.
Intente el siguiente ejemplo para cambiar el nombre de la tabla de datos testalter_tbl a alter_tbl:
mysql> ALTER TABLE testalter_tbl RENAME TO alter_tbl;
El comando ALTER también se puede usar para crear y eliminar índices de tablas de datos MySQL, esta función se presentará en los próximos capítulos.