abf leccion 12

28
Jaime Amigo P. © 2006, Santiago - Chile Instituto Profesional DuocUC Escuela de Ingeniería Administrando Esquemas

Upload: victdiazm

Post on 04-Jul-2015

167 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Abf leccion 12

Jaime Amigo P. © 2006, Santiago - Chile

Instituto Profesional DuocUCEscuela de Ingeniería

Administrando Esquemas

Page 2: Abf leccion 12

2

Instituto Profesional DuocUCEscuela de Ingeniería

Objetivos

Después de completar esta lección, usted deberá saber:• Crear y modificar tablas• Definir constraints• Ver los atributos de una tabla• Ver el contenido de una tabla• Crear indices y vistas

Page 3: Abf leccion 12

3

Instituto Profesional DuocUCEscuela de Ingeniería

¿Qué es un Schema?

Esquema HRUsuario HR

propietario

Qué es un Schema?Un esquema es una colección de objetos de base de datos propiedad de un usuario en particular. Un esquema tiene el mismo nombre que el usuario propietario del esquema, Los objetos del esquema (schema objects) son estructuras lógicas directamentereferenciadas a los datos de la base de datos. Los objetos esquema incluyenestructuras tales como tablas, vistas e índices. Nota: No hay relación entre un tablespace y un esquema. Los objetos en un esquemapueden pertenecer a diferentes tablespaces. Objetos en el mismo esquema pueden ser de diferentes tablespaces y un tablespace contener objetos de diferentes esquema.Se pueden crear y manipular objetos esquemas usando SQL o Enterprise Manager. Cuando se usa Enterprise Manager, se genera un script SQL de la instrucción que se ha ejecutado en la interfase gráfica.

Page 4: Abf leccion 12

4

Instituto Profesional DuocUCEscuela de Ingeniería

Esquemas

Los esquemas son creados como parte del procesode creación de base de datos:• SYS• SYSTEM• Esquema de ejemplos

EsquemasCuando se crea una base de datos, un número de esquemas es creado con ella. Hay dos motivos de importancia:

• SYS schema: Todas las tablas base y vistas que constituyen el diccionario de la bases de datos son creados con el schema SYS. El diccionario de datos es una colección de tablas que describen la base de datos Oracle. El diccionario de datos es creado en el tablespace SYSTEM cuando la base de datos es creada y es modificado por el Oracle Server cuando una sentencia DLL (Data Definition Language) es ejecutada. El diccionariode datos contiene información sobre usuario, objetos esquema y estructuras de almacenamiento.Se puede usar el diccionario de datos como una referencia de sólo lectura sobre la información de la base de datos. Cuando se usa Enterprise Manager se accede a lastablas del diccionario de datos a través de vistas.Los objetos en el esquema SYS nunca deben ser modificados por ningún usuario o administrador de base de datos y no se debe crear ningúna tabla en el esquema del usuario SYS.

• SYSTEM schema: Contiene tablas y vistas adicionales que almacenan informaciónadministrativa, como tablas internas y vistas utilizadas por varias opciones de Oracle y sus herramientas. No se deben crear objetos adicionales en el esquema SYSTEM.

Page 5: Abf leccion 12

5

Esquemas (continuación)Durante la instalación de una base de datos Oracle, el esquema de ejemplos se instalaautomáticamente. El esquema de ejemplos sirve para proveer una plataforma comúnde ejemplos en la documentación Oracle y cursos de capacitación. Ellos son un conjunto de esquemas interrelacionados que incluyen lo siguiente:

• HR: Esquema de recursos humanos (Human Resources) para introducir tópicosbásicos. Una extensión de este esquema soporta demostraciones de Oracle Internet Directory.

• OE: El esquema de ingreso de ordenes (Order Entry), es para abarcar materiasde mediana complejidad. Una gran variedad de tipos de datos esta disponible en el esquema OE. El subsquema OC (Catalogo en línea) es una colección de objetos relacionales de base de datos construidos dentro del esquema OE.

• PM: El esquema de Medios de Productos (Product Media) esta dedicado a tiposde datos multimedia.

