¿Cómo crear una vista de tabla con sql
A veces, desea recuperar información específica de la tabla CUSTOMER en SQL. Usted no quiere mirar todo - sólo las columnas y filas específicas. Lo que necesita es una vista.
LA vista es una tabla virtual. En la mayoría de las implementaciones, una vista no tiene existencia física independiente. Existe la definición de la vista sólo en los metadatos de la base de datos, pero los datos proceden de la tabla o tablas desde la que se derivan de la vista. Los datos de la vista no se duplica físicamente.
Vista de una sola mesa
Si la información que desea existe en una sola tabla, puede crear una vista de una sola mesa de los datos. Por ejemplo, supongamos que usted desea ver los nombres y números de teléfono de todos los clientes que viven en el estado de New Hampshire. Puede crear una vista de la tabla CUSTOMER que sólo contiene los datos que desea. La siguiente sentencia SQL crea este punto de vista:
CREATE VIEW NH_CUST ASSELECT CUSTOMER.FirstName, CUSTOMER.LastName, CUSTOMER.PhoneFROM CUSTOMERWHERE CUSTOMER.State = 'NH' -
Puede realizar la misma tarea con menos tipificación si su aplicación SQL asume que todas las referencias de la tabla son los mismos que los de la DE cláusula. Si su sistema hace que la suposición por defecto razonable, usted puede reducir la sentencia a las siguientes líneas:
CREATE VIEW NH_CUST ASSELECT Nombre, Apellido, PhoneFROM CUSTOMERWHERE ESTADO = 'NH'-
Aunque la segunda versión es más fácil de escribir y leer, es más vulnerable a la interrupción de ALTER TABLE comandos. Tal interrupción no es un problema para este caso simple, que no tiene ÚNETE, pero puntos de vista con ÚNETEs son más robustos cuando utilizan nombres completos.
Vista de varias tablas
Más a menudo que no, es necesario extraer datos de dos o más tablas para responder a su pregunta. Supongamos, por ejemplo, que usted trabaja para una tienda de artículos deportivos, y que desea enviar un mailing promocional a todos los clientes que hayan comprado el equipo de esquí ya que la tienda abrió el año pasado.
Usted necesita información de la tabla CLIENTE, la tabla PRODUCTO, la tabla FACTURA, y la mesa Invoice_Line. Puede crear una vista de varias tablas que muestra los datos que necesita. Cada vez que utilice la vista, refleja los cambios que se produjeron en las tablas subyacentes desde la última de la vista.
La base de datos para esta tienda de artículos deportivos contiene cuatro mesas: clientes, productos, factura y Invoice_Line.
Mesa | Columna | Tipo de datos | Restricción |
---|---|---|---|
CLIENTE | ID de cliente | INTEGER | NO NULO |
Nombre de pila | CHAR (15) | ||
Apellido | CHAR (20) | NO NULO | |
Callejero | CHAR (25) | ||
Ciudad | CHAR (20) | ||
Estado | CHAR (2) | ||
Código postal | CHAR (10) | ||
Teléfono | CHAR (13) | ||
PRODUCTOS | ID del Producto | INTEGER | NO NULO |
Nombre | CHAR (25) | ||
Descripción | CHAR (30) | ||
Categoría | CHAR (15) | ||
IdProveedor | INTEGER | ||
Nombre del vendedor | CHAR (30) | ||
FACTURA | InvoiceNumber | INTEGER | NO NULO |
ID de cliente | INTEGER | ||
Fecha de la factura | FECHA | ||
VentaTotal | NUMÉRICO (9,2) | ||
TotalRemitted | NUMÉRICO (9,2) | ||
Forma de pago | CHAR (10) | ||
Invoice_Line | Número de línea | INTEGER | NO NULO |
InvoiceNumber | INTEGER | NO NULO | |
ID del Producto | INTEGER | NO NULO | |
Cantidad | INTEGER | ||
Precio de venta | NUMÉRICO (9,2) |
Observe que algunas de las columnas contienen la restricción NO NULO. Estas columnas son o bien las claves principales de sus respectivas tablas o columnas que usted decida debe contener un valor. Clave principal de una tabla debe identificar de forma única cada fila. Para ello, la clave principal debe contener un valor no nulo de cada fila.
Las tablas se relacionan entre sí a través de las columnas que tienen en común. La siguiente lista describe estas relaciones:
La tabla CLIENTE tiene un uno-a-muchos relación a la mesa FACTURA. Un cliente puede hacer compras múltiples, generando varias facturas. Cada factura, sin embargo, se refiere a uno, y sólo uno, de los clientes.
La tabla FACTURA lleva una relación uno-a-muchos a la mesa Invoice_Line. Una factura puede tener varias líneas, pero cada línea aparece en uno, y sólo uno, de factura.
La tabla PRODUCT también tiene una relación uno-a-muchos a la mesa Invoice_Line. Un producto puede aparecer en más de una línea en una o más facturas. Cada línea, sin embargo, se refiere a uno, y sólo uno, producto.
Los vínculos de la tabla de clientes a la mesa de factura por parte del común ID de cliente columna. Los vínculos de la tabla FACTURA a la mesa Invoice_Line por lo común InvoiceNumber columna. Los vínculos de la tabla PRODUCTO a la mesa Invoice_Line por lo común ID del Producto columna. Estos enlaces son lo que hace que esta base de datos de un relacional base de datos.
Para acceder a la información sobre los clientes que compraron el equipo de esquí, lo que necesita Nombre de pila, Apellido, Callejero, Ciudad, Estado, y Código postal de la mesa- CLIENTE Categoría de la mesa- PRODUCTOS InvoiceNumber de la mesa- FACTURA y Número de línea de la mesa Invoice_Line. Puede crear la vista que desee en etapas mediante el uso de las siguientes afirmaciones:
CREATE VIEW SKI_CUST1 ASSELECT Nombre, Apellido, Calle, Ciudad, Estado, Código Postal, InvoiceNumberFROM CLIENTE ÚNETE INVOICEUSING (CustomerID): Para crear VISTA SKI_CUST2 ASSELECT Nombre, Apellido, Calle, Ciudad, Estado, Código Postal, ProductIDFROM SKI_CUST1 ÚNETE INVOICE_LINEUSING (InvoiceNumber) VISTA -CREAR SKI_CUST3 ASSELECT Nombre, Apellido, Calle, Ciudad, Estado, Código Postal, CategoryFROM SKI_CUST2 ÚNETE PRODUCTUSING (ProductID): Para crear VISTA SKI_CUST ASSELECT FirstName DISTINCT, Apellido, Calle, Ciudad, Estado, ZipcodeFROM SKI_CUST3WHERE CATEGORÍA = 'Ski' -
Estas CREATE VIEW declaraciones combinan datos de múltiples tablas utilizando el ÚNETE operador.
He aquí un resumen de los cuatro CREATE VIEW declaraciones:
La primera declaración combina columnas de la tabla CLIENTE con una columna de la tabla FACTURA para crear el SKI_CUST1 punto de vista.
La segunda combina declaración SKI_CUST1 con una columna de la tabla Invoice_Line para crear el SKI_CUST2 punto de vista.
La tercera combina declaración SKI_CUST2 con una columna de la tabla PRODUCTO para crear el SKI_CUST3 punto de vista.
La cuarta declaración filtra todas las filas que no tienen una categoría de Ski. El resultado es una vista (SKI_CUST) Que contiene los nombres y direcciones de todos los clientes que compraron al menos un producto en el Ski categoría.
los DISTINCT palabra clave en el cuarto CREATE VIEW's SELECT cláusula asegura que tiene sólo una entrada para cada cliente, incluso si algunos clientes hicieron varias compras de artículos de esquí.