Sunteți pe pagina 1din 104

BASE DATOS AVANZADO II

SESIN 02: Objetos de la Base de Datos


Diccionario de Datos
Manejo de Tablas
Manejo de ndices
Manejo de Secuencias
Manejo de Sinnimos
Sistema de Gestin de Bases de Datos Relacionales

Oracle
server

Tablas de Diccionario
usuario de datos
Tablas de la Base de Datos Oracle

Tablas de Usuario:
Son una recopilacin de tablas creadas y
mantenidas por el usuario
Contienen informacin de usuario

Diccionario de Datos:
Es una recopilacin de tablas creadas y
mantenidas por Oracle Server
Contienen informacin de la base de datos
Consulta del Diccionario de Datos

ORACLE
Diccionario de Datos
Consulta del Diccionario de Datos

Contenido
Definicin del Diccionario de Datos
Estructura del Diccionario de Datos
Uso del Diccionario de Datos
Consulta del Diccionario de Datos

Diccionario de Datos
Consulta del Diccionario de Datos
Sistema de Gestin de Base de Datos Relacional

Oracle
server

Tablas de usuario
Diccionario
de datos
Consulta del Diccionario de Datos

Tablas de Usuario
Son una recopilacin de tablas creadas y mantenidas
por el usuario
Contienen informacin de usuario

Diccionario de Datos
Es una recopilacin de tablas creadas y mantenidas
por Oracle Server
Contienen informacin de la base de datos
Consulta del Diccionario de Datos

Diccionario de Datos

Es fundamental para cualquier base de


datos
Describe la base de datos y sus objetos
Contiene tablas y vistas de slo lectura
Es propiedad del usuario SYS
Lo mantiene Oracle Server
Se accede a l con SELECT
Consulta del Diccionario de Datos

Informacin en Diccionario de
Datos
Estructuras lgicas y fsicas de la base de
datos
Usuarios registrados en la base de datos
Definiciones e integridad de todos los
esquemas
Informacin de Auditora
Informacin de espacio utilizado por los
objetos
Roles y Privilegios de los usuarios
Consulta del Diccionario de Datos

Estructura del Diccionario


Tablas Base
Almacena informacin de la base de datos
Solo Oracle Server puede leer y escribir
estas tablas.
Se crean al momento de crear la base de
datos
Consulta del Diccionario de Datos

Estructura del Diccionario


Vistas
Utilizadas para mostrar de forma resumida
la informacin contenida en las tablas
base.
Se acceden a ellas a travs de sinnimos
pblicos.

Tablas y vistas del diccionario de datos son


almacenadas en el tablespace SYSTEM.
Consulta del Diccionario de Datos

Consulta del Diccionario de Datos


Ver todas las vistas del diccionario de datos

Sql> SELECT * FROM Dictionary ;

Ver las columnas de las vistas del


diccionario de datos

Sql> SELECT * FROM Dict_columns ;


Consulta del Diccionario de Datos

Ejemplos
Ver objetos propiedad del usuario

Sql> SELECT * FROM User_Objects ;

Ver tablespaces de la base de datos

Sql> SELECT * FROM Dba_tablespaces ;


Consulta del Diccionario de Datos

Vea tipos de objeto distintos propiedad del usuario.


Sql> SELECT table_name
FROM user_tables ;

Vea tablas, vistas, sinnimos y secuencias propiedad del usuario.


Sql> SELECT DISTINCT object_type
FROM user_objects ;

Vea los nombres de tablas propiedad del usuario.


Sql> SELECT *
FROM user_catalog ;
Consulta del Diccionario de Datos

Se pueden ver los archivos control file


Sql> SELECT * FROM V$CONTROLFILE;

Se pueden ver los constraints definidos para


una tabla especfica en la tabla
Sql> SELECT * FROM USER_CONSTRAINTS;
Consulta del Diccionario de Datos

muestra la cantidad de segmentos que posee cada


Tablespace agrupada por tipo de segmento y
ordenada por tablespace.

Sql> Select segment_type, tablespace_name, count(*)


from dba_segments
group by segment_type,tablespace_name
order by 2 desc
Consulta del Diccionario de Datos

Categoras de las vistas


DBA : Contiene informacin de todos los
objetos que hay en todos los esquemas de
la base de datos.
ALL : Contiene informacin de todos los
objetos a los que puede acceder el usuario
en sesin.
USER : Contiene informacin de objetos de
propiedad del usuario en sesin.
Consulta del Diccionario de Datos

Uso del Diccionario de Datos


