You are on page 1of 20

CREACIÓN Y USO DE CONSTRAINTS SECUENCIAS, VISTAS

E ÍNDICES

CURSO:

TALLER DE BASE DE DATOS

ALUMNOS:

 ANGULO VIGO, RONALD JAVIER.


 SANCHEZ HUAMAN ROGER MIGUEL.
 ERWIN FLORES VARGAS.

CICLO:

2008 – II

DOCENTE:

Ing. Hugo Pérez Quiroz.

Cajamarca, Noviembre del 2008.


INDICE

i. Introducción Pág. 01.


1. Creación y uso de constraints Pág. 01.
1 .1 Tipos de Constraints Pág. 02.
1 .2 Reglas en el uso de constraints Pág. 02.
1 .3 Definiendo constraints Pág. 03.
1.3.1 CONSTRAINT NOT NULL Pág. 03.
1.3.2 CONSTRAINT UNIQUE Pág. 04.
1.3.3 CONSTRAINT PRIMARY KEY Pág. 05.
1.3.4 CONSTRAINT FOREIGN KEY Pág. 08.
1.3.5 CONSTRAINT CHECK Pág. 10.
1 .4 Manipulación de Constraints Pág. 10.
1.4.1 AÑADIENDO UN CONSTRAINT Pág. 10.
1.4.2 ELIMINANDO UN CONSTRAINT Pág. 11.
1.4.3 DESHABILITANDO UN CONSTRAINT Pág. 11.
1.4.4 HABILITANDO UN CONSTRAINT Pág. 12.

2. CREACION Y USO DE SECUENCIAS. Pág. 12.


2.1 Creación de Secuencias Pág. 12.
2.2 Ver Lista de Secuencias Pág. 13.
2.3 Uso de la Secuencia Pág. 13.
2.4 Modificar Secuencias Pág. 14.
2.5 Borrar Secuencias Pág. 14.

3 CREACION Y USO DE VISTAS. Pág. 15.


3 .1 Creación De Vistas Pág. 15.
3.2 Ejecución de comandos DML sobre Vistas Pág. 16.
3.3 Mostrar la lista de Vistas Pág. 16.
3.4 Borrar Vistas Pág. 17.

4 CREACION Y USO DE INDICES Pág. 17.


4.1 Creación de Índices Pág. 18.
4.2 Lista de Índices Pág. 18.
4.3 Borrar Índices Pág. 18.

5 Bibliografía Pág. 18.


INTRODUCCION
OrdenSalida
OrdenCompra Categoria
DetalleOrdenCompra NroOrdenSalida
NroOrden CategoriaID
NroOrden (FK) DetalleOrdenSalida FechaVenta
FechaEmision NombreCategoría FechaSalida
CodProducto (FK) Codproducto (FK)
FechaRecibo Ubicación EstadoEntrega
CantidadPedida NroOrdenSalida (FK)
RucDniProvee (FK) RucDniCte (FK)
Descripcion Descripcion
CantidadRecibida Cantidad

Cliente
RucDniCte
Proveedor Direccion
Venta
RucDniProvee Email
NroVenta Telefono1
RazonSocial
Fax FechaVenta RazonsocNombre
Direccion IdUsuario (FK) Telefono2
Ususario Saldo
Telefono1
Compra IdUsuario FechaPago
Email
NroCompra CuentaProveedor Nombre
Producto
FechaCompra Telefono2 ApPaterno
TipoDocumento Codproducto ApMaterno
RucDniProvee (FK) Descripcion Password
DetalleCompra
NroDocumento Stockminimo Telefono
NroCompra (FK) Boleta
FechaPago Stockactual Email
Estado CodProducto (FK) Direccion NroBoleta
Marca
Igv Cantidad PrecioCompra FechaEmision
PrecioCompra PrecioVenta Igv
Descuento FechaVencimiento MontoTotal
Descripcion Presentacion NroVenta (FK)
CategoriaID (FK) DetalleBoleta Estado
NroBoleta (FK) FechaPago
CodProducto (FK) RucDniCte (FK)
Cantidad
Precio
SubMonto
Descripcion
Descuento

