45 - Indices (Crear - Información) |
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óndrop 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%';