Se usa de 3 maneras:
Oracle consulta el diccionario de datos para hallar la
informacin acerca de los usuarios, esquemas y
estructuras almacenadas.
Oracle modifica el diccionario de datos cada vez que una
instruccin DDL es usada.
Cualquier usuario puede utilizar el diccionario de datos.
Consulta del Diccionario de Datos

Uso del Diccionario de Datos


La vista DBA_OBJECTS
Vista maestra que es el punto de partida para
conocer los objetos de la BD.
Campos:
OWNER: Dueo del objeto
OBJECT_NAME: el nombre del objeto
OBJETC_TYPE: el tipo de objeto: tabla, ndice, package, etc.
CREATED: fecha de creacin del objeto.
Consulta del Diccionario de Datos

EJEMPLOS
Almacena informacin sobre las columnas a las
que se refiere una restriccin de clave primaria o de
integridad referencial.

SELECT COLUMN_NAME FROM ALL_CONS_COLUMNS WHERE


CONSTRAINT_NAME='SYS_C003454';
Consulta del Diccionario de Datos

Ver los objetos creados por el usuario scott


Listar el nombre de las tablas
Select Table_name From All_tables Where Owner ='Scott';
Para los ndices:
Select table_name, index_name from all_indexes
where owner='scott';
Para las secuencias:
Select Sequence_name From
where sequence_owner='scott'
Consulta del Diccionario de Datos

EJEMPLOS
Para las tablas del usuario scott
SELECT TABLE_NAME FROM ALL_TABLES
WHERE OWNER ='SCOTT';

Usuarios conectados en este momento


select count(*), username from v$session group by
username;
Consulta del Diccionario de Datos

LINK
http://www.iiia.csic.es/udt/es/blog/jrodriguez/
2008/diccionario-datos-en-oracle-9i-guia-util

http://cajondesastreoracle.wordpress.com/cate
gory/oracle/diccionario-de-datos/

http://es.scribd.com/doc/58510382/41/Consult
as-Utiles-en-el-Diccionario-de-Datos
Consulta del Diccionario de Datos

Uso del Diccionario de Datos


Ejemplos:

Informacin Vistas correspondientes

Errores de compilacin all_errors, dba_errors,


user_errors
Trabajos en la BD all_jobs, dba_jobs,user_jobs,

Usuarios all_users, dba_users,


user_users
Objetos de la BD: Tablas, programas, vistas all_objects, dba_objects,
secuencias, indices, etc. user_objects

Dependencias entre los objetos (PROCEDURE, all_dependencies,


FUNCTION, PACKAGE, PACKAGE BODY) dba_dependencies,
user_dependencies
Consulta del Diccionario de Datos

Uso del Diccionario de Datos


Informacin Vistas correspondientes
Tablas de la base de datos All_tables, dba_tables, user_tables

Vistas en la BD All_views, dba_views, user_views

Secuencias All_sequences, dba_sequences,


user_sequences

Nombres de tablas, vistas, secuencias, All_catalog, dba_catalog, user_catalog


sinnimos

Colunmas de las tablas y vistas All_tab_columns, dba_tabs_colunms,


user_tab_colunms
Consulta del Diccionario de Datos

Uso del Diccionario de Datos


Informacin Vistas correspondientes
Comentarios sobre tablas o columnas All_tab_comments,
dba_tab_comments,
user_tab_comments,
All_col_comments,
dba_col_comments,
user_col_comments
Restricciones de integridad All_constraints, dba_constraints,
user_constrains, all_cons_columns,
dba_cons_columns,
user_cons_columns

Triggers en la BD All_triggers, dba_triggers,


user_triggers

Uso de las columnas en un trigger All_trigger_cols, dba_trigger_cols,


user_trigger_cols
Consulta del Diccionario de Datos

ANEXO
Tablas y vistas:
ALL_ALL_TABLES
DBA_ALL_TABLES
USER_ALL_TABLES
ALL_COL_COMMENTS
DBA_COL_COMMENTS
USER_COL_COMMENTS
ALL_PARTIAL_DROP_TABS
DBA_PARTIAL_DROP_TABS
USER_PARTIAL_DROP_TABS
ALL_REFS
DBA_REFS
USER_REFS
ALL_TAB_COLUMNS
DBA_TAB_COLUMNS
USER_TAB_COLUMNS
ALL_TAB_COMMENTS
DBA_TAB_COMMENTS
USER_TAB_COMMENTS
Consulta del Diccionario de Datos

