Вы находитесь на странице: 1из 32

Objetos de Bases de Datos La base de datos Oracle puede contener mltiples estructuras de datos.

Cada estructura debe ser esbozada en el diseo de base de datos de manera que pueda ser creada durante la etapa de construccin del desarrollo de la base de datos. Tablas: almacenan datos Vistas: subconjunto de datos de una o ms tablas Secuencia: genera valores numricos ndice: Mejora el rendimiento de algunas consultas Sinnimo: da nombres alternativos a un objeto

Estructuras de tabla Oracle Tablas pueden ser creadas en cualquier momento, incluso cuando los usuarios estn usando la base de datos No necesita especificar el tamao de la tabla. El tamao es definido por la cantidad de espacio asignado a la base de datos como un todo. Es importante sin embargo, estimar cuanto espacio usara la tabla en el tiempo. La estructura de una tabla puede ser modificada en lnea.

Reglas de Nombrado Usted nombra tablas y columnas de tablas de acuerdo a reglas estndares para nombrar cualquier objeto de base de datos Oracle. Nombres de tablas y nombres de columnas deben empezar con una letra y ser de 1 -30 caracteres de largo Nombre deben contener solo los caracteres A-Z, a-z, 0-9,_ (underscore), $ y # (caracteres legales, pero su uso es rechazado) Los nombres no debe duplicar el de otro objeto de propiedad del mismo usuario de base de datos Los nombres no deben ser una palabra reservada del servidor Oracle

Directrices de nombrado Use nombre descriptivos para tablas y otros objetos de bases de datos Nota: los nombres no son sensibles a maysculas y minsculas. Por ejemplo el nombre EMPLOYEES es tratado de la misma forma que el nombre eMPloyees o eMpLOYEES.

Sentencia CREATE TABLE Puede crear tablas para almacenar datos ejecutando la sentencia SQL CREATE TABLE. Esta sentencia es una de las sentencias DDL que son un subconjunto de las sentencias SQL usadas para crear, modificar o eliminar estructuras de la base de datos Oracle. Estas sentencias tienen un efecto inmediato en la base de datos y tambin registran informacin en el diccionario de datos. Para crear una tabla, el usuario debe tener el privilegio CREATE TABLE y un rea de almacenamiento en la cual crear objetos. El administrador de base de datos (DBA) usa sentencias del lenguaje de control de datos (DCL) para conceder privilegios. En la sintaxis: schema table es lo mismo que el nombre del propietario es el nombre de la tabla

DEFAULT expr especifica el valor por defecto si el valor es omitido en una sentencia INSERT column datatype es el nombre de la columna es el tipo de dato de la columna y su longitud

Referenciando tablas de otro usuario Un esquema es una coleccin de estructuras lgicas de datos u objetos de esquema. Un esquema es propiedad de un usuario de base de datos y tiene el mismo nombre que el usuario. Cada usuario tiene un nico esquema. Objetos de esquema pueden ser creados y manipulados con SQL e incluyen tablas, vistas, sinnimos, secuencias, procedimientos almacenados, ndices, grupos y enlaces de base de datos. Si una tabla no pertenece a un usuario, el nombre del usuario debe ser prefijado a la tabla. Por ejemplo, si hay esquemas llamados USERA y USERB, y ambos tienen una tabla EMPLOYEES, entonces si el USERA quiere acceder a la tabla EMPLOYEES que pertenece al USERB, el USERA deber prefijar el nombre de la tabla con el nombre del esquema: SELECT * FROM USERB.EMPLOYEES; Si el USERB quiere acceder a la tabla EMPLOYEES que pertenece al USERA, el USERB deber prefijar el nombre de la tabla con el nombre del esquema: SELECT * FROM USERA.EMPLOYEES;

Opcin DEFAULT Cuando define una tabla, puede especificar que a una columna le debera ser asignado un valor por defecto usando la opcin DEFAULT. Esta opcin evita el ingreso de valores nulos cuando una fila es insertada sin el valor para la columna. El valor por defecto puede ser un literal, una expresin, o una funcin SQL (tal como USER o SYSDATE), pero el valor no puede ser el nombre de otra columna o una pseudocolumna (tal como NEXTVAL o CURRVAL). La expresin por defecto debe coincidir con el tipo de dato de la columna. Considere los siguientes ejemplos: INSERT INTO hire_date VALUES (45, NULL); La sentencia anterior insertara el valor NULL en lugar del valor por defecto. INSERT INTO hire_date VALUES (35); La sentencia anterior insertara el valor del SYSDATE para la columna HIRE_DATE.