1 - CREACION Y USO DE CONSTRAINTS

El servidor de Oracle utiliza constraints para prevenir el registro de


datos no válidos a las tablas. Se pueden utilizar los constraints para lo
siguiente:

 Implementar o imponer reglas en los datos de una tabla


cuando una fila es insertada, modificada o borrada de la tabla.
El constraint se debe cumplir para que la operación se realice.
 Previene la eliminación de una tabla si existen dependencias
con otras.
 Proporciona reglas para herramientas de Oracle, como Oracle
Developer.

Las reglas de negocio se implementan en ORACLE mediante


restricciones (constraints), disparadores (triggers) o código de
aplicación.
1 .1 Tipos de Constraints

1 .2 Reglas en el uso de constraints

Todos los constraints son almacenados en el diccionario de datos. Los


Constraints son fáciles de referenciar si les proporcionas un nombre
adecuado. Los constraints deben seguir el estándar para nombrar
objetos. Si tú no especificas un nombre para tu constraint, el servidor
de Oracle genera un nombre con el siguiente formato SYS_Cn, donde n
es un entero que identifica el nombre del constraint como único. Los
constraints pueden ser definidos al mismo tiempo que se crea una tabla
o después de que la tabla ha sido creada. Se pueden ver los constraints
definidos para una tabla específica en la tabla USER_CONSTRAINTS del
diccionario de datos.
1 .3 Definiendo constraints

En la imagen anterior se muestra la sintaxis para definir constraints en


la creación de una tabla.

Los constraints son usualmente creados al mismo tiempo que la tabla,


pero pueden ser añadidos después de la creación de la misma y
también pueden ser deshabilitados temporalmente.

Los constraints pueden estar definidos en uno de dos niveles que son:

1.3.1 CONSTRAINT NOT NULL

El constraint NOT NULL se asegura de que las columnas no contengan


valores nulos. Las columnas sin un constraint NOT NULL pueden
contener valores nulos por defecto.

El constraint NOT NULL puede ser especificado solamente a nivel de


columnas y no a nivel de tabla. En el ejemplo anterior se aplica un
constraint NOT NULL a las columnas LAST_NAME y HIRE_DATE de la
tabla EMPLOYEES. Debido a que esos constraints no tienen nombre, el
servidor de Oracle crea nombres para ellos.
En este ejemplo utilizamos en constraint NOT NULL, en el instante que
creamos nuestra tabla Sindicato.

CREATE TABLE SINDICATO(


IdSindicato Char(4)NOT NULL,
NomSIndicato Varchar2(40)NOT NULL,
TipoGestion Varchar(35));

Otro tipo de implementación del constraint NOT NULL, es modificando


la tabla que ha sido creada anteriormente.

describe categoria;
Name Null Type
----------------------------------------------------------------------------------------
CATEGORIAID NOT NULL CHAR(18)
UBICACIÓN CHAR(18)
NOMBRECATEGORÍA CHAR(18)

Modificamos la restricción de la tabla.


ALTER TABLE CATEGORIA
MODIFY(UBICACIÓN NOT NULL);
CATEGORIAID NOT NULL CHAR(18)
UBICACIÓN NOT NULL CHAR(18)
NOMBRECATEGORÍA CHAR(18)

Insertamos valores a nuestra tabla.


INSERT INTO CATEGORIA
VALUES ('AL12', ,'ALIMENTOS');

ERROR:
Error starting at line 1 in command:
INSERT INTO CATEGORIA
VALUES ('AL12',,'ALIMENTOS')
Error at Command Line:2 Column:15
Error report:
SQL Error: ORA-00936: falta una expresión
00936. 00000 - "missing expression"
*Cause:
*Action:

1.3.2 CONSTRAINT UNIQUE

Un constraint UNIQUE requiere que todos los valores en una columna o


