71 - Agregar campos y restricciones (alter table) |
Trabaje con una tabla llamada "empleados".
1- Elimine la tabla y créela:
drop table empleados; create table empleados( documento char(8) not null, nombre varchar2(10), domicilio varchar2(30), ciudad varchar2(20) default 'Buenos Aires' );
2- Agregue el campo "legajo" de tipo number(3) y una restricción "primary key"
3- Vea si la estructura cambió y si se agregó la restricción
4- Agregue el campo "hijos" de tipo number(2) y en la misma sentencia una restricción "check" que no permita valores superiores a 30
5- Ingrese algunos registros:
insert into empleados values('22222222','Juan Lopez','Colon 123','Cordoba',100,2); insert into empleados values('23333333','Ana Garcia','Sucre 435','Cordoba',200,3);
6- Intente agregar el campo "sueldo" de tipo number(6,2) no nulo y una restricción "check" que no permita valores negativos para dicho campo.
No lo permite porque no damos un valor por defecto para dicho campo no nulo y los registros existentes necesitan cargar un valor.
7- Agregue el campo "sueldo" de tipo number(6,2) no nulo, con el valor por defecto 0 y una restricción "check" que no permita valores negativos para dicho campo
8- Recupere los registros
select *from empleados;9- Vea la nueva estructura de la tabla
10- Vea las restricciones
Ver solucióndrop table empleados; create table empleados( documento char(8) not null, nombre varchar2(10), domicilio varchar2(30), ciudad varchar2(20) default 'Buenos Aires' ); alter table empleados add legajo number(3) constraint PK_empleados_legajo primary key; describe empleados; select *from user_constraints where table_name='EMPLEADOS'; alter table empleados add hijos number(2) constraint CK_empleados_hijos check (hijos<=30); insert into empleados values('22222222','Juan Lopez','Colon 123','Cordoba',100,2); insert into empleados values('23333333','Ana Garcia','Sucre 435','Cordoba',200,3); alter table empleados add sueldo number(6,2) not null constraint CK_empleados_sueldo check (sueldo>=0); alter table empleados add sueldo number(6,2) default 0 not null constraint CK_empleados_sueldo check (sueldo>=0); select *from empleados; describe empleados; select *from user_constraints where table_name='EMPLEADOS';