Alle Understanding Relational Result Sets

  

Dieser Artikel kann Ihnen dabei helfen besser zu verstehen, SQL mit Mehrtabellenverknüpfungen-, Gruppen-bezogene Klauseln und Aggregatfunktionen kompliziert bei weitem die problematischsten Themen für die meisten Datenbank-Entwickler. Außerdem erfahren Sie, der richtige Weg zur Datenbank Ausnahmen zu behandeln und übernehmen sie als eigentliche Funktionalität in Ihrem ColdFusion-Anwendung. Sie lernen auch, wie Sie die Leistung von Abfragen im Cache-Speicher für schnellen Zugriff zu erhöhen. Sie können SQL-Klauseln und Bachus-Naur-Formen, bis Sie merken, blau im Gesicht sind, aber dennoch am Ende zu spielen "ready-fire-Ziel" versucht, komplizierte SQL, die tatsächlich funktioniert schreiben, wenn Sie ein klares Bild der Vorgänge genau, wie SQL-Anweisungen haben. Ihr erster Schritt in übersichtlichen Visualisierung von SQL ist die Art von relationalen Ergebnismengen zu verstehen. Der Code in diesem Artikel nicht von Access unterstützt, so dass, wenn Sie folgendermaßen zusammen mit den Informationen in diesem Artikel, führen Sie die Dateien Diese neue Datenbank enthält zusätzliche Daten und Tabellen zur Veranschaulichung der verschiedenen Arten von Verknüpfungen und die Ergebnisse, die sie produzieren. Wir haben alle den Titel dieses Teils aus einem wichtigen Grund, die bereits in früheren festgestellt wurde. Alle SQL-Abfrage-Ergebnisse werden in Form einer einzigen Tabelle mit Zeilen und Spalten. Ob das Ergebnis der Abfrage einer einzelnen Tabelle oder eine kompliziert relationalen Abfrage, die 15 Tische spielt keine Rolle, alle Abfrage-Ergebnisse werden in Form einer Tabelle von Zeilen und Spalten. Betrachten Sie den Code, die eine relationale Abfrage-Ergebnis, das wie alle Abfrageergebnisse, ist in der Form eines produziert einzigen Tabelle.

SELECT c.CompanyID, c.CompanyName, e.Lastname, e.Firstname, e.Salary AUS Firma c INNER Employee e ON c.CompanyID = e.CompanyID JOIN

Beachten Sie, dass das Ergebnis der Verbindung dieser beiden Tabellen Ergebnisse in einer einzigen Tabelle. Was ist das? Ist das nicht einer von denen Venn-Diagramme? Denken Sie daran, wenn Herr Suber, Ihr Junior High School Mathematiklehrer, sagten Sie, dass Sie wirklich nutzen würde sie eines Tages in der realen Welt, und Sie scheute? Zeit für einen Anruf ihn auf und entschuldigen! Ein INNER JOIN ist der Schnittpunkt der beiden Datensätze in den beiden Tabellen enthaltenen angeschlossen werden. Warum ist diese Konzeption kritisch zu schreiben einwandfreie SQL? Weil wir jetzt einfach jede Art von Verknüpfung zwischen zwei Tabellen zu visualisieren: Wir können nun einfach beschreiben, was wirklich geschieht mit jedem dieser Typen von Joins. Ein INNER JOIN setzt sich aus den Spalten aus beiden Tabellen aktiviert, aber es enthält nur die Zeilen zurück, die der JOIN Schlüsselwerte (in der ON-Klausel angegeben) in beiden verbundenen Tabellen aus. Ein LEFT OUTER JOIN setzt sich aus den Spalten aus beiden Tabellen ausgewählt, und es enthält alle Zeilen der linken Tabelle unabhängig davon, ob einer von ihnen entsprechen die JOIN-Schlüsselwerte in der rechten Tabelle. Die Abfrage Spalten von der linken Seite ausgewählt Tabelle enthalten Daten aus der Tabelle. Für jede Zeile in das Abfrage-Ergebnis, wenn ein Schlüssel JOIN Wert aus der linken Tabelle entspricht einem JOIN-Schlüssel Wert aus der rechten Tabelle, die Abfrage Spalten aus der rechten Tabelle ausgewählten Spalte enthalten Daten aus dieser Tabelle, wenn nicht enthalten die Spalten NULL-Werte.

SELECT c.CompanyID, c.CompanyName, e.Lastname, e.Firstname, e.Salary AUS Firma c LEFT OUTER Employee e ON c.CompanyID = e.CompanyID JOIN

