Wie eine Tabellenansicht mit SQL zu erstellen

Manchmal möchten Sie bestimmte Informationen aus der CUSTOMER-Tabelle in SQL abzurufen. Sie wollen nicht alles anschauen - nur bestimmte Spalten und Zeilen. Was Sie brauchen, ist eine Ansicht.

EIN Aussicht ist eine virtuelle Tabelle. In den meisten Implementierungen hat eine Ansicht keine unabhängige physische Existenz. Die Definition der Ansicht existiert nur in den Metadaten der Datenbank, aber die Daten stammen aus der Tabelle oder Tabellen, aus denen Sie die Ansicht ableiten. Die Daten der Ansicht ist nicht physisch dupliziert.

Einzeltisch-Ansicht

Wenn die Informationen, die Sie in einer einzigen Tabelle besteht möchten, können Sie einen Single-Table-Ansicht der Daten erstellen. Zum Beispiel: Angenommen, Sie an den Namen und Telefonnummern aller Kunden suchen möchten, die im Bundesstaat New Hampshire leben. Sie können eine Ansicht aus der CUSTOMER-Tabelle erstellen, die nur die gewünschten Daten enthält. Die folgende SQL-Anweisung erstellt diese Ansicht:

bild0.jpg
CREATE VIEW NH_CUST ASSELECT Customer.FirstName, CUSTOMER.LastName, CUSTOMER.PhoneFROM CUSTOMERWHERE CUSTOMER.State = 'NH' -

Sie können die gleiche Aufgabe mit weniger Tipp erreichen, wenn Sie Ihre SQL-Implementierung geht davon aus, dass alle Tabellenverweise die gleiche wie die, die in der sind VON Klausel. Wenn Ihr System, dass angemessene Standard Annahme macht, können Sie die Erklärung auf die folgenden Zeilen zu reduzieren:

CREATE VIEW NH_CUST ASSELECT Vorname, Nachname, PhoneFROM CUSTOMERWHERE STATE = 'NH'-

Obwohl die zweite Version einfacher zu schreiben und zu lesen, ist es anfälliger für Störungen aus ALTER TABLE Befehle. Eine solche Störung ist kein Problem für diesen einfachen Fall, der keine hat BEITRETEN, aber Ansichten mit BEITRETENs sind robuster, wenn sie voll qualifizierten Namen verwenden.

Multitable-Ansicht

Mehr als oft nicht, müssen Sie Daten aus zwei oder mehreren Tabellen zu ziehen Sie Ihre Frage zu beantworten. Nehmen wir zum Beispiel, dass Sie für ein Sportgeschäft arbeiten, und Sie wollen eine Werbe Mailing an alle Kunden zu senden, die Skiausrüstung gekauft haben, da das Geschäft im vergangenen Jahr eröffnet.

Sie benötigen Informationen aus der CUSTOMER-Tabelle, die Tabelle PRODUCT, thein Tisch, und die Rechnung Tisch. Sie können eine Multitable-Ansicht erstellen, die die Daten zeigt, die Sie benötigen. Jedes Mal, wenn Sie die Ansicht verwenden, spiegelt sie alle Änderungen, die in den zugrundeliegenden Tabellen aufgetreten seit dem letzten Ansicht verwendet.

Die Datenbank für dieses Sportgeschäft enthält vier Tabellen: Kunde, Produkt, Rechnung und Rechnung.

TabelleSpalteDatentypZwang
KUNDEKundennummerGANZE ZAHLNICHT NULL
VornameCHAR (15)
Familienname, NachnameCHAR (20)NICHT NULL
StraßeCHAR (25)
StadtCHAR (20)
BundeslandCHAR (2)
PostleitzahlCHAR (10)
TelefonCHAR (13)
PRODUKTProdukt IDGANZE ZAHLNICHT NULL
NameCHAR (25)
BeschreibungCHAR (30)
KategorieCHAR (15)
Hersteller-IDGANZE ZAHL
HerstellernameCHAR (30)
RECHNUNGInvoiceNumberGANZE ZAHLNICHT NULL
KundennummerGANZE ZAHL
RechnungsdatumDATUM
TotalSaleNUMERIC (9,2)
TotalRemittedNUMERIC (9,2)
ZahlungsartCHAR (10)
RechnungZeilennummerGANZE ZAHLNICHT NULL
InvoiceNumberGANZE ZAHLNICHT NULL
Produkt IDGANZE ZAHLNICHT NULL
MengeGANZE ZAHL
SalepriceNUMERIC (9,2)

