buscador

Visita

Mostrando las entradas con la etiqueta Creaci贸n de Otros Objetos de Esquema en Oracle DB con SQL Developer. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Creaci贸n de Otros Objetos de Esquema en Oracle DB con SQL Developer. Mostrar todas las entradas

viernes, 13 de enero de 2023

SQL Capitulo 11 : Creaci贸n de Otros Objetos de Esquema en Oracle DB con SQL Developer

Sean bienvenidos a esta ultima secci贸n donde se revisa acerca la creaci贸n de otros objetos de esquema en oracle con el administrador de la base de datos SQL developer, recalcar estas sentencias estan siendo ejecutadas en SQL developer administrador de la Base de datos Oracle.

Objetivos de la publicaci贸n:
Al finalizar esta lecci贸n, deber铆a estar capacitado para lo siguiente:
  • Crear vistas simples y complejas ver parte 1
  • Recuperar datos de las vistas
  • Crear, mantener y utilizar secuencias
  • Crear y mantener 铆ndices
  • Crear sin贸nimos privados y p煤blicos
En esta lecci贸n, se ofrece una introducci贸n a los objetos de vista, secuencia, sin贸nimo e 铆ndice. Aprender谩 los conceptos b谩sicos de la creaci贸n y el uso de vistas, secuencias e 铆ndices.

Objetos de Base de Datos



Existen otros objetos en la base de datos adem谩s de las tablas. 
Con las vistas, puede presentar y ocultar datos de las tablas.
Muchas aplicaciones exigen el uso de n煤meros 煤nicos como valores de clave primaria. Puede crear c贸digo en la aplicaci贸n para cumplir este requisito o utilizar una secuencia para generar n煤meros 煤nicos.
Si desea mejorar el rendimiento de las consultas de recuperaci贸n de datos, debe crear un 铆ndice. Tambi茅n puede utilizar 铆ndices para reforzar la unicidad en una columna o recopilaci贸n de columnas.
Puede proporcionar nombres alternativos para los objetos mediante sin贸nimos.

¿Qu茅 es una Vista?

Puede representar combinaciones de datos o subjuegos l贸gicos mediante la creaci贸n de vistas de tablas. Una vista es una tabla l贸gica basada en una tabla o en otra vista. Una vista no contiene ning煤n dato propio, sino que se trata de una ventana a trav茅s de la que se pueden visualizar o cambiar los datos de las tablas. Las tablas en las que se basa la vista se denominan tablas base. Las vista se almacena como una sentencia SELECT en el diccionario de datos.



Ventajas de las Vistas

Las vistas restringen el acceso a los datos porque muestra las columnas seleccionadas de la tabla.
Las vistas se pueden utilizar para crear consultas simples para recuperar los resultados de consultas complicadas. Por ejemplo, las vistas se pueden utilizar para consultar informaci贸n de varias tablas sin que el usuario sepa c贸mo escribir una sentencia de uni贸n.

Las vistas proporcionan independencia de los datos para usuarios ad-hoc y programas de aplicaci贸n. Las vistas se pueden utilizar para recuperar datos de varias tablas.

Las vistas proporcionan a los grupos de usuarios acceso a los datos seg煤n sus criterios concretos.

Para obtener m谩s informaci贸n, consulte la secci贸n sobre CREATE VIEW en Oracle Database SQL Language Reference (Referencia sobre Lenguaje SQL de Oracle Database).

Crear vistas simples y complejas


Vistas Simples y Complejas

Existen dos clasificaciones para las vistas: simples y complejas.. La principal diferencia est谩 relacionada con las operaciones (INSERT, UPDATE y DELETE).

Las vistas simples:
  • Derivan datos de una sola tabla.
  • No contienen funciones ni grupos de datos.
  • Pueden realizar operaciones DML a trav茅s de la vista.
Las vistas complejas:
  • Derivan datos de varias tablas.
  • Contienen funciones o grupos de datos.
  • No siempre permiten operaciones DML a trav茅s de la vista.
Creaci贸n de Vistas
Embeber una subconsulta en la sentencia CREATE VIEW:

La subconsulta puede contener la sintaxis compleja SELECT.

Para crear una vista, puede embeber una subconsulta en la sentencia CREATE VIEW.

