You are on page 1of 7

Formacin 2002.

Tema 12. Vistas y Sinnimos.

TEMA 12 VISTAS Y SINNIMOS


1. 2. 3. 4. 5. 6. Creacin y uso de vistas. Borrado de vistas. Operaciones sobre vistas. Creacin de sinnimos. Borrado de sinnimos Cambios de nombre.

Prctica de Bases de Datos

Page 1 of 7

Formacin 2002.

Tema 12. Vistas y Sinnimos.

1. CREACIN Y USO DE VISTAS. A veces para obtener los datos de varias tablas hemos de construir una sentencia SELECT compleja y, si en otro momento necesitamos realizar esa misma consulta, tenemos que construir de nuevo la sentencia select. Las vistas solucionan este problema: Mediante una consulta simple de una vista cabe la posibilidad de obtener los datos de una consulta compleja. No contienen informacin por s misma, sino que esa informacin est basada en la que contienen otras tablas. Si se suprime una tabla asociada a una vista, la vista se invalida. Las vistas tienen la misma estructura que una tabla: filas y columnas, y se tratan de forma semejante a una tabla. Sintxis: CREATE [OR REPLACE] VIEW Nombre_Vista [(columna1 [,columna2])] AS consulta; Nombre_Vista: Nombre de la vista creada. [(columna1 [,columna2])] : Son los nombres de las columnas que va a contener la vista. Si no se ponen se asumen los nombres de columna devueltos por la consulta. AS consulta: Determina las columnas y las tablas que apareceran en la vista. [OR REPLACE]: Crea de nuevo la vista si ya existiera. Ejemplos:
CREATE VIEW SPAIN AS SELECT * FROM CLIENTES WHERE CLT_PAIS='E'; SQL> SELECT * FROM SPAIN; CLT_NUM CLT_APELL CLT_NOM C CLT_POB -----------------------------------------------------------------------------------------1 BORRAS Margarita E MADRID 2 PEREZ Miguel E MADRID 5 LLOPIS Antoni E BARCELONA 7 GOI Pablo E PAMPLONA 9 ROMAN Consuelo E JAEN 10 ROCA Pau E GERONA 11 MANCHA Jorge E VALENCIA 12 CURRO Pablo E BARCELONA 13 CORTES Diego E MADRID 14 FERNANDEZ Joaquin E MADRID 15 DURAN Jacinto E PAMPLONA 16 MINGUIN Pedro E PAMPLONA 17 CESAR Jose E SEVILLA

Prctica de Bases de Datos

Page 2 of 7

Formacin 2002.

Tema 12. Vistas y Sinnimos.

SQL> CREATE OR REPLACE VIEW SPAIN (NUM, APELL, NOM, PAIS, POB) AS SELECT * FROM CLIENTES WHERE CLT_PAIS = 'E';

En este ejemplo he cambiado los nombres de las columnas de mi vista. Tambin podra haber cambiado el contenido si lo hubiera deseado. Para consultar las vistas creadas se dispone de la vista USER_VIEWS. As para visualizar los nombres de las vistas con sus textos, tenemos:

SQL> SELECT VIEW_NAME, TEXT FROM USER_VIEWS; VIEW_NAME -----------------------------TEXT -------------------------------------------------------------------------------SPAIN SELECT "CLT_NUM","CLT_APELL","CLT_NOM","CLT_PAIS","CLT_POB" FROM CLIENTES WHERE

Qu ocurre si borramos la tabla clientes? Al hacer DESC SPAIN, o una SELECT DE SPAIN obtendriamos un error. Al borrar las tablas de las que procede la vista, la vista queda inutilizada, pero es preferible borrarla. 2. BORRADO DE VISTAS. Sintxis: DROP VIEW nombre_vista;

3. OPERACIONES SOBRE VISTAS. Las operaciones que se puden realizar sobre vistas son las mismas que las que se pueden realizar sobre tablas. a) Consulta:
SELECT (COL1, COL2, ...|*) FROM nombre_vista WHERE condicin;

b) Actualizacin: Si una vista est basada en una sola tabla se pueden modificar las filas de la vista. En realida lo que se hace es actualizar las filas de la tabla sobre la que est definida.
SQL> UPDATE SPAIN SET NOM='Margari' WHERE NOM='Margarita'; SQL> SELECT * FROM CLIENTES; En la tabla clientes se habr modificado el nombre de esa persona.

Prctica de Bases de Datos

Page 3 of 7

Formacin 2002.

Tema 12. Vistas y Sinnimos.

En una actualizacin, ninguna columna que se vaya a actualizar, se permite como una expresin. Para borrar filas a travs de una vista: 1. Las filas deben pertenecer a una sola tabla. 2. Sin usar GROUP BY ni DISTINCT. 3. Sin usar funciones de grupo. c) Insercin: Se puede dar el caso de que intentemos insertar a travs de una vista. Si en la vista no hemos incluido columnas que en la tabla es obligatorio, entonces se dar un error. Por ejemplo, si no incluimos la clave primaria de una tabla en una vista, nos dar un error. d) Borrado:
SQL > DELETE SPAIN WHERE NUM=1;

e) Vistas definidas sobre ms de una tabla: f) Manejo de expresiones y de funciones en vistas: Se pueden crear vistas usando funciones, expresiones de columnas y consultas avanzadas, pero slo se podran consultar.
SQL> CREATE VIE PAGOS (NOMBRE, SAL_MES, SAL_AN, DEPT_NO) AS SELECT INITCAP(APELLIDO), SALARIO, SALARIO*12, DEPT_NO FROM EMPLE WHERE DEPT_NO=10; Podemos modificar la vista siempre y cuando la columna a modificar no sea la expresion, o la que fue creada con INITCAP (funcin). SQL> INSERT INTO PAGOS VALUES(PEPE,1000000,12000000,10); Esto dara un error, porque no es possible inserter filas si la columna de la vista contiene clculos o funciones.

