Machen Sie sich in erster Linie mit Joins vertraut. Auch nicht nur innere und linke Verbindungen. Erfahren Sie, was ein Cross-Join und ein vollständiger Outer-Join bewirken. Kennen Sie die Umstände, unter denen Sie einen bestimmten Join-Typ auswählen würden. Verstehen Sie, dass sie nicht austauschbar sind und dass die Abfrage, die eine linke Verknüpfung verwendet, möglicherweise andere Ergebnisse als eine Abfrage zurückgibt, die eine innere Verknüpfung verwendet. (Man würde denken, das wäre offensichtlich, aber ich habe zu viele Fragen gelesen, bei denen die Leute beim Beschreiben ihres Problems etwas zufällig verschiedene Verknüpfungen versuchen.)
Weiter verstehen Aggregate wirklich und wie sie funktionieren. Mit MySQL können Sie davonkommen, nicht wie gewohnt Gruppen-Bys zu machen. Aber haben Sie die Disziplin, die Gruppe durch Klausel richtig zu definieren. Dies hilft Ihnen zu verstehen, was Sie tun, und erleichtert die Übertragung Ihres Wissens auf andere Datenbanken.
Erfahren Sie, was die case-Anweisung bewirkt.
Lernen Sie bei komplexen Abfragen, in Stücken zu arbeiten. Vergewissern Sie sich bei jedem Block, dass Sie die erwarteten Ergebnisse erzielen. Nehmen wir zum Beispiel an, Sie müssen eine Berichtsabfrage für Bestellungen schreiben, die in den letzten 3 Monaten zurückgegeben wurden, und den Grund für die Rücksendung sowie die Kontaktinformationen für den Kunden. Der erste Schritt besteht darin, die Bestellungen der letzten drei Monate zurückzuerhalten. Sobald Sie wissen, dass Sie diesen Feststoff haben, können Sie die Informationen zum Grund für die Rücksendung hinzufügen. Sobald Sie dieses Volumen haben, können Sie den Kunden hinzufügen, der es zurückgegeben hat. Sobald Sie diesen Körper haben, fügen Sie die Kontaktinformationen für die Person hinzu. Überprüfen Sie in jeder Phase Ihre Ergebnisse und prüfen Sie, ob sie sinnvoll sind. In diesem Fall möchte ich wahrscheinlich nur einen Datensatz pro zurückgegebener Bestellung erhalten. Wenn in einem Zwischenstadium die Anzahl der Ergebnisse steigt oder fällt, wissen Sie, dass Sie ein Problem mit der Abfrage haben. Manchmal möchten Sie in Bausteinen zusätzliche Felder sehen, um zu überprüfen, ob die Informationen korrekt sind. Ich setze diese in eine separate Zeile und kommentiere sie aus, während ich den nächsten Schritt durcharbeite (und entferne sie am Ende, sobald ich weiß, dass ich Recht habe), damit sie wieder leicht zu sehen sind, wenn das Hinzufügen einer weiteren Falte die Abfrage lustig machte. Sie können komplexe Abfragen nicht korrekt ausführen, ohne genau zu wissen, wie Ihre Ergebnisse aussehen sollten. Denken Sie, es sieht in Ordnung aus, da es einige Ergebnisse zurückgibt, die fast garantieren, dass Sie einen guten Teil der Zeit falsche Ergebnisse haben. m richtig) so sind sie wieder leicht zu sehen, wenn das Hinzufügen einer weiteren Falte die Abfrage lustig gemacht hat. Sie können komplexe Abfragen nicht korrekt ausführen, ohne genau zu wissen, wie Ihre Ergebnisse aussehen sollten. Denken Sie, es sieht in Ordnung aus, da es einige Ergebnisse zurückgibt, die fast garantieren, dass Sie einen guten Teil der Zeit falsche Ergebnisse haben. m richtig) so sind sie wieder leicht zu sehen, wenn das Hinzufügen einer weiteren Falte die Abfrage lustig gemacht hat. Sie können komplexe Abfragen nicht korrekt ausführen, ohne genau zu wissen, wie Ihre Ergebnisse aussehen sollten. Denken Sie, es sieht in Ordnung aus, da es einige Ergebnisse zurückgibt, die fast garantieren, dass Sie einen guten Teil der Zeit falsche Ergebnisse haben.
Hier ist eine Liste einiger grundlegender Dinge, die Sie in SQL ausführen sollten, ohne darüber nachdenken zu müssen:
- Zuerst eine direkte Auswahl ohne Verknüpfungen (und ohne Auswahl *), jedoch mit Bedingungen für die Auswahl
- Sie sollten wissen, wie Sie zwei oder mehr Tabellen kombinieren und Datensätze abrufen, die sich in allen Tabellen befinden
- Sie sollten wissen, wie Sie zwei oder mehr Tabellen kombinieren und Datensätze abrufen, die sich in allen Tabellen befinden, aber nur einen Datensatz aus der Tabelle mit den vielen Seiten der Eins-zu-Viele-Beziehung zurückgeben
- Sie sollten in der Lage sein, die Datensätze in einer Tabelle abzurufen, jedoch nicht in einer zugeordneten Tabelle
- Sie sollten in der Lage sein, Daten für einen Bericht zu aggregieren
- Sie sollten in der Lage sein, einen Datensatz in eine Tabelle einzufügen
- Sie sollten in der Lage sein, einen Datensatz in einer Tabelle zu aktualisieren
- Sie sollten in der Lage sein, einen Datensatz in einer Tabelle zu löschen
- Sie sollten in der Lage sein, eine Gruppe von Datensätzen ohne Cursor in eine Tabelle einzufügen
- Sie sollten in der Lage sein, eine Gruppe von Datensätzen in einer Tabelle ohne Cursor zu aktualisieren
- Sie sollten in der Lage sein, eine Gruppe von Datensätzen in einer Tabelle ohne Cursor zu löschen
- Sie sollten in der Lage sein, mehrere Aktionen in einer Transaktion auszuführen und Fehler zu beheben
- Sie sollten in der Lage sein, eine Vereinigung von Datensätzen zu erstellen und zu wissen, wann Sie UNION vice UNION ALL verwenden müssen
- Sie sollten in der Lage sein, die Daten für ein Feld anhand einiger Kriterien zu variieren (mit CASE).
Wenn Sie mit Ihren grundlegenden SQL-Kenntnissen vertraut sind, lernen Sie Ihre Datenbankstruktur kennen. Ich kann komplexe Abfragen gegen die sehr komplizierten Datenbanken, die ich unterstütze, viel schneller als andere Leute schreiben, weil ich die Struktur verstehe und nicht darüber nachdenken muss, wo Dinge gespeichert sind. Wenn Sie mit der Tabellenstruktur und den Fremdschlüsselbeziehungen vertraut sind und wissen, wo Nachschlagewerte gespeichert sind und was die Spalten bedeuten (nicht nur deren Name, sondern auch die darin enthaltenen Daten), können Sie diese Datenbank fachmännisch abfragen. Das erste, was ich in einem neuen Job mache, ist, die Datenbankstruktur genau zu verstehen.