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ón
drop 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';