conjunto de columnas sean únicos esto es, dos filas de una tabla no
pueden tener valores duplicados en la columna o conjunto de columnas
especificadas. La columna o conjunto de columnas incluida en la
definición del constraint UNIQUE es llamada llave única (unique key).
Si el constraint UNIQUE comprende más de una columna, el grupo de
columnas es llamado llave única compuesta (composite unique key).

Los constraints UNIQUE permiten el uso de valores nulos siempre y


cuando no se hayan definido constraints NOT NULL para las mismas
columnas. De hecho, cualquier número de filas puede incluir nulos
para las columnas sin constraints NOT NULL puesto que los valores
nulos no son iguales a nada. Un valor nulo en una columna (o en todas
las columnas de una llave única compuesta) siempre satisface un
constraint UNIQUE.

Un constraint UNIQUE puede ser definido a nivel de columna o tabla.


Una llave única compuesta es creada usando el nivel de definición de
tabla.

DESCRIBE CLIENTE;
Name Null Type
--------------------------------------------------------------------------------
RUCDNICTE NOT NULL CHAR(18)
DIRECCION CHAR(18)
EMAIL CHAR(18)
TELEFONO1 CHAR(18)
RAZONSOCNOMBRE CHAR(18)
TELEFONO2 CHAR(18)
En este caso realizamos dos restricciones UNIQUE a los campos de Email y
RazonSocial.

ALTER TABLE CLIENTE


MODIFY (CONSTRAINT UNMAIL UNIQUE(EMAIL))

Insertamos algunas filas a nuestra tabla.


