Вы находитесь на странице: 1из 7
CREACION, SUPRESION Y MODIFICACION DE TABLAS. Para crear una tabla utilizamos el lenguaje DDL. El nombre de la tabla puede tener entre 1 y 30 caracteres y no puede ser una palabra reservada de oracle y al primer caracter debe ser alfabético. Su formato es: Formato: - Nodistingue de mayisculas y mintsculas. CREATE TABLE nombretabla (columnal tipo_datos [ NOT NULL ] columna? tipo_datos [ NOT NULL ]; ) [tablespace espaciotabla]. Para visualizar las tablas creadas utilizamos la vista USER_TABLES select table_name from user_tables Para obtener informacién de otros objetos de usuario podemos utilizar las vistas USER_OBJECTS y USER_CATALOG Integridad de datos. Hace referencia al hecho de que los datos de la base de datos han de ajustarse a unas restricciones antes de almacenarse en la misma. Si un usuario cambia datos en la base de datos y estos no son correctos, Oracle se encargari de deshacer 0 cancelar esas transacciones. La integridad referencial garantiza que los valores de una columna de una tabla dependen de los valores de otra columna de otra tabla (claves ajenas). Restricciones. Las restricciones sirven para que oracle realice la mayor parte de las tareas de mantenimiento de la integridad de la base de datos. Pera definir las restricciones en oracle se utiliza la cléusula CONSTRAINT. Formato 1: (restricciéa de columna’ CREATE TABLE nombre_tabla ( Columnal tipo_de_dato [CONSTRAINT nombre_restriccién] [NOT NULL] [UNIQUE] [ PRIMARY KEY ] [DEFAULT valor] [ REFERENCE nombre_tabla [ (columna [, columna] )] [ON DELETE CASCADE J] [CHECK condicién J. Columna? tipo_de_dato ) [TABLESPACE nombre]; Ejemplo: CREATETABLE empleados ( Nombre VARCHAR2(25) PRIMARY KEY, Edad NUMBER() CHECK (Edad BETWEEN 18 AND 25). Cod_provincia. NUMBER(2) REFERENCES PROVINCIAS ON DELETE CASCADE); CREATE TABLE provincias ( Cod_prov NUMBERQ) PRIMARY KEY, Nombre_prov VARCHAR? (20); CREATE TABLE empleado ( DNI NUMBER(S) PRIMARY KEY, Nombre VARCHAR225), Direccién VARCHAR2(25), Poblacién VARCHAR2(20), Cod_provincia NUMBER(@) NOT NULL REFERENCES PROVINCTAS ); Formato 2: (restricci6n de tabla) CREATE TABLE nombre ( Colummal tipo_de_dato, Columna? tipo_de_dato, [CONSTRAINT nombre_restriccién] { {UNIQUE] [PRIMARY KEY] (colurmna [,columna] ) } [CONSTRAINT nombre_restriccién] [FOREIGN KEY (columna [.columna] } REFERENCES nombre_tabla [ (columna [,columng] ) ] LON DELETE CASCADE], [CONSTRAINT nombre_restricién] [CHECK (condicién)] ) [TABLESPACE nombre]; Ejemplo: Drop table empleados; CREATE TABLE empleados ( Nombre VARCHAR2(25), Edad NUMBERQ) , Cod_provincia NUMBER(2), CONSTRAINT PK_EMPLEADOS PRIMARY KEY (Nombre), CONSTRAINT CK_EDAD CHECK (Edad BETWEEN 18 AND 25), CONSTRAINT FK_EMPLEADO FOREIGN KEY (Cod_provincia) REFERENCES PROVINCIAS ON DELETE CASCADE); Primero se crea la tabla meestra y luego la tabla detalle, si queremos borrar las tablas, primero borramos la tabla detalle y luego la maestra Si queremos borrar alguna provincia de la tabla provincia vy que las files correspondientes sean elimindas afiadimos la cléusula ON DELETE CASCADE en la opcién REFERENCES Oracle asigna por defécto un nombre a las restricciones cuyo formato es nombre de usvaric. SYS_C00132H siempre que no hayamos dado un rombre a esta restriccién. Ne Ejercicio 1. Hacer dos inserciones identicas en la tabla empleado. Hacer lo mismo con la tabla provincias. En la tabla empleados insertar un cédigo de provincia que no exista en provincias de dos formas: - Utilizando una restriccién con nombre y otra sin nombre. Restriccién PRIMARY KEY (clave primaria). Columna 0 conjunto de columnas que identifican inequivocamente a cada fila de latabla. Es nica no nula y obligatoria esta clave se puede referenciar por una columns, © columnas de otra tabla (clave ajena). Cuando se crea una clave primaria ORACLE crea un indice para acceder a la tabla. Restriccién FOREIGN KEY (clave ajena) Formada por una o varias columnas asociadas a una clave primaria de otra o de lamisma tabla, pueden definirse tantas como sea preciso y el valor de esta tabla debe ser null 0 igual al valor de una clave referenciada. Obligatoriedad, La restriccién NOT NULL. Asocieda a una columma significa que no pueds tener valores sulos Valores por defecio. La restriccién DEFAULT. Alcrear una tabla podemos asignar valores a las columnas por deféecto. Ejemplo: Crear una tabla que tiene un campo fecha y un campo usuario, de manera ue por defecto tiene los valores fecha del sistema y usuario conectado. Hacer una insercion sin el campo fecha y sin el campo usuario y comprobar el resultado Verificacién de condiciones. La restricciéa CHECK. Permite expresar una condicién que ha de cumplirse para todas y cada una de las filas de la tabla. Ejemplo: Crear una tabla que tiene los campos DNI, nombre, edad y curso, de forma que el DNI no puede ser nulo y es Ia clave, el nombre no puede ser nulo, la edad ha de estar comprendida entre 5 y 20 aiios, el nombre ha de estar en maytisculas y el curso sole puede tener los valores 1,2 y 3. Insertar filas en la tabla haciendo que fallen todas las restricciones. Restriccién UNIQUE. Es similar a la restriccién PRIMARY KEY, salvo que es posible definir varias columas con esta restriccién y que puede admitir valores nulos, istas del diccionario de datos para las restricciones. # USER_CONSTRAINTS + conticne las definiciones de las restricciones de las tablas que son propiedad del usuario. % ALL_CONSTRAINTS > contiene las definiciones de las restricciones sobre las tablas a las que puede acceder el usuario. % DBA_CONSTRAINTS > conticne todas las definiciones de restricciones sobre todas las tablas. Ejercicio: Visualizar las restriceiones de la tabla ejemplo, especificando el nombre de la restricci6n, el nombre de la tabla y el tipo de resiricci6n. $8 USER_CONS_COLUMNS > contiene informacién sobre las restriciones de las colummas de las tablas del usuario. #3 ALL_CONS_COLUMNS > contiene informacién de las restricciones de columnas de las tablas a las que puede acceder el usuario. 3 DBA_CONS_COLUMNS > contiene informacién sobre restricciones de columnas, Ejercicio: ‘Ver las restricciones definidas en la tabla ejemplo, sacando el nombre de la restricci6n, el nombre de la tabla y el nombre de la columna. Creacién de una tabla con datos recuperados de una consulta. Permite crear una tabla a pastir de la consulta de otra tabla. La nueva tabla contendrd los dates obtenidos de la consulta. Su formato es: CREATE TABLE nombre ( Columaa [.columna ] AS consulta: Noes necesario especificar tipos ni tamafios de las columnas, ya que vienen determinados por los tipos y tamaiios de los datos recuperados en la consulta, Larestricciones con nombre no se crean en una tabla desde la otra. solo se crean aquellas restricciones que carecen de nombre. Ejercicio Crear la tabla ejemplo? 2 partir de la tabla ejemplo del ejercicio anterior. Hacer lo mismo pero dando un nombre a las columnas. Crear la tabla empleydepart a partir de las mismas tablas de tal forma que esta tabla contendra el nombre del departamento de cada empleado de la empresa. Listar las restricciones de las tablas ejemplo2 y ejemplo3. Explicarlo SUPRESION DE TABLAS Cada usuario puede borrar sus propias tablas, y solo el administrador o algin usuario que tenga el privilegio DROP ANY TABLE pueden borrar tablas de otros usuarios. El formato de esta instruccién es: DROP TABLE [usuario] nombre_tabla [CASCADE CONSTRAINTS]. Esta cléusula (CASCADE CONSTRAINTS ) elimina las restricciones de integridad referencial que remitan a la clave primaria de la tabla borrada. Orden TRUNCATE, Permite suprimir filas de una tabla y liberar el espacio ocupade para otros usos sin que desaparezca la definicién de la tabla de la base de datos. Su formato es: TRUNCATE TABLE [usvario] nombre_tabla: MODIFICACION DE TABLAS Se pueden modificar tablas de dos formas: cambiando la definicién de una columna o afiadiendo una columna a una tabla ya existente. La orden que se utiliza es: ALTER TABLE nombre_tabla {LADD( colunina [, columaa]..)] [MODIFY ( columna [, columna]..)] [ADD CONSTRAINT restriccién] [DROP CONSTRAINT restriccién] [DROP COLUMN nombre] [DISABLE CONSTRAINT nombre restriccion] [ENABLE CONSTRAINT nombrestriccién]}: ADD - afiade una columna o mas al final de una tabla ‘MODIFY - modifica una 0 més columnas existentes en la tabla. ADD CONSTRAINT - afiade una restriccién a la definicién de una tabla DROP CONSTRAINT - elimina una restriccién de la tabla. DROP COLUMN - elimina una columna. DISABLE CONSTRAINT deshabilita una restriccion, ‘Nota ~ Sila tabla esta vacia se pueden afiadir columnas con la restriccién aot aull, pero sino estd vacia da error. Ejerciciol ‘Aliadir a la tabla ejemplo las columnas sexo e importe. ‘Normas para afiadir una columna a una tabla: Sila columna no esta definida como NOT NULL se afiade sin problemas. 33. Sila columna estd definida como NOT NULL se afiade primero una columna sin especificar NOT NULL, después se le da valor a la columna para cada ‘una de las filas y finalmente se modifica la columna a NOT NULL. ‘Normas para modificar una columna de una tabla: # Se puede aumentar la longitud de una columna en cualquier momento, % Esposible aumentar o disminuir el niimero de posiciones decimales en una columna de tipo NUMBER % Si 1a columna es NULL en todas las filas de 1a tabla, se puede disminuir la longitud y modificar el tipo de dato. % Laopcién MODIFY para poner una columna aNOT NULL solo seré posible cuando la tabla no contenga ninguna fila con valor nulo en la columna que se modifique, Ejercicio? ‘Aliadir la restriccién de apellido tinico ala tabla emple. Ajiadir la restriccién de comisi6n no nula a la tabla emple. Aitadir la restricci6n de apellido no nulo a Ia tabla emple. ‘Ver las restricciones de la tabla emple. Borrar dos de las restricciones de la tabla emple, una con nombre dado por vosotros y otra asignada por oracle. ‘Visualizar de nuevo las restricciones. CREACION Y USO DE VISTAS ‘Una vista es una tabla l6gica que permite acceder 2 la informacién de una 0 varias tablas. No contiene informacién por si misma, sino que su informacién esta basada en la que contienen otras tablas, que se denominan fablas basey siempre reflejara los datos de estas tablas. Sisse suprime una tabla la vista asociada se invalida. Tiene la misma estructura que una tabla y se manejan igual que una tabla Eormato de creacién de una vista ‘Su formato es CREATE [OR REPLACE] VIEW nombre vista [(columna [, columna] )] AS consulta [WITH {CHECK OPTION | READ ONLY} CONSTRAINT nombrerestriccion]} Sino se pone el nombre de las columnas se asumen las columnas devueltas por laconsulta. Consulta va a ser lo que va a determinan les colummas y las tablas que aparecen enla vista Laclausula OR REPLACE crea de nuevo una vista si ya existia Laopcién WITH CHECK OPTION asegura que las filas resultantes al hacer insert o update satisfagan el criterio de busqueda de la definicién de la vista Con la opcién READ ONLY solo se puede hacer select de la vista. Ejercicio Crear una vista que se llame dept30 que contenga el apellido, el oficio y el salario de los empleados de la tabla emple que pertenezcan al departamento 30. Hacer una descripcién de la vista y de su contenido. CREATE OR REPLACE VIEW DEPT30 AS SELECT APELLIDO,OFICIO , SALARIO FROM EMPLE WHERE DEPT_NO=30 DESC DEPT30: Crear una vista que se lame dept30 que contenga el apellido, el oficioy el salario de los empleados nombre de la tabla emple,depart que pertenezcan al departamento 30. Hacer una descripcién de la vista y de su contenido