Академический Документы
Профессиональный Документы
Культура Документы
ALTER TABLE permite modificar la estructura de una tabla existente. Por ejemplo,
se pueden aadir o eliminar columnas, crear y destruir ndices, cambiar el tipo de una
columna existente o renombrar columnas o la propia tabla. Tambin es posible
modificar el comentario y el tipo de la tabla.
Si se usa ALTER TABLE para cambiar la especificacin de una columna pero
tbl_name indica que la columna no ha cambiado, es posible que MySQL haya ignorado
la modificacin por alguna razn. Por ejemplo, si se ha intentado cambiar una
columna VARCHAR a CHAR, MySQL seguir usandoVARCHAR si la tabla contiene
otras columnas de longitud variable.
ALTER TABLE trabaja haciendo una copia temporal de la tabla original. La
modificacin se realiza durante la copia, a continuacin la tabla original se borra y la
nueva se renombra. Esto se hace para realizar que todas las actualizaciones se dirijan a
la nueva tabla sin ningn fallo de actualizacin. MientrasALTER TABLE se ejecuta, la
tabla original permanece accesible en lectura para otros clientes. Las actualizaciones y
escrituras en la tabla se retrasan hasta que la nueva tabla est preparada.
Hay que tener en cuenta que si se usa otra opcin para ALTER
TABLE como RENAME, MySQL siempre crear una tabla temporal, aunque no sea
estrictamente necesario copiarla (como cuando se cambia el nombre de una columna).
Est previsto corregir esto en el futuro, pero como no es corriente usar ALTER
TABLE para hacer esto, no es algo urgente de hacer. Para tablas MyISAM, se puede
aumentar la velocidad de la recreacin de ndices (que es la parte ms lenta del
proceso) asignando un valor alto a la variable myisam_sort_buffer_size.
Para
usar ALTER
TABLE,
es
necesario
tener
los
privilegios ALTER, INSERT y CREATE en la tabla.
IGNORE es una extensin MySQL a SQL-92. Controla el modo de trabajar
de ALTER TABLE si hay claves duplicadas o nicas en la nueva tabla. Si
no se especifica IGNORE, la copia se aborta y se deshacen los cambios. Si
se especifica IGNORE, en las filas duplicadas en una clave nica slo se
copia la primera fila; el resto se eliminan.
Se pueden usar mltiples clasulas ADD, ALTER, DROP y CHANGE en
una sentencia sencilla ALTER TABLE. Esto es una extensin MySQL
aSQL-92, que permite slo una aparicin de cada clusula en una
sentencia ALTER TABLE.
CHANGE col_name, DROP col_name
y DROP INDEX tambin son
extensiones MySQL a SQL-92.
MODIFY es una extensin Oracle a ALTER TABLE.
La palabra opcional COLUMN es una palabra ruidosa y puede ser omitida.
Si se usa ALTER TABLE tbl_name RENAME TO new_name sin
ninguna otra opcin, MySQL sencillamente renombra los ficheros
correspondientes a la tabla tbl_name. No hay necesidad de crear una tabla
temporal.
Las
clasulas create_definition usan
la
misma
sintaxis
para ADD y CHANGE que . Esta sintaxis incluye slo el nombre de
columna, no el tipo.
Se puede renombrar una columna usando una clusula CHANGE
old_col_name create_definition. Para hacerlo, hay que especificar los
nombres antiguo y nuevo de la columna y el tipo que la columna tiene
actualmente. Por ejemplo, para renombrar una columna INTEGER desde a
a b, se puede hacer esto:
mysql> ALTER TABLE t1 CHANGE a b INTEGER;
Si se usa CHANGE o MODIFY para acortar una columna para la cual existe
un ndice en parte de la columna (por ejemplo, si se tiene un ndice en los