INSERT INTO CLIENTE
VALUES('43918908','LOSALIZOS 212','arzame@yahoo.es','8762412','Armando
Zamora','976457238');
1 rows inserted

INSERT INTO CLIENTE


VALUES('439874232','EL SOL #212','arzame@yahoo.es','9878712','Armando
Sanchez','976897638');

ERROR:
Error starting at line 1 in command:
INSERT INTO CLIENTE
VALUES('439874232','EL SOL #212','arzame@yahoo.es','9878712','Armando
Sanchez','976897638')
Error report:
SQL Error: ORA-00001: restricción única (SYSTEM.XPKCLIENTE) violada
00001. 00000 - "unique constraint (%s.%s) violated"
*Cause: An UPDATE or INSERT statement attempted to insert a duplicate
key.
For Trusted Oracle configured in DBMS MAC mode, you may see
this message if a duplicate entry exists at a different level.
*Action: Either remove the unique restriction or do not insert the key.

1.3.3 CONSTRAINT PRIMARY KEY

Un constraint PRIMARY KEY crea una llave primaria para la tabla. Solo
una llave primaria puede ser creada por cada tabla. El constraint
PRIMARY KEY es una columna o conjunto de columnas que identifica
de forma única cada fila de una tabla. Estos constraints obligan valores
únicos para la columna o combinación de columnas y aseguran que
estas columnas no puedan contener valores nulos.

Los constraints PRIMARY KEY pueden ser definidos a nivel de columna


o a nivel de tabla. Una llave primaria compuesta es creada usando la
definición a nivel de tabla.
Una tabla puede tener solo un constraint PRIMARY KEY pero puede
tener diversos constraints UNIQUE.

CREATE TABLE FACTURA(


NroFactura NUMBER(5),
fechaEmision DATE,
MontoTotal INTEGER,
Igv DECIMAL,
CONSTRAINT IDFAC PRIMARY KEY(NroFactura)
);

DESCRIBE FACTURA;
Name Null Type
-----------------------------------------------------------------------------------------------
NROFACTURA NOT NULL NUMBER(5)
FECHAEMISION DATE
MONTOTOTAL NUMBER(38)
IGV NUMBER

En el ejemplo anterior se define un constraint PRIMARY KEY en la


columna NroFactura de la tabla FACTURA, el nombre del constraint es
IDFACT.

Insertamos valores a nuestra tabla.

INSERT INTO FACTURA


VALUES (012,'12/11/2008',1600,13);

INSERT INTO FACTURA


VALUES (012,'12/11/2008',1600,12)

ERROR:
SQL Error: ORA-00001: restricción única (SYSTEM.IDFAC) violada
00001. 00000 - "unique constraint (%s.%s) violated"
*Cause: An UPDATE or INSERT statement attempted to insert a
duplicate key.
For Trusted Oracle configured in DBMS MAC mode, you may see
this message if a duplicate entry exists at a different level.
*Action: Either remove the unique restriction or do not insert the key.
1.3.4 CONSTRAINT FOREIGN KEY

Un Foreign Key o llave foránea, es un constraint de integridad


referencial que designa a una columna o combinación de columnas
como una llave foránea estableciendo una relación entre una llave
primaria o llave única en la misma tabla o en una tabla diferente. En el
ejemplo anterior, DEPARTAMENT_ID está definida como llave foránea
en la tabla EMPLOYEES (tabla dependiente o hija); esta referencia de la
columna DEPARTMENT_ID de la tabla DEPARTMENTS es la tabla
referenciada o tabla padre.

Un valor de llave foránea debe corresponder con un valor existente en la


tabla padre o ser nulo.

Las llaves foráneas están basadas en los valores de los datos y su lógica
pura, no física o apuntadores.

En el ejemplo anterior se define un constraint FOREIGN KEY en la


columna DEPARTMENT_ID de la tabla EMPLOYEES, utilizando la
sintaxis a nivel de tabla. El nombre del constraint es EMP_DEPTID_FK,
La llave foránea también puede ser definida a nivel de columna, puesto
que el constraint está basado en una columna. La sintaxis difiere
puesto que la palabra reservada FOREIGN KEY no aparece, por
ejemplo:

La llave foránea está definida en la tabla hija, y la tabla conteniendo la


columna referenciada es la tabla padre. La llave foránea es definida al
utilizar una combinación de las siguientes palabras reservadas:

 FOREIGN KEY es usada para definir la columna en la tabla hija


como un constraint a nivel tabla.
 REFERENCES identifica la tabla y columna en la tabla padre.
 ON DELETE CASCADE indica que cuando la fila en la tabla padre
es eliminada, las filas dependientes en la tabla hija pueden ser
eliminadas.
 ON DELETE SET NULL convierte los valores de las llaves foráneas
a nulos cuando el valor del padre es removido.

El comportamiento por defecto es llamado regla de restricción, cuando


prohibimos la actualización o eliminación de un dato referenciado. Sin
las opciones DELETE CASCADE o ON DELETE SET NULL, las filas en
la tabla padre no pueden ser eliminadas si estas son referenciadas en la
tabla hija.

1.3.5 CONSTRAINT CHECK

El constraint CHECK define una condición que para cada fila debe
satisfacerse. La condición puede utilizarse de manera similar a las
condiciones de una consulta, con las siguientes excepciones:
 Las referencias a columnas CURRVAL, NEXTVAL, LEVEL y
ROWNUM
 Llamadas a funciones SYSDATE, UID, USER y USERENV
 Consultas que hagan referencia a valores en otras filas de la
misma tabla
Una columna puede tener múltiples constraints CHECK las cuales
pueden referenciarse en la definición de la columna. No se tienen
límites en el número de constraints CHECK cuando se define una
columna.

1 .4 Manipulación de Constraints
1.4.1 AÑADIENDO UN CONSTRAINT

Se pueden añadir constraints a tablas existentes con el uso de la


sentencia ALTER TABLE y la cláusula ADD.
Sintaxis:
 table es el nombre de la tabla
 constraint es el nombre del constraint
 type es el tipo de constraint
 column es el nombre de la columna afectada por el constraint
En la sintaxis el nombre del constraint es opcional, aunque es
recomendado. Si no se le especifica un nombre al constraint, el sistema
genera uno.

Normas a seguir
 Se puede añadir, eliminar, habilitar o deshabilitar un constraint,
pero no se puede modificar su estructura.
 Se puede añadir un constraint NOT NULL a una columna
existente con el uso de la cláusula MODIFY de la sentencia
ALTER TABLE.

En el ejemplo anterior se crea un constraint FOREIGN KEY en la tabla


EMPLOYEES. El constraint asegura que un jefe exista como un
empleado válido en la tabla EMPLOYEES.

1.4.2 ELIMINANDO UN CONSTRAINT

Para eliminar un constraint, se puede identificar el nombre del


constraint desde las vistas del diccionario de datos SER_CONSTRAINTS
y USER_CONS_COLUMNS. Entonces se usa la sentencia ALTER TABLE
con la cláusula DROP. La opción CASCADE de la cláusula DROP
ocasiona que todos los constraints dependientes sean borrados.
Sintaxis:
Ejemplo:

1.4.3 DESHABILITANDO UN CONSTRAINT

Se puede deshabilitar un constraint sin eliminarlo o recrearlo con el uso


de la sentencia ALTER TABLE y la cláusula DISABLE.
Sintaxis

Normas a seguir:
 Se puede usar la cláusula DISABLE en las sentencias CREATE
TABLE y ALTER TABLE.
 La cláusula CASCADE deshabilita las dependencias de los
constraints de integridad.
 Deshabilitar un constraint único o llave primaria, elimina el
índice único.
Ejemplo:

1.4.4 HABILITANDO UN CONSTRAINT

Se puede habilitar un constraint sin eliminarlo o recrearlo utilizando la


sentencia ALTER TABLE con la cláusula ENABLE.
Sintaxis:

Donde:
 table es el nombre de la tabla.
 constraint es el nombre del constraint.
Normas a seguir:
 Si se habilita un constraint, este aplica a todos los datos de la
tabla. Todos los datos de la tabla deben satisfacer el constraint.
 Si se habilita un constraint PRIMARY KEY o UNIQUE key, se crea
un índice único o de llave primaria automáticamente.
 Se puede usar la cláusula ENABLE en las sentencias CREATE
TABLE y ALTER TABLE.
 Habilitar un constraint de llave primaria que ha sido
deshabilitado con la opción CASCADE no habilita ninguna llave
foránea dependiente de la llave primaria.
Ejemplo:

2 – CREACION Y USO DE SECUENCIAS

Una secuencia sirve para generar automáticamente números distintos.


Se utilizan para generar valores para campos que se utilizan como clave
forzada (claves cuyo valor no interesa, sólo sirven para identificar los
registros de una tabla).

Es una rutina interna de Oracle la que realiza la función de generar un


número distinto cada vez. Las secuencias se almacenan
independientemente de la tabla, por lo que la misma secuencia se
puede utilizar para diversas tablas.

2.1 Creación de Secuencias

Donde:
a) Secuencia. Es el nombre que se le da al objeto de secuencia
b) INCREMENT BY. Indica cuánto se incrementa la secuencia cada
vez que se usa. Por defecto se incrementa de uno en uno
c) START WITH. Indica el valor inicial de la secuencia (por defecto 1)
d) MAXVALUE. Máximo valor que puede tomar la secuencia. Si no
se toma
e) NOMAXVALUE que permite llegar hasta el 1027
f) MINVALUE. Mínimo valor que puede tomar la secuencia. Por
defecto -1026.
g) CYCLE. Hace que la secuencia vuelva a empezar si se ha llegado al máximo
valor.

