Introducción Al Lenguaje DDL: Metadatos
Introducción Al Lenguaje DDL: Metadatos
Introducción Al Lenguaje DDL: Metadatos
Hay que tener en cuenta que ninguna instrucción DDL puede ser
anulada por una instrucción ROLLBACK (la instrucción
ROLLBACK está relacionada con el uso de transacciones, que se
comentarán más adelante) por lo que hay que tener mucha
precaución a la hora de utilizarlas. Es decir, las instrucciones DDL
generan acciones que no se pueden deshacer. Salvo que
dispongamos de alguna copia de seguridad o de otros elementos
de recuperación.
Ejemplo:
Ejemplo:
CREATE TABLE proveedores (nombre VARCHAR(25));
Ejemplo:
CREATE TABLE Proveedores (
nombre VARCHAR(25),
localidad VARCHAR(30) DEFAULT ‘Palencia’
);
De este modo si añadimos un proveedor y no indicamos localidad,
se tomará Palencia como localidad de dicho Proveedor.
[2.4.1]textos
Para almacenar texto, Oracle dispone de los siguientes tipos
El resto de detalles de este tipo son los mismos que los del
tipo CHAR.
q’[O’Hara]’
[2.4.2]números
En Oracle, el tipo NUMBER es un tipo muy versátil que permite
representar todo tipo de números.
NUMBER(p,s)
precisión y escala
enteros
Oracle también permite almacenar números enteros. En este caso
se indica la palabra NUMBER seguida del número máximo de
cifras que podrán almacenarse. Por
ejemplo NUMBER(8) permitiría almacenar números sin decimales
de hasta ocho cifras.
números en coma flotante
Se indican simplemente con la palabra NUMBER, sin indicar
número alguno después. Como se ha indicado anteriormente, los
números en coma flotante permiten almacenar números decimales
que se operan muy rápido por parte de las computadoras, pero que
no almacenan los números con exactitud absoluta. Tienen una
precisión limitada.
[2.4.3]fechas y horas
almacenamiento de fechas y horas
Las fechas y las horas en Oracle (como en otros sistemas) se
almacenan internamente en un formato especial (realmente es un
formato numérico). Sin embargo, las personas representamos las
fechas indicando años, meses, día del mes, hora, minutos y
segundos.
tipo DATE
El tipo DATE permite almacenar fechas sin tener en cuenta las
horas, minutos y segundos. Oracle posee la
función SYSDATE para obtener la fecha actual.
tipo TIMESTAMP
Es una extensión del anterior, almacena valores de día, mes y año,
junto con hora, minuto y segundos, incluso con decimales para los
segundos. Con lo que representa un instante concreto en el tiempo.
intervalos
Los intervalos no son fechas son duraciones de tiempo. Oracle
posee dos tipos de intervalos: intervalos de tiempo grandes (años
y meses) e intervalos pequeños de tiempo (desde segundos hasta
días como mucho).
CLOB
Utilizado para almacenar textos.
BLOB
Utilizado para almacenar datos binarios. Para almacenar datos
binarios se requiere utilizar las librerías o interfaces especialmente
dedicados a esta tarea de Oracle.
BFILE
Sirve para almacenar datos binarios. Pero, en este caso, los datos
binarios se almacenan en archivos externos a la base de datos,
normalmente dentro del servidor de base de datos. Para ello se
almacena la ruta a cada archivo, mediante funciones especiales
(como BFILENAME, por ejemplo).
[2.4.5]dominios
En SQL estándar tenemos la posibilidad de crear dominios. La
instrucción que realiza esta labor es CREATE DOMAIN. Sintaxis:
CREATE DOMAIN name [AS] data_type
[ DEFAULT expression ]
[ restricciones [ ... ] ]
Ejemplo:
CREATE DOMAIN Tdireccion AS VARCHAR(3);
Así, en concreto la
vista INFORMATION_SCHEMA.TABLES obtiene una vista de las
tablas creadas.
Es decir, la instrucción:
SELECT * FROM INFORMATION_SCHEMA.TABLES
[2.5.2]comando DESCRIBE
El comando DESCRIBE, permite obtener la estructura de una tabla.
Ejemplo:
DESCRIBE existencias;
[2.7.3]añadir columnas
Sintaxis:
ALTER
TABLE nombreTabla ADD(nombreColumnaTipoDatos [P
[,columnaSiguiente tipoDatos[propiedades]...)
Permite añadir nuevas columnas a la tabla. Se deben indicar su
tipo de datos y sus propiedades si es necesario (al estilo
de CREATE TABLE).
Ejemplo:
[2.7.5]modificar columnas
Permite cambiar el tipo de datos y propiedades de una determinada
columna. Sintaxis:
ALTER TABLE nombreTabla MODIFY(columna tipo [propiedades]
[columnaSiguiente tipo [propiedades] ...]
Ejemplo:
ALTER TABLE facturas MODIFY(fecha TIMESTAMP);
Por ejemplo:
ALTER TABLE facturas ALTER COLUMN fecha TIMESTAMP;
[2.7.6]renombrar columna
Esto permite cambiar el nombre de una columna. Sintaxis
ALTER TABLE nombreTabla
RENAME COLUMN nombreAntiguo TO nombreNuevo
Ejemplo:
ALTER TABLE facturas RENAME COLUMN fecha TO fechaYhora;
Ejemplo:
CREATE TABLE articulo (cod NUMBER(7), nombre VARCHAR2(25), precio NUMBER(11,2) DEFAULT 3
Sintaxis:
ALTER TABLE nombreTabla READ ONLY;
[2.8.3]prohibir nulos
La restricción NOT NULL permite prohibir los nulos en una
determinada tabla. Eso obliga a que la columna tenga que tener
obligatoriamente un valor para que sea almacenado el registro.
[2.8.4]valores únicos
Las restricciones de tipo UNIQUE obligan a que el contenido de
una o más columnas no puedan repetir valores en distintas filas.
Ejemplo:
CREATE TABLE cliente(
dni VARCHAR2(9) CONSTRAINT clientes_nn1 UNIQUE
);
[2.8.5]clave primaria
La clave primaria de una tabla la forman las columnas que indican
a cada registro de la misma. La clave primaria hace que los campos
que la forman no puedan quedar vacíos ni repetir valores. Además
pasan a formar parte del índice principal de la tabla, que se usa
para acceder más rápidamente a estos datos.sean NOT NULL (sin
posibilidad de quedar vacíos) y que los valores de los campos sean
de tipo UNIQUE (sin posibilidad de repetición).
Así las políticas que dictan qué hacer cuando se borran datos
principales relacionados con claves secundarias son:
ON DELETE SET NULL. Coloca nulos en todas las claves
secundarias relacionadas.
ON DELETE CASCADE. Borra todas las filas relacionadas
con aquella que hemos eliminado.
ON DELETE SET DEFAULT. Coloca en las filas relacionadas
el valor por defecto de esa columna en la columna
relacionada
ON DELETE NOTHING. No hace nada.
[2.8.7]restricciones de validación
Son restricciones que dictan una condición que deben cumplir los
contenidos de una columna. Una misma columna puede tener
múltiples CHECKS en su definición (se pondrían
varios CONSTRAINT seguidos, sin comas).
Ejemplo:
CREATE TABLE ingresos(
cod NUMBER(5) PRIMARY KEY,
concepto VARCHAR2(40) NOT NULL,
importe NUMBER(11,2) CONSTRAINT ingresos_ck1
CHECK (importe>0)
CONSTRAINT ingresos_ck2
CHECK (importe<8000)
);
activar restricciones
Anula la desactivación:
ALTER TABLE tabla ENABLE CONSTRAINT nombre;
Columna Descripción
OWNER Indica el nombre del usuario propietario de la tabla
CONSTRAINT_NAME Nombre de la restricción
Tipo de restricción:
CONSTRAINT-
OWNER TABLE-NAME COLUMN-NAME
NAME
JORGE EXIS_PK EXISTENCIAS TIPO
JORGE EXIS_PK EXISTENCIAS MODELO
JORGE EXIS_PK EXISTENCIAS N_ALMACEN
JORGE PIEZA_FK EXISTENCIAS TIPO
JORGE PIEZA_FK EXISTENCIAS MODELO
JORGE PIEZA_PK PIEZA TIPO
JORGE PIEZA_PK PIEZA MODELO
Para saber de qué tipo son esas restricciones, habría que acudir a
la vista USER_COL_CONSTRAINTS.