Ir al contenido principal

Entradas

Mostrando entradas de octubre 11, 2013

Constraint UNIQUE

Un Constraint UNIQUE nomina una columna o un conjunto de columnas para el cual el valor debe ser diferente para cada fila en la tabla. Si se basa sobre solo una columna, esta columna es conocida como llave(Key). Si el Constraint está compuesto por más de una columna (Constraint UNIQUE – Llave Compuesta Composite Key). Las columnas no han de ser del mismo tipo o estar adyacentes en la estructura de la tabla. Una rareza del Constraint UNIQUE es que es posible ingresar valores NULL en las columnas key. De hecho es posible tener cualquier número de filas con valores nulos en sus columnas key. Este constraint garantiza que solo una fila tendrá un valor único a menos que se refiere a valores NULL que pueden ser varias filas las que lo tengan. El Constraint UNIQUE es realizado por un Indice. Cuando se define un Constraint UNIQUE, Oracle buscará un índice en la columna Key, y si ésta no existe, se creará. Entonces cada vez que se inserta una fila, Oracle buscará el índice para ver si l

Tipos de Constraint

Los tipos de Constraint que soporta la Base de Datos Oracle, son los siguientes: UNIQUE NOT NULL PRIMARY KEY FOREIGN KEY CHECK Los Constraint tienen nombres. Una Buena práctica sería especificarlos de acuerdo a la conversión de nombres, sino es especificado un nombre, Oracle genera uno automáticamente.

Constraint

Los Constraint son una forma mediante la cual la Base de Datos puede imponer reglas de negocio. Y garantiza que los datos cumplen al modelo entidad - relación determinado por los analistas de negocios que definen las estructuras de datos de la aplicación. Cuando cualquier sentencia DML es ejecutado contra una tabla con Constraint, si el DML viola el Constraint, entonces la sentencia será revertida(Rollback) automáticamente. Recuerde que una sentencia DML que afecta muchas filas podría tener éxito parcialmente antes que llegue un problema con una fila. Si la sentencia es parte de una transacción multisentencia(muchas sentencias), entonces las sentencia que ya ha sido afectadas exitosamente permanecerán intactas pero sin confirmar.

Tablas DROP y TRUNCATE

El comando TRUNCATE TABLE tiene el efecto de eliminar cada fila de una tabla. Mientras la definición de la tabla queda intacta. DROP TABLE es más drástico, la definición de la tabla es removida. La sintaxis es la siguiente: DROP TABLE [esquema.]tabla; Si el esquema no es especificado entonces se eliminara la tabla dele esquema actual. Si la tabla que se desea eliminar tiene en curso una transacción, el drop fallara o si la tabla tiene una relación FOREING KEY también.

Modificando la Estructura de una Tabla.

Hay muchas modificaciones que pueden ser realizadas a una tabla. Agregar Columna : alter table employees_copia add num integer; Modificando Columnas : alter table employees_copia modify num varchar2(10); Dropping columns : alter table employees_copia drop column num; Haciendo una columna no utilizable alter table emp set unused column job_id; Renombrando columna : alter table employees_copia rename column num to numero; Tabla de Solo Lectura : alter table employees_copia read only; Todos estos comandos son comandos DDL con el COMMIT. No son reversibles y fallaran si hay alguna transacción activa contra la tabla. Son virtualmente instantáneos con excepción del DROP COLUMN. DROP COLUMN puede tomar algo de tiempo ya que cada columna es eliminada de la fila y la fila debe ser restructurada. SET UNUSED suele ser mejor que DROP COLUMN ya que solo las hace invisible las columnas. Read Only suele causar error a las sentencias DML.

Creando Tablas de Subquerys

En lugar de crear tablas de la nada y luego insertar filas en ellas. Las tablas pueden ser creadas en base a otras tablas mediante el uso de subquerys. Esta técnica permite crear la definición de una tabla y luego poblarla con filas con una sola sentencia. Cualquier consulta en absoluto puede ser usada como la fuente de creación de otra tabla (estructura). La sintaxis es la siguiente: CREATE TABLE [esquema.]tabla  AS subquery; Todas las consultas devuelve un conjunto de datos de dos dimensiones. Este resultado es almacenado en una nueva tabla. Ejemplo: CREATE TABLE employees_copia AS SELECT * FROM employees; Esta sentencia crea una copia idéntica de employees. Idéntica en la definición y las filas que contiene. Cualquier Constraint NOT NULL y CHECK sobre las columnas serán aplicados también a la nueva tabla. Pero cualquier Constraint Primary Key, Unique y Foreing-Key no serán creados. Esto es porque estos últimos tres tipos requieren de un índice que podría no esta

Creando una Tabla

Las tablas pueden ser almacenadas en la base de datos de varias formas. La más simple es la Tabla HEAP. La tabla HEAP es de filas de longitud variable en orden aleatorio. Hay estructuras más avanzadas. Tales como las siguientes, que obligan el ordenamiento y agrupamiento sobre las filas o forzar distribución aleatoria. Index Organized Table . Almacena Filas en Orden de una Llave Índice. Index Cluster . Puede desnormalizar tablas en relaciones Padre e Hijos. Así las filas relacionadas de diferentes tablas son almacenadas juntas. Hash Cluster . Forza la distribución aleatoria de las filas. Partitioned Tables . Almacena filas en estructuras físicas separadas. La asignación de filas a una partición es de acuerdo al valor de una columna. El uso de cualquier tipo de estructura, la más simple o la más avanzada es transparente para el SQL, la sentencias ejecutadas contra la Tabla devuelve el mismo resultado. Pero el rendimiento de cada estructura es diferente. Creando Tablas