Ejemplo:
CREATE SEQUENCE Sec_Numeros
START WITH 5
INCREMENT BY 2
MAXVALUE 100
MINVALUE 5

En la primera ejecución obtenemos:


SELECT Sec_Numeros.NEXTVAL
FROM DUAL;

NEXTVAL
----------------------
5

En la segunda ejecución obtenemos:


SELECT Sec_Numeros.NEXTVAL
FROM DUAL;

NEXTVAL
----------------------
7

LA Ejecucion del comando CURRVAL nos retorna siempre el valor


actual de la secuecia
SELECT Sec_Numeros.CURRVAL
FROM DUAL;

CURRVAL
----------------------
7

2.2 Ver Lista de Secuencias

La vista del diccionario de datos USER_SEQUENCES muestra la lista de


secuencias actuales. La columna LAST_NUMBER muestra cual será el
siguiente número de secuencia disponible.

2.3 Uso de la Secuencia

Los métodos NEXTVAL y CURRVAL se utilizan para obtener el siguiente


número y el valor actual de la secuencia respectivamente.

Ejemplo :
SELECT Sec_Numeros.NEXTVAL
FROM DUAL;

Eso muestra en pantalla el siguiente valor de la secuencia. Realmente


NEXTVAL incrementa la secuencia y devuelve el valor actual. CURRVAL
devuelve el valor de la secuencia, pero sin incrementar la misma.
Ambas funciones pueden ser utilizadas en:
a) Una consulta SELECT que no lleve DISTINCT, ni grupos, ni sea
parte de una vista, ni sea subconsulta de otro SELECT, UPDATE
o DELETE.
b) Una subconsulta SELECT en una instrucción INSERT.
c) La cláusula VALUES de la instrucción INSERT.
d) La cláusula SET de la instrucción UPDATE.
No se puede utilizar (y siempre hay tentaciones para ello) como valor
para la cláusula DEFAULT de un campo de tabla. Su uso más habitual
es como apoyo al comando INSERT:

