Ich habe MySQL für die gleiche Zeit verwendet, die ich PHP verwendet habe. Allerdings fühle ich mich in PHP ungefähr 10x sicherer; oder eine andere Programmiersprache. Aber ich kann SQL einfach nicht wirklich wirklich verstehen. Ich meine, ich kann auswählen, aktualisieren, einfügen, löschen, beitreten usw., aber wenn es um komplexere Dinge geht, bin ich verloren. Wie schreibe ich eine kompliziertere Select-Anweisung, wie verwende ich Indizes richtig, welche Engine soll ich verwenden usw.
Aus irgendeinem Grund finde ich es wirklich schwierig, den MySQL-Dokumenten zu folgen, aber die PHP-Dokumente sind einfach zu folgen.
Ich fange an zu denken, dass mein Gehirn vielleicht nur so verdrahtet ist, dass die Programmierung da aber verwirrend wirkt. Ich weiß es nicht. Die meisten Leute denken, dass Regex so verwirrend ist, aber für mich ist es wissenschaftlicher, als eine SQL-Anweisung zu konstruieren. Bitte versteh mich nicht falsch, ich hasse SQL nicht, ich mag es wirklich, ich möchte es nur besser verstehen.
Was ist der beste / schnellste Weg, um MySQL wirklich zu beherrschen?
Wenn ich "Meister" sage, meine ich nicht den Guru unter den Gurus, sondern schlau genug, um die meisten Fragen, die ich auf SO stelle, selbst herauszufinden, ohne Hilfe zu benötigen.
Antworten:
Benutze es
Die Internalisierung der Funktionsweise relationaler Datenbanken ist für viele Menschen schwierig, aber sehr wertvoll. Wenn Sie mehr mit SQL arbeiten, dringt es in Ihr Gehirn ein. Dräng dich weiter.
Wenn etwas seltsam erscheint, untersuchen Sie es
In Chrome habe ich diese Suchmaschine so eingerichtet, dass ich nur "m [search query]" eingeben muss, um die Dokumente zu durchsuchen (die Suche auf dev.mysql.com ist mies): {google: baseURL} search? {Google: RLZ} {google: allowedSuggestion} {google: originalQueryForSuggestion} sourceid = chrome & ie = {inputEncoding} & q = site: dev.mysql.com/doc/refman/5.1/en+%s
Wenn die Dokumente keine Antwort haben, rufen Sie unter freenode #mysql auf und prüfen Sie, ob jemand einen Einblick geben kann.
Lesen!
Wenn Sie erst einmal verstanden haben, wie relationale Datenbanken funktionieren, möchten Sie ein bisschen mehr darüber erfahren, was MySQL mit diesen magischen Abfragen macht, die Sie schreiben. Ich kann High Performance MySQL nur empfehlen - es ist Ihre Zeit sehr wert.
quelle
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:
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.
quelle
Meiner Meinung nach sollten Sie sich aus dem Kontrollfluss der PHP-artigen Programmierung entfernen, um SQL zu lernen (und das ist wirklich das, was Sie fragen, MySQL-spezifische Informationen können später kommen) . Denken Sie speziell im Paradigma der deklarativen Sprachen:
SQL definiert, WAS Sie wollen, nicht, wie es geht. Wenn Sie versuchen können, Letzteres geistig zu entfernen, wird Ersteres rechtzeitig folgen. Abstrahieren Sie diese Ebene in Ihrem Kopf und lassen Sie MySQL (oder Oracle oder was auch immer) darüber nachdenken, wie .
Anwendungslogik kann in SQL im Vergleich zu prozeduralem / OO-Code in PHP auftreten. Wenn Sie beispielsweise Abfragen für etwas an die Datenbank richten, können Sie eine Benutzertabelle und möglicherweise eine Berechtigungstabelle konsistent verknüpfen, um die richtigen Rechte sicherzustellen, anstatt mehrere Vorabfragen durchzuführen. Das Einfügen kann über eine ähnliche Auswahl (
insert into ... select ...
) anstelle von benannten Werten erfolgen, um die Datenüberprüfung sicherzustellen.Auf jeden Fall empfehle ich dringend, mich auf die Codd-Grundprinzipien zu konzentrieren und Auswahl, Projektion, Zusammenführung, Vereinigung und Differenz zu verstehen. Letztendlich sind die Konzepte einfach und Sie können wahrscheinlich 80% dessen erreichen, was Sie durch sie erreichen möchten. Der Rest kann folgen.
quelle
Der schnellste Weg, etwas zu "meistern", war, mich selbst damit herauszufordern. Nehmen Sie einen Datensatz und schreiben Sie acht bis zehn verschiedene Dinge auf, nach denen Sie fragen möchten. Eine Gruppe von Schülern, für die Sie das Durchschnittsalter aller Schüler ermitteln möchten, gruppiert nach dem Notendurchschnitt, auf die nächste ganze Zahl gerundet. Dann schreiben Sie die Abfragen für sie. Beginnen Sie mit einer Tabelle und fügen Sie dann weitere hinzu. Übungsdaten werden zusammengefügt und Funktionen eingebaut.
quelle