En la sintaxis:
OR REPLACE vuelve a crear la vista si ya existe.
FORCE         crea la vista independientemente de si existen o no las tablas base.
NOFORCE crea la vista s贸lo si existen las tablas base (opci贸n por defecto).
view         es el nombre de la vista.
alias       especifica los nombre de las expresiones seleccionadas por la consulta de la vista. (El numero de alias debe coincidir con el n煤mero de expresiones seleccionadas por la vista).
subquery Es una sentencia SELECT completa (Puede utilizar alias para las columnas de la lista SELECT).
WITH CHECK OPTION especifica que s贸lo las filas accesibles para la vista se puedan insertar o actualizar.
constraint es el nombre asignado a la restricci贸n CHECK OPTION.
WITH READ ONLY garantiza que no se pueda realizar ninguna operaci贸n DML en esta vista.

Nota: en SQL Developer, haga clic en el icono Run Script o pulse [F5] para ejecutar las sentencias de lenguaje de definici贸n de datos (DLL). Los comentarios se mostrar谩n en la p谩gina con separadores Script Output. 

Crear la vista EMPVU80, que contiene los detalles de los empleados del departamento 80:
Describir la estructura de la vista mediante el comando DESCRIBE de SQL*Plus:

En el ejemplo se crea una vista que contiene el n煤mero de empleado, el apellido y el salario de cada empleado del departamento 80. 
Puede visualizar la estructura de la vista mediante el comando DESCRIBE.

Instrucciones
La subconsulta que define una vista puede contener la sintaxis compleja SELECT, incluidas uniones, grupos y subconsultas.
Si no especifica un nombre de restricci贸n para la vista creada con WITH CHECK OPTION, el sistema asigna un nombre por defecto con el formato SYS_Cn.
Puede utilizar la opci贸n OR REPLACE para cambiar la definici贸n de la vista sin borrarla y volver a crearla o sin necesidad de volver a otorgarle los privilegios de objeto otorgados previamente.

Crear una vista mediante alias de columna en la subconsulta:
Seleccionar las columnas de esta vista seg煤n los nombres de alias proporcionados.

Puede controlar los nombres de columna incluyendo alias de columna en la subconsulta. 
El ejemplo crea una vista que contiene el n煤mero de empleado (EMPLOYEE_ID) con el alias ID_NUMBER, el nombre (LAST_NAME) con el alias NAME y el salario anual (SALARY) con el alias ANN_SALARY para cada empleado del departamento 50. 
Como alternativa, puede utilizar un alias despu茅s de la sentencia CREATE y antes de la subconsulta SELECT. El numero de alias mostrado debe coincidir con el n煤mero de expresiones seleccionadas en la vista). 



CREATE OR REPLACE VIEW   salvu50 (ID_NUMBER, NAME, ANN_SALARY)
  AS SELECT  employee_id, last_name, salary*12
     FROM    employees
     WHERE   department_id = 50;

Recuperaci贸n de Datos de una Vista

Puede recuperar datos de una vista al igual que de una tabla. Puede visualizar el contenido de toda la vista o s贸lo de filas y columnas espec铆ficas.

Modificaci贸n de Vistas
Modificar la vista EMPVU80 mediante una cl谩usula CREATE OR REPLACE VIEW. Agregar alias para cada nombre de columna:

Los alias de columna de la cl谩usula CREATE OR REPLACE VIEW se muestran en el mismo orden que las columnas de la subconsulta.

Con la opci贸n OR REPLACE, se puede crear una vista incluso si ya existe otra con este nombre, sustituyendo de esta forma la antigua versi贸n de la vista para su propietario. Esto significa que la vista se puede modificar sin borrar, volver a crear y volver a otorgar los privilegios de objeto.
Nota: al asignar alias de columna en la cl谩usula CREATE OR REPLACE VIEW, recuerde que los alias se muestran en el mismo orden que las columnas de la subconsulta.



Creaci贸n de Vistas Complejas
Crear una vista compleja que contenga funciones de grupo para visualizar valores de dos tablas:

En el ejemplo se crea una vista compleja de nombres de departamento, salarios m铆nimos y salarios medios por departamento. Tenga en cuenta que se han especificado nombres alternativos para la vista. 脡ste es un requisito necesario si alguna de las columnas de la vista se deriva de una funci贸n o expresi贸n.

Puede visualizar la estructura de la vista mediante el comando DESCRIBE. Para visualizar el contenido de la vista, emita una sentencia SELECT.

SELECT
FROM    dept_sum_vu;

