martes, 6 de noviembre de 2012

52 - Cambiar el nombre de un campo de una tabla (alter table - change)



Con "alter table" podemos cambiar el nombre de los campos de una tabla.

Continuamos con nuestra tabla "libros", definida con la siguiente estructura:

- código, int unsigned auto_increment,
- nombre, varchar(40),
- autor, varchar(30),
- editorial, varchar (20),
- costo, decimal(5,2) unsigned,
- cantidad int unsigned,
- clave primaria: código.

Queremos cambiar el nombre del campo "costo" por "precio", tipeamos:

 alter table libros
  change costo precio decimal (5,2);

Usamos "alter table" seguido del nombre de la tabla y "change" seguido del 
nombre actual y el nombre nuevo con su tipo y los modificadores.

Con "change" cambiamos el nombre de un campo y también podemos cambiar el tipo y sus modificadores. Por ejemplo, queremos cambiar el nombre del campo "nombre" por "titulo" y redefinirlo como "not null", tipeamos:

 alter table libros
  change nombre titulo varchar(40) not null;


PROBLEMA RESUELTO


Trabajamos con la tabla "libros" de una librería.
Eliminamos la tabla si existe.
Creamos la tabla "libros" con la siguiente estructura:
 create table libros(
  codigo int unsigned auto_increment,
  nombre varchar(30),
  autor varchar(30),
  editorial varchar (20),
  costo decimal(5,2) unsigned,
  cantidad int unsigned,
  primary key(codigo)
 );
Para cambiar el nombre del campo "costo" por "precio", tipeamos:
 alter table libros
  change costo precio decimal (5,2);
Si visualizamos la estructura de la tabla con "describe" vemos que el nombre del campo se ha modificado.
Con "change" cambiamos el nombre de un campo y también podemos cambiar el tipo y sus modificadores.
Para cambiar el nombre del campo "nombre" por "titulo" y redefinirlo como "not null", tipeamos:
 alter table libros
  change nombre titulo varchar(40) not null;
Si visualizamos la estructura nueva:
 describe libros;
vemos que el campo ahora tiene un nuevo nombre y no permite valores nulos.
PROBLEMA PROPUESTO

Un comercio que vende por mayor artículos de librería y papelería tiene una tabla 
llamada "articulos".

1- Elimine la tabla, si existe.

2- Cree la tabla con la siguiente estructura:
 create table articulos(
  codigo int unsigned auto_increment,
  nombre varchar(20) not null,
  descripcion varchar(30),
  precio decimal(4,2) unsigned,
  primary key(codigo)
 );

3- Ingrese los siguientes registros:
 insert into articulos (nombre,descripcion,precio)
  values('escuadra','plastico 20 cm.',3.50);
 insert into articulos (nombre,descripcion,precio)
  values('lápices colores','Faber x12',4.50);
 insert into articulos (nombre,descripcion,precio)
  values('lápices colores','Faber x24',7.50);
 insert into articulos (nombre,descripcion,precio)
  values('regla','30 cm.',2.50);
 insert into articulos (nombre,descripcion,precio)
  values('fibras','Faber x12',10.30);
 insert into articulos (nombre,descripcion,precio)
  values('fibras','Faber x6',5.10);

4- El comercio, que hasta ahora ha vendido sus artículos por mayor comenzará la venta por menor. 
Necesita alterar la tabla modificando el nombre del campo "precio" por "preciopormayor" además desea redefinirlo como no nulo:
 
5- También necesita alterar la tabla agregando un campo para almacenar el precio por menor para cada artículo. Agrege un campo llamado "preciopormenor" que no 
permita valores nulos:
6- Muestre todos los registros:

7- Actualice el campo "preciopormenor" de todos los registros, dándole el valor del campo "precio" incrementado en un 10%:

8- Muestre todos los registros:




Otros problemas:
 
Trabaje con la tabla "peliculas" de un video club.

1- Elimine la tabla, si existe.

2- Cree la tabla con la siguiente estructura:
 create table peliculas(
  codigo int unsigned,
  nombre varchar(40) not null,
  actor varchar(20),
  director varchar(25),
  duracion tinyint unsigned
 );

3- Cambie el nombre del campo "actor" por "protagonista" y modifíquelo para que 
permita valores nulos:
4- Cambie el campo "nombre" por "titulo" sin alterar los otros atributos:

5- Cambie el nombre del campo "duracion" por "minutos":

1 comentario: