68 - Agregar campos (alter table- add) |
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".
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:
