45 - Indices (Crear - Información)


Primer problema:

Un profesor guarda algunos datos de sus alumnos en una tabla llamada "alumnos".

1- Elimine la tabla y créela con la siguiente estructura:

 drop table alumnos;
 create table alumnos(
  legajo char(5) not null,
  documento char(8) not null,
  nombre varchar2(30),
  curso char(1),
  materia varchar2(30),
  notafinal number(4,2)
 );

2- Ingresamos algunos registros:

 insert into alumnos values ('A123','22222222','Perez Patricia','5','Matematica',9);
 insert into alumnos values ('A234','23333333','Lopez Ana','5','Matematica',9);
 insert into alumnos values ('A345','24444444','Garcia Carlos','6','Matematica',8.5);
 insert into alumnos values ('A348','25555555','Perez Patricia','6','Lengua',7.85);
 insert into alumnos values ('A457','26666666','Perez Fabian','6','Lengua',3.2);

3- Intente crear un índice único para el campo "nombre".
No lo permite porque hay valores duplicados.

4- Cree un índice no único, para el campo "nombre".

5- Cree un índice único, para el campo "lejago".

6- Establezca una restricción "primary key" sobre el campo "legajo".

7- Verifique que Oracle no creó un índice al agregar la restricción, utilizó el índice "I_alumnos_legajo" existente.

8- Agregue una restricción única sobre el campo "documento".

9- Verifique que Oracle creó un índice al agregar la restricción y le dio el nombre de la restricción.

10- Intente crear un índice único para la tabla "alumnos" sobre el campo "notafinal"

11- Indexe la tabla "alumnos" por el campo "notafinal" (índice no único)

12- Indexe la tabla "alumnos" por los campos "curso" y "materia" (índice no único)

13- Intente crear un índice único sobre "materia" (error pues hay datos duplicados)

14- Vea los indices de "alumnos"

15- Consulte el diccionario "user_ind_columns" y analice la información retornada.

16- Vea todos los índices de la base de datos activa que contengan en su nombre el patrón "%EMPLEADOS%" (5 filas retornadas)

Ver solución

 drop table alumnos;
 create table alumnos(
  legajo char(5) not null,
  documento char(8) not null,
  nombre varchar(30),
  curso char(1),
  materia varchar2(30),
  notafinal number(4,2)
 );

 insert into alumnos values ('A123','22222222','Perez Patricia','5','Matematica',9);
 insert into alumnos values ('A234','23333333','Lopez Ana','5','Matematica',9);
 insert into alumnos values ('A345','24444444','Garcia Carlos','6','Matematica',8.5);
 insert into alumnos values ('A348','25555555','Perez Patricia','6','Lengua',7.85);
 insert into alumnos values ('A457','26666666','Perez Fabian','6','Lengua',3.2);

 create unique index I_alumnos_nombre
 on alumnos(nombre);

 create index I_alumnos_nombre
 on alumnos(nombre); 

 create index I_alumnos_legajo
 on alumnos(legajo); 

 alter table alumnos
  add constraint PK_alumnos_legajo
  primary key (legajo);

 select constraint_name, constraint_type, index_name
  from user_constraints
  where table_name='ALUMNOS';

 alter table alumnos
  add constraint UQ_alumnos_documento
  unique (documento);

 select constraint_name, constraint_type, index_name
  from user_constraints
  where table_name='ALUMNOS';

 create unique index I_alumnos_notafinal
 on alumnos(notafinal); 

 create index I_alumnos_notafinal
 on alumnos(notafinal); 

 create index I_alumnos_cursomateria
 on alumnos(curso,materia); 

 create unique index I_alumnos_materia
  on alumnos(materia); 

 select index_name, index_type, uniqueness
  from user_indexes
  where table_name='ALUMNOS';

 select index_name,column_name,column_position
  from user_ind_columns
  where table_name='ALUMNOS';

 select *from user_objects
  where object_type='INDEX' and
  object_name like '%ALUMNOS%';

 


Retornar