Creando Tablas El ejemplo de la dispositiva crea la tabla DEPT con cuatro columnas: DEPTNO, DNAME, LOC y CREATE_DATE. La columna CREATE_DATE tiene un valor por defecto. Si el valor no es provisto en una sentencia INSERT, la fecha del sistema es automticamente insertada para este campo. Para verificar que la tabla ha sido creada, ejecute el comando DESCRIBE. Debido a que crear una tabla es una sentencia DDL, un COMMIT automtico tiene lugar cuando la sentencia es ejecutada.

Tipos de datos Cuando identificas una columna para una tabla, necesita proveer el tipo de dato para tal columna. Hay varios tipos de datos disponibles: Tipo de Dato VARCHAR2( tamao) Descripcin Datos carcter de longitud variable (Un tamao mximo debe ser especificado: tamao mnimo 1; tamao mximo es 4000) Datos carcter de longitud fija (por defecto y tamao mnimo 1; tamao mximo 2000) Numero con precisin p y escala s (la precisin es el nmero total de dgitos decimales y la escala es el nmero de dgitos decimales a la derecha del punto decimal; la precisin puede ir de 1 a 38, y la escala puede ir de -84 a 127) Valores fecha y tiempo al segundo ms cercano entre enero 1 de 4712 A.C y diciembre 31 de 9999 D.C Datos carcter de longitud variable (superiores a 2GB) Datos carcter (superiores a 4GB) Datos binarios crudos de longitud tamao (Un tamao mximo debe ser especificado:

CHAR [(tamao)] NUMBER [(p, s)]

DATE

LONG CLOB RAW (tamao)

LONG RAW BLOB BFILE ROWID

tamao mximo 2000) Datos binarios crudos de longitud variable (superiores a 2GB) Datos binarios (superiores a 4GB) Datos binarios almacenados en un archivo externo (superiores a 4GB) Un numero en el sistema de base 64 representando una nica direccin de una fila en su tabla

Directrices Una columna LONG no es copiada cuando una tabla es creada usando una subconsulta Solo una columna tipo LONG puede ser usada por tabla Ninguna restriccin puede ser definida en columnas de tipo LONG Podra querer usar una columna CLOB en lugar de una columna LONG

Tipos de dato Datetime Tipo de dato TIMESTAMP Descripcin Permite almacenamiento de tiempo como una fecha con segundos fraccionales. Almacena el ao, mes, da, hora, minuto y tambin el valor de segundo del tipo de dato DATE como valor fraccional de segundo Permite almacenamiento de tiempo como un intervalo de aos y meses. Usado para representar la diferencia entre dos valores DATETIME donde las nicas porciones significativas son el ao y el mes Permite almacenamiento de tiempo como un intervalo de das, horas, minutos y segundos. Usado para representar la diferencia precisa entre dos valores DATETIME

INTERVAL YEAR TO MONTH

INTERVAL DAY TO SECOND

Restricciones El servidor Oracle usa las restricciones para evitar el ingreso de datos invlidos en tablas Puede usar restricciones para hacer lo siguiente: Hacer cumplir reglas en los datos de una tabla siempre que una fila es insertada, actualizada o eliminada de esa tabla. La restriccin debe ser satisfecha para que la operacin pueda tener xito. Previene la eliminacin de una tabla si hay dependencias de otras tablas Provee reglas para herramientas Oracle, tales como Sql Developer

Restricciones de Integridad de datos Restriccin NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY Descripcin Especifica que una columna no debe contener valores nulos Especifica una columna o combinacin de columnas cuyos valores deben ser nicos para todas las filas de la tabla Identificador nico de cada fila de la tabla Establece y hace cumplir una integridad referencial entre la columna y una columna de la tabla referenciada tal que los valores en una tabla coinciden con valores en otra tabla Especifica una condicin que debe ser verdadera

CHECK