Reglas para Realizar Operaciones DML en una Vista
  • Normalmente, puede realizar operaciones DML en las vistas simples.
  • No puede eliminar una fila si la vista contiene lo siguiente:
    • Funciones de grupo
    • Una cl谩usula GROUP BY
    • La palabra clave DISTINCT
    • La palabra clave ROWNUM de pseudocolumna
  • Puede realizar operaciones DML en los datos a trav茅s de una vista si dichas operaciones siguen ciertas reglas.
  • Puede eliminar una fila de una vista a menos que contenga alguna de las siguientes opciones:
    • Funciones de grupo
    • Una cl谩usula GROUP BY
    • La palabra clave DISTINCT
    • La palabra clave ROWNUM de pseudocolumna
  • No puede modificar datos de una vista si contiene:
    • Funciones de grupo
    • Una cl谩usula GROUP BY
    • La palabra clave DISTINCT
    • La palabra clave ROWNUM de pseudocolumna
    • Columnas definidas por expresiones
Puede modificar datos a trav茅s de una vista a menos que contenga cualquiera de las condiciones mencionadas anterior o columnas definidas por expresiones (por ejemplo, SALARY * 12).

No puede agregar datos a trav茅s de una vista si 茅sta incluye:
  • Funciones de grupo
  • Una cl谩usula GROUP BY
  • La palabra clave DISTINCT
  • La palabra clave ROWNUM de pseudocolumna
  • Columnas definidas por expresiones
  • Columnas NOT NULL de las tablas base no seleccionadas por la vista
Puede agregar datos a trav茅s de una vista a menos que contenga cualquiera de los elementos mostrados anteriormente. No puede agregar datos a una vista si 茅sta contiene columnas NOT NULL sin valores por defecto en la tabla base. Todos los valores necesarios deben estar presentes en la vista. Recuerde que va a agregar valores directamente a la tabla subyacente a trav茅s de la vista.
Para obtener m谩s informaci贸n, consulte la secci贸n sobre CREATE VIEW en Oracle Database SQL Language Reference (Referencia sobre Lenguaje SQL de Oracle Database).



Uso de la Cl谩usula WITH CHECK OPTION
Puede asegurarse de que las operaciones DML realizadas en la vista permanecer谩n en el dominio de la vista mediante la cl谩usula WITH CHECK OPTION:

Cualquier intento de ejecutar INSERT con una fila con department_id distinto de 20, o ejecutar UPDATE en el n煤mero de departamento para cualquier fila de la vista fallar谩 porque viola la restricci贸n WITH CHECK OPTION.

Es posible realizar comprobaciones de integridad referencial a trav茅s de las vistas. Tambi茅n puede aplicar restricciones a nivel de base de datos. La vista se puede utilizar para proteger la integridad de los datos, pero su uso es muy limitado.

La cl谩usula WITH CHECK OPTION especifica que las operaciones INSERT y UPDATE realizadas a trav茅s de la vista no pueden crear filas que no pueda seleccionar la vista. Por lo tanto, permite aplicar restricciones de integridad y comprobaciones de validaci贸n de datos en los datos que se van a insertar o actualizar. Si se intenta realizar operaciones DML en filas que no haya seleccionado la vista, se muestra un error, junto con el nombre de la restricci贸n si se ha especificado.



UPDATE empvu20
SET    department_id = 10
WHERE  employee_id = 201;

Nota: no se ha actualizado ninguna fila porque si el n煤mero de departamento se cambiara a 10, la vista ya no podr铆a ver ese empleado. Con la cl谩usula WITH CHECK OPTION, por tanto, la vista s贸lo puede ver los empleados del departamento 20 y no permite cambiar el n煤mero de departamento de dichos empleados a trav茅s de la vista.

Denegaci贸n de Operaciones DML
Para asegurarse de que no se realice ninguna operaci贸n DML, agregue la opci贸n WITH READ ONLY a la definici贸n de vista.
Cualquier intento de realizar una operaci贸n DML en cualquier fila de la vista provocar谩 un error del servidor de Oracle.

Puede asegurarse de que no se realice ninguna operaci贸n DML en la vista, cr茅ela con la opci贸n WITH READ ONLY. En el ejemplo de la siguiente diapositiva se modifica la vista EMPVU10 para evitar operaciones DML en la vista.


Cualquier intento de eliminar una fila de una vista con una restricci贸n de s贸lo lectura provocar谩 un error: 

DELETE FROM empvu10
WHERE  employee_number = 200;

Igualmente, cualquier intento de insertar o modificar una fila mediante una vista con una restricci贸n de s贸lo lectura provocar谩 el mismo error.

Eliminaci贸n de Vistas
Puede eliminar una vista sin perder los datos, ya que las vistas se basan en tablas subyacentes de la base de datos.