ANEXO
ALL_TABLES
DBA_TABLES
USER_TABLES
ALL_UNUSED_COL_TABS
DBA_UNUSED_COL_TABS
USER_UNUSED_COL_TABS
ALL_UPDATABLE_COLUMNS
DBA_UPDATABLE_COLUMNS
USER_UPDATABLE_COLUMNS
ALL_VIEWS
DBA_VIEWS
USER_VIEWS
Secuencias
ALL_SEQUENCES
DBA_SEQUENCES
USER_SEQUENCES
Sinnimos
ALL_SYNONIMOUS
DBA_SYNONIMOUS
USER_SYNONIMOUS
Consulta del Diccionario de Datos

ANEXO
Indices
ALL_IND_CLOUMNS
DBA_IND_COLUMNS
USER_IND_COLUMNS
ALL_IND_EXPRESSIONS
DBA_IND_EXPRESSIONS
USER_IND_EXPRESSIONS
ALL_INDEXES
DBA_INDEXES
USER_INDEXES
ALL_INDEXTYPES
DBA_INDEXTYPES
USER_INDEXTYPES
ALL_INDEXTYPE_OPERATORS
DBA_INDEXTYPE_OPERATORS
USER_NDEXTYPE_OPERATORS
Consulta del Diccionario de Datos

ANEXO
Subrogramas
ALL_ARGUMENTS
USER_ARGUMENTS
Disparadores
ALL_INTERNALS_TRIGGERS
DBA_INTERNAL_TRIGGERS
USER:INTERNAL_TRIGGERS
ALL_TRIGGERS
DBA_TRIGGERS
USER_TRIGGERS
ALL_TRIGGER_COLS
DBA_TRIGGER_COLS
USER_TRIGGER_COLS
Cdigo fuente y errores de compilacin
ALL_ERRORS
DBA_ERRORS
USER_ERRORS
ALL_SOURCE
DBA_SOURCE
USER_SOURCE
Consulta del Diccionario de Datos

ANEXO
Restricciones
ALL_CONS_COLUMNS
DBA_CONS_COLUMNS
USER_CONS_COLUMNS
ALL_CONSTRAINTS
DBA_CONSTRAINTS
USER_CONSTRAINTS
Privilegios y concesiones
ALL_COL_PRIVS
DBA_COL_PRIVS
USER_COL_PRIVS
ALL_COL_PRIVS_MADE
USER_COL_PRIVS_MADE
ALL_COL_PRIVS_RECD
USER_COL_PRIVS_RECD
Provilegios de Tablas
ALL_TABS_PRIVS
DBA_TABS_PRIVS
USER_TABS_PRIVS
ALL_TABS_PRIVS_MADE
DBA_TABS_PRIVS_MADE
USER_TABS_PRIVS_MADE
Consulta del Diccionario de Datos

ANEXO
Privilegios del sistema
DBA_SYS_PRIVS
USER_SYS_PRIVS
Dependencias
ALL_DEPENDENCIES
DBA_DEPENDENCIES
USER_DEPEDENCIES
Estructuras de a base de datos
V$TABLESPACE
USER_TABLESPACES
DBA_DATA_FILES
V$DATAFILE
Consulta del Diccionario de Datos

Alguna duda o alguna


pregunta?

Muchas gracias.
Consulta del Diccionario de Datos

Otras vistas del diccionario

https://netfiles.uiuc.edu/jstrode/www/oradd/in
dex.html
Objetos de la Bases de Datos

Objeto Descripcin

Tabla Unidad bsica de almacenamiento; est


formada por filas y columnas.

Vista Representa lgicamente subjuegos de datos


de una o varias tablas.

Secuencia Generador de valor numrico.


ndice Mejora el rendimiento de algunas consultas.
Sinnimo Proporciona nombres alternativos a objetos.
Reglas de Nomenclatura

Los nombres de tablas y columnas:


Deben empezar por una letra.
Deben tener entre 1 y 30 caracteres.
Slo deben contener AZ, az, 09, _, $ y #.
No deben duplicar el nombre de otro objeto
propiedad del mismo usuario.
No deben ser palabras reservadas de Oracle
Server.
Tipos de Dato

Tipo de Dato Descripcin


VARCHAR2(size) Dato de caracteres de longitud variable
CHAR(size) Dato de caracteres de longitud fija
NUMBER(p,s) Dato numrico de longitud variable
DATE Valores de fecha y hora
LONG Dato de caracteres de longitud variable
de hasta 2 gigabytes
CLOB Dato de caracteres de hasta 4
gigabytes
RAW y LONG RAW Dato raw binario
BLOB Dato binario de hasta 4 gigabytes
BFILE Dato binario almacenado en un archivo
externo; hasta 4 gigabytes
ROWID Sistema numrico de base 64 que
representa la direccin nica de una fila
en su tabla.
La Sentencia CREATE TABLE