• QS: El esquema de Colas de Embarque (Queued Shipping) contiene un conjuntode esquemas que son usados para demostrar las capacidades de EncolamientoAvanzado de Oracle

• SH: El esquema de Ventas Históricas (Sales History) está diseñado para permitirdemostraciones con grandes cantidades de datos. Una extensión a este esquemaprovee soporte a procesamiento analítico avanzado (advanced analytic processing).

Page 6: Abf leccion 12

6

Instituto Profesional DuocUCEscuela de Ingeniería

Accesando Objetos de Esquema

Click en un link paraacceder a objetos de esquemas.

Accesando Objetos EsquemasEs posible acceder a diversos tipos de objetos esquemas desde la región de Enterprise Manager destinada a Administración (Administration).Después de cliquear uno de estos links, una página de resultados es desplegada. En la región Search se puede ingresar el nombre de un esquema y nombre de objetoespecífico a buscar. En resumen, es posible buscar otros tipos de objetosseleccionando el tipo de objeto en el menú disponible. Este menú, incluye tiposadicionales que no son mostrados en los links de la página de administración de base de datos.

Page 7: Abf leccion 12

7

Instituto Profesional DuocUCEscuela de Ingeniería

Nombrando Objetos de Bases de Datos

• Nombres deben ser desde 1 a 30 bytes de largo, salvo estas excepciones:– Nombres de bases de datos están limitados a 8 bytes– Nombres de links de bases de datos pueden tener hasta

128 bytes• Los nombres no pueden ser palabras reservadas de

Oracle.• Los nombres deben comenzar con caracteres

alfanuméricos del conjunto de caracteres de la base de datos.

Nombrando Objetos de Bases de DatosCuando usted nombra un objeto en la base de datos, tiene la opción de encerrar el nombre entre comillas dobles (“ “). Si usted hace esto, puede quebrantar varias reglas de nombramiento, mencionadas anteriormente. Sin embargo, no se recomienda, porque si el nombre de un objeto esta entre comillas dobles, cada vez que usted debe referenciarlo, deberáhacerlo con la referencia de las comillas dobles. Por ejemplo, si el nombre de una tabla es “Local_Temp”, usted deberá hacer lo siguiente:SQL> select * from "Local_Temp";TEMP_DATE LO_TEMP HI_TEMP--------- ---------- ----------01-DEC-03 30 41Si usted tipea lo siguiente:

SQL> select * from "local_temp";select * from "local_temp"

*ERROR at line 1:ORA-00942: table or view does not existLos nombres sin comillas son almacenados en mayúsculas y no son case sensitive. Cuando

una sentencia SQL es procesada, los nombres sin comillas son todos convertidos a mayúsculas.

Page 8: Abf leccion 12

8

Instituto Profesional DuocUCEscuela de Ingeniería

Nombrando Objetos de Bases de Datos

• Nombres solo pueden contener– Caracteres alfanuméricos del conjunto de