Puede utilizar la sentencia DROP VIEW para eliminar una vista. La sentencia elimina la definici贸n de vista de la base de datos. Sin embargo, el borrado de vistas no tiene ning煤n efecto en las tablas en las que se basan las vistas. Por otro lado, las vistas y otras aplicaciones basadas en las vistas suprimidas se convierten en no v谩lidas. S贸lo el creador o un usuario con el privilegio DROP ANY VIEW puede eliminar una vista.
En la sintaxis, view es el nombre de la vista.

En esta primera parte se abordaron los siguientes temas:
  • Creaci贸n de una vista simple
  • Creaci贸n de una vista compleja
  • Creaci贸n de una vista con restricci贸n de comprobaci贸n
  • Intento de modificar datos de la vista
  • Eliminaci贸n de vistas
En esta segunda parte se abordaran los siguientes temas:
Visi贸n general de secuencias:
    • Creaci贸n, uso y modificaci贸n de una secuencia
    • Valores de secuencia de cach茅
    • Pseudocolumnas NEXTVAL y CURRVAL
Secuencias
Una secuencia es un objeto de base de datos que crea valores enteros. Puede crear secuencias y, a continuaci贸n, utilizarlas para generar n煤meros. 

Una secuencia:
  • Puede generar autom谩ticamente n煤meros 煤nicos
  • Es un objeto que se puede compartir
  • Se puede utilizar para crear un valor de clave primaria
  • Sustituye el c贸digo de aplicaci贸n
  • Acelera la eficacia del acceso a los valores de secuencia cuando est谩n almacenados en cach茅.
Una secuencia es un objeto de base de datos creado por el usuario que pueden compartir varios usuarios para generar enteros. 
Puede definir una secuencia para generar valores 煤nicos o reciclar y volver a utilizar los mismos n煤meros.
El uso normal de las secuencias es la creaci贸n de un valor de clave primaria, que debe ser 煤nico para cada fila. Una secuencia se genera y aumenta (o disminuye) mediante una rutina interna de Oracle. 脡ste puede ser un objeto de ahorro de tiempo, ya que reduce la cantidad de c贸digo de aplicaci贸n necesario para escribir una rutina de generaci贸n de secuencia.
Los n煤meros de secuencia se almacenan y generan independientemente de las tablas. Por lo tanto, la misma secuencia se puede utilizar para varias tablas.



Sentencia CREATE SEQUENCE: Sintaxis
Definir una secuencia para generar n煤meros secuenciales autom谩ticamente:

Genera n煤meros secuenciales autom谩ticamente mediante la sentencia CREATE SEQUENCE.

En la sintaxis:
sequence                      es el nombre del generador de secuencias.
INCREMENT BY n      especifica el intervalo entre n煤meros de secuencia, donde n es un entero (Si se omite esta cl谩usula, la secuencia aumenta en 1).
START WITH n especifica el primer n煤mero de secuencia que se va a generar (Si se omite esta cl谩usula, la secuencia empieza con 1).
MAXVALUE n especifica el valor m谩ximo que puede generar la secuencia.
NOMAXVALUE especifica un valor m谩ximo de 10^27 para una secuencia ascendente y –1 para una secuencia descendente (脡sta es la opci贸n por defecto).
MINVALUE n especifica el valor m铆nimo de secuencia.
NOMINVALUE    especifica un valor m铆nimo de 1 para una secuencia ascendente y –(10^26) para una secuencia descendente (脡sta es la opci贸n por defecto).

Creaci贸n de Secuencias
Crear una secuencia con el nombre DEPT_DEPTID_SEQ que se utilizar谩 para la clave primaria de la tabla DEPARTMENTS.
No utilizar la opci贸n CYCLE.

CYCLE | NOCYCLE especifica si la secuencia sigue generando valores despu茅s de alcanzar su valor m谩ximo o m铆nimo (NOCYCLE es la opci贸n por defecto).
CACHE n | NOCACHE     especifica cu谩ntos valores preasigna el servidor de Oracle el servidor de Oracle en la memoria (por defecto, el servidor de Oracle almacena en cach茅 20 valores).

En el ejemplo se crea una secuencia con el nombre DEPT_DEPTID_SEQ que se utilizar谩 para la columna DEPARTMENT_ID de la tabla DEPARTMENTS. La secuencia se inicia en 120, no permite el almacenamiento en cach茅 y no sigue ning煤n ciclo.