Debe tener:
El privilegio CREATE TABLE
Un rea de almacenamiento
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr][, ...]);

Especifique:
Nombre de tabla
Nombre de columna, tipo de dato de columna y tamao
de columna
Creacin de Tablas

Cree la tabla.
SQL> CREATE TABLE dept
(deptno NUMBER(2),
dname VARCHAR2(14),
loc VARCHAR2(13));
Table created.

Confirme la creacin de la tabla.


SQL> DESCRIBE dept ;
Referencia a Tablas de otro Usuario

Las tablas pertenecientes a otros usuarios no


estn en el esquema del usuario.

Debe utilizar el nombre de propietario como prefijo


para dichas tablas.
Creacin de una Tabla Utilizando una Sintaxis de Subconsulta

Cree una tabla e inserte filas combinando la sentencia CREATE


TABLE y la opcin AS subquery.
CREATE TABLE table
[(column, column...)]
AS subquery;

Haga coincidir el nmero de columnas especificadas con el


nmero de columnas de subconsulta.
Defina columnas con nombres de columna y valores por defecto.
Creacin de una Tabla Utilizando una Subconsulta

SQL> CREATE TABLE dept30


AS
SELECT empno EMPLOYEE_ID,
ename LAST_NAME,
sal*12 ANNSAL,
hiredate HIRE_DATE
FROM emp
WHERE deptno = 30;
Table created.

SQL> DESCRIBE dept30


La Sentencia ALTER TABLE

Utilice la sentencia ALTER TABLE para:


Agregar una columna nueva
Modificar una columna existente
Definir un valor por defecto para la nueva columna
Borrar una columna
La Sentencia ALTER TABLE

Utilice la sentencia ALTER TABLE para agregar,


modificar o borrar columnas.
ALTER TABLE table
ADD (column datatype [DEFAULT expr]
[, column datatype]...);

ALTER TABLE table


MODIFY (column datatype [DEFAULT expr]
[, column datatype]...);

ALTER TABLE table


DROP (column);
Adicin de una Columna

Puede utilizar la clusula ADD para agregar


columnas.
ALTER TABLE dept30
ADD (job_id VARCHAR2(9));
Table altered.

La nueva columna pasa a ser la ltima.


Modificacin de una Columna

Puede cambiar el tipo de dato, el tamao y el


valor por defecto de una columna.
SQL> ALTER TABLE dept30
MODIFY(last_name VARCHAR2(30));
Table altered.

Un cambio en el valor por defecto slo afecta a las


inserciones posteriores en la tabla.
Eliminacin de una Columna

Utilice la clusula DROP COLUMN para borrar las


columnas que ya no necesite de la tabla.

SQL> ALTER TABLE dept30


DROP COLUMN job_id;
Table altered.
La Opcin SET UNUSED

Utilice la opcin SET UNUSED para marcar una o


varias columnas como no utilizadas.
Utilice la opcin DROP UNUSED COLUMNS para
eliminar las columnas marcadas como no utilizadas.

ALTER TABLE table


SET UNUSED (column);
OR
ALTER TABLE table
SET UNUSED COLUMN column;

ALTER TABLE table


DROP UNUSED COLUMNS;
Eliminacin de una Tabla

Se suprimen todos los datos y la estructura de la tabla.


Se valida cualquier transaccin pendiente.
Se borran todos los ndices.
No puede realizar rollback de la sentencia DROP TABLE.

SQL> DROP TABLE dept30;

Table dropped.
Cambio del Nombre de un Objeto

Para cambiar el nombre de una tabla, una vista,


una secuencia o un sinnimo, ejecute la sentencia
RENAME.
SQL> RENAME dept TO detail_dept;

Table renamed.

Debe ser el propietario del objeto.


Truncamiento de una Tabla

La sentencia TRUNCATE TABLE:


Elimina todas las filas de una tabla.
Libera el espacio de almacenamiento utilizado por
dicha tabla.
SQL> TRUNCATE TABLE detail_dept;

Table truncated.

No puede realizar rollback de la eliminacin de filas si


utiliza TRUNCATE.
Tambin puede eliminar filas utilizando la sentencia
DELETE.
Adicin de Comentarios a una Tabla

Puede agregar comentarios a una tabla o a una columna


utilizando la sentencia COMMENT.
SQL> COMMENT ON TABLE emp
IS 'Informacin de empleados';
Comment created.

Los comentarios se pueden visualizar a travs de las


vistas del diccionario de datos:
ALL_COL_COMMENTS
USER_COL_COMMENTS
ALL_TAB_COMMENTS
USER_TAB_COMMENTS
Integridad de los Datos