Beachten Sie, dass einige der Spalten die Einschränkung enthalten NICHT NULL. Diese Spalten sind entweder die Primärschlüssel der jeweiligen Tabellen oder Spalten, die Sie sich entscheiden, sollen einen Wert enthalten. Ein Primärschlüssel der Tabelle muss jede Zeile eindeutig identifizieren. Um das zu tun, muss der Primärschlüssel ein Nicht-Null-Wert in jeder Zeile enthalten.

In den Tabellen beziehen sich auf die miteinander durch die Spalten, die sie gemeinsam haben. Die folgende Liste beschreibt diese Beziehungen:

  • Die Tabelle Kunde trägt ein Eins-zu-viele-Beziehung zum Rechnungs Tisch. Ein Kunde kann mehrere Einkäufe zu tätigen, zu erzeugen mehrere Rechnungen. Jede Rechnung befasst sich jedoch mit einem, und nur ein Kunde.

  • Die INVOICE Tisch trägt eine Eins-zu-viele-Beziehung zu der Rechnung Tisch. Eine Rechnung kann mehrere Zeilen haben, aber jede Zeile erscheint auf der einen, und nur eine Rechnung.

  • Die Tabelle PRODUCT trägt auch eine Eins-zu-viele-Beziehung zu der Rechnung Tisch. Ein Produkt kann auf mehr als eine Zeile erscheinen auf einer oder mehreren Rechnungen. Jede Zeile, jedoch beschäftigt sich mit einem, und nur einem, Produkt.

    image1.jpg

Die CUSTOMER-Tabelle Links zu den INVOICE Tabelle durch die gemeinsame Kundennummer Spalte. Die RECHNUNG Tabelle Links zu den Rechnung Tabelle durch die gemeinsame InvoiceNumber Spalte. Die Tabelle PRODUCT Links auf die Rechnung Tabelle durch die gemeinsame Produkt ID Spalte. Diese Links sind das, was diese Datenbank eine macht relationale Datenbank.

Um die Informationen über die Kunden Zugriff auf die Skiausrüstung gekauft haben, was Sie brauchen Vorname, Familienname, Nachname, Straße, Stadt, Bundesland, und Postleitzahl vom Kunden Tabellen- Kategorie aus dem Produkt Tabellen- InvoiceNumber von thein Tabellen- und Zeilennummer von der Rechnung Tisch. Sie können die Ansicht, die Sie, indem Sie die folgenden Anweisungen in Stufen wollen erstellen:

CREATE VIEW SKI_CUST1 ASSELECT Vorname, Nachname, Straße, Ort, Bundesland, Postleitzahl, InvoiceNumberFROM CUSTOMER JOIN INVOICEUSING (CustomerID) -create VIEW SKI_CUST2 ASSELECT Vorname, Nachname, Straße, Ort, Bundesland, Postleitzahl, ProductIDFROM SKI_CUST1 JOIN INVOICE_LINEUSING (InvoiceNumber) -create VIEW SKI_CUST3 ASSELECT Vorname, Nachname, Straße, Ort, Bundesland, Postleitzahl, CategoryFROM SKI_CUST2 JOIN PRODUCTUSING (ProductID) -create VIEW SKI_CUST ASSELECT DISTINCT Vorname, Nachname, Straße, Stadt, Staat, ZipcodeFROM SKI_CUST3WHERE KATEGORIE = 'Ski' -

Diese CREATE VIEW Aussagen kombinieren Daten aus mehreren Tabellen, die von der Verwendung BEITRETEN Operator.

image2.jpg

Hier ist ein Überblick über die vier CREATE VIEW Aussagen:

  • Die erste Anweisung kombiniert Spalten aus der Tabelle CUSTOMER mit einer Spalte der INVOICE Tabelle werden die zum Erstellen SKI_CUST1 Aussicht.

  • Die zweite Aussage kombiniert SKI_CUST1 mit einer Spalte von der Rechnung Tabelle zu erstellen, die SKI_CUST2 Aussicht.

  • Die dritte Aussage kombiniert SKI_CUST2 mit einer Spalte der Tabelle PRODUCT erstellen die SKI_CUST3 Aussicht.

  • Die vierte Anweisung filtert alle Zeilen aus, die eine Kategorie von nicht haben Ski. Das Ergebnis ist eine Ansicht (SKI_CUSTdas) enthält die Namen und Adressen aller Kunden, die mindestens ein Produkt in die gekauft Ski Kategorie.

    Das DISTINCT Stichwort im vierten CREATE VIEW's WÄHLEN Klausel stellt sicher, dass Sie nur einen Eintrag für jeden Kunden, auch wenn einige Kunden mehrere Einkäufe von Ski-Artikel gemacht.

Menü