Eine rechte äußere Verknüpfung setzt sich aus den Spalten aus beiden Tabellen ausgewählt, und es enthält alle Zeilen in der rechten Tabelle unabhängig davon, ob einer von ihnen das JOIN Schlüsselwerte in der linken Tabelle übereinstimmen. Die Abfrage Spalten aus der rechten Tabelle enthält ausgewählte Daten aus der Tabelle. Für jede Zeile in das Abfrage-Ergebnis, wenn ein Schlüssel JOIN Wert aus der rechten Tabelle entspricht einem JOIN-Schlüssel Wert aus der linken Tabelle, die Abfrage Spalten von links ausgewählt Beistelltisch Spalte enthalten Daten aus dieser Tabelle, wenn nicht , die Spalten NULL-Werte enthalten. A FULL OUTER JOIN setzt sich aus den Spalten aus beiden Tabellen ausgewählt, und es enthält alle Zeilen aus beiden Tabellen unabhängig davon, ob sie ihre wichtigsten Werte zu entsprechen. Für jede Abfrage-Ergebnis Reihe von links extrahiert Beistelltisch, wenn das JOIN-Schlüssel Wert aus der linken Tabelle hat keine Entsprechung in der rechten Tabelle, die Abfrage-Ergebnis Zeile enthält NULL-Werte in die Spalten aus der rechten Tabelle ausgewählt . Auch in einer Ergebnismenge Zeile aus der rechten Tabelle, wenn das JOIN-Schlüssel Wert aus der rechten Tabelle entnommen hat keine Entsprechung in der linken Tabelle, die Abfrage-Ergebnis Zeile enthält NULL-Werte in den Spalten von links ausgewählt Beistelltisch. Wenn das Ergebnis einer Abfrage Zeile die zentralen Werte JOIN Übereinstimmung zwischen der linken und rechten Seite Tabellen, die Daten aus beiden Tabellen in der Abfrage Ergebnis-Datensatz enthalten.

SELECT c.CompanyID, c.CompanyName, e.Lastname, e.Firstname, e.Salary AUS Firma c RIGHT OUTER Employee e ON c.CompanyID = e.CompanyID JOIN
SELECT c.CompanyID, c.CompanyName, e.Lastname, e.Firstname, e.Salary AUS Firma c FULL OUTER Employee e ON c.CompanyID = e.CompanyID JOIN

Okay, können Sie nun genau visualisieren die verschiedenen Arten von Verknüpfungen und sind bequem mit der SQL-Syntax, die sie erstellt wurden. That's great! Aber in der realen Welt, beschäftigen Sie sich oft mit dem Beitritt mehr als zwei Tabellen in einer einzigen relationalen Abfrage. Wie wollen Sie die komplizierten SQL zu sieben verknüpften Tabellen verbinden und nutzen Sie es beim ersten Mal richtig zu schreiben, jedes Mal? Eigentlich ist es ein Stück Kuchen. In der Tat, schreibst du nicht eine Abfrage, die eine Kombination von INNER, LEFT OUTER, RIGHT OUTER ausführt und Vollständige äußere Verknüpfungen zwischen 15 Tabellen ist wirklich nicht schwerer als eine Abfrage mit einem INNER JOIN zwischen zwei Tabellen zu schreiben. Der Trick ist alles visualisieren, wie Sie es!

SELECT c.CompanyID, c.CompanyName, e.Lastname, e.Firstname, e.Salary, d.FullName, d.Relationship AUS Firma c INNER Employee e ON c.CompanyID = e.CompanyID INNER JOIN Abhängig d E. ON SSN = d.SSN

Um zu verstehen, genau das, was Sie können und nicht mit SQL, müssen Sie zuerst verstehen, in welcher Reihenfolge verarbeitet die SQL-Klauseln einer SQL-Anweisung. Sie können den Code als ein Beispiel für die Reihenfolge in der SQL-folgt.

SELECT c.CompanyName, e.LastName + ',' + e.FirstName AS EmployeeName, e.Salary, count (*) als NumDependants AUS Firma c INNER JOIN Mitarbeiter ON c.CompanyID e = e.CompanyID INNER JOIN Abhängig d e ON . SSN = d.SSN WHERE e.DateOfBirth <'01 / 01/82 'GROUP BY c.CompanyName, e.LastName, e.FirstName, e.Salary HAVING Count (*)> = 2 ORDER BY EmployeeName ASC

Ein Artikel eingereicht von Daniel Carlson


Disclaimer:Unsere Website ist nicht verantwortlich für den Inhalt dieses Artikels. Webarticles ist eine kostenlose Informationsquelle.
Wichtig: Dieser Artikel "Understanding Relational Alle Result Sets" wurde durch ein automatisches Software übersetzt. Wir fühlen uns leid für alle Rechtschreibfehler, die möglicherweise aufgetreten sind. Vielen Dank für Ihr Verständnis.


Online: 319 users browsing the articles directory