Download ABFLeccion_12
Document related concepts
Transcript
Instituto Profesional DuocUC Escuela de Ingeniería Administrando Esquemas Jaime Amigo P. © 2006, Santiago - Chile Instituto Profesional DuocUC Escuela 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 2 Instituto Profesional DuocUC Escuela de Ingeniería ¿Qué es un Schema? propietario Esquema HR Usuario HR 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 directamente referenciadas a los datos de la base de datos. Los objetos esquema incluyen estructuras tales como tablas, vistas e índices. Nota: No hay relación entre un tablespace y un esquema. Los objetos en un esquema pueden 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. 3 Instituto Profesional DuocUC Escuela de Ingeniería Esquemas Los esquemas son creados como parte del proceso de creación de base de datos: • SYS • SYSTEM • Esquema de ejemplos Esquemas Cuando 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 diccionario de 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 las tablas 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ón administrativa, como tablas internas y vistas utilizadas por varias opciones de Oracle y sus herramientas. No se deben crear objetos adicionales en el esquema SYSTEM. 4 Esquemas (continuación) Durante la instalación de una base de datos Oracle, el esquema de ejemplos se instala automáticamente. El esquema de ejemplos sirve para proveer una plataforma común de 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ópicos bá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 materias de 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 tipos de datos multimedia. • QS: El esquema de Colas de Embarque (Queued Shipping) contiene un conjunto de esquemas que son usados para demostrar las capacidades de Encolamiento Avanzado de Oracle • SH: El esquema de Ventas Históricas (Sales History) está diseñado para permitir demostraciones con grandes cantidades de datos. Una extensión a este esquema provee soporte a procesamiento analítico avanzado (advanced analytic processing). 5 Instituto Profesional DuocUC Escuela de Ingeniería Accesando Objetos de Esquema Click en un link para acceder a objetos de esquemas. Accesando Objetos Esquemas Es 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 objeto específico a buscar. En resumen, es posible buscar otros tipos de objetos seleccionando el tipo de objeto en el menú disponible. Este menú, incluye tipos adicionales que no son mostrados en los links de la página de administración de base de datos. 6 Instituto Profesional DuocUC Escuela 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 Datos Cuando 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 41 Si usted tipea lo siguiente: SQL> select * from "local_temp"; select * from "local_temp" * ERROR at line 1: ORA-00942: table or view does not exist Los 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. 7 Instituto Profesional DuocUC Escuela 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 nombre sobre 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 recomienda utilizar $ y #. 8 Instituto Profesional DuocUC Escuela de Ingeniería Espacio de Nombres de Objetos 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 Los siguientes tienen su propio espacio de nombres: • Indexes • Constraints • Clusters • Database triggers • Private database links • Dimensions Espacio de Nombres de Objetos Oracle 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 esquema pueden tener el mismo nombre. Cada esquema en la base de datos tiene su propio espacio de nombres para los objetos que contiene. Esto significa, por ejemplo, que dos tablas en diferentes esquemas están en diferentes espacios de nombres y pueden tener el mismo nombre. 9 Instituto Profesional DuocUC Escuela 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 Tablas Cuando 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 datos de cada argumento. Estos tipos de datos definen el dominio de valores que cada columna 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 esta dado en bytes. Máximo es 4000 bytes. Se debe especificar el tamaño para datos VARCHAR2. • 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). Cada dato 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. 10 Instituto Profesional DuocUC Escuela 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 datos es 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 columna esta 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áximo tamañ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 columna CHAR. • NVARCHAR2(length): El tipo de datos NVARCHAR2 es un tipo de datos Unicodeonly Máximo largo es 4000 bytes. 11 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 retornar valores de la pseudocolumna ROWID. • UROWID: Cadena de string de Base 64 que representa la dirección lógica de una fila 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 atributo especial que se puede setear cuando se define un LOB. Este especifica el numero de bytes que puede ser asignados para manipular el LOB. Si el tamaño no es mú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 es el número de dígitos en la parte fraccional de los segundos del campo fecha. Acepta valores de 0 a 9. Default es 6. 12 Instituto Profesional DuocUC Escuela 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 Tablas Las 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 Tabla Es 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ón Search. Sino conoce el nombre del esquema, haga click en el ícono que parece una linterna al lado del campo esquema. Buscar y Seleccionar: Aparece la ventana de esquemas. Puedes navegar entre nombres de esquemas y selecciona la que corresponda. 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 producto 5. Ingrese el nombre de la tabla. 6. Ingrese el nombre del esquema o búsquelo presionando el icono linterna. 13 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 Tabla Puede 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. 14 Instituto Profesional DuocUC Escuela de Ingeniería Comprendiendo la Integridad de Datos Comprendiendo la Integridad de Datos Usted 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 una columna o conjunto de ellas (claves) sean únicas, esto es, 2 filas de la tabla no pueden tener 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. 15 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. 16 Instituto Profesional DuocUC Escuela de Ingeniería Definiendo Constraints Definiendo Constraints Tu 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 Add 4. Ingrese la información apropiada para el tipo de constraint que se ha definido. Haga click en OK. 17 Instituto Profesional DuocUC Escuela de Ingeniería Viendo Atributos de una Tabla Viendo los atributos de una Tabla Puede 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> 18 Instituto Profesional DuocUC Escuela de Ingeniería Viendo el Contenido de una Tabla Viendo el Contenido de una Tabla Se 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. 19 Instituto Profesional DuocUC Escuela de Ingeniería Acciones con Tablas Acciones con Tablas Es 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 cuando sucede un evento sobre una tabla (insert, delete, update). Por ejemplo, usted puede desear 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 sido borrados 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. 20 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. Puede servir 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 otrosusuarios para ejecutar DML o DDL sobre la tabla. • Reorganize: Usted puede utilizar el Wizard de Reorganize oara reconstruir tables o í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. 21 Instituto Profesional DuocUC Escuela de Ingeniería Creando Indices Creando Indices Los índices son estructuras opcionales asociadas con las tablas. Estos pueden crearse para 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 modificar los 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. 22 Instituto Profesional DuocUC Escuela 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 otras vistas. Pueden ser pensadas como consultas almacenadas. Las vistas realmente no contienen datos, pero obtienen sus datos desde tablas. Estas tablas son referenciadas como 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. 23 Instituto Profesional DuocUC Escuela de Ingeniería Creando Vistas Creando Vistas Al igual que una tabla, las vistas pueden ser consultadas, modificadas insertase filas y borrar algunas de ellas con ciertas restricciones claro esta. Todas las operaciones ejecutadas sobre una vista, afectan las tablas base que la conforman. Las vistas proveen un nivel de seguridad adicional 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 AS SELECT 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. 24 Instituto Profesional DuocUC Escuela 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 25 ¿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 valor entero 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 puedo ser 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 esta cláusula para comenzar una secuancia ascendente en un valor mayor que su mínimo o para comenzar una sucesión descendente en un valor menor que su má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 secuencias ciclicas, 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_secuencia INCREMENT BY número START WITH número MINVALUE número [o NOMINVALUE] MAXVALUE número [o NOMAXVALUE] NOCYCLE [o CYCLE] ; 26 Instituto Profesional DuocUC Escuela de Ingeniería Usando una Secuencia Usando Secuencias Usted puede referirse a los valores de secuencias en una sentencia SQL con las siguientes 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.CURRVAL sequence.NEXTVAL La primera referencia a NEXTVAL devuelve el valor inicial de la secuencia. Las siguientes referencias de NEXTVAL incrementan la secuencia en el incremento definido y retorna el siguiente valor. Cualquier referencia a CURRVAL siempre devuelve el valor de la secuencia, que es el último valor retornado por NEXTVAL. 27 Instituto Profesional DuocUC Escuela de Ingeniería Fin de la Lección Jaime Amigo P. © 2006, Santiago - Chile