La integridad de los datos implica que todos los datos de


una base de datos siguen las reglas de negocio.

Hay tres formas principales de mantener la integridad de


los
datos:
Cdigo de aplicacin
Disparadores de base de
datos
Restricciones de integridad
declarativa
Qu son las Restricciones?

Las restricciones fuerzan las reglas a nivel de tabla.


Las restricciones evitan la supresin de una tabla si
hay dependencias.
Son vlidos los siguientes tipos de restriccin:
NOT NULL
UNIQUE
PRIMARY KEY
FOREIGN KEY
CHECK
Instrucciones sobre Restricciones

Asigne un nombre a una restriccin; si no lo hace, Oracle


Server genera un nombre con el formato SYS_Cn.
Cree una restriccin:
Al mismo tiempo que se crea la tabla, o bien
Una vez creada la tabla.
Defina una restriccin a nivel de columna o de tabla.
Visualice una restriccin en el diccionario de datos.
Definicin de Restricciones

CREATE TABLE [schema.]table


(column datatype [DEFAULT expr]
[column_constraint],
...
[table_constraint][,...]);

Ejemplo:
CREATE TABLE employees(
employee_id NUMBER(6),
first_name VARCHAR2(20),
...
job_id VARCHAR2(10) NOT NULL,
CONSTRAINT emp_emp_id_pk
PRIMARY KEY (EMPLOYEE_ID));
Definicin de Restricciones

Nivel de restriccin de columna


column [CONSTRAINT constraint_name] constraint_type,

Nivel de restriccin de tabla


column,...
[CONSTRAINT constraint_name] constraint_type
(column, ...),
La Restriccin NOT NULL

Asegura que no se permiten valores nulos para la


columna:

Restriccin NOT NULL Restriccin Ausencia de restriccin


(Ninguna fila puede NOT NULL NOT NULL
contener (Cualquier fila puede
un valor nulo para contener un valor nulo
esta columna) para esta columna)
La Restriccin NOT NULL

Se define a nivel de columna:


CREATE TABLE employees(
employee_id NUMBER(6),
last_ename VARCHAR2(25) NOT NULL, Nombrada
por el
salary NUMBER(8,2),
sistema
commission_pct NUMBER(2,2),
hire_date DATE CONSTRAINT emp_hiredate_nn
NOT NULL, Nombrada
por el
... usuario

employee_id NUMBER(6),
last_name VARCHAR2(25) NOT NULL,
email VARCHAR2(25),
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
hire_date DATE NOT NULL,
La Restriccin UNIQUE

Restriccin UNIQUE
EMPLOYEES

INSERT INTO

Permitido
No permitido:
ya existe
La Restriccin UNIQUE

Definida a nivel de tabla o de columna:


CREATE TABLE employees(
employee_id NUMBER(6),
last_name VARCHAR2(25) NOT NULL,
email VARCHAR2(25),
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
hire_date DATE NOT NULL,
...
CONSTRAINT emp_email_uk UNIQUE(email));
La Restriccin PRIMARY KEY

DEPARTMENTS
PRIMARY KEY

No permitido INSERT INTO


(valor nulo)

No permitido
(50 ya existe)
La Restriccin PRIMARY KEY

Definida a nivel de tabla o de columna:

CREATE TABLE departments(


department_id NUMBER(4),
department_name VARCHAR2(30)
CONSTRAINT dept_name_nn NOT NULL,
manager_id NUMBER(6),
location_id NUMBER(4),
CONSTRAINT dept_id_pk PRIMARY KEY(department_id));
La Restriccin FOREIGN KEY

DEPARTMENTS

PRIMARY
KEY

EMPLOYEES
FOREIGN
KEY

No permitido
INSERT INTO
(9 no existe)

Permitido
La Restriccin FOREIGN KEY

Definida a nivel de tabla o de columna:


CREATE TABLE employees(
employee_id NUMBER(6),
last_name VARCHAR2(25) NOT NULL,
email VARCHAR2(25),
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
hire_date DATE NOT NULL,
...
department_id NUMBER(4),
CONSTRAINT emp_dept_fk FOREIGN KEY (department_id)
REFERENCES departments(department_id),
CONSTRAINT emp_email_uk UNIQUE(email));
Palabras Clave de la Restriccin FOREIGN KEY

FOREIGN KEY: Define la columna de la tabla


secundaria a nivel de restriccin de tabla.
REFERENCES: Identifica la tabla y la columna
en la tabla principal.
ON DELETE CASCADE: Suprime las filas
dependientes de la tabla secundaria cuando se
suprime una fila en la tabla principal.
ON DELETE SET NULL: Convierte los valores
de clave ajena dependientes en valores nulos.
La Restriccin CHECK

Define una condicin que debe satisfacer cada fila.


No se permiten las siguientes expresiones:
Referencias a las pseudocolumnas CURRVAL,
NEXTVAL, LEVEL y ROWNUM
Llamadas a las funciones SYSDATE, UID, USER
y USERENV
Consultas que hagan referencia a otros valores de
otras filas

..., salary NUMBER(2)


CONSTRAINT emp_salary_min
CHECK (salary > 0),...
Adicin de una Sintaxis de Restriccin

Utilice la sentencia ALTER TABLE para:


Agregar o borrar una restriccin, sin modificar su
estructura
Activar o desactivar restricciones
Agregar una restriccin NOT NULL utilizando la
clusula MODIFY

ALTER TABLE table


ADD [CONSTRAINT constraint] type (column);
Adicin de una Restriccin

Agregue una restriccin FOREIGN KEY a la tabla


EMPLOYEES que indique que ya debe existir un
director como empleado vlido en la tabla EMPLOYEES.

SQL> ALTER TABLE employees


ADD CONSTRAINT emp_manager_fk
FOREIGN KEY(manager_id)
REFERENCES employees(employee_id);

Table altered.
Eliminacin de una Restriccin

Elimine la restriccin de director de la tabla EMPLOYEES.


SQL> ALTER TABLE employees
DROP CONSTRAINT emp_manager_fk;

Table altered.

Elimine la restriccin PRIMARY KEY de la tabla


DEPARTMENTS y borre la restriccin FOREIGN KEY
asociada en la columna EMPLOYEES.DEPARTMENT_ID.
SQ> ALTER TABLE departments
DROP PRIMARY KEY CASCADE;

Table altered.
Desactivacin de Restricciones

Ejecute la clusula DISABLE de la sentencia ALTER TABLE


para desactivar una restriccin de integridad.
Aplique la opcin CASCADE para desactivar restricciones
de integridad dependientes.

SQL> ALTER TABLE employees


DISABLE CONSTRAINT emp_emp_id_pk CASCADE;

Table altered.
Activacin de Restricciones

Active una restriccin de integridad desactivada actualmente


en la definicin de tabla utilizando la clusula ENABLE.

SQL> ALTER TABLE employees


ENABLE CONSTRAINT emp_emp_id_pk;

Table altered.

Se crea un ndice UNIQUE o PRIMARY KEY automticamente


si activa una restriccin de clave UNIQUE o PRIMARY KEY.
Restricciones en Cascada

La clusula CASCADE CONSTRAINTS se utiliza junto con


la clusula DROP COLUMN.

La clusula CASCADE CONSTRAINTS borra todas las


restricciones de integridad referenciales que hacen
referencia a las claves primaria y nica definidas en las
columnas borradas.

La clusula CASCADE CONSTRAINTS tambin borra todas


las restricciones de varias columnas definidas en las
columnas borradas.
Restricciones en Cascada

Ejemplo:
SQL> ALTER TABLE test1
DROP (pk) CASCADE CONSTRAINTS;
Table altered.

SQL> ALTER TABLE test1


DROP (pk, fk, col1) CASCADE CONSTRAINTS;
Table altered.
Visualizacin de Restricciones

Consulte la tabla USER_CONSTRAINTS para visualizar


todas las definiciones y los nombres de restricciones.

SELECT constraint_name, constraint_type,


search_condition
FROM user_constraints
WHERE table_name = 'EMPLOYEES';
Visualizacin de las Columnas Asociadas a Restricciones

Visualice las columnas asociadas a los nombres


de restriccin en la vista USER_CONS_COLUMNS.
SELECT constraint_name, column_name
FROM user_cons_columns
WHERE table_name = 'EMPLOYEES';
Objetos de la Bases de Datos

Objeto Descripcin

Tabla Unidad bsica de almacenamiento; est


formada por filas y columnas.

Vista Representa lgicamente subjuegos de datos


de una o varias tablas.

Secuencia Generador de valor numrico.


ndice Mejora el rendimiento de algunas consultas.
Sinnimo Proporciona nombres alternativos a objetos.
Qu es una Secuencia?

Una secuencia:
Genera automticamente nmeros nicos.
Es un objeto compartible.
Normalmente se utiliza para crear un valor de
clave primaria.
Sustituye al cdigo de aplicacin.
Acelera la eficacia del acceso a los valores de
secuencia al almacenarse en memoria cach.
Sintaxis de la Sentencia CREATE SEQUENCE

Defina una secuencia para generar nmeros secuenciales


automticamente:
CREATE SEQUENCE sequence
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}];
Sintaxis de la Sentencia CREATE SEQUENCE