Directrices de restricciones Todas las restricciones son almacenadas en el diccionario de datos. Las restricciones son fciles de referenciar si le da un nombre significativo. Los nombres de restricciones deben seguir las reglas estndar de nombrado de objetos, excepto que el nombre no puede ser el mismo de otro objeto de propiedad del mismo usuario. Si no nombra su restriccin, el servidor Oracle genera un nombre con el formato SYS_Cn, donde n es un entero de modo que el nombre de la restriccin es nico. Las restricciones pueden ser definidas en el tiempo de creacin de la tabla o despus de la creacin de la tabla. Puede definir una restriccin a nivel de columna o a nivel de tabla. Funcionalmente, una restriccin a nivel de tabla es lo mismo que una restriccin a nivel de columna.

Definiendo restricciones La diapositiva da la sintaxis para definir restricciones cuando se est creando una tabla. Puede crear restricciones a nivel de columna o a nivel de tabla. Restricciones definidas a nivel de columna son incluidas cuando la columna es definida. Restricciones a nivel de tabla son definidas al final de la definicin de la tabla y debe referenciar la columna o columnas a las cuales la restriccin pertenece en un conjunto de parntesis. Las restricciones NOT NULL deben ser definidas a nivel de columna. Restricciones que involucran ms de una tabla deben ser definidas a nivel de tabla. En la sintaxis schema table DEFAULT expr column data_type column_constrain table_constrain Es lo mismo que el nombre del propietario es el nombre de la tabla especifica el valor por defecto a ser usado si es omitido en un INSERT es el nombre de la columna es el tipo de dato y longitud de la columna es una restriccin de integridad como parte de la definicin de columna es una restriccin de integridad como parte de la definicin de tabla

Definiendo restricciones (continuacin) Las restricciones son creadas usualmente al mismo tiempo que la creacin de la tabla. Las restricciones pueden ser creadas despus de la creacin de la tabla y tambin pueden ser deshabilitadas temporalmente. Ambos ejemplos de la dispositiva crea una restriccin de llave primaria en la columna EMPLOYEE_ID de la tabla EMPLOYEES. 1. El primer ejemplo usa la sintaxis de nivel de columna para definir la restriccin 2. El segundo ejemplo usa la sintaxis de nivel de tabla para definir la restriccin

Restriccin NOT NULL La restriccin NOT NULL hace cumplir que la columna no contendr valores nulos. Las columnas sin la restriccin NOT NULL pueden contener valores nulos por defecto. Restricciones NOT NULL deben ser definidas a nivel de columna. En la tabla EMPLOYEES, la columna EMPLOYEE_ID hereda una restriccin NOT NULL ya que es definida como llave primaria. Por otra parte, las columnas LAST_NAME, EMAIL, HIRE_DATE y JOB_ID tienen la restriccin NOT NULL sobre ellas.

Restriccin UNIQUE Una restriccin de integridad de llave nica requiere que cada valor en una columna o un conjunto de columnas deben ser nicos, esto es, dos filas de una tabla no pueden tener valores duplicados en una columna especfica o un conjunto de columnas. La columna (o conjunto de columnas) incluidas en la definicin de la restriccin de llave UNIQUE es llamada llave nica. Si la restriccin UNIQUE est compuesta de ms de una columna, ese grupo de columnas son llamadas llaves nicas compuestas. Las restricciones UNIQUE permiten el ingreso de nulos a menos que tambin defina la restriccin NOT NULL para las mismas columnas. De hecho, cualquier nmero de filas puede contener valores nulos sin la restriccin NOT NULL porque los nulos son considerados igual a nada. Un nulo en una columna siempre satisface la restriccin UNIQUE

Restriccin UNIQUE (continuacin) La restriccin UNIQUE puede ser definida a nivel de columna o a nivel de tabla. Debe definir la restriccin UNIQUE a nivel de tabla cuando quiere crear llaves nicas compuestas. Una llave compuesta es definida cuando no hay un atributo nico que pueda unvocamente identificar una fila. En este caso, puede tener llaves nicas compuestas de dos o ms columnas, que combinadamente permiten identificar una fila. El ejemplo en la diapositiva aplica la restriccin UNIQUE a la columna EMAIL de la tabla EMPLOYEES. El nombre de la restriccin es EMP_EMAIL_UK. Nota: El servidor Oracle hace cumplir la restriccin UNIQUE creando implcitamente un ndice nico en la columna o columnas de llave nica