No utilice la opci贸n CYCLE si la secuencia se utiliza para generar valores de clave primaria, a menos que disponga de un mecanismo fiable que depure las filas antiguas m谩s r谩pido que los ciclos de secuencia.

Para obtener m谩s informaci贸n, consulte la secci贸n sobre CREATE SEQUENCE en Oracle Database SQL Language Reference (Referencia sobre Lenguaje SQL de Oracle Database).

Nota: la secuencia no est谩 ligada a una tabla. Como norma general, debe asignar un nombre a la secuencia seg煤n el uso que desee darle. Sin embargo, la secuencia se puede utilizar en cualquier lugar, independientemente de su nombre.

Pseudocolumnas NEXTVAL y CURRVAL
NEXTVAL devuelve el siguiente valor de secuencia disponible. Devuelve un valor 煤nico cada vez que se hace referencia a dicha columna, incluso para diferentes usuarios.
CURRVAL obtiene el valor de secuencia actual.
NEXTVAL se debe emitir para dicha secuencia antes de que CURRVAL contenga un valor.

Despu茅s de crear la secuencia, se generan n煤meros secuenciales para utilizarlos en las tablas. Haga referencia a los valores de secuencia mediante las pseudocolumnas NEXTVAL y CURRVAL.
La pseudocolumna NEXTVAL se utiliza para extraer n煤meros de secuencia sucesivos de una secuencia especificada. Debe cualificar a NEXTVAL con el nombre de secuencia. Al hacer referencia a sequence.NEXTVAL, se genera un nuevo n煤mero de secuencia y el actual se sustituye en CURRVAL.
La pseudocolumna CURRVAL se utiliza para hacer referencia al n煤mero de secuencia que acaba de generar el usuario actual. Sin embargo, NEXTVAL se debe utilizar para generar un n煤mero de secuencia en la sesi贸n del usuario actual antes de que se pueda hacer referencia a CURRVAL. Debe cualificar a CURRVAL con el nombre de secuencia. Al hacer referencia a sequence.CURRVAL, se muestra el 煤ltimo valor devuelto al proceso de ese usuario.



Reglas para el Uso de NEXTVAL y CURRVAL
Puede utilizar NEXTVAL y CURRVAL en los siguientes contextos:
  • La lista SELECT de una sentencia SELECT que no forme parte de una subconsulta
  • La lista SELECT de una subconsulta de la sentencia INSERT
  • La cl谩usula VALUES de una sentencia INSERT
  • La cl谩usula SET de la sentencia UPDATE
Puede utilizar NEXTVAL y CURRVAL en los siguientes contextos:
  • La lista SELECT de una vista
  • Una sentencia SELECT con la palabra clave DISTINCT
  • Una sentencia SELECT con las cl谩usulas GROUP BY, HAVING o ORDER BY
  • Una subconsulta en una sentencia SELECT, DELETE o UPDATE
  • La expresi贸n DEFAULT en una sentencia CREATE TABLE o ALTER TABLE
Para obtener m谩s informaci贸n, consulte las secciones sobre pseudocolumnas y sobre CREATE SEQUENCE en Oracle Database SQL Language Reference (Referencia sobre Lenguaje SQL de Oracle Database).

Uso de una Secuencia
Insertar un nuevo departamento denominado “Support” en la ubicaci贸n con el ID 2500:

Consultar el valor actual de la secuencia DEPT_DEPTID_SEQ:

En el ejemplo se inserta un nuevo departamento en la tabla DEPARTMENTS. Utiliza la secuencia DEPT_DEPTID_SEQ para generar un nuevo n煤mero de departamento como se muestra a continuaci贸n. 

Puede visualizar el valor actual de la secuencia mediante sequence_name.CURRVAL, se muestra en el ejemplo de la diapositiva. La salida de la consulta se muestra a continuaci贸n:

Supongamos que ahora desea contratar empleados para el nuevo departamento. La sentencia INSERT que se debe ejecutar para los nuevos empleados puede incluir el siguiente c贸digo:
INSERT INTO employees (employee_id, department_id, ...)
          VALUES (employees_seq.NEXTVAL, dept_deptid_seq .CURRVAL, ...);

Nota: en el ejemplo anterior, se asume que la secuencia denominada EMPLOYEE_SEQ ya se ha creado para generar los n煤meros de los nuevos empleados.

Almacenamiento en Cach茅 de los Valores de Secuencia
El almacenamiento en cach茅 de los valores de secuencia en la memoria proporciona un acceso m谩s r谩pido a dichos valores.
Los intervalos en los valores de secuencia se producen cuando:
  • Se realiza un rollback.
  • El sistema falla.
  • Una secuencia se utiliza en otra tabla.
