51 - Modificar campos de una tabla (alter table - modify) |
Con "alter table" podemos modificar el tipo de algún campo incluidos sus atributos.
Continuamos con nuestra tabla "libros", definida con la siguiente estructura:
- código, int unsigned, - titulo, varchar(30) not null, - autor, varchar(30), - editorial, varchar (20), - precio, decimal(5,2) unsigned, - cantidad int unsigned.
Queremos modificar el tipo del campo "cantidad", como guardaremos valores que no superarán los 50000 usaremos smallint unsigned, tipeamos:
alter table libros modify cantidad smallint unsigned;
Usamos "alter table" seguido del nombre de la tabla y "modify" seguido del nombre del nuevo campo con su tipo y los modificadores.
Queremos modificar el tipo del campo "titulo" para poder almacenar una longitud de 40 caracteres y que no permita valores nulos, tipeamos:
alter table libros modify titulo varchar(40) not null;
Hay que tener cuidado al alterar los tipos de los campos de una tabla que ya tiene registros cargados. Si tenemos un campo de texto de longitud 50 y lo cambiamos a 30 de longitud, los registros cargados en ese campo que superen los 30 caracteres, se cortarán.
Igualmente, si un campo fue definido permitiendo valores nulos, se cargaron registros con valores nulos y luego se lo define "not null", todos los registros con valor nulo para ese campo cambiarán al valor por defecto según el tipo (cadena vacía para tipo texto y 0 para numéricos), ya que "null" se convierte en un valor inválido.
Si definimos un campo de tipo decimal(5,2) y tenemos un registro con el valor "900.00" y luego modificamos el campo a "decimal(4,2)", el valor "900.00" se convierte en un valor inválido para el tipo, entonces guarda en su lugar, el valor límite más cercano, "99.99".
Si intentamos definir "auto_increment" un campo que no es clave primaria, aparece un mensaje de error indicando que el campo debe ser clave primaria. Por ejemplo:
alter table libros modify codigo int unsigned auto_increment;
"alter table" combinado con "modify" permite agregar y quitar campos y atributos de campos. Para modificar el valor por defecto ("default") de un campo podemos usar también "modify" pero debemos colocar el tipo y sus modificadores, entonces resulta muy extenso, podemos setear sólo el valor por defecto con la siguienmte sintaxis:
alter table libros alter autor set default 'Varios';
Para eliminar el valor por defecto podemos emplear:
alter table libros alter autor drop default;