Resumen- creación de tablas en Oracle
RESUMEN:CREACION DE TABLAS E ÍNDICES
Tipos de Datos en Oracle (más comunes)
TIPO |
CARACTERÍSTICAS |
OBSERVACIONES |
VARCHAR2 |
Cadena de caracteres de longitud variable |
Entre 1 y 4000 bytes como máximo. El tamaño del campo dependerá del valor que contenga, es de longitud variable. |
NUMBER |
Almacena números fijos y decimales |
Para declarar un tipo de datos NUMBER es suficiente con:
nombre_columna NUMBER
Se le puede indicar la precisión(logitud máxima) y la escala (decimales): nombre_columna NUMBER (precision, escala) |
DATE |
Almacena datos de tipo fecha. |
El tipo de datos DATE almacena el año (incluyendo el siglo), el mes, el día, las horas, los minutos y los segundos |
BLOB |
Permite almacenar datos binarios como fotos, videos, etc… |
Admiten hasta 8 terabytes |
CLOB |
Almacena datos de tipo carácter |
Admiten hasta 8 terabytes |
Creación de tablas
CREATE
TABLE
<NOMBRE DE TABLA>
(
<NOMBRE CAMPO>
<TIPO DATO>
<RESTRICCION>,
<NOMBRE CAMPO1>
<TIPO DATO>
<RESTRICCION>,
<NOMBRE CAMPO2>
<TIPO DATO>
<RESTRICCION>,
...
) TABLESPACE <NOMBRE ESPACIO DE TABLAS> ;
Ejemplos:
CREATE
TABLE
EMPRESAS
(
CODIGO_EMPRESA NUMBER
NOT
NULL,
NOMBRE VARCHAR2(60),
CIF VARCHAR2(10),
EMPRESA_ACTIVA VARCHAR2(1)
)
TABLESPACE
USERS;
CREATE
TABLE
CLIENTES
(
CODIGO_EMPRESA NUMBER
NOT
NULL,
CODIGO_CLIENTE NUMBER
NOT
NULL,
NOMBRE VARCHAR2(60),
CIF VARCHAR2(10)
)
TABLESPACE
USERS;
Alterar la estructura de una tabla
ALTER
TABLE
< NOMBRE DE TABLA > {ADD|MODIFY|DROP}...
Ejemplos:
Añadir una columna a una tabla:
ALTER
TABLE
CLIENTES
ADD DIRECCION VARCHAR2(50);
Cambiar el tamaño de una columna en una tabla:
ALTER
TABLE
CLIENTES
MODIFY DIRECCION VARCHAR2(250);
Hacer NOT NULL una columna en una tabla:
ALTER
TABLE
CLIENTES
MODIFY DIRECCION VARCHAR2(250)
NOT NULL;
Eliminar una columna a una tabla:
ALTER
TABLE
CLIENTES
DROP
COLUMN DIRECCION;
Borrar tablas
DROP
TABLE <NOMBRE TABLA> [CASCADE
CONSTRAINTS][PURGE];
Ejemplos:
Eliminar una tabla:
DROP
TABLE
CLIENTES;
Eliminar una tabla aun cuando existan claves foráneas haciendo referencia a ella:
DROP
TABLE
CLIENTES CASCADE
CONSTRAINTS;
NOTA: Las claves foraneas que hacen referencia a la tabla se inhabilitarán.
Eliminar una tabla aun cuando existan claves foráneas haciendo referencia a ella y eliminándola de la papelera de reciclaje:
DROP
TABLE
CLIENTES CASCADE
CONSTRAINTS PURGE;
Crear restricciones (constraints)
Crear una clave primaria (primary key):
ALTER
TABLE <NOMBRE TABLA>
ADD
CONSTRAINT <NOMBRE DE LA RESTRICCION>
PRIMARY
KEY
(<COLUMNA1,COLUMNA2,...>)
USING INDEX TABLESPACE <NOMBRE ESPACIO DE TABLAS>;
NOTA: la creacion de una clave primaria implica la creacion de un indice unico por con las mismas columnas que la clave primaria, es posible especifiar el espacio de tablas donde ceremos crear este indice con la instrucción USING INDEX TABLESPACE
<NOMBRE ESPACIO DE TABLAS>
Ejemplo
(crear una clave primaria para la tabla empresas)
ALTER
TABLE EMPRESAS
ADD
CONSTRAINT EMPRESAS_PK
PRIMARY
KEY
(CODIGO_EMPRESA);
Ejemplo
(crear una clave primaria para la tabla clientes)
ALTER
TABLE CLIENTES
ADD
CONSTRAINT CLIENTES_PK
PRIMARY
KEY
(CODIGO_EMPRESA, CODIGO_CLIENTE);
Ejemplo
(crear una clave primaria para la tabla clientes, especificando el espacio de tablas del índice asociado a la clave primaria)
ALTER
TABLE CLIENTES
ADD
CONSTRAINT CLIENTES_PK
PRIMARY
KEY
(CODIGO_EMPRESA, CODIGO_CLIENTE);
USING INDEX TABLESPACE USERS
Crear una clave externa/foránea (foreign key):
ALTER
TABLE
<NOMBRE TABLA>
ADD
CONSTRAINT <NOMBRE DE LA RESTRICCION>
FOREIGN
KEY
(<COLUMNA1,COLUMNA2,...>)
REFERENCES
<NOMBRE TABLA REFERENCIADA>
(<COLUMNA1,COLUMNA2,…>);
Ejemplo
(crea una clave foránea en la tabla clientes para asegurar que todos los valores de la columna "codigo_empresa" existan en la tabla empresas)
ALTER
TABLE
CLIENTES
ADD
CONSTRAINT CLIENTES_FK1
FOREIGN
KEY
(CODIGO_EMPRESA)
REFERENCES
EMPRESAS (CODIGO_EMPRESA);
Crear un control de valores (check constraint):
ALTER
TABLE
<NOMBRE TABLA>
ADD
CONSTRAINT <NOMBRE DE LA RESTRICCION>
CHECK
(<COLUMNA> <VALIDACION>);
Ejemplo
(añadir una restriccion que obligue a que los valores posibles de la columna "empresa_activa" sean 'S' o 'N')
ALTER
TABLE
CLIENTES
ADD
CONSTRAINT CLIENTES_CK
CHECK
(EMPRESA_ACTIVA IN
('S','N'));
Crear una restricción UNIQUE:
ALTER
TABLE
<NOMBRE TABLA>
ADD
CONSTRAINT <NOMBRE DE LA RESTRICCION>
UNIQUE
(<COLUMNA1>,<COLUMNA2>,...);
Ejemplo
(añadir una restriccion única en la tabla clientes para asegurarnos que no se repite ningún valor en el campo CIF)
ALTER
TABLE
CLIENTES
ADD
CONSTRAINT CLIENTES_UK1
UNIQUE
(CIF);
NOTA: Normalmente una restricción de este tipo se implementa mediante un indice unico (ver creación de indices).
Borrar una restricción (constraint):
ALTER
TABLE
<NOMBRE TABLA>
DROP
CONSTRAINT <NOMBRE DE LA RESTRICCION>;
Ejemplo
(eliminar la restrinccion CLIENTES_PK de la tabla clientes)
ALTER
TABLE
CLIENTES
DROP
CONSTRAINT CLIENTES_PK;
Deshabilita una restricción (Constraint):
ALTER
TABLE
<NOMBRE TABLA>
DISABLE
CONSTRAINT <NOMBRE DE LA RESTRICCION>;
Ejemplo
(deshabilitar la restrinccion CLIENTES_FK1 de la tabla clientes)
ALTER
TABLE
CLIENTES
DISABLE
CONSTRAINT CLIENTES_FK1;
Habilita una restricción (constraint):
ALTER
TABLE
<NOMBRE TABLA>
ENABLE
CONSTRAINT <NOMBRE DE LA RESTRICCION>;
Ejemplo
(habilitar la restrinccion CLIENTES_FK1 de la tabla clientes)
ALTER
TABLE
CLIENTES
ENABLE
CONSTRAINT CLIENTES_FK1;
Creación de indices
Creacion de indices no únicos
CREATE
INDEX
<NOMBRE INDICE>
ON
<NOMBRE TABLA> (<COLUMNA1>,<COLUMNA1>,...)
TABLESPACE
<NOMBRE ESPACIO DE TABLAS>;
Ejemplo
(crear un indice sobre la tabla clientes en la columna nombre)
CREATE
INDEX CLIENTES_I1
ON
CLIENTES
(NOMBRE)
TABLESPACE
USERS;
Creacion de indices unicos
CREATE
UNIQUE
INDEX
<NOMBRE INDICE>
ON
<NOMBRE TABLA>
(<COLUMNA1>,<COLUMNA1>,...)
TABLESPACE
<NOMBRE ESPACIO DE TABLAS>;
Ejemplo
(crear un indice único sobre la tabla clientes en la columna CIF)
CREATE
UNIQUE INDEX CLIENTES_I1
ON
CLIENTES
(CIF)
TABLESPACE
USERS;