Restriccin PRIMARY KEY Una restriccin PRIMARY KEY crea una llave primaria para la tabla. Solo una llave primaria puede ser creada por cada tabla. La restriccin PRIMARY KEY es una columna o conjunto de columnas que de manera nica identifican cada fila de una tabla. Esta restriccin hace cumplir la unicidad de la columna o combinacin de columnas y asegura que ninguna columna que forma la llave primaria pueda contener valores nulos. Nota: debido a que la unicidad es parte de la definicin de la llave primaria, el servidor Oracle hace cumplir la unicidad creando implcitamente un ndice nico en la columna o columnas de la llave primaria.

Restriccin FOREIGN KEY La restriccin FOREIGN KEY (o integridad referencial) designa una columna o combinacin de columnas como una llave fornea y establece una relacin con la llave primaria o con la llave nica en la misma tabla o diferente tabla. En el ejemplo de la diapositiva, DEPATMENT_ID ha sido definida como llave fornea en la tabla EMPLOYEES (dependiente o tabla hija); y referencia la columna DEPARTMENT_ID de la tabla DEPARTMENTS (la tabla referenciada o padre). Directrices El valor de una llave fornea debe coincidir con un valor existente en la tabla padre o ser NULL Las llaves forneas se basan en valores de datos y son puramente apuntadores lgicos.

Restriccin FOREIGN KEY (Continuacin) Restricciones FOREIGN KEY pueden ser definidas a nivel de tabla o a nivel de columna. Una llave fornea compuesta debe ser definida a nivel de tabla. El ejemplo en la diapositiva define una restriccin FOREIGN KEY en la columna DEPATMENT_ID de la tabla EMPLOYEES usando la sintaxis de nivel de tabla. El nombre de la restriccin es EMP_DEPT_FK. La llave fornea puede ser definida tambin a nivel de columna, partiendo de que la restriccin es basada en una nica columna. La sintaxis difiere en que la palabra reservada FOREIGN KEY no aparece. Por ejemplo: CREATE TABLE EMPLOYEES ( Department_id NUMBER (department_id), ) (4) CONSTRAINT emp_deptid_fk REFERENCES departments

Restricciones FOREIGN KEY: palabras claves La llave fornea es definida en la tabla hija y la tabla que contiene la columna referenciada es la tabla padre. La llave fornea es definida usando una combinacin de las siguientes palabras claves: FOREIGN KEY es usada para definir la columna en la tabla hija a nivel de restriccin de tabla REFERENCES identifica la tabla y la columna en la tabla padre ON DELETE CASCADE indica que cuando una fila en la tabla padre es eliminada, las filas dependientes en la tabla hija tambin son eliminadas ON DELETE SET NULL indica que cuando una fila en la tabla padre es eliminada, los valores de las llaves foranes son fijadas en NULL

El comportamiento por defecto es llamado regla restrictiva, la cual deshabilita la actualizacin o eliminacin de datos referenciados. Sin las opciones ON DELETE CASCADE u ON DELETE SET NULL, las filas en la tabla padre no pueden ser eliminadas si son referencias en la tabla hija.

Restriccin CHECK La restriccin CHECK define una condicin que cada fila debe satisfacer. La condicin puede usar los mismos constructores como las condiciones de consultas, con las siguientes excepciones: Referencias a las pseudocolumnas CURRVAL, NEXTVAL, LEVEL y ROWNUM. Llamados a las funciones SYSDATE, UID, USER y USERENV Consultas que referencian a otros valores en otra filas

Una nica columna puede tener mltiples restricciones CHECK que referencian a la columna en su definicin. No hay lmite de restricciones CHECK que pueda definirse para una columna Las restricciones CHECK pueden ser definidas a nivel de tabla o a nivel de columna CREATE TABLE employees ( Salary NUMBER (8,2) CONSTRAINT emp_salary_min CHECK(salary > 0), )

Ejemplo: CREATE TABLE El ejemplo en la diapositiva muestra una sentencia que es usada para crear la tabla EMPLOYEES en el esquema HR

Violando restricciones Cuando tienes restricciones asignadas a columnas, un error es retornado si intenta violar la regla de restriccin. Por ejemplo, si intenta actualizar un registro con un valor que est atado a una restriccin de integridad, un error es retornado. En el ejemplo de la diapositiva, el departamento 55 no existe en la tabla padre, DEPARTMENTS, entonces recibe la violacin llave padre no encontrada ORA 02291