Puede almacenar las secuencias en cach茅 en la memoria para proporcionar un acceso m谩s r谩pido a los valores de dichas secuencias. La cach茅 se rellena la primera vez que hace referencia a la secuencia. Las solicitudes del siguiente valor de secuencia se recuperan de la secuencia almacenada en cach茅. Despu茅s de utilizar el 煤ltimo valor de secuencia, la siguiente solicitud de la secuencia introduce otra cach茅 de secuencias en la memoria.

Intervalos en la Secuencia
Aunque los generadores de secuencias emiten n煤meros secuenciales sin intervalos, esta acci贸n se realiza independientemente de que se realice una confirmaci贸n o un rollback. Por lo tanto, si realiza un rollback de una sentencia que contiene una secuencia, se pierde el n煤mero.

Otro evento que puede provocar intervalos en la secuencia es un fallo del sistema. Si la secuencia almacena los valores en cach茅 en la memoria, estos valores se pierden si se produce un fallo del sistema.

Puesto que las secuencias no est谩n ligadas directamente a las tablas, se puede utilizar la misma secuencia para varias tablas. Si lo hace as铆, cada tabla puede contener intervalos en los n煤meros secuenciales.

Modificaci贸n de una Secuencia
Cambiar el valor incremental, el valor m谩ximo, el valor m铆nimo, la opci贸n de ciclo o la opci贸n de cach茅:

Si alcanza el l铆mite MAXVALUE para la secuencia, no se asignan valores adicionales de la secuencia y recibir谩 un error que indica que la secuencia excede el valor MAXVALUE. Para seguir utilizando la secuencia, puede modificarla mediante la sentencia ALTER SEQUENCE.

Sintaxis
  ALTER  SEQUENCE secuencia
       [INCREMENT BY n]
       [{MAXVALUE n | NOMAXVALUE}]
       [{MINVALUE n | NOMINVALUE}]
       [{CYCLE | NOCYCLE}]
       [{CACHE n | NOCACHE}];

En la sintaxis, sequence es el nombre del generador de secuencias.
Para obtener m谩s informaci贸n, consulte la secci贸n sobre ALTER SEQUENCE en Oracle Database SQL Language Reference (Referencia sobre Lenguaje SQL de Oracle Database).

Instrucciones para Modificar una Secuencia
  • Debe ser el propietario o tener el privilegio ALTER para la secuencia.
  • S贸lo se ven afectados los n煤meros de secuencia futuros.
  • La secuencia se debe borrar y volver a crear para reiniciar la secuencia en un n煤mero diferente.
  • Se realiza alguna validaci贸n.
  • Para eliminar una secuencia, utilice la sentencia DROP:

Debe ser el propietario o tener el privilegio ALTER para la secuencia si desea modificarla. Debe ser el propietario o tener el privilegio DROP ANY SEQUENCE para eliminarla.

S贸lo se ven afectados por la sentencia ALTER SEQUENCE los n煤meros de secuencia futuros.
La opci贸n START WITH no se puede cambiar mediante ALTER SEQUENCE. La secuencia se debe borrar y volver a crear para reiniciar la secuencia en un n煤mero diferente.

Se realiza alguna validaci贸n. Por ejemplo, no se puede imponer un nuevo valor MAXVALUE menor que el n煤mero de secuencia actual.

ALTER SEQUENCE dept_deptid_seq
      INCREMENT BY 20
      MAXVALUE 90
      NOCACHE
      NOCYCLE;

Creaci贸n y borrado de 铆ndices

脥ndices

Los 铆ndices son objetos de base de datos que puede crear para mejorar el rendimiento de algunas consultas. Los 铆ndices tambi茅n los puede crear autom谩ticamente el servidor al crear una restricci贸n de clave primaria o 煤nica.

Un 铆ndice:
Es un objeto de esquema
Lo puede utilizar el servidor de Oracle para acelerar la recuperaci贸n de filas mediante un puntero
Puede reducir la entrada/salida (E/S) de disco mediante un m茅todo de ruta de acceso r谩pido para buscar datos de forma r谩pida
Es independiente de la tabla que indexa
Lo utiliza y mantiene autom谩ticamente el servidor de Oracle

Un 铆ndice de servidor de Oracle es un esquema de objeto que puede acelerar la recuperaci贸n de filas mediante un puntero. Los 铆ndices se pueden crear expl铆cita o autom谩ticamente. Si no hay un 铆ndice en la columna, se produce una exploraci贸n de tabla completa.

