69 - Modificar campos (alter table- modify) |
Trabaje con una tabla llamada "empleados" y "secciones".
1- Elimine las tablas y créelas:
drop table empleados; drop table secciones; create table secciones( codigo number(2), nombre varchar(20), primary key (codigo) ); create table empleados( apellido varchar2(20) not null, nombre varchar2(20), domicilio varchar2(30), seccion number(2), fechaingreso date, telefono number(7), constraint FK_empleados_seccion foreign key (seccion) references secciones(codigo) on delete set null );
2- Modifique el tipo de dato del campo "telefono" a varchar(11)
Oracle lo permite porque la tabla está vacía; si no lo estuviese, no lo permitiría.
3- Ingrese algunos registros en ambas tablas
insert into secciones values(8,'Secretaria'); insert into secciones values(9,'Contaduria'); insert into secciones values(10,'Sistemas'); insert into empleados values('Lopez','Luciano','Colon 123',8,'10/10/1980','4819977'); insert into empleados values('Gonzalez',null,'Avellaneda 222',9,'01/05/1990','4515566');
4- Modifique el campo "nombre" de "empleados" para que permita cadenas variables de 10 caracteres (menor longitud) y luego verifique el cambio.
Oracle lo permite, porque los valores en tal campo son menores a 10.
5- Intente modificar el campo "nombre" de "empleados" para que permita cadenas variables de 6 caracteres (menor longitud)
Oracle no lo permite, porque un valor en tal campo consta de 7 caracteres.
6- Elimine el registro correspondiente a "Lopez Luciano"
7- Modifique el campo "nombre" de "empleados" para que permita cadenas variables de 6 caracteres
Oracle lo permite, la tabla no está vacía pero los registros contienen valor nulo en el campo "nombre".
8- Intente cambiar el tipo de dato del campo "codigo" de "secciones" a char(2)
Oracle no lo permite porque tal campo es referenciado por una clave externa.
9- Cambie la longitud del campo "codigo" de "secciones" a 3.
Oracle lo permite porque el cambio no afecta la restricción "foreign key" que referencia el campo "codigo".
10- Intente modificar el campo "nombre" de "empleados" para que no admita valores nulos.
Mensaje de error, la tabla contiene valores nulos en tal campo.
11- Modifique el valor nulo por uno válido del campo "nombre" de "empleados" y luego realice la modificación del punto anterior.
12- Verifique que "nombre" ya no admite valores nulos.
Ver solucióndrop table empleados; drop table secciones; create table secciones( codigo number(2), nombre varchar(20), primary key (codigo) ); create table empleados( apellido varchar2(20) not null, nombre varchar2(20), domicilio varchar2(30), seccion number(2), fechaingreso date, telefono number(7), constraint FK_empleados_seccion foreign key (seccion) references secciones(codigo) on delete set null ); alter table empleados modify telefono varchar(11); insert into secciones values(8,'Secretaria'); insert into secciones values(9,'Contaduria'); insert into secciones values(10,'Sistemas'); insert into empleados values('Lopez','Luciano','Colon 123',8,'10/10/1980','4819977'); insert into empleados values('Gonzalez',null,'Avellaneda 222',9,'01/05/1990','4515566'); alter table empleados modify nombre varchar2(10); describe empleados; alter table empleados modify nombre varchar2(6); delete empleados where apellido='Lopez'; alter table empleados modify nombre varchar2(6); alter table secciones modify codigo char(2); alter table secciones modify codigo number(3); alter table empleados modify nombre not null; update empleados set nombre='Marina' where nombre is null; alter table empleados modify nombre not null; describe empleados;