Cómo crear vistas para recuperar y manipular datos sql
Una de las características más potentes de SQL es su capacidad para mostrar vistas de los datos que se estructuran de forma diferente a como las tablas de la base almacenan los datos. La estructura de una base de datos que está diseñado de acuerdo a los principios de sonido - incluyendo la normalización adecuada - maximiza la integridad de los datos.
Esta estructura, sin embargo, a menudo no es la mejor manera de ver los datos. Varias aplicaciones pueden utilizar los mismos datos, pero cada aplicación pueden tener un énfasis diferente. Las tablas que utiliza como fuente de columnas y filas en una vista son los tablas base.
LA SELECT declaración siempre devuelve un resultado en forma de una tabla virtual. LA vista es un tipo especial de tabla virtual. Puede distinguir una vista desde otras mesas virtuales, porque los metadatos de la base de datos contiene la definición de una vista. Esta distinción da una visión un grado de persistencia que otras mesas virtuales no poseen.
Puede manipular una vista tal como se puede manipular una mesa real. La diferencia es que los datos de una vista no tiene una existencia independiente. La vista obtiene sus datos de la tabla o las tablas de la que se dibuja columnas de la vista. Cada aplicación puede tener sus propios puntos de vista particulares de los mismos datos.
Supongamos que una base de datos contiene cinco tablas: CLIENTE, PRUEBAS, EMPLEADO, órdenes y resultados. Supongamos que el gerente de marketing nacional quiere ver a partir de la cual se afirma pedidos de la empresa están llegando. Parte de esta información se encuentra en el CLIENTE mesa- algunas mentiras en la tabla Pedidos.
Supongamos que el agente de control de calidad quiere comparar la fecha de la orden de una prueba a la fecha en que el resultado de la prueba final se produjo en. Esta comparación requiere algunos datos de la tabla PEDIDOS y algunos de la tabla de resultados. Para satisfacer las necesidades de este tipo, puede crear vistas que le dan exactamente los datos que desee en cada caso.
De las tablas
Para el director de marketing, puede crear este punto de vista.
La siguiente sentencia crea la opinión del director de marketing:
CREATE VIEW ORDERS_BY_STATE (ClientName, Estado, OrderNumber) AS SELECT CLIENT.ClientName, Estado, OrderNumberFROM CLIENTE, ORDERSWHERE CLIENT.ClientName = ORDERS.ClientName -
La nueva vista tiene tres columnas: Nombre de Cliente, Estado, y Número de orden. Nombre de Cliente aparece en las tablas el cliente y los pedidos y sirve de enlace entre las dos tablas. La nueva vista atrae Estado información de la tabla CLIENTE y toma la Número de orden de la tabla Pedidos. En el ejemplo anterior, usted declara los nombres de las columnas de manera explícita en la nueva vista.
Tenga en cuenta que la Nombre de Cliente está precedido de la mesa que lo contiene, pero no ha hecho por Estado y Número de orden. Eso es porque Estado sólo aparece en la tabla CLIENTE y Número de orden sólo aparece en la tabla PEDIDOS, así que no hay ambigüedad. Sin embargo, Nombre de Cliente aparece en el cliente y el ÓRDENES, por lo que se necesita el identificador adicional.
Usted no necesita esta declaración si los nombres son los mismos que los nombres de las columnas correspondientes en las tablas de origen. El ejemplo muestra un parecido CREATE VIEW declaración, excepto que los nombres de vista de columna se implican más que explícitamente.
Con una condición de selección
El oficial de control de calidad requiere una visión diferente a la que utiliza el director de marketing.
Aquí está el código que crea la vista:
CREATE VIEW REPORTING_LAGAS SELECT ORDERS.OrderNumber, ÓRDENES FechaPedido, DateReportedFROM, 'F' RESULTSWHERE ORDERS.OrderNumber = RESULTS.OrderNumberAND RESULTS.PreliminaryFinal = -
Esta vista contiene información de pedidos fecha de la tabla Pedidos y última-informe-información actualizada de la tabla de resultados. Sólo las filas que tienen una 'F' en el PreliminaryFinal la columna de la tabla de resultados se ven LAG INFORMES punto de vista. Tenga en cuenta también que la lista de columnas en la vista ORDERS_BY_STATE es opcional. los REPORTING_LAG Vista funciona bien sin esa lista.
Con un atributo modificado
los SELECT cláusulas sólo contienen nombres de columna. Puede incluir expresiones en el SELECT cláusula también. Supongamos que el propietario del VetLab está teniendo un cumpleaños y quiere dar a todos sus clientes un descuento del 10 por ciento para celebrar. Él puede crear una vista basada en la tabla PEDIDOS y la tabla PRUEBAS. Se puede construir esta tabla como se muestra en el siguiente ejemplo de código:
CREATE VIEW CUMPLEAÑOS (ClientName, Test, FechaPedido, BirthdayCharge) AS SELECT ClientName, TestOrdered, FechaPedido, StandardCharge * PEDIDOS .9FROM, TESTSWHERE TestOrdered = TestName -
Observe que la segunda columna de la CUMPLEAÑOS vista - Prueba - corresponde a la TestOrdered columna en la tabla PEDIDOS, que también corresponde a la TestName columna en la tabla PRUEBAS.
Usted puede construir una visión basada en varias tablas, como se muestra en los ejemplos anteriores, o usted puede construir una visión basada en una sola tabla. Si usted no necesita algunas de las columnas o filas, crear una vista para eliminar estos elementos y luego lidiar con la vista en lugar de la tabla original. Este enfoque garantiza que los usuarios ven sólo las partes de la mesa que son relevantes.
Otra razón para la creación de una visión es proporcionar seguridad a sus tablas subyacentes. Es posible que desee hacer algunas columnas en las tablas disponibles para su inspección al tiempo que oculta otros. Puede crear una vista que incluya sólo las columnas que desee que estén disponibles y luego conceder un amplio acceso a ese punto de vista, mientras que la restricción del acceso a las mesas de las que se dibujan de la vista.