Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Unidad 2 PDF
Unidad 2 PDF
Sintaxis básica para crear una base de datos en Oracle (No aplica en Oracle
express)
CREATE DATABASE nombre_baseDatos
Oracle
Una tabla de una base de datos es similar en apariencia a una hoja de cálculo, en
cuanto a que los datos se almacenan en filas y columnas. Como consecuencia,
normalmente es bastante fácil importar una hoja de cálculo en una tabla de una
base de datos. La principal diferencia entre almacenar los datos en una hoja de
cálculo y hacerlo en una base de datos es la forma de organizarse los datos.
Por lo tanto, la creación de las tablas en el proceso de programación en Oracle
juegan un papel muy importante. En el momento de crear las tablas se definen
características a dos niveles: Tabla y Columna, como se muestra a continuación:
Cantidad de
Una tabla puede tener un máximo de 254 columnas.
Columnas:
Existen varios tipos de datos en SQL. De esta manera, cada columna puede
albergar una información de naturaleza distinta. Los tipos de datos más comunes y
sus características en Oracle Express (10 Y 11g) se resumen en la siguiente tabla.
Las versiones de Oracle comercial soportan una gama mucho más amplia de tipos
de datos.
Tipo de Dato Descripción
Contiene datos binarios con un tamaño máximo de 4
gigabytes. Los datos binarios nos van a permitir guardar
en la base de datos archivos, imágenes, sonidos, etc ...
BLOB Casi siempre es preferible guardar la ruta del archivo en
la base de datos en lugar del propio archivo en modo
binario, pero existen ciertas circunstancias en las que no
nos queda otra solución.
SELECT DBMS_LOB.substr(campo,
DBMS_LOB.getlength(campo), 1)
FROM tablaprueba;
Almacena datos de tipo carácter alfanumérico de longitud
CHAR
fija, con un tamaño máximo de 2000. caracteres
CREATE TABLE f1 (
year INTEGER PRIMARY KEY,
campeon CHAR(30),
escuderia CHAR(20)
);
La siguiente sintaxis permite crear una tabla temporal personal para cada sesión.
Eso significa que los datos no se comparten entre sesiones y se eliminan al final
de la misma.
Con la opción ON COMMIT DELETE ROWS se borran los datos cada vez que se
hace COMMIT en la sesión.
Con la opción ON PRESERVE DELETE ROWS los datos no se borran hasta el
final de la sesión.
Sus ventajas son varias, la información contenida en ella esta solo disponible para
la sesión actual, cualquier inserción, borrado, actualización solo se refleja en la
sesión activa.
Cuando una tabla ya no es útil y no vamos a volver a necesitarla debe ser borrada.
Esta operación se puede realizar con el comando DROPTABLE.
Si alguna columna de la tabla a borrar sirve como clave ajena de alguna tabla
detalle, impide la eliminación de la tabla, ya que existe una restricción que requiere
de la existencia de la tabla maestra. Esto se puede arreglar colocando la sentencia
CASCADE CONSTRAINTS.
Esto produce que las restricciones de la tabla detalle se borren antes de borrar la
tabla maestra. PURGE evita que los objetos borrados se vayan a la papelera
Oracle permite modificar las restricciones definidas para una tabla. Esto puede
llevar a “inconsistencia” de los datos ya introducidos en la base de datos. Por
ello, Oracle tiene definidos mecanismos para modificación de los datos ya
existentes.
La opción ADD ... NOT NULL sólo será posible si la tabla está vacía.
La opción MODIFY ... NOT NULL sólo podrá realizarse cuando la tabla
no contenga ninguna fila con valor nulo en la columna en cuestión.
MySQL
MySQL soporta varios motores de almacenamiento que tratan con distintos tipos
de tabla. Los motores de almacenamiento de MySQL incluyen algunos que tratan
con tablas transaccionales y otros que no lo hacen:
MyISAM trata tablas no transaccionales. Proporciona almacenamiento y
recuperación de datos rápida, así como posibilidad de búsquedas
fulltext.MyISAM se soporta en todas las configuraciones MySQL, y es el
motor de almacenamiento por defecto a no ser que tenga una configuración distinta
a la que viene por defecto con MySQL.
El motor de almacenamiento MEMORY proporciona tablas en memoria. El motor
de almacenamiento MERGE permite una colección de tablas MyISAM idénticas
ser tratadas como una simple tabla. Como MyISAM, los motores de
almacenamiento MEMORY y MERGE tratan tablas no transaccionales y ambos se
incluyen en MySQL por defecto.
Nota: El motor de almacenamiento MEMORY anteriormente se conocía como
HEAP.
Los motores de almacenamiento InnoDB y BDB proporcionan tablas
transaccionales. BDB se incluye en la distribución binaria MySQL-Max en aquellos
sistemas operativos que la soportan. InnoDB también se incluye por defecto en
todas las distribuciones binarias de MySQL 5.0 . En distribuciones fuente, puede
activar o desactivar estos motores de almacenamiento configurando MySQL a su
gusto.
El motor de almacenamiento EXAMPLE es un motor de almacenamiento 'tonto'
que no hace nada. Puede crear tablas con este motor, pero no puede almacenar
datos ni recuperarlos. El objetivo es que sirva como ejemplo en el código MySQL
para ilustrar cómo escribir un motor de almacenamiento. Como tal, su interés
primario es para desarrolladores.
NDB Cluster es el motor de almacenamiento usado por MySQL Cluster para
implementar tablas que se particionan en varias máquinas. Está disponible en
distribuciones binarias MySQL-Max 5.0. Este motor de almacenamiento está
disponible para linux, Solaris, y Mac OS X. Los autores mencionan que se añadirá
soporte para este motor de almacenamiento en otras plataformas, incluyendo
Windows en próximas versiones.
El motor de almacenamiento ARCHIVE se usa para guardar grandes cantidades
de datos sin índices con una huella muy pequeña.
El motor de almacenamiento CSV guarda datos en archivos de texto usando
formato de valores separados por comas.
El motor de almacenamiento FEDERATED se añadió en MySQL 5.0.3. Este motor
guarda datos en una base de datos remota. En esta versión sólo funciona con
MySQL a través de la API MySQL C Client. En futuras versiones, será capaz de
conectar con otras fuentes de datos usando otros drivers o métodos de conexión
clientes.
La versión 5 de MySQL crea por defecto tablas innoDB que permiten el manejo
de integridad referencial, transacciones. Al igual que las tablas regulares de
oracle. Para saber si el gestor de base de datos de MySQL que tenemos las
soporta es necesario ejecutar la siguiente sentencia.
Si nuestro gestor soporta por defecto las tablas innodb las sentencias para crear
las tablas previamente mostradas serán exactamente igual a las de oracle. En
caso contrario se muestra la sintaxis correspondiente
CREATE TABLE f1 (
year INTEGER PRIMARY KEY,
campeon CHAR(30),
escuderia CHAR(20)
) ENGINE = InnoDB;
Comando Describe
MySQL proporciona este comando que resulta útil para conocer la estructura de
una tabla, las columnas que la forman y su tipo y restricciones. La sintaxis es la
siguiente DESCRIBE nombreTabla.
DESCRIBE estados;
Tablas temporales
Este tipo de tabla solo puede ser usada por el usuario que la crea.
Si creamos una tabla que tiene el mismo nombre que una existente en la base de
datos, la que existe quedará oculta y trabajaremos sobre la temporal.
Se almacenan en memoria
Una tabla head no puede tener más de 1600 campos
Las tablas MEMORY usan una longitud de registro fija.
MEMORY no soporta columnas BLOB o TEXT.
MEMORY en MySQL 5.0 incluye soporte para columnas AUTO_INCREMENT e
índices en columnas que contengan valores NULL.
Las tablas MEMORY se comparten entre todos los clientes (como cualquier otra
tabla no-TEMPORARY).
Esta operación se puede realizar con el comando ALTER TABLE. Para usar
ALTER TABLE, necesita permisos ALTER, INSERT y CREATE para la tabla.
La sintaxis para MySQL es:
alter_specification:
ADD [COLUMN] column_definition [FIRST | AFTER col_name
]
| ADD [COLUMN] (column_definition,...)
| ADD INDEX [index_name] [index_type] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
PRIMARY KEY [index_type] (index_col_name,...)
| ADD [CONSTRAINT [symbol]]
UNIQUE [index_name] [index_type]
(index_col_name,...)
| ADD [FULLTEXT|SPATIAL] [index_name]
(index_col_name,...)
| ADD [CONSTRAINT [symbol]]
FOREIGN KEY [index_name] (index_col_name,...)
[reference_definition]
| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP
DEFAULT}
| CHANGE [COLUMN] old_col_name column_definition
[FIRST|AFTER col_name]
| MODIFY [COLUMN] column_definition [FIRST | AFTER
col_name]
| DROP [COLUMN] col_name
| DROP PRIMARY KEY
| DROP INDEX index_name
| DROP FOREIGN KEY fk_symbol
| DISABLE KEYS
| ENABLE KEYS
| RENAME [TO] new_tbl_name
| ORDER BY col_name
| CONVERT TO CHARACTER SET charset_name [COLLATE
collation_name]
| [DEFAULT] CHARACTER SET charset_name [COLLATE
collation_name]
| DISCARD TABLESPACE
| IMPORT TABLESPACE
| table_options
Una vez definida la estructura de datos del modelo relacional, pasamos a estudiar
las reglas de integridad, es decir que los datos almacenados en dicha estructura
deben cumplir ciertas características para garantizar que son correctos. Al definir
cada atributo sobre un dominio se impone una restricción sobre el conjunto de
valores permitidos para cada atributo.
Imponen una limitación al conjunto de valores permitidos para los atributos en las
relaciones. Permitiendo restringir los valores que puede tomar un atributo respecto
a su dominio, por ejemplo EDAD >= 18.
Nulos
Ya que los nulos no son valores, deben tratarse de modo diferente, lo que causa
problemas de implementación en los SGBD relacionales.
Restricción UNIQUE
En un índice UNIQUE todos los valores en el índice deben ser distintos. Ocurre un
error si intenta añadir un nuevo registro con una clave que coincida con un registro
existente. La excepción es que una columna en el índice puede contener valores
NULL múltiples
Cláusula check
-- MySQL y Oracle
Una PRIMARY KEY es una llave única donde todas las columnas de la clave
deben definirse como NOT NULL. Si no se declaran explícitamentecomo NOT
NULL, el gestor las declara implícitamente. Una tabla puede tener sólo una
PRIMARY KEY
La primera regla de integridad se aplica a las claves primarias de las relaciones
base: ninguno de los atributos que componen la clave primaria puede ser nulo.
Por definición, una clave primaria es un identificador irreducible que se utiliza para
identificar de modo único las tuplas. Irreducible significa que ningún subconjunto
de la clave primaria sirve para identificar otra tupla. Los campos que conforman
una llave primaria son por defecto no nulas.
Nótese que esta regla sólo se aplica a las relaciones base y a las claves primarias,
no a las claves alternativas.
Por lo tanto, para cada clave ajena de la base de datos habrá que contestar a tres
preguntas:
Regla de los nulos: Los campos involucrados en llaves primarias son por definición
no nulos.
Regla de borrado: ¿Qué ocurre si se intenta borrar la tupla referenciada por la
clave ajena?
o Restringir: no se permite borrar la tupla referenciada.
o Propagar: se borra la tupla referenciada y se propaga el borrado a las tuplas que la
referencian mediante la clave ajena - borrado en cascada-.
o Anular: se borra la tupla referenciada y las tuplas que la referenciaban ponen a nulo la
clave ajena (sólo si acepta nulos) - SET NULL-.
Regla de modificación: ¿Qué ocurre si se intenta modificar el valor de la clave
primaria de la tupla referenciada por la clave ajena?
o Restringir: no se permite modificar el valor de la clave primaria de la tupla
referenciada.
o Propagar: se modifica el valor de la clave primaria de la tupla referenciada y se
propaga la modificación a las tuplas que la referencian mediante la clave ajena. Oracle
no permite la modificación en cascada.
o Anular: se modifica la tupla referenciada y las tuplas que la referenciaban ponen a nulo
la clave ajena (sólo si acepta nulos).
ejemplo:
Versión Oracle
DROP TABLE empleado CASCADE CONSTRAINTS;
DROP TABLE departamento CASCADE CONSTRAINTS;
3. SET NULL. Pondrá los campos del registro hijo a null. Note que la clave ajena
debe permitir el valor nulo.
Sintaxis
CONSTRAINT FK_columna
FOREIGN KEY (columna1, columna2, ... columna_n)
REFERENCES TablaReferenciada (columna1, columna2, ...
columna_n)
ON DELETE SET NULL
Reglas de negocio
Toda aplicación trata de reflejar parte del funcionamiento del mundo real, para
automatizar tareas que de otro modo serían llevadas a cabo de modo más
ineficiente, o bien no podrían realizarse. Para ello, es necesario que cada
aplicación refleje las restricciones que existen en el negocio dado, de modo que
nunca sea posible llevar a cabo acciones no válidas. A las reglas que debe seguir
la aplicación para garantizar se les denomina reglas de negocio.
Donde:
SOBRE LÍMITES
ORACLE impone los siguientes límites en lo que respecta a los objetos descritos
en esta sección:
El número máximo de columnas que pueden constituir una clave primaria, una
clave alterna o una clave foránea es de 16.