MINVALUE es el valor mnimo que tendr la secuencia

MAXVALUE es el valor mximo que tendr la secuencia (se puede


obviar y por defecto se le asignar 999999999999999999999999999)

START WITH es el valor con el que empezar la secuencia

INCREMENT BY es el valor con el que se incrementar la secuencia

CACHE / NOCACHE el uso de CACHE permite indicar cuantos valores


queremos que sean guardados en memoria para un acceso ms rpido.
No se recomienda su uso ya que podra generar inconsistencia.

CYCLE indica que, cuando la secuencia llegue a mximo valor (valor de


"maxvalue") se reinicie, comenzando con el mnimo valor ("minvalue")
nuevamente, es decir, la secuencia vuelve a utilizar los nmeros.
Creacin de una Secuencia

Cree una secuencia llamada DEPT_DEPTID_SEQ para


utilizarla para la clave primaria de la tabla
DEPARTMENTS.
No utilice la opcin CYCLE para valores de clave primaria.
SQL> CREATE SEQUENCE dept_deptid_seq
INCREMENT BY 10
START WITH 280
MINVALUE 0
MAXVALUE 1000
NOCACHE
NOCYCLE;

Sequence created.
Confirmacin de Secuencias

Verifique los valores de secuencia en la tabla


USER_SEQUENCES del diccionario de datos.
SQL> SELECT sequence_name, min_value, max_value,
increment_by, last_number
FROM user_sequences;

La columna LAST_NUMBER muestra el siguiente


nmero de secuencia disponible si se especifica
NOCACHE.
Pseudocolumnas NEXTVAL y CURRVAL

NEXTVAL devuelve el siguiente valor de secuencia


disponible. Devuelve un valor nico cada vez que se
hace referencia a ella, incluso para usuarios distintos.

CURRVAL obtiene el valor de la secuencia actual.

NEXTVAL se debe emitir para dicha secuencia antes de


que CURRVAL contenga un valor.
Reglas para el Uso de NEXTVAL y CURRVAL

Puede utilizar NEXTVAL y CURRVAL en los siguientes contextos:


La lista SELECT de una sentencia SELECT que no forme parte de una subconsulta
La lista SELECT de una subconsulta en una sentencia INSERT
La clusula VALUES de una sentencia INSERT
La clusula SET de una sentencia UPDATE

No puede utilizar NEXTVAL y CURRVAL en los siguientes contextos:


La lista SELECT de una vista
Una sentencia SELECT con la palabra clave DISTINCT
Una sentencia SELECT con clusulas GROUP BY, HAVING u ORDER BY
Una subconsulta en una sentencia SELECT, DELETE o UPDATE
La expresin DEFAULT en una sentencia CREATE TABLE o ALTER TABLE
Uso de una Secuencia

Inserte un nuevo departamento llamado Support


en el identificador de ubicacin 2500.
SQL> INSERT INTO departments(department_id,
department_name, location_id)
VALUES (dept_deptid_seq.NEXTVAL,
'Support', 2500);
1 row created.

Visualice el valor actual para la secuencia


SEQ_DEPTID.
SQL> SELECT seq_deptid.CURRVAL
FROM dual;
Uso de una Secuencia

El almacenamiento en memoria cach de valores de secuencia


proporciona un acceso ms rpido a dichos valores.

Los intervalos en los valores de secuencia se pueden producir


cuando:
Se realiza un rollback.
El sistema falla.
Se est utilizando una secuencia en otra tabla.

Si la secuencia se cre con NOCACHE, visualice el siguiente


valor disponible, consultando la tabla USER_SEQUENCES.
Modificacin de una Secuencia

Cambie el valor de aumento, el valor mximo, el


valor mnimo, la opcin de ciclo o la opcin de
cach.
SQL> ALTER SEQUENCE dept_deptid_seq
INCREMENT BY 20
MAXVALUE 999999
NOCACHE
NOCYCLE;

Sequence altered.
Instrucciones para la Modificacin de una Secuencia

Debe ser el propietario o tener el privilegio ALTER


para la secuencia.
Slo se ven afectados los nmeros de secuencia
futuros.
Se debe borrar y volver a crear
la secuencia para reiniciarla en un nmero
diferente.
Se realiza alguna validacin.
Eliminacin de una Secuencia

Elimine una secuencia del diccionario de datos


utilizando la sentencia DROP SEQUENCE.
Una vez que se ha eliminado, ya no se puede
hacer referencia a la secuencia.