Violando restricciones (continuacin) Si intenta eliminar un registro con un valor que est atado a una restriccin de integridad, un error es retornado. En el ejemplo de la diapositiva se intenta eliminar el departamento 60 de la tabla DEPARTMENTS, pero resulta en error porque el nmero del departamento es usado como llave fornea en la tabla EMPLOYEES. Si el registro padre que intenta eliminar tiene registros hijos, recibir el error registros hijos encontrados ORA - 02292 La siguiente sentencia funciona porque no hay empleados asociados al departamento 70

Creando una tabla usando una subconsulta Un segundo mtodo para crear una tabla es aplicando la clusula AS subquery, la cual crea la tabla y adems inserta las filas retornadas por la subconsulta. En la sintaxis: table column subquery es el nombre de la tabla es el nombre de la columna, valor por defecto, y restriccin de integridad es una sentencia SELECT que define el conjunto de filas a ser insertadas en la nueva tabla

Directrices La tabla es creada con los nombres de columnas especificados, y las filas recibidas de la sentencia SELECT son insertadas en la tabla La definicin de columna puede contener solo el nombre de la columna y el valor por defecto Si especificaciones de columnas son dadas, el nmero de columnas debe ser igual al nmero de columnas listadas por la subconsulta SELECT

Si no se da especificacin de columnas, los nombres de las columnas de la tabla son los mismos a los nombres de las columnas de la subconsulta La definicin de tipos de datos de columnas y restricciones explicitas NOT NULL son pasadas a la nueva tabla. Note que solo las restricciones explicitas NOT NULL son heredadas. La columna PRIMARY KEY no pasara la restriccin NOT NULL a la nueva tabla. Cualquier otra regla de restriccin no son transferidas a la nueva tabla. Sin embargo, puede aadir restricciones en la definicin de columnas.

Creando tablas usando subconsultas (continuacin) El ejemplo de la diapositiva crea una tabla llamada DEPT80, la cual contiene detalles de todos los empleados que trabajan en el departamento 80. Note que los datos de la tabla DEPT80 viene de la tabla EMPLOYEES. Puede verificar la existencia de la tabla en la base de datos y verificar la definicin de columnas usando el comando DESCRIBE. Sin embargo, asegrese de usar alias de columna cuando selecciona una expresin. A la expresin SALARY * 12 le es dada el alias de ANNSAL. Sin el alias, el siguiente error es generado:

Sentencia ALTER TABLE Despus de crear una tabla, puede necesitar modificar la estructura de la tabla por alguna de las siguientes razones: Omiti una columna La definicin de columna o su nombre necesita ser cambiado Necesita remover una columna Quiere poner la tabla en modo de solo lectura

Puede hacer esto usando la sentencia ALTER TABLE

Tablas de solo lectura Con Oracle 11g, puede especificar READ ONLY para colocar una tabla en modo de solo lectura. Cuando la tabla esta en modo de solo lectura, no podr realizar ninguna sentencia DML que afecte la tabla ni ninguna sentencia SELECT FOR UPDATE. Puede realizar sentencias DDL siempre y cuando no modifique ningn dato de la tabla. Operaciones en ndices asociados con la tabla estn permitidos cuando la tabla esta en modo de solo lectura. Especifique READ WRITE para retornar una tabla de modo solo lectura al modo lectura y escritura. Nota: puede eliminar una tabla que est en modo de solo lectura. El comando DROP es ejecutado solamente en el diccionario de datos, por lo que acceso al contenido de la tabla no es necesario.

Eliminando una tabla La sentencia DROP TABLE mueve una tabla a la papelera de reciclaje y elimina la tabla y todos sus datos de la base de datos completamente, a menos que especifique la clusula PURGE, la sentencia DROP TABLE no resulta en la liberacin de espacio en el tablespace para ser usado por otros objetos, y el espacio continua contando para la cuota de espacio del usuario. Eliminando una tabla se invalidan los objetos dependientes y elimina privilegios de objeto en la tabla. Cuando elimina una tabla, la base de datos pierde todos los datos en la tabla y todos los ndices asociados con ella. Sintaxis DROP TABLE table [PURGE] En la sintaxis, table es el nombre de la tabla. Directrices Todos los datos son eliminados de la tabla Cualquier vista o sinnimo se conserva pero son invlidos Cualquier transaccin pendiente es confirmada

Solo el creador de la tabla o un usuario con el privilegio DROP ANY TABLE puede eliminar una tabla

Nota: use la sentencia FLASHBACK TABLE para restaurar una tabla de la papelera de reciclaje.

Вам также может понравиться