2.3 Modificar Secuencias

Se pueden modificar las secuencias, pero la modificación sólo puede


afectar a los futuros valores de la secuencia, no a los ya utilizados.
Sintaxis:

2.4 Borrar Secuencias


Lo hace el comando DROP SEQUENCE seguido del nombre de la
secuencia a borrar.

3 – CREACION Y USO DE VISTAS.

Una vista no es más que una consulta almacenada a fin de utilizarla


tantas veces como se desee. Una vista no contiene datos sino la
instrucción SELECT necesaria para crear la vista, eso asegura que los
datos sean coherentes al utilizar los datos almacenados en las tablas.
Las vistas se emplean para:
 Realizar consultas complejas más fácilmente
 Proporcionar tablas con datos completos
 Utilizar visiones especiales de los datos
Hay dos tipos de vistas:
1. SIMPLES. Las forman una sola tabla y no contienen funciones de
agrupación. Su ventaja es que permiten siempre realizar
operaciones DML sobre ellas.
2. COMPLEJAS. Obtienen datos de varias tablas, pueden utilizar
funciones de agrupación. No siempre permiten operaciones DML.
3 .1 Creación De Vistas

a) OR REPLACE. Si la vista ya existía, la cambia por la actual.


b) FORCE. Crea la vista aunque los datos de la consulta SELECT no
existan.
c) Vista. Nombre que se le da a la vista.
d) Alias. Lista de alias que se establecen para las columnas
devueltas por la consulta.
e) Select en la que se basa esta vista. El número de alias debe
coincidir con el número de columnas devueltas por SELECT.
f) WITH CHECK OPTION. Hace que sólo las filas que se muestran
en la vista puedan ser añadidas (INSERT) o modificadas
(UPDATE). La restricción que sigue a esta sección es el nombre
que se le da a esta restricción de tipo Check Option.
g) WITH READ ONLY. Hace que la vista sea de sólo lectura. Permite
grabar un nombre para esta restricción.

Lo bueno de las vistas es que tras su creación se utilizan como si fueran


una tabla.
Ejemplo:
La creación de la vista del ejemplo es compleja ya que hay relaciones
complicadas, pero una vez creada la vista, se le pueden hacer consultas
como si se tratara de una tabla normal. Incluso se puede utilizar el
comando DESCRIBE sobre la vista para mostrar la estructura de los
campos que forman la vista.

3.2 Ejecución de comandos DML sobre Vistas

Las instrucciones DML ejecutadas sobre las vistas permiten añadir o


modificar los datos de las tablas relacionados con las filas de la vista.
Ahora bien, no es posible ejecutar instrucciones DML sobre vistas que:
 Utilicen funciones de grupo (SUM, AVG,...)
 Usen GROUP BY o DISTINCT
 Posean columnas con cálculos (PRECIO * 1.16)