SQL> DROP SEQUENCE dept_deptid_seq;

Sequence dropped.
Objetos de la Bases de Datos

Objeto Descripcin

Tabla Unidad bsica de almacenamiento; est


formada por filas y columnas.

Vista Representa lgicamente subjuegos de datos


de una o varias tablas.

Secuencia Generador de valor numrico.


ndice Mejora el rendimiento de algunas consultas.
Sinnimo Proporciona nombres alternativos a objetos.
Qu es un ndice?

Un ndice:
Es un objeto de esquema.
Oracle Server lo utiliza para acelerar la
recuperacin de filas utilizando un puntero.
Puede reducir la E/S de disco mediante un
mtodo de ruta de acceso rpido para encontrar
datos.
Es independiente de su tabla indexada.
Oracle Server lo utiliza y mantiene
automticamente.
Cmo Se Crean los ndices?

Automticamente: Un ndice nico se crea


automticamente al definir una restriccin UNIQUE o
PRIMARY KEY en una definicin de tabla.

Manualmente: Los usuarios pueden crear ndices no


nicos en columnas para acelerar el acceso a las filas.
Creacin de un ndice

Cree un ndice en una o varias columnas.


CREATE INDEX index
ON table (column[, column]...);

Mejore la velocidad de acceso de consulta a la


columna LAST_NAME de la tabla EMPLOYEES.
CREATE INDEX emp_last_name_idx
ON employees(last_name);
Index created.
Cundo Se Crea un ndice

Debe crear un ndice si:


Una columna contiene un amplio rango de
valores.
Una columna contiene un gran nmero de valores
nulos.
Una o ms columnas se utilizan juntas
frecuentemente en una clusula WHERE o en una
condicin de unin.
La tabla es grande y se espera que la mayora de
las consultas recuperen menos del 2-4 por ciento
de las filas.
Cundo No Se Crea un ndice

Normalmente no merece la pena crear un ndice si:


La tabla es pequea.
Las columnas no se suelen utilizar como condicin en la
consulta.
Se espera que la mayora de las consultas recuperen
ms del 2-4 por ciento de las filas de la tabla.
La tabla se actualiza frecuentemente.
Se hace referencia a las columnas indexadas como parte
de una expresin.
Confirmacin de ndices

La vista USER_INDEXES del diccionario de datos


contiene el nombre del ndice y su unicidad.
La vista USER_IND_COLUMNS contiene el
nombre del ndice, el nombre de la tabla y el
nombre de la columna.

SQL> SELECT ic.index_name, ic.column_name,


ic.column_position col_pos,ix.uniqueness
FROM user_indexes ix, user_ind_columns ic
WHERE ic.index_name = ix.index_name
AND ic.table_name = 'EMPLOYEES';
ndices Basados en Funciones

Un ndice basado en funcin es un ndice basado en


expresiones.
La expresin de ndice se crea desde columnas de tabla,
constantes, funciones SQL y funciones definidas por el
usuario.

SQL> CREATE INDEX upper_dept_name_idx


ON departments(UPPER(department_name));

Index created.

SQL> SELECT * FROM departments


WHERE UPPER(department_name) = 'SALES';
Eliminacin de un ndice

Elimine un ndice del diccionario de datos utilizando el


comando DROP INDEX.
DROP INDEX index;

Elimine el ndice UPPER_LAST_NAME_IDX del diccionario


de datos.
DROP INDEX upper_dept_name_idx;
Index dropped.

Para borrar un ndice, debe ser el propietario del mismo o


tener el privilegio DROP ANY INDEX.
Objetos de la Bases de Datos

Objeto Descripcin

Tabla Unidad bsica de almacenamiento; est


formada por filas y columnas.

Vista Representa lgicamente subjuegos de datos


de una o varias tablas.

Secuencia Generador de valor numrico.


ndice Mejora el rendimiento de algunas consultas.
Sinnimo Proporciona nombres alternativos a objetos.
Sinnimos

Simplifique el acceso a los objetos mediante la creacin de


un sinnimo (un objeto con otro nombre). Con los
sinnimos, puede:

Facilitar la referencia a una tabla propiedad de otro usuario


Reducir nombres largos de objeto.

CREATE [PUBLIC] SYNONYM synonym


FOR object;
Creacin y Eliminacin de Sinnimos

Cree una abreviatura para la tabla


DEPARTMENTS.

CREATE SYNONYM dept


FOR departments;
Synonym Created.

Borre un sinnimo.
DROP SYNONYM dept;
Synonym dropped.
Modelo de Datos a Utilizar en Clase
Fin de la Sesin 04

S-ar putea să vă placă și