caracteres de la base de datos– El underscore (_)– Signo Dolar ($)– Signo de Libra (#)

• Dos objetos no pueden tener el mismo nombresobre el mismo espacio de nombres

Nombrando Objetos de Bases de Datos (continuación)Los identificadores solo pueden contener caracteres alfanuméricos del conjunto de caracteres de la bases de datos y el underscore (_), el signo dólar ($), and y #. Los links de bases de datos pueden contener punto (.) y aroba (@). No se recomiendautilizar $ y #.

Page 9: Abf leccion 12

9

Instituto Profesional DuocUCEscuela de Ingeniería

Espacio de Nombres de ObjetosLos siguientes tienensu propio espacio de nombres:• Indexes• Constraints• Clusters• Database triggers• Private database

links• Dimensions

Los siguientes estan en el mismo espacio de nombres:• Tables• Views• Sequences• Private synonyms• Stand-alone procedures• Stand-alone stored

functions• Packages• Materialized views• User-defined types

Espacio de Nombres de ObjetosOracle utiliza espacio de nombres (namespaces) para resolver referencias del objeto del esquema. Cuando usted se refiere a un objeto en una declaración SQL, Oracle considera el contexto de la declaración SQL y localiza el objeto en el namespace apropiado. Después de localizar el objeto, realiza la operación especificada por la declaración en el objeto. Si el nombre del objeto no puede ser localizado en el espacio de nombres apropiados, Oracle retorna un error.Ya que tablas y vistas están en el mismo espacio de nombres, una tabla y una vista en el mismo esquema no pueden tener el mismo nombre. Sin embargo, tablas e índices están en diferentes espacios de nombres. De esta manera, una tabla y un índice en el mismo esquemapueden tener el mismo nombre.Cada esquema en la base de datos tiene su propio espacio de nombres para los objetos quecontiene. Esto significa, por ejemplo, que dos tablas en diferentes esquemas están en diferentes espacios de nombres y pueden tener el mismo nombre.

Page 10: Abf leccion 12

10

Instituto Profesional DuocUCEscuela de Ingeniería

Especificando Tipos de Datos en Tablas

Tipos de Datos Comunes:• CHAR(size): Dato caracter de largo en bytes• VARCHAR2(size): Cadena de caracteres que

tiene un largo variable en bytes• DATE: Rango de fecha válido desde Enero 01,

4712 AC hasta Diciembre 31, 9999 DC• NUMBER(p,s): Númerico con precisión p y

escala s

Especificando Tipos de Datos en TablasCuando se crea una tabla, se debe especificar el tipo de datos para cada columna de esta. Cuando se crea un procedimiento o función, se debe especificar el tipo de datosde cada argumento. Estos tipos de datos definen el dominio de valores que cadacolumna puede contener o que cada argumento puede contener.Oracle dispone de los siguientes tipos de datos:

• CHAR: Dato carácter de largo fijo en bytes. Máximo tamaño es 2000 bytes. Valor por defecto y mínimo tamaño es 1 byte.

• VARCHAR2: Cada de caracteres de largo variable, cuyo máximo tamaño estadado en bytes. Máximo es 4000 bytes. Se debe especificar el tamaño para datosVARCHAR2.

• DATE: Rango de fecha válido que va desde 01/01/4712 AC hasta 31/12/9999 DC; también almacena la hora (hora, minutos y segundos, además del siglo). Cadadato fecha utiliza 7 bytes de almacenamiento.

• NUMBER: Numérico que tiene precisión p y escala s. La precisión puede tener un rango de 1 a 38. La escala puede tener un rango de –84 a 127.

Para referirse al listado completo de tipos de datos de Oracle, acceda el manual Oracle Database SQL Reference.

Page 11: Abf leccion 12

11

Instituto Profesional DuocUCEscuela de Ingeniería

Otros Tipos de Datos

• FLOAT• INTEGER• NCHAR• NVARCHAR2• LONG• LONG RAW• RAW

• ROWID• UROWID• BLOB• CLOB• NCLOB• BFILE• TIMESTAMP

Otros Tipos de Datos• FLOAT(p): Este es un tipo de datos ANSI. Tipo de datos numérico de punto

flotante con precisión p. El valor por defecto de precisión para este tipo de datoses 126 binario o 38 decimal.

• INTEGER: Esto es equivalente a NUMBER(p,0).• NCHAR(length):El tipo de datos NCHAR es un tipo de datos Unicode-only.

Cuando se crea una tabla con una columna NCHAR, se define una columna de largo en caracteres. Usted define el conjunto nacional de caracteres (national character set) cuando se crea la base de datos. El máximo valor de esta columnaesta determinado por esa definición en la creación. Las especificaciones del ancho del tipo de datos NCHAr se refieren al número de caracteres. El máximotamaño de esta columna es 2000. Si se inserta un valor más corto que el largo de la columna, Oracle lo rellena con blancos. No se puede insertar un valor CHAR en una columna NCHAR, no se puede insertar un valor NCHAR en una columnaCHAR.

• NVARCHAR2(length): El tipo de datos NVARCHAR2 es un tipo de datos Unicode-only Máximo largo es 4000 bytes.

Page 12: Abf leccion 12

12

Otros Tipos e Datos (continuacion) • LONG: Dato carácter de largo variable hasta 2 gigabytes, o 2 31 -1 bytes.• LONG RAW: Dato binario de largo variable hasta 2 gigabytes.• RAW(size): Dato binario de largo variable en bytes. Máximo tamaño es 2000

bytes. Se debe especificar el tamaño para un valor RAW.• ROWID: Cadena de caracteres de Base 64 que repesenta la dirección única de

una fila en una tabla. Este tipo de datos es fundamentalmente para retornarvalores de la pseudocolumna ROWID.

• UROWID: Cadena de string de Base 64 que representa la dirección lógica de unafila de una tabla indexada. El máximo tamaño de esta columna es 4000 bytes.

• BLOB: Un objeto binario grande. • CLOB: Un objeto de caracter extenso, que contiene simples o múltiples de

caracteres. • NCLOB: Un objeto de caracter extenso que contiene caracteres Unicode.Nota: El máximo tamaño para todos los tipos de datos LOB (BLOB, CLOB and

NCLOB) es: (4 gigabytes - 1) * (el valor de CHUNK). Un CHUNK es un atributoespecial que se puede setear cuando se define un LOB. Este especifica el numerode bytes que puede ser asignados para manipular el LOB. Si el tamaño no esmúltiplo de bloque de la base de datos, entonces se redondea hacia arriba al múltiplo siguiente. Por ejemplo, si la base de datos tiene un bloque de 2048 y el CHUNCK un tamaño de 2050, entonces la base de datos asigna 4096 (2 bloques). El máximo valor es 32768 (32K), que es el máximo tamaño de un bloque Oracle. El valor por defecto de CHUNCK es el definido para un bloque de datos Oracle.

• BFILE: Contiene un puntero a un gran archivo binario almacenado fuera de la base de datos. El máximo tamaño es 4 gigabytes.

• TIMESTAMP(fractional_seconds_precision): Año, Mes y Dia de valores fecha, como también horas, minutos y segundos, donde fractional_seconds_precision esel número de dígitos en la parte fraccional de los segundos del campo fecha. Acepta valores de 0 a 9. Default es 6.

Page 13: Abf leccion 12

13

Instituto Profesional DuocUCEscuela de Ingeniería

Creando y Modificando Tablas

Especifique nombre de tabla y esquema.

Especifique nombre de comunas, tipo de datos y longitudes.

Creando y Modificando TablasLas tablas son la unidad básica de almacenamiento de datos en una base de datos Oracle. Contiene los datos accesibles para los usuarios. Cada tabla tiene columnas y filas. Creando una TablaEs posible crear una tabla usando el Enterprise Manager como sigue:

1. Click en el Esquema de Tables en la página Administration. Aparece la página de Tables.

2. Si conoce el nombre del esquema, ingrese todo o parte de este esquema en la regiónSearch. Sino conoce el nombre del esquema, haga click en el ícono que parece unalinterna al lado del campo esquema. Buscar y Seleccionar: Aparece la ventana de esquemas. Puedes navegar entre nombres de esquemas y selecciona la quecorresponda.

3. Click en Create. Aparece una página de crear tablas y la organización de la misma.4. Aceptar los valores por defecto, siga los pasos de la creación según indique el producto5. Ingrese el nombre de la tabla. 6. Ingrese el nombre del esquema o búsquelo presionando el icono linterna.

Page 14: Abf leccion 12

14

Creando y Modificando Tablas (continuación)7. Ingrese el nombre del tablespace o búsquelo seleccionando el ícono linterna.8. En la sección columnas, ingrese el nombre de la columna y tipos de datos.9. Haga click en Ok. Aparece un mensaje de actualización que indica que la tabla ha

sido exitósamente creada.Modificando una TablaPuede modificar una tabla usando el Enterprise Manager según se describe en los siguientes pasos. En este ejemplo, una columna adicional a sido agregada a la tabla.

1. En la página tables, seleccione la tabla del listado y haga click en Edit.2. En la página Edit Table, haga click en el botón Add 5 Table Columns. Aparece un

listado de columnas de campos editables.3. Ingrese el nuevo nombre de columna, tipo de datos y tamaño. Haga click en

Apply.4. Un mensaje que indica que la tabla ha sido modificada exitósamente aparece.

Page 15: Abf leccion 12

15

Instituto Profesional DuocUCEscuela de Ingeniería

Comprendiendo la Integridad de Datos

Comprendiendo la Integridad de DatosUsted puede usar las siguientes constraints de integridad para imponer restricciones sobre la entrada de los valores de las columnas de una tabla:

• NOT NULL: Por defecto, todas las columnas en una tabla tienen permitido valores nulos. Null significa ausencia de un valor (no significa 0 ni Blanco, pues ellos utilizan 1 byte). Una constraints NOT NULL requiere que una columna de una tabla contenga valores no nulos. Por ejemplo, se puede definir una constraint NOT NULL para requerir que un valor sea ingresado en la columna last_name para cada nueva fila de la tabla employees.

• UNIQUE Key: Una constraint de integridad UNIQUE key requiere que cada valor en unacolumna o conjunto de ellas (claves) sean únicas, esto es, 2 filas de la tabla no puedentener el mismo valor duplicado en la columna o conjunto de ellas. Por ejemplo, se define una constraint UNIQUE key sobre la columna department_name de la tabla department, por tanto no pueden haber dos departamentos con nombres duplicados.

• PRIMARY KEY: Cada tabla en la base de datos puede tener una o mas constraints de PRIMARY KEY. El valor en el grupo de una o más columnas constituye un identificadorúnico para esa. En efecto, cada filas es nombrada por su valor de clave primaria.

Page 16: Abf leccion 12

16

Comprendiendo la Integridad de Datos (continued)Oracle implementa las constraints de clave primaria (PRIMARY KEY) garantizando

que lo siguiente es verdadero: - No pueden haber dos filas de una tabla con valores duplicados para una

columna o conjunto de ellos- La columna clave primaria no puede ser null. Debe haber un valor para cada

columna clave primaria en cada fila.Oracle fuerza todos los constraint de PRIMARY KEY usando índices. La constraint de primary creada para la columna department_id en la tabla departments table fuerza implícitamenta la creación:

- Un índice único sobre la columna - Una constraint de NOT NULL para la columna

Referential integrity constraints : Diferentes tablas en una base de datos relacional puede estar relacionadas por columnas comunes, y reglas que gobiernan las relaciones de columnas deben mantenerse. Las reglas de integridad referencial garantizan que esas relaciones sean preservadas. Una constraint de integridad referencial requiere que para cada fila de la tabla, el valor en la clave foránea este en la tabla padre. Como ejemplo, una foreign key esta definida sobre la columna department_id de la tabla empleados. Esto garantiza que el valor en esta columna debe existir como clave primaria en la tabla departamentos (también la columna department_id). Por lo tanto, ningún número erróneo puede existir en la columna department_id de la tabla departamentos.

Check constraints : Una constraint de integridad de CHECK sobre una columna o conjunto de ellas, requiere una condición específica para ser verdadera o no conocida para cada fila de la la tabla. Si el resultado de una sentencia DML en la condición de CHECK es falso, entonces la sentencia es deshecha.

Page 17: Abf leccion 12

17

Instituto Profesional DuocUCEscuela de Ingeniería

Definiendo Constraints

Definiendo ConstraintsTu puedes agregar constraints a una tabla como sigue:

1. Seleccione la tabla en la página Tabla y haga click en el botón Edit.2. Haga click en Constraints. La página Constraints es desplegada mostrando todos

los constraints que han sido definidos para la tabla.3. Seleccione el tipo de constraint que se desea agregar desde el menu drop-down y

haga Click en Add4. Ingrese la información apropiada para el tipo de constraint que se ha definido.

Haga click en OK.

Page 18: Abf leccion 12

18

Instituto Profesional DuocUCEscuela de Ingeniería

Viendo Atributos de una Tabla

Viendo los atributos de una TablaPuede usar Enterprise Manager para ver los atributos de una tabla, según se explica a

continuación:1. Haga click en el Link en la sección de esquemas en la página de Administración

de la Base de Datos.2. Seleccione la tabla desde el listado disponible y haga click en el Botón View para

ver los atributos que ésta tiene.

Comando SQL:

DESCRIBE <nombre_tabla>DESC <nombre_tabla>

Page 19: Abf leccion 12

19

Instituto Profesional DuocUCEscuela de Ingeniería

Viendo el Contenido de una Tabla

Viendo el Contenido de una TablaSe puede fácilmente ver las filas de una tabla usando Enterprise Manager como sigue:

1. Selecione la tabla en la página Tables. 2. Seleccione View Data desde el menu Actions y haga click en Go.

Aparece la página View Data For Table. Las filas para la tabla son mostradas en la sección Results. En la sección QUERY se despliega el SQL que fue ejecutado y produjo el resultado. Sobre esta página se puede hacer click en cualquier columna y orderar los datos en forma ascendente o descendente. Si se desea cambiar la consulta, haga click en el botón Refine Query. En la página Refine Query para la tabla, usted puede seleccionar columnas que desea sean desplegadas y especificar la cláusula WHERE para la sentencia SQL y limitar el resultado.

Referirse al manual Oracle Database SQL Reference para más informacion sobre la cláusula WHERE.

Page 20: Abf leccion 12

20

Instituto Profesional DuocUCEscuela de Ingeniería

Acciones con Tablas

Acciones con TablasEs posible seleccionar una tabla y ejecutar acciones sobre ella.

• Create Like: Con esto usted puede crear una tabla que tenga la misma estructura que la tabla seleccionada. Usted debe cambiar el nombre de la tabla y los nombres de las constraints. También puede agregar y borrar columnas y hacer otros cambios en la estructura de la tabla. Cuando está creada, la tabla se crea vacía.

• Create Index: Use esta opción para crear índices sobre la tabla seleccionada. Indices deben ser creados solo sobre las columnas que serán usadas en las condiciones del WHERE en los select y sentencias DML.

• Create Synonym: Un sinónimo es un nombre usado en lugar del nombre completo de la tabla. Un sinónimo puede ser privado o público.

• Create Trigger: Un trigger sobre una tabla es un bloque PL/SQL que se ejecuta cuandosucede un evento sobre una tabla (insert, delete, update). Por ejemplo, usted puededesear mantener una copia de los datos en otra tabla al ejecutarse un delete de la tabla. Se puede entonces crear un trigger “before delete” que inserte los datos que han sidoborrados de la tabla empleados en otra tabla.

Para mas información sobre tiggers referirse a los manuales Application Developer's Guide –Fundamentals and the PL/SQL Users Guide and Reference.

Page 21: Abf leccion 12

21

Acciones con Tablas (continuación)• Gather Statistics: El Wizard de estadísticas guía al usuario a través del proceso

de generar y modificar estadísticas del optimizador de la bases de datos. Las estadísticas son almacenadas en el diccionario de datos y usadas por el optimizador basado en costos. Mantener las estadísticas actualizadas puede generar un gran aumento de rendimiento en consultas SQL. Oracle sugiere que usted automatice las tareas de generar estadísticas regularmente dentro de ventanas de mantenimiento .

• Generate DDL: Esto genera el comando para crear la tabla seleccionada. Puedeservir para propósitos de documentación.

• Grant Privileges: Por defecto, cuando una tabla es creada solo el dueño puede hacer algo con ella. El dueño (propietario) debe asignar privilegios a otrosusuariospara ejecutar DML o DDL sobre la tabla.

• Reorganize: Usted puede utilizar el Wizard de Reorganize oara reconstruir tableso índices fragmentados, mover objetos a diferentes tablespaces o optimizar los atributos de almacenamiento de un objeto específico.

• Run Segment Advisor: El asesor de segmentos determina si los objetos tienen espacios inutilizados que puedan ser reutilizados, tomando en consideración los requerimientos de espacio futuro para dicha estimación. El espacio futuro a utilizar, lo hace en base a información histórica.

• Shrink Segment: Condensa espacio fragmentado y opcionalmente, libera espacio.

• Show Dependencies: Muestra los objetos que dependen de esta tabla .• View Data: Ejecuta una sentencia SELECT sobre la tabla, usted redefine la

sentencia si desea, No puede cambiar datos solo visualizarlos .• Flashback Table: Las Flashback Tables (Tablas de retroceso), permiten

recuperar una tabla a un instante de tiempo previo. Permite recuperar una tabla que ha sido accidentalmente modificada o borrar por un usuario o aplicación. Se puede recuperar los datos de tabla junto a sus atributos asociados, tales como índices triggers, etc. Esto se hace mientras la base de datos esta online devolviendo solo aquellos cambios de dicha tabla. Se puede revertir la tabla a cierto instante del tiempo .

• Flashback by Row Versions: Permite consultar metadatos y datos históricos dentro de un intervalo de tiempo.. Se pueden ejecutar consultas sobre la tabla como si fuese un reloj de pared. Debe seleccionar las condiciones que permiten recuperar diferentes versioness de filas en una tabla en un intervalo de tiempo.

Page 22: Abf leccion 12

22

Instituto Profesional DuocUCEscuela de Ingeniería

Creando Indices

Creando IndicesLos índices son estructuras opcionales asociadas con las tablas. Estos pueden crearsepara mejorar el rendimiento en la recuperación de datos de una tabla. Oracle proveeíndices para acceder directamente a los datos de una tabla.Los índices pueden ser creados de una o más columnas de una tabla. Después que un índice sea a creado, es automáticamente mantenido y usado por Oracle. Al modificarlos datos de una tabla, ya sea agregando nuevas filas, modificando filas, borrando filas, automáticamente se actualizan los índices asociados con total transparencia para el usuario que realiza los cambios sobre las filas de dicha tabla.Usted puede hacer click en el link Indexes link bajo el Esquema de Objetos de la página Administration y ver la página de Indices. Usted puede ver los atributos de los índices o usar el menu de Acciones para ver las dependencias de un índice.Los índices son creados explícitamente o implícitamente a través de las constraints que tienen lugar sobre la tabla.

Page 23: Abf leccion 12

23

Instituto Profesional DuocUCEscuela de Ingeniería

¿Qué es una Vista?

• Representan datos de una o más tablas o vistas• Las vistas no contienen datos

¿Qué es una Vista?Las vistas son representaciones customizadas de datos de una o más tablas o de otrasvistas. Pueden ser pensadas como consultas almacenadas. Las vistas realmente no contienen datos, pero obtienen sus datos desde tablas. Estas tablas son referenciadascomo tablas base de la vista.Una vista es una estructura lógica que tiene la apariencia de una tabla, sin llegar a serla. El objetivo de crear vistas es el de tener que prescindir de la tabla cuando se desea permitir la manipulación de datos a otros usuarios; así como también de prevenir que se altere de manera involuntaria el contenido de la información más sensible que pudiera encontrarse en ciertas tablas.Las vistas se forman haciendo una selección de campos de una o varias tablas. También se puede reemplazar una vista que ya existe con una sintaxis diferente, manteniendo su nombre.

Page 24: Abf leccion 12

24

Instituto Profesional DuocUCEscuela de Ingeniería

Creando Vistas

Creando VistasAl igual que una tabla, las vistas pueden ser consultadas, modificadas insertase filas y borraralgunas de ellas con ciertas restricciones claro esta. Todas las operaciones ejecutadas sobreuna vista, afectan las tablas base que la conforman. Las vistas proveen un nivel de seguridadadicional para restringir el acceso a determinado conjunto de filas y columnas de una o mas. También permiten ocultar la complejidad de los datos y almacenar consultas complejas.La sintaxis de la creación de vistas es:CREATE [OR REPLACE] VIEW nombre_vista ASSELECT columna1, columna2, ...FROM tabla1, ...WHERE columna > valor ;En Enterprise Manager, haciendo clik bajo el link Views en el Esquema asociado y debajo de la página de Administration, aparece una nueva página para definir vista de base de datos.

Page 25: Abf leccion 12

25

Instituto Profesional DuocUCEscuela de Ingeniería

Qué es una secuencia?

¿Qué es una secuencia?

A menudo es preciso generar números en forma ordenada para implementar, por ejemplo, una clave primaria en una tabla o garantizar que esos números no se repiten y van siempre en un orden predefinido por el desarrollador (no necesariamente secuenciales).

La forma tradicional de efectuar lo anterior sería almacenar el último número utilizado en un registro especial, bloquearlo, obtener el próximo valor, actualizar el registro, desbloquearlo y utilizar el número. Sin embargo, para eso Oracle implementa los objetos denominadas secuencias, que permiten hacer lo anterior de manera transparente para el usuario.

Cuando se define una secuencia se deben indicar, como mínimo, el valor de partida (valor mínimo) y el incremento

Page 26: Abf leccion 12

26

¿Qué es una secuencia? (continuación)

Generalmente el uso de secuencias genera valores de llave primaria • Name: Usar las reglas de asignación de nombres descritas anteriormente para

nombrar una secuencia.• Schema: Es el propietario de la secuencia.• Type: Un secuencia puede se ascendente o descendente.• Maximum Value: Especifica el máximo valor que puede generar la secuencia.

Este es un valor entero de máximo 28 dígitos. Debe ser mayor que el valor mínimo e inicial. Usando Unlimited indica un valor máximo de 1027 para secuencias ascendentes o -1 para secuencias descendentes. Elvalor por default es Unlimited.

• Minimum Value: Especifica el mínimo valor para la secuencia. Este es un valorentero de máximo 28 dígitos. Debe ser menor o igual que el inicial y menor que el máximo valor. Usando Unlimited indica un mínimo de 1 para secuencias ascendentes o -1026 para secuencias descendentes. El default es Unlimited.

• Interval: Especifica el intervalo entre números de secuencia.El valor entero puedoser positivo o negatico, pero no puede ser cero. Este valor puede tener hasta 28 dígitos. El valor por defecto es 1.

• Initial: Especifica el primero número de la secuencia a ser generado. Use estacláusula para comenzar una secuancia ascendente en un valor mayor que sumínimo o para comenzar una sucesión descendente en un valor menor que sumáximo.

• Cycle Values: Después que una secuencia ascendente alcance su valor máximo, genera su valor mínimo. Después que una secuencia descendente alcance su mínimo, genera su valor máximo. Si usted no elige esta opción, un error será devuelto si usted intenta recuperar un valor después de que se haya agotado la secuencia.

• Order Values: Esto garantiza que los números de serie están generados en la orden de la petición. Esta cláusula es útil si usted está utilizando los números de serie como timestamps. Garantizar orden no es generalmente importante para las secuencias usadas para generar llaves primarias. Esta opción es necesaria para garantizar solamente la generación pedida si usted está utilizando Oracle con Real Application Cluster

• Cache Options: Especifica cuantos valores de secuencia Oracle reserva y mantiene en memoria para un acceso más rápido. Este valor es un entero de hastas 28 dígitos. El mínimo valor de esta parámetro es 2. Para secuenciasciclicas, este valor debe ser menor que el número de valores del ciclo. No se pueden asignar más valores que los que los dados en la secuencias del ciclo.

La sintaxis de creación de una secuencia es la siguiente:CREATE SEQUENCE nombre_secuenciaINCREMENT BY númeroSTART WITH númeroMINVALUE número [o NOMINVALUE]MAXVALUE número [o NOMAXVALUE]NOCYCLE [o CYCLE] ;

Page 27: Abf leccion 12

27

Instituto Profesional DuocUCEscuela de Ingeniería

Usando una Secuencia

Usando SecuenciasUsted puede referirse a los valores de secuencias en una sentencia SQL con lassiguientes pseudocolumnas:

• CURRVAL: Retorna el valor actual de una secuencia• NEXTVAL: Incrementa la secuencia y retorna el siguiente valor

Se debe calificar CURRVAL y NEXTVAL con el nombre de la secuencia:sequence.CURRVALsequence.NEXTVAL

La primera referencia a NEXTVAL devuelve el valor inicial de la secuencia. Las siguientes referencias de NEXTVAL incrementan la secuencia en el incrementodefinido y retorna el siguiente valor. Cualquier referencia a CURRVAL siempredevuelve el valor de la secuencia, que es el último valor retornado por NEXTVAL.

Page 28: Abf leccion 12

Jaime Amigo P. © 2006, Santiago - Chile

Instituto Profesional DuocUCEscuela de Ingeniería

Fin de la Lección