Un 铆ndice proporciona acceso directo y r谩pido a las filas de una tabla. Su finalidad es reducir la E/S de disco mediante una ruta de acceso indexada para buscar datos de forma r谩pida. Un 铆ndice lo utiliza y mantiene autom谩ticamente el servidor de Oracle. Despu茅s de crear un 铆ndice, no ser谩 necesaria ninguna intervenci贸n directa por parte del usuario.

Los 铆ndices son l贸gica y f铆sicamente independientes de la tabla que indexan. Esto significa que se pueden crear o borrar en cualquier momento sin que afecten a las tablas base o a otros 铆ndices.
Nota: al borrar una tabla, se borran tambi茅n los 铆ndices correspondientes.
Para obtener m谩s informaci贸n, consulte la secci贸n sobre objetos de esquema: 铆ndices en Oracle Database Concepts (Conceptos de Oracle Database).

¿C贸mo se Crean los 脥ndices?
Autom谩ticamente: al definir una restricci贸n PRIMARY KEY o UNIQUE en una definici贸n de tabla, se crea un 铆ndice 煤nico autom谩ticamente.


Manualmente: los usuarios pueden crear 铆ndices no 煤nicos en las columnas para acelerar el acceso a las filas.
Puede crear dos tipos de 铆ndices
脥ndice 煤nico: el servidor de Oracle crea autom谩ticamente este 铆ndice al definir una columna en la tabla para tener una restricci贸n PRIMARY KEY o UNIQUE. El nombre del 铆ndice es el nombre proporcionado a la restricci贸n.

脥ndice no 煤nico: se trata de un 铆ndice que puede crear el usuario. Por ejemplo, puede crear un 铆ndice de columna FOREIGN KEY para una uni贸n en una consulta para mejorar la velocidad de recuperaci贸n. 
Nota: puede crear manualmente un 铆ndice 煤nico, pero se recomienda crear una restricci贸n 煤nica, que impl铆citamente crea el 铆ndice 煤nico.

Creaci贸n de 脥ndices
Crear un 铆ndice en una o m谩s columnas:
Mejorar la velocidad de acceso de consulta a la columna LAST_NAME de la tabla EMPLOYEES:

Para crear un 铆ndice en una o m谩s columnas, emita la sentencia CREATE INDEX.

En la sintaxis:
index es el nombre del 铆ndice.
table es el nombre de la tabla.
column         es el nombre de la columna de la tabla que se debe rellenar.

Especifique UNIQUE para indicar que el valor de la columna (o columnas) en la que se basa el 铆ndice debe ser 煤nico. Especifique BITMAP para indicar que el 铆ndice se debe crear con un bitmap para cada clave distinta, en lugar de indexar cada fila por separado. Los 铆ndices de bitmap almacenan los rowids asociados con un valor de clave como bitmap.
Para obtener m谩s informaci贸n, consulte la secci贸n sobre CREATE INDEX en Oracle Database SQL Language Reference (Referencia sobre Lenguaje SQL de Oracle Database).

Instrucciones de Creaci贸n de 脥ndices

M谩s No Siempre Es Sin贸nimo de Mejor
El hecho de tener m谩s 铆ndices en una tabla no significa que las consultas sean m谩s r谩pidas. Cada operaci贸n DML que se confirma en una tabla con 铆ndices implica la actualizaci贸n de los 铆ndices. Cuanto mayor sea el n煤mero de 铆ndices asociados a una tabla, mayor ser谩 el esfuerzo que debe realizar el servidor de Oracle para actualizar todos los 铆ndices despu茅s de la operaci贸n DML.

Cu谩ndo Crear un 脥ndice
Por lo tanto, s贸lo debe crear 铆ndices si:
La columna contiene una amplia variedad de valores
La columna contiene un gran n煤mero de valores nulos
Una o m谩s columnas se utilizan con frecuencia en conjunto en una cl谩usula WHERE o una condici贸n de uni贸n
La tabla es grande y se espera que la mayor铆a de las consultas recuperen menos del 2% al 4% de las filas

Recuerde que si desea reforzar la unicidad, debe definir una restricci贸n 煤nica en la definici贸n de tabla. En ese caso, se crea un 铆ndice 煤nico autom谩ticamente.

Eliminaci贸n de 脥ndices
Eliminar un 铆ndice del diccionario de datos mediante el comando DROP INDEX:

Eliminar el 铆ndice emp_last_name_idx del diccionario de datos:

Para borrar un 铆ndice, debe ser el propietario del mismo o tener el privilegio DROP ANY INDEX.

No puede modificar los 铆ndices. Para cambiar un 铆ndice, debe borrarlo y volver a crearlo. 
Eliminar una definici贸n de 铆ndice del diccionario de datos mediante la emisi贸n de la sentencia DROP INDEX. Para borrar un 铆ndice, debe ser el propietario del mismo o tener el privilegio DROP ANY INDEX.
En la sintaxis, 铆ndice es el nombre del 铆ndice.
Nota: si borra una tabla, los 铆ndices y restricciones se borran autom谩ticamente, pero permanecen las vistas y secuencias.

Creaci贸n y borrado de sin贸nimos

Sin贸nimos

Los sin贸nimos son objetos de base de datos que permiten llamar a una tabla por otro nombre. Puede crear sin贸nimos para proporcionar un nombre alternativo a la tabla.

Creaci贸n de un Sin贸nimo para un Objeto
Simplificar el acceso a los objetos mediante la creaci贸n de un sin贸nimo (otro nombre para un objeto). Con los sin贸nimos, puede:
Crear una referencia m谩s sencilla a una tabla propiedad de otro usuario
Acortar nombres de objetos largos.
Para hacer referencia a una tabla propiedad de otro usuario, debe anteponer al nombre de la tabla el nombre del usuario que la haya creado, seguido de un punto. Con la creaci贸n de un sin贸nimo se elimina la necesidad de cualificar el nombre del objeto con el esquema y se ofrece nombres alternativos para tablas, vistas, secuencias, procedimientos u otros objetos. Este m茅todo es especialmente 煤til con nombres de objetos largos, como las vistas.



En la sintaxis:
PUBLIC crea un sin贸nimo al que pueden acceder todos los usuarios.
synonym es el nombre del sin贸nimo que se va a crear.
object identifica el objeto para el que se crea el sin贸nimo.

Instrucciones
El objeto no puede estar en un paquete.
Un nombre sin贸nimo privado debe ser distinto de todos los dem谩s objetos propiedad del mismo usuario.
Para obtener m谩s informaci贸n, consulte la secci贸n sobre “CREATE SYNONYM” en Oracle Database SQL Language Reference (Referencia sobre Lenguaje SQL de Oracle Database).

Creaci贸n y Eliminaci贸n de Sin贸nimos
Crear un nombre abreviado para la vista DEPT_SUM_VU:

Borrar un sin贸nimo:

Creaci贸n de Sin贸nimos
En la diapositiva del ejemplo se crea un sin贸nimo para la vista DEPT_SUM_VU para una referencia m谩s r谩pida.
El administrador de la base de datos puede crear un sin贸nimo p煤blico al que puedan acceder todos los usuarios. En el siguiente ejemplo se crea un sin贸nimo p煤blico con el nombre DEPT para la tabla DEPARTMENTS de Alice:

CREATE PUBLIC SYNONYM  dept
FOR    alice.departments;

Eliminaci贸n de Sin贸nimos
Para eliminar un sin贸nimo, utilice la sentencia DROP SYNONYM. S贸lo el administrador de la base de datos puede borrar un sin贸nimo p煤blico.
DROP PUBLIC SYNONYM  dept;
Para obtener m谩s informaci贸n, consulte la secci贸n sobre DROP SYNONYM en Oracle Database SQL Language Reference (Referencia sobre Lenguaje SQL de Oracle Database).

Resumen
En esta lecci贸n, debe haber aprendido lo siguiente:
  • Crear, utilizar y eliminar vistas
  • Generar n煤meros de secuencia autom谩ticamente con el generador de secuencias
  • Crear 铆ndices para mejorar la velocidad de recuperaci贸n de las consultas
  • Utilizar sin贸nimos para proporcionar nombres alternativos para los objetos
En esta lecci贸n, debe haber aprendido acerca de los objetos de base de datos como las vistas, secuencias, 铆ndices y sin贸nimos.

En esta seccion se abordaron los siguientes temas:
  • Creaci贸n de secuencias
  • Uso de secuencias
  • Creaci贸n de 铆ndices no 煤nicos
  • Creaci贸n de sin贸nimos
Raul Tamani A. ©. Im谩genes del tema de fpm. Con tecnolog铆a de Blogger.

Adblock Detectado

Apoya este sitio desactivando el Adblock para seguir navegando. ¡Gracias!

¡Ya Desactive el Adblock!