En resumen: Cualquier manipulacin de datos sobre una vista que contenga expresiones o funciones puede dar errores. 4. CREACIN DE SINNIMOS. Cuando tenemos acceso a las tablas de otro usario y deseamos consultarlas, es preciso teclear el nombre del usuario propietario antes del nombre de la tabla. Es decir, si DIEGO tiene acceso a la tabla DEPART de PEDRO y la quiere consultar, deber teclear la siguiente orden:
SQL> SELECT * FROM PEDRO.DEPART;

Mediante el uso de sinnimos, DIEGO puede crear un sinnimo para referenciar a la tabla de PEDRO sin necesidad de incluir su nombre:
SQL> SELECT * FROM TABLAPEDRO;

Prctica de Bases de Datos

Page 4 of 7

Formacin 2002.

Tema 12. Vistas y Sinnimos.

Un sinnimo es un nuevo nombre que se puede dar a una tabla o vista. Con los sinnimos se pueden usar dos nombres diferentes para referirse a un mismo objeto. Resultan cuando se tiene acceso a las tablas de otros usarios. Se pueden crear sinnimos para hacer referencia a estas tablas, y as, no hay que escribir el nombre de usuario propietario de la tabla delante de la tabla a la que tenemos acceso cada vez que deseemos consultarla. Sintxis: CREATE [PUBLIC] SYNONYM nombresinnimo FOR [usuario.]Nombretabla; PUBLIC hace que el sinnimo est disponible para todos los usarios.

Ejemplo: Creamos el sinnimo PERSONAS asociado a la tabla CLIENTES


SQL> CREATE SYNONYM PERSONAS FOR CLIENTES; Synonym created.

Tambin podramos crear un sinnimo para la tabla clientes del usuario FORM.
SQL> CREATE SYNONYM PERSONA FOR FORM.CLIENTES; Synonym created.

Por otra parte, existen sinnimos pblicos a los que puede hacer referencia cualquier usario. Slo el administrador de la base de datos (DBA) y los usuarios con privilegio CREATE PUBLIC SYNONYM pueden crear este tipo de sinnimos.

Ejemplos: Un usuario que es DBA crea un sinonimo pblico para su tabla DEPART; se llama DEP al sinnimo.
SQL> CREATE PUBLIC SYNONYM DEP FOR DEPART;

Para que todos los usarios puedan usar la tabla DEPART y su sinnimo han de tener permiso. Se da permiso a todos los usuarios para hacer SELECT en la tabla DEPART con la orden GRANT:
SQL> GRANT SELECT ON DEPART TO PUBLIC; SQL> CONNECT PEDRO/PEDRO SQL>SELECT * FROM DEP;

Una vez concedido los permisos, conectamos con el usuario PEDRO y hacemos una consulta del sinnimo por ejemplo.
Prctica de Bases de Datos Page 5 of 7

Formacin 2002.

Tema 12. Vistas y Sinnimos.

5. BORRADO DE SINNIMOS. Del mismo modo que se crean sinnimos, se pueden borrar. Sintxis: DROP [PUBLIC] SYNONYM [usuario.]sinnimo; Sinnimo es el nombre de sinnimo que se va a suprimir. nicamente los DBA y los usuarios econ el privilegio DROP PUBLIC SYNONYM pueden suprimir sinnimos PUBLIC. Igualmente, slo los DBA y los usuarios con el privilegio DROP ANY SYNONYM pueden borrar los sinnimos de otros usuarios. Ejemplos:
SQL> DROP SYNONYM DEPARTAMENTOS; Synonym dropped. Si ahora hacemos: SQL> DROP SYNONYM DEP; Nos dar un error. Si lo creamos como pblico tendremos que borrarlo como pblico. SQL> DROP PUBLIC SYNONYM DEP;

Por otro lado, la vista USERS_SYNONYMS permit ever los sinnimos que son propiedad del us uario.
SQL> DESC SYS.USER_SYNONYMS;

6. CAMBIOS DE NOMBRES. RENAME es una orden SQL que cambia el nombre de una tabla, vista o sinnimo. El nuevo nombre no puede ser una palabra reservada ni el nombre de un objeto que tenga creado el usario. Sintxis: RENAME nombre_anterior TO nombre_nuevo; Las restricciones de integridad, los ndices y los permisos dados al objeto se transforman automticamente al nuevo objeto. Oracle invalida todos los objetos que dependen del objeto renombrado, como las vistas, los sinnimos, y los procedimientos almacenados que hacen referencia a la tabla renombrada.
Page 6 of 7

Prctica de Bases de Datos

Formacin 2002.

Tema 12. Vistas y Sinnimos.

No se puede usar esta orden para renombrar sinnimos pblicos ni para renombrar columnas de una tabla. Las columnas de una tabla se renombran mediante la orden CREATE TABLE AS.

Veamos estos ejemplos:


SQL> CREATE SYNONYM ALM FOR ALUMNOS; SQL> RENAME ALUMNOS TO TALUMNOS; SQL> SELECT * FROM ALUMNOS; Error SQL> SELECT * FROM ALM; Error. El sinnimo existe pero no la tabla ALUMNOS a la que hace referencia.

Si renombramos una tabla, veremos como tambin se renombran sus restricciones. Para ello consultamos la tabla USER_CONSTRAINTS.

Prctica de Bases de Datos

Page 7 of 7

You might also like