Download ABFLeccion_12

Document related concepts

Lenguaje de definición de datos wikipedia , lookup

SQL wikipedia , lookup

Clave sustituta wikipedia , lookup

Base de datos relacional wikipedia , lookup

Modelo de base de datos wikipedia , lookup

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