68 - Agregar campos (alter table- add)


Problema:

Trabajamos con la tabla "libros" de una librería.
Eliminamos la tabla:

 drop table libros;

Creamos la tabla:

 create table libros(
  titulo varchar2(30),
  editorial varchar2(20)
 );

Agregamos el campo "cantidad" a la tabla "libros", de tipo number(4), con el valor por defecto cero y que NO acepta valores nulos:

 alter table libros
  add cantidad number(4) default 0 not null;

Verificamos la estructura de la tabla:

 describe libros;

aparece el nuevo campo.

Agregamos un nuevo campo "precio" a la tabla "libros", de tipo number(4) que acepta valores nulos:

 alter table libros
  add precio number(4);

Verificamos la estructura de la tabla:

 describe libros;

aparece el nuevo campo.

Ingresamos algunos registros:

 insert into libros values('El aleph','Emece',100,25.5);
 insert into libros values('Uno','Planeta',150,null);

Intentamos agregar un nuevo campo "autor" de tipo varchar2(30) que no admita valores nulos:

 alter table libros
 add autor varchar2(30) not null;

Mensaje de error. Si el campo no aceptará valores nulos y no tiene definido un valor por defecto, no se pueden llenar los registros existentes con ningún valor. Por ello, debemos definirlo con un valor por defecto:

 alter table libros
 add autor varchar2(30) default 'Desconocido' not null;

Veamos qué sucedió con los registros existentes:

 select *from libros;

contienen el valor por defecto en "autor".

Ingresemos el siguiente lote de comandos en el Oracle SQL Developer:

 drop table libros;

 create table libros(
  titulo varchar2(30),
  editorial varchar2(20)
 );

-- Agregamos el campo "cantidad" a la tabla "libros", de tipo number(4),
-- con el valor por defecto cero y que NO acepta valores nulos:
 alter table libros
  add cantidad number(4) default 0 not null;

 -- Verificamos la estructura de la tabla:
 describe libros;

 -- Agregamos un nuevo campo "precio" a la tabla "libros", de
 -- tipo number(4) que acepta valores nulos:
 alter table libros
  add precio number(4);

 -- Verificamos la estructura de la tabla:
 describe libros;

 -- Ingresamos algunos registros:
 insert into libros values('El aleph','Emece',100,25.5);
 insert into libros values('Uno','Planeta',150,null);

 -- Intentamos agregar un nuevo campo "autor" de tipo varchar2(30) que no admita valores nulos:
 alter table libros
  add autor varchar2(30) not null;
 -- Mensaje de error. Si el campo no aceptará valores nulos y no tiene definido un valor por defecto,
 -- no se pueden llenar los registros existentes con ningún valor. 
 -- Por ello, debemos definirlo con un valor por defecto:
 alter table libros
  add autor varchar2(30) default 'Desconocido' not null;

-- Veamos qué sucedió con los registros existentes:
 select * from libros;

La ejecución de este lote de comandos SQL genera una salida similar a:

SQL Developer alter table agregar campo


Retornar