Además no se pueden añadir datos a una vista si en las tablas
referencias en la consulta SELECT hay campos NOT NULL que no
aparecen en la consulta (es lógico ya que al añadir el dato se tendría
que añadir el registro colocando el valor NULL en el campo). Ejemplo
(Sobre la vista anterior):

3.3 Mostrar la lista de Vistas

La vista del diccionario de datos USER_VIEWS permite mostrar una


lista de todas las vistas que posee el usuario actual. Es decir, para
saber qué vistas hay disponibles se usa:

3.4 Borrar Vistas


Se utiliza el comando DROP VIEW:

4 - CREACION Y USO DE INDICES

Los índices son esquemas que hacen que Oracle acelere las operaciones
de consulta y ordenación sobre los campos a los que el índice hace
referencia.

Se almacenan aparte de la tabla a la que hace referencia, lo que permite


crearles y borrarles en cualquier momento.

Lo que realizan es una lista ordenada por la que Oracle puede acceder
para facilitar la búsqueda de los datos. Cada vez que se añade un nuevo
registro, los índices involucrados se actualizan a fin de que su
información esté al día. De ahí que cuantos más índices haya, más le
cuesta a Oracle añadir registros, pero más rápidas se realizan las
instrucciones de consulta.

La mayoría de los índices se crean de manera implícita, como


consecuencia de las restricciones PRIMARY KEY (que obliga a crear un
índice único sobre los campos clave) ,UNIQUE (crea también un índice
único) y FOREIGN KEY (crea un índice con posibilidad de repetir
valores, índice con duplicados). Estos son índices obligatorios, por los
que les crea el propio Oracle.

4.1 Creación de Índices

Aparte de los índices obligatorios comentados anteriormente, se pueden


crear índices de forma explícita. Éstos se crean para aquellos campos
sobre los cuales se realizarán búsquedas e instrucciones de ordenación
frecuente.
Sintaxis:

El ejemplo crea un índice para los campos apellido1, apellido2 y


nombre. Esto no es lo mismo que crear un índice para cada campo, este
índice es efectivo cuando se buscan u ordenan clientes usando los tres
campos (apellido1, apellido2, nombre) a la vez.
Se aconseja crear índices en campos que:
a) Contengan una gran cantidad de valores.
b) Contengan una gran cantidad de nulos.
c) Son parte habitual de cláusulas WHERE, GROUP BY u ORDER
BY.
d) Son parte de listados de consultas de grandes tablas sobre las
que casi siempre se muestran como mucho un 4% de su
contenido.
No se aconseja en campos que:
a) Pertenezcan a tablas pequeñas.
b) No se usan a menudo en las consultas.
c) Pertenecen a tablas cuyas consultas muestran más de un 6% del
total de registros.
d) Pertenecen a tablas que se actualizan frecuentemente.
e) Se utilizan en expresiones.
Los índices se pueden crear utilizando expresiones complejas:
Esos índices tienen sentido si en las consultas se utilizan exactamente
esas expresiones.

4.2 Lista de Índices


Para ver la lista de índices se utiliza la vista USER_INDEXES. Mientras
que la vista USER_IND_COLUMNS Muestra la lista de columnas que
son utilizadas por índices.

4.3 Borrar Índices


La instrucción DROP INDEX seguida del nombre del índice permite
eliminar el índice en cuestión.

5 BIBLIOGRAFIA

a) http://alarcos.inf-cr.uclm.es/doc/bda/doc/lab/BDa-p2.pdf

b) http://blearning.itmina.edu.mx/dep/sada/Ingenieria%20en%20
Sistemas%20Computacionales/5to%20Semestre/Taller%20de%2
0Base%20de%20Datos/taller_bd/sqlprocedual.pdf

c) http://www.itescam.edu.mx/principal/sylabus/fpdb/recursos/r
23532.PDF

d) http://www.jorgesanchez.net/bd/oracleSQL.pdf

e) http://www.aposada.net/downloads/documentos/bd/Plus%20b
%C3%A1sico.PDF

f) http://leebyte.iespana.es/cursos/bd/oracle%20curso%206%20le
cciones.pdf

You might also like