Primer problema:
Una empresa tiene registrados datos de sus empleados en una tabla llamada "empleados".
1- Elimine la tabla si existe:
if object_id('empleados') is not null
drop table empleados;
2- Créela con la siguiente estructura:
create table empleados (
documento varchar(8) not null,
nombre varchar(30),
seccion varchar(20)
);
3- Ingrese algunos registros, dos de ellos con el mismo número de documento:
insert into empleados
values ('22222222','Alberto Lopez','Sistemas');
insert into empleados
values ('23333333','Beatriz Garcia','Administracion');
insert into empleados
values ('23333333','Carlos Fuentes','Administracion');
4- Intente establecer una restricción "primary key" para la tabla para que el documento no se repita
ni admita valores nulos:
alter table empleados
add constraint PK_empleados_documento
primary key(documento);
No lo permite porque la tabla contiene datos que no cumplen con la restricción, debemos eliminar (o
modificar) el registro que tiene documento duplicado:
delete from empleados
where nombre='Carlos Fuentes';
5- Establezca la restricción "primary key" del punto 4.
6- Intente actualizar un documento para que se repita.
No lo permite porque va contra la restricción.
7-Intente establecer otra restricción "primary key" con el campo "nombre".
No lo permite, sólo puede haber una restricción "primary key" por tabla.
8- Intente ingresar un registro con valor nulo para el documento.
No lo permite porque la restricción no admite valores nulos.
9- Establezca una restricción "default" para que almacene "00000000" en el documento en caso de
omitirlo en un "insert".
10- Ingrese un registro sin valor para el documento.
11- Vea el registro:
select *from empleados;
12- Intente ingresar otro empleado sin documento explícito.
No lo permite porque se duplicaría la clave.
13- Vea las restricciones de la tabla empleados (2 filas):
sp_helpconstraint empleados;
Ver solución
if object_id('empleados') is not null
drop table empleados;
create table empleados (
documento varchar(8) not null,
nombre varchar(30),
seccion varchar(20)
);
insert into empleados
values ('22222222','Alberto Lopez','Sistemas');
insert into empleados
values ('23333333','Beatriz Garcia','Administracion');
insert into empleados
values ('23333333','Carlos Fuentes','Administracion');
alter table empleados
add constraint PK_empleados_documento
primary key(documento);
delete from empleados
where nombre='Carlos Fuentes';
alter table empleados
add constraint PK_empleados_documento
primary key(documento);
update empleados set documento='22222222'
where documento='23333333';
alter table empleados
add constraint PK_empleados_nombre
primary key(nombre);
insert into empleados values(null,'Marcelo Juarez','Sistemas');
alter table empleados
add constraint DF_empleados_documento
default '00000000'
for documento;
insert into empleados (nombre,seccion) values('Luis Luque','Sistemas');
select *from empleados;
insert into empleados (nombre,seccion) values('Ana Fuentes','Sistemas');
sp_helpconstraint empleados;
Segundo problema:
Una empresa de remises tiene registrada la información de sus vehículos en una tabla llamada
"remis".
1- Elimine la tabla si existe:
if object_id('remis') is not null
drop table remis;
2- Cree la tabla con la siguiente estructura:
create table remis(
numero tinyint identity,
patente char(6),
marca varchar(15),
modelo char(4)
);
3- Ingrese algunos registros sin repetir patente:
insert into remis values('ABC123','Renault 12','1990');
insert into remis values('DEF456','Fiat Duna','1995');
4- Intente definir una restricción "primary key" para el campo "patente".
No lo permite porque el campo no fue definido "not null".
5- Establezca una restricción "primary key" para el campo "numero".
Si bien "numero" no fue definido explícitamente "not null", no acepta valores nulos por ser
"identity".
6- Vea la información de las restricciones (2 filas):
sp_helpconstraint remis;
Ver solución
if object_id('remis') is not null
drop table remis;
create table remis(
numero tinyint identity,
patente char(6),
marca varchar(15),
modelo char(4)
);
insert into remis values('ABC123','Renault 12','1990');
insert into remis values('DEF456','Fiat Duna','1995');
alter table remis
add constraint PK_remis_patente
primary key(patente);
alter table remis
add constraint PK_remis_numero
primary key(numero);
sp_helpconstraint remis;