Jobtaugliches SQL an einem Nachmittag | Max S | Skillshare

Playback-Geschwindigkeit


  • 0.5x
  • 1x (normal)
  • 1.25x
  • 1.5x
  • 2x

Jobtaugliches SQL an einem Nachmittag

teacher avatar Max S, Power through programming

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Eine Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Schau dir diesen Kurs und Tausende anderer Kurse an

Erhalte unbegrenzten Zugang zu allen Kursen
Lerne von Branchenführern, Ikonen und erfahrenen Experten
Eine Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

45 Einheiten (6 Std. 2 Min.)
    • 1. Einführung

      0:40
    • 2. Relationale Datenbanken, Einführung

      15:19
    • 3. Datenarten und Schemas

      17:35
    • 4. [Mac] Einrichtung eines lokalen a

      3:25
    • 5. [Windows] Lokale Postgres Server

      4:51
    • 6. [Mac] Postico Setup

      4:34
    • 7. Datagrip

      5:32
    • 8. CLI

      1:20
    • 9. Datenbanken erstellen und

      6:01
    • 10. Schemas erstellen

      3:48
    • 11. Tabellen erstellen

      8:36
    • 12. Tabellen ändern

      3:06
    • 13. Gezählte Arten

      4:51
    • 14. Werte hinzufügen

      6:57
    • 15. Ein SQL-Script erstellen

      6:20
    • 16. Daten lesen

      7:00
    • 17. Tabellen aus der Query erstellen

      6:28
    • 18. 16AliasingandOrderHB

      13:41
    • 19. Conditional

      5:08
    • 20. 18ConditionalFilterungGroup,

      10:20
    • 21. 19JoiningConditionalsHB

      7:50
    • 22. 20NegatenConditionalsHB

      4:40
    • 23. 21FilterungNullValuesHB

      1:31
    • 24. 22Erstellung 22CreatingNewColumnsAndArithmeticsHB

      7:36
    • 25. 23DatatypeConversementeHB

      6:33
    • 26. 24LogicStatementsHB

      7:22
    • 27. 25ManipationsStringsHB

      9:59
    • 28. 26StringPositionalInformationHB

      8:10
    • 29. 27StringSubsetsUndConcatinationsHB

      22:56
    • 30. 28String-AusstellungHB

      9:35
    • 31. 29DateandTimeHB

      6:32
    • 32. 30DateTimeIntervall, 30DateTimeIntervall, 30Date-

      7:37
    • 33. 31KommentareHB

      6:50
    • 34. 32AggregationsFunctionsHB

      6:54
    • 35. 33Groupingund 33GroupingAndFilteringAggregationsHB

      12:20
    • 36. 34JoinsHB

      18:49
    • 37. 35LeftRightVoll, 35LeftRightFullJoinsHB

      16:48
    • 38. 36SelfJoinsHB

      9:05
    • 39. 37UnionsHB

      5:29
    • 40. Unterfragen

      9:02
    • 41. 39WindowFunktionenUndAliasenHB

      15:26
    • 42. 40RowNumbersUndRanksHB

      6:14
    • 43. 41UsingOtherRowsFensterFunktion, 41Fenster

      11:07
    • 44. 42NTilesHB

      4:09
    • 45. 43UnderstandingQueryPerformanceHB

      3:47
  • --
  • Anfänger-Niveau
  • Fortgeschrittenes Niveau
  • Fortgeschrittenes Niveau
  • Alle Niveaus

Von der Community generiert

Das Niveau wird anhand der mehrheitlichen Meinung der Teilnehmer:innen bestimmt, die diesen Kurs bewertet haben. Bis das Feedback von mindestens 5 Teilnehmer:innen eingegangen ist, wird die Empfehlung der Kursleiter:innen angezeigt.

209

Teilnehmer:innen

--

Projekte

Über diesen Kurs

In nur einem Nachmittags Übungen wirst du Folgendes sein:

  • 100% fließend in SQL
  • Habe das technische Know-, um es am Arbeitsplatz anzuwenden
  • Kann die Möglichkeit, SQL-Anfragen schreiben, um Daten zu extrahieren und zu analysieren und zu analysieren.
  • Die technischen Fragen zum Beantworten von technischen Interview-Fragen

Das Training beginnt mit den grundlegenden Grundlagen, indem du dir zeigt, wie du alle auf deiner eigenen Maschine einrichtest, und dir ein Verständnis von den Nachlässigkeit von den Nachlässen geben.

Wir geben dir dann Grundlegende Fragen, dass wir nur Daten aus der Datenbank auswählen, bis zur Anwendung von Ordnungen und filters, ausgehen, und dass sie Joys und Vereinigungen sowie Gemischs von Fenster.

Bei jedem Schritt befassen wir uns nicht nur die Anfragen und sprechen auch über das tatsächliche Verhalten, damit wir verstehen, was wir machen und wie es funktioniert, damit dieses Wissen auch auf andere Probleme angewendet werden kann.

Am Ende dieses Kurses solltest du dich sehr wohlfühlen, dass du die Fragen des Schreibens von SQL und Daten ausgibst. und der Fähigkeiten zur Antwort von technischen queries, hast, die sich in Interviews für Positionen wie Data und queries, präsentieren können.

Triff deine:n Kursleiter:in

Teacher Profile Image

Max S

Power through programming

Kursleiter:in

Skills dieses Kurses

Technologie SQL Datenwissenschaft Postgres

Kursbewertungen

Erwartungen erfüllt?
    Voll und ganz!
  • 0%
  • Ja
  • 0%
  • Teils teils
  • 0%
  • Eher nicht
  • 0%

Warum lohnt sich eine Mitgliedschaft bei Skillshare?

Nimm an prämierten Skillshare Original-Kursen teil

Jeder Kurs setzt sich aus kurzen Einheiten und praktischen Übungsprojekten zusammen

Mit deiner Mitgliedschaft unterstützt du die Kursleiter:innen auf Skillshare

Lerne von überall aus

Ob auf dem Weg zur Arbeit, zur Uni oder im Flieger - streame oder lade Kurse herunter mit der Skillshare-App und lerne, wo auch immer du möchtest.

Transkripte

2. Relationale Datenbanken, Einführung: Hey da, x max und willkommen. In dieser Lektion werden wir also über relationale Datenbanken lernen , nur um sicherzustellen, dass alle auf der gleichen Ebene sind, dass jeder das gleiche Wissen über relationale Datenbanken hat und dass wir alle mit die Schlüsselbegriffe, so dass, wenn wir tatsächlich anfangen, SQL zu verwenden und SQL zu lernen, wenn Sie einen der notwendigen Begriffe hören, Sie genau verstehen, wovon ich spreche. Zunächst relationale oder Datenbanken in einem relationalen Modell in Tabellen aufgeteilt. Eine Datenbank wird also aus mehreren Tabellen bestehen, aber fangen wir zuerst mit der Tabelle an. So können wir zum Beispiel einen Tisch haben, wie wir hier rechts sehen. Das erste, was wir bemerken, ist, dass die Tabelle einen Namen hat , den Sie darüber sehen können. Nun, das ist genau die Art, wie ich es zeigen werde. Normalerweise wird der Name woanders dargestellt. Aber nur um sicherzustellen, dass alles hier verknüpft ist, haben wir den Namen oben. Also in diesem Fall ist unser Name Benutzer Unterstrich und Telefon. Jetzt werden Sie etwas über die Benennung bemerken, die für allgemeine Namenskonventionen da ist. Einer von ihnen verwendet einen Unterstrich und der andere verwendet Großbuchstaben. Das Beispiel für Großbuchstaben sehen Sie in der Benutzer-ID, die eine Spalte in unserer User-Info-Tabelle ist. Diese beiden Optionen sind nur verschiedene Namenskonventionen und sie sind nur da, um Ihnen, dem Benutzer oder vielleicht auch dem Datenbankadministrator oder jedem anderen, der diese Datenbank verwenden muss, zu helfen, alles lesen zu können einfacher, da es viel einfacher ist, Wörter zu lesen, die entweder durch einen Unterstrich oder Wörter getrennt sind , bei denen jedes neue Wort mit einem Großbuchstaben beginnt. Und es ist viel einfacher, Wörter wie diese zu lesen, wo alles entweder Klein- oder Großbuchstaben oder so etwas ist . Und so werden Sie wahrscheinlich sehen, dass eine dieser beiden Namenskonventionen verwendet wird, wenn Sie eine SQL-Datenbank verwenden, zum Beispiel in einem Unternehmen, oder wenn Sie eine in einem technischen Interview oder so etwas bekommen. Jetzt, wie Sie wahrscheinlich bemerkt haben und wahrscheinlich bereits wissen, bestehen Tabellen aus Zeilen und Spalten und es ist die gleiche Weise in einer relationalen Datenbank. So können wir hier unsere Tabelle sehen, die userinfo-Tabelle hat vier verschiedene Spalten genannt die Benutzer-ID, eine andere namens name, eine andere namens join, und eine andere namens email. Und es hat auch verschiedene Reihen. Wir können hier sehen, wir haben drei Reihen in diesem Fall. Also werden wir in einer Sekunde mehr darüber reden. Aber ja, das wird die Art von Basisstruktur sein , die unsere Datenbank aus verschiedenen Tabellen besteht. Jede Tabelle hat einen Namen, und jede Tabelle besteht auch aus Spalten und Zeilen. Jetzt hat jede Tabelle in einer relationalen Datenbank auch einen Primärschlüssel genannt. Der Primärschlüssel ist die Spalte, die jede Zeile eindeutig identifiziert. So können wir hier sehen, in diesem Fall wird unser Primärschlüssel die Benutzer-ID sein, was bedeutet, dass jede einzelne Zeile eine eindeutige Benutzer-ID haben muss. Dieser Primärschlüssel kann entweder auf natürliche Weise entstehen. Zum Beispiel wird in unserer Userinfo-Tabelle die Benutzer-ID durch Design eindeutig sein , da jeder Benutzer eine eindeutige ID haben wird. Daher ist die Benutzer-ID eine großartige Spalte, die als Primärschlüssel verwendet werden kann. Aber in anderen Fällen kann der Primärschlüssel eine zusätzliche Spalte sein, da es keine Spalte in unserer Tabelle gibt , die nicht wirklich zu einer eindeutigen Identifikation kostenlose Testversion führt. So oder so, ein Primärschlüssel in Tabellen wichtig, weil das ist, was wird es uns erlauben , jeden Datensatz in unserer Datenbank einzeln zu identifizieren. Daher ist es wichtig, dass wir eine Spalte für den Primärschlüssel haben, da wir auf diese Weise einen eindeutigen Bezeichner für jede Zeile haben können, die wir in unserer Tabelle haben. Nun ist etwas anderes, was wichtig ist, der Primärschlüssel. Es kann immer nur einen pro Tisch geben. Sie können nicht zwei Primärschlüssel in einer Tabelle haben. Der Primärschlüssel wird also nur einer sein, und es wird uns auch erlauben, jede Zeile eindeutig zu identifizieren. Jetzt verwenden wir die Begriffe Zeile und Spalten. Aber tatsächlich in SQL werden die Spalten normalerweise Attribute genannt und die Zeilen werden Datensätze genannt. Und so können Sie darüber nachdenken, dass die Spalten Attribute zu jedem unserer Datensätze sind. Auch hier sind Datensätze Zeilen. Wenn wir zum Beispiel die erste Zeile oder den ersten Datensatz betrachten, haben wir die UserID 1. Also das Attribut unserer ersten Zeile, wo es eine Benutzer-ID von eins und Name hat. Alice trat am 11. Mai und eine E-Mail an abc.com. Dies wird also eine Art Syntax sein, die Sie wahrscheinlich hören werden , wenn Sie Tabellen betrachten und wissen, von Zeilen und Spalten oder vielmehr von Datensätzen und Attributen hören. Jetzt, wie ich bereits erwähnt habe, wird eine Datenbank normalerweise mehrere Tabellen anstatt nur eine haben. So zum Beispiel, unsere Datenbank mich, es kann über Benutzer und Speicherung von Benutzerinformationen sowie Informationen über die Ereignisse, die Benutzer tun. Und so konnten wir Tabellen sehen, zum Beispiel die UserInfo genannt, die wir zuvor hatten, die wir auch eine andere Tabelle namens Ereignisprotokoll haben konnten. Und wir können eine andere Tabelle namens Event Info haben. Und diese Tabellen werden alle in irgendeiner Weise verwandt sein. Normalerweise ist nicht der beste Weg, diese Beziehungen zu definieren , durch etwas, das als Fremdschlüssel bezeichnet wird. So haben wir zum Beispiel in unserem Ereignisprotokoll zwei Fremdschlüssel. Und mit den Fremdschlüsseln sind, ist, sie sind Spalten in dieser Tabelle, die den Primärschlüssel in einer anderen Tabelle referenzieren. Lassen Sie uns zum Beispiel einen Blick auf die Ereignisprotokolltabelle werfen. Hier haben wir zwei Fremdschlüssel. Einer von ihnen wird die Benutzer-ID sein. Nun verweist die Benutzer-ID auf die ID-Spalte und die userinfo-Tabelle. Und wir haben einen anderen Fremdschlüssel hier genannt die Ereignis-ID. Nun wird die Ereignis-ID auf die ID-Spalte in der Ereignis-Info-Tabelle verweisen. Auf diese Weise können wir auch die Beziehungen zwischen unseren verschiedenen Tabellen strukturieren. Ansonsten wäre es ineffizient für uns, alle diese Daten in derselben Tabelle zu speichern. Und deshalb teilen wir diese Tabellen auf, oder deshalb teilen wir die Daten eher in diese verschiedenen Tabellen auf. Denn sonst würden wir einen wirklich großen Tisch bekommen. Denn stellen Sie sich vor, wenn wir unser Ereignisprotokoll und für jedes einzelne Ereignis haben, speichern wir auch alle Informationen über den Benutzer sowie die Informationen über das Ereignis selbst. Das bedeutet, dass jeder einzelne Datensatz viele Duplikate hat, da sich die Benutzerinformationen nicht ändern werden und sich die Informationen über das Ereignis nicht ändern werden. Eine bessere und effizientere Methode, dies zu strukturieren, besteht darin das Ereignisprotokoll und alles, was benötigt wird , das für dieses Ereignisprotokoll, das sich ändern wird, nicht relevant ist. Und Informationen, zum Beispiel, über den Benutzer, können in der Tabelle userinfo gespeichert werden. Und alles, was wir im Ereignisprotokoll brauchen, ist, wer das Ereignis gemacht hat. Aber wenn Sie mehr über den Benutzer erfahren möchten, dann können wir unseren Fremdschlüssel haben, die Benutzer-ID in der Ereignisprotokolltabelle, die auf den Primärschlüssel, die ID und die Benutzer-Info-Tabelle verweist . Und so können wir dort im Wesentlichen eine direkte Suche bekommen. Und für jeden Datensatz, wenn wir wollen, dann können wir mehr Informationen über den Benutzer und dann dasselbe über die Ereignisse bekommen. Auf diese Weise können wir Fremdschlüssel verwenden, um Referenzen zwischen Tabellen zu erstellen und sie miteinander zu verknüpfen. Jetzt haben wir über den Primärschlüssel gesprochen, indem wir jede Tabelle zurückhalten, was bedeutet, dass der Wert und der Primärschlüssel in jeder Zeile eindeutig sein müssen, müssen für jeden Datensatz eindeutig sein. Aber Sie können tatsächlich auch zusätzliche Einschränkungen haben. Zum Beispiel, eine andere Einschränkung, die wir tun möchten, ist, dass wir OK sagen wollen, das E-Mail-Feld in der Tabelle userinfo muss auch eindeutig sein. Jetzt wird es die Person nicht eindeutig identifizieren, aber wir wollen, dass sie für jede Person einzigartig ist. So können wir einen Primärschlüssel haben, zum Beispiel die Benutzer-ID. Und dann haben wir ein anderes Feld, zum Beispiel die E-Mail. Aber wir wollen auch sicherstellen, dass die E-Mail-Spalte selbst eindeutig ist. Und so können wir zusätzliche Einschränkungen auf einen Tisch setzen, um zum Beispiel zu sagen, dass die E-Mail eindeutig sein muss. Oder vielleicht, wenn Sie eine andere Plattform haben, auf der Sie sich über verschiedene Regionen anmelden können und Sie einen Namen haben und verschiedene Regionen haben, dann können Sie sagen, dass der Name oder der Benutzername, den eine Person verwenden möchte, in jedem Region. So können Sie eine Kombination aus dem Namen und der Regionskombination müssen eindeutig sein. So können Menschen den gleichen Benutzernamen in verschiedenen Regionen haben. Aber in jeder Region darf jede Person nur einen Benutzernamen haben. Beispielsweise dürfen die Benutzernamen nur einmal angezeigt werden. Auf diese Weise können Sie zusätzliche Einschränkungen für Tabellen haben, die über den Primärschlüssel hinausgehen , die ebenfalls Eindeutigkeit erfordern oder auch dazu führen, dass mehr Bedingungen auf die Tabelle gestellt werden. Nun wird dies den Primärschlüssel nicht ersetzen, aber es wird zusätzliche Einschränkungen zusätzlich zu der Einschränkung sein , dass wir den Primärschlüssel haben müssen, dass jeder Wert im Primärschlüssel für alle einzelner Datensatz. Diese Einschränkungen können natürlich gut sein, weil auf diese Weise, wenn Sie MRF, jemand anderes vielleicht ein Konto erstellen will, aber die E-Mails bereits aus irgendeinem Grund verwendet wurden. Und wir können ihnen eine Fehlermeldung werfen und sagen, dass E-Mails bereits verwendet werden. Und wir werden keine Aufzeichnungen erstellen, in denen mehrere Personen die gleiche E-Mail haben. Denn dann, wenn Sie eine E-Mail an unsere Benutzer senden möchten, zum Beispiel, in mehreren verschiedenen Menschen verwenden die gleiche E-Mail aus irgendeinem Grund, und das wird offensichtlich zu Problemen führen. Und wenn es also zusätzliche Einschränkungen gibt, wie viele, entweder durch die Geschäftslogik oder einfach nur Ihr Verständnis dafür, wie alle diese Daten organisiert werden sollten, dann können Sie diese natürlich einfügen oder anstatt Diese Einschränkungen können auf die einzelnen Tabellen gesetzt werden, so dass, wissen Sie, keines dieser Probleme auftritt. Jetzt im Laufe der Zeit, selbst wenn wir unsere Daten in diese verschiedenen Tabellen aufteilen, können Tabellen immer noch sehr groß werden. Beispielsweise kann unser Ereignisprotokoll sehr schnell wachsen , wenn wir viele Benutzer haben, die unsere Plattform nutzen. Und so etwas, was Sie vielleicht hören, ist etwas, das eine Partition genannt wird. Jetzt eine Partition als eine Möglichkeit, dass wir eine Tabelle in kleinere Sub-Chunks aufteilen können. Und so können wir sie an verschiedenen Orten speichern. Dies kann den Speicher effizienter machen, aber es kann auch die Abfrage effizienter machen. Normalerweise erstellen Sie eine Partition nach einer Spalte, die häufig zum Filtern verwendet wird. So ist zum Beispiel ein sehr gebräuchlicher Weg, Daten nach Datum zu partitionieren. Denn oft, wenn Sie eine Abfrage durchführen, zum Beispiel, möchten Sie alle aktiven Benutzer innerhalb der letzten Woche sehen, dann werden Sie abfragen oder besser gesagt, Sie werden nach Datum filtern. Wenn Ihre Tabelle also partitioniert oder vielmehr in verschiedene Segmente aufgeteilt ist, müssen Sie nicht so viele Daten durchlaufen. Sie müssen nur auf die Tabellen verweisen, die tatsächlich die entsprechenden Daten enthalten. Auf diese Weise wird es effizienter für die Lagerung sein, da Sie keinen großen Tisch an einem Ort aufbewahren müssen. Aber es wird eigentlich auch effizienter für die Abfrage sein , da Sie dann nur einen kleineren Teil der Tabelle durchlaufen müssen , um die Ergebnisse zu erhalten, die Sie suchen. Jetzt ist das coole Ding an Partitionen. Beeinflussen Sie nicht wirklich, da die Abfrage oder die Partitionen von der Datenbank selbst erledigt werden. Und es wird all diese Speichersachen für Sie behandeln. Und es wird es effizienter, wenn Sie nach den Spalten filtern, die für die Partitionen verwendet werden. Aber wenn Sie alle Daten auf der Tabelle erhalten möchten, können Sie immer noch, obwohl die Tabelle partitioniert wird, Sie können immer noch alle Tabellen abfragen, wenn Sie möchten, oder Sie können die gesamte Tabelle abfragen, die über verschiedene Standorte. Obwohl Partitionen unsere Tabellen aufteilen , um sie effizienter zu machen. Und sie können unsere Anfragen effizienter machen, wenn wir die entsprechenden Filter verwenden, es wird immer noch keine anderen negativen Auswirkungen auf Sie haben oder Sie werden es nicht einmal wirklich bemerken, außer den möglicherweise positiven Effekten , die du daraus bekommst. Und so sind Petitionen daher extrem cool, weil sie die Dinge so viel effizienter machen. Aber sie nicht, Sie müssen nicht wirklich mit ihnen auf andere Weise interagieren , außer sie zu Ihrem Vorteil nutzen. Jetzt gibt es auch andere Möglichkeiten, wie relationale Datenbanken oder Tabellen entworfen werden können, um die Abfrage effizienter zu gestalten. Und das ist durch das Setzen von Indizes oder eine Einstellung zusätzlicher Indizes. wir zum Beispiel an, wir fragen oft nach Ereignissen. Möglicherweise möchten wir für jedes Ereignis einen zusätzlichen Index einrichten. Und auf diese Weise wird unsere Datenbank tatsächlich verfolgen, welcher Datensatz zum Beispiel welche Ereignis-ID hat. Jetzt wird die Indizierung mehr Speicher erfordern. Also offensichtlich möchten Sie nicht jedes einzelne Ding indizieren , weil Sie dann all das im Auge behalten müssen. Aber in der nächsten Sache auf den rechten Spalten können die Abfrage viel effizienter machen , da Sie jetzt eine schnelle Nachschlagetabelle haben. Anstatt die gesamte Datenbank zu durchsuchen und alle Datensätze zu finden, können Sie stattdessen grundsätzlich auf diese Nachschlagetabelle verweisen und Ihnen mitteilen, welche Datensätze Sie wollen. Daher erfolgt die Indizierung normalerweise für die Spalten, die sehr oft zum Filtern verwendet werden. Und es kann Abfragen viel effizienter machen. Jetzt können Sie immer noch alle normalen Dinge tun, ohne die Indexspalten zu filtern. Und das nächste ist nur eine andere Möglichkeit für die Datenbankdesigner, die Abfrage der Tabellen noch effizienter zu gestalten. Und so wird es normalerweise sein, dass die Spalten , die sehr oft für die Filterung verwendet werden, Index sein werden. Und so wird das die Abfragen viel effizienter machen. Wenn Sie also wissen, welche der Spalten indiziert sind, sollten Sie beim Filtern am besten nach diesen Spalten filtern. Und dann müssen Sie in den nachfolgenden Abfragen, die Sie ausführen, bereits viel weniger Datensätze durchlaufen , da Sie die Größe Ihrer Tabelle bereits reduziert haben , indem Sie die Filterung durchführen. Und so ist die Indizierung, genau wie die Partitionierung, etwas, das uns im Grunde nur positiv als Abfrage beeinflussen kann oder weil wir sie nicht verwenden müssen. Aber wenn wir Indizes und Partitionen von Tabellen richtig verwenden, dann kann es auch wirklich die Leistung unserer Abfragen verbessern. Nun, etwas anderes, das Sie vielleicht auch als Tabellenbeziehungen hören. Es gibt also verschiedene Möglichkeiten, wie Tabellen mit anderen Tabellen in Verbindung gebracht werden können. Eine dieser Wege als Eins-zu-Eins-Beziehung. Nun bedeutet eine Eins-zu-Eins-Beziehung, dass ein Datensatz in einer Tabelle einem Datensatz in einer anderen Tabelle entspricht, aber er muss nur 11 Datensätze in dieser anderen Tabelle entsprechen muss nur einem Datensatz in der ursprünglichen Tabelle entsprechen. Sie haben also zwei Tabellen, wenn sie durch eine Eins-zu-Eins-Beziehung verwandt sind, als eine Zeile in jeder Tabelle einer und nur einer Zeile in der anderen Tabelle entspricht. Als nächstes haben wir eine Eins-zu-Viele-Beziehung. Ein 1:n-Wert bedeutet, dass eine Zeile in einer Tabelle mindestens vielen Zeilen oder mehreren Zeilen entspricht. Und noch einen Tisch. Und mehrere Zeilen in dieser anderen Tabelle können nur einer Zeile in der ursprünglichen Tabelle entsprechen. So zum Beispiel, oder userinfo und unser Ereignisprotokoll sind durch eine 1:n-Beziehung verwandt, eine Zeile und unsere UserInfo kann vielen Zeilen und dem Ereignisprotokoll entsprechen, da der Benutzer mehrere Ereignisse machen kann. So können wir mehrere Datensätze haben, die alle die gleiche Benutzer-ID haben. Aber jeder dieser Datensätze verweist nur auf eine Zeile oder einen Datensatz in unserer userinfo-Tabelle. Und die Ereignisinformationen und das Ereignisprotokoll haben die gleiche Beziehung. Schließlich können wir auch eine Viele-zu-Viele-Beziehung haben, was bedeutet, dass mehrere Datensätze in einer Tabelle einem Datensatz in einer anderen Tabelle entsprechen können. Und mehrere Datensätze in dieser anderen Tabelle können einem Datensatz in der ursprünglichen Tabelle entsprechen. 18. 16AliasingandOrderHB: Manchmal, wenn wir Abfragen ausführen oder wenn wir versuchen, bestimmte Spalten zu entfernen, referenzieren bestimmte Tabellen. Die Namen können sehr lang werden. Eine Sache, die ich jetzt betrachten möchte, ist, Aliase für Namen zu verwenden , damit wir die Namen, die wir in unseren Abfragen verwenden, verkürzen können. Werfen wir einen Blick auf den Mitarbeitertisch. Ich habe es hier schon geöffnet. Wir können durch die verschiedenen Spalten blättern, die uns zur Verfügung stehen. Und lasst uns hier einfach drei Spalten herausnehmen. Nehmen wir den Vornamen, den Nachnamen heraus , und lassen Sie uns auch ihre E-Mail herausnehmen. Also werden wir sagen, wählen Sie Vornamen und dann werden wir Nachnamen wählen. Und wir werden auch die E-Mail aus der Mitarbeitertabelle auswählen. Ich habe recht. Und so werden wir einfach unser Semikolon hier setzen. Und lassen Sie uns wieder unsere Ergebnisse begrenzen. Aber lassen Sie uns auch etwas Struktur in hier einfügen. Also r von Anweisung wird auf einer neuen Zeile sein. Unser Limit wird auf einer neuen Zeile liegen, und jede unserer Spalten wird auch auf einer neuen Zeile stehen. Dies wird es nur lesbarer als die Abfrage machen, vielleicht ist es größer. Und lassen Sie uns natürlich auch eine Nummer hier setzen, wenn wir unsere Aussage einschränken. Also, wenn wir das ausführen, können wir hier sehen, das sind unsere Ergebnisse. Und Sie werden feststellen, dass wir in diesem Fall immer noch die Anführungszeichen um den Tabellennamen setzen müssen, da ich den Tabellennamen hier nicht aktualisiert habe. Und unsere Spalte erfordert immer noch Anführungszeichen. Jetzt, wenn unsere Spalten ohne Anführungszeichen erstellt werden, können wir sie immer noch verwenden, um keine Spaltennamen zu kennen, aber es ist nicht notwendig. In diesem Fall. Es ist eigentlich notwendig für uns, weil es mit den Anführungszeichen erstellt wurde. Und wenn wir uns erinnern, wenn wir diese wegnehmen, werden wir auf ein Problem stoßen, weil unsere Tabelle mit Anführungszeichen erstellt wurde. Dennoch ist die Verwendung von Anführungszeichen um Spaltennamen eigentlich ziemlich nett, weil es viel einfacher ist zu sehen, was die Spalte oder welche sie genannt werden und welche andere Dinge sind. also nicht wirklich schlecht, Anführungszeichen um Spaltennamen zu halten, aber es tut, und es sind auch Kieran-Tabellennamen, aber es wird ein wenig mühsam für Benutzer auf zwei Ammoniums. Also, wenn Sie das tun wollen, können Sie natürlich, wie wir in den vorherigen Lektionen gesehen haben, einfach den Tabellennamen hier ändern und dann müssen Sie die Anführungszeichen nicht mehr verwenden. Also, wie können wir einige Aliase zu oder Spalten hinzufügen? Nehmen wir zum Beispiel an, wir möchten, dass unsere Ausgabespalte nicht FirstName genannt wird, sondern wir wollten ihr etwas anderes geben. Nehmen wir zum Beispiel an, wir wollen nur die Ausgabespalte hier verwenden, um zuerst zu sein. Und wir wollen, dass unser Nachname zuletzt genannt wird. Und wir wollen, dass die E-Mail als E-Mail bleibt, damit wir sie nicht ändern werden. Also, wenn wir dies ausführen, können wir hier sehen jetzt unsere Ausgabe ist die erste und letzte, und unsere E-Mail ist gleich geblieben. So können wir hier sehen, können wir Aliase zu unseren Spaltennamen zuweisen, und das wird sie tatsächlich in den resultierenden Antworten ändern, die wir erhalten haben. Und später, wenn die Abfragen größer werden, können wir dann auch referenzieren oder Tabellennamen mit den Aliasnamen, die wir ihnen hier zuweisen, anstatt den vollständigen Namen zu verwenden. Aber es ist nicht nur für Spalten, die wir Aliase zuweisen können, wir können es auch für Tabellen tun. Um also einen Alias für eine Tabelle zuzuweisen, legen wir einfach ein Leerzeichen hier ein. Und dann würden wir einfach den Alias setzen, den wir verwenden möchten. Zum Beispiel, wenn wir für Mitarbeiter, die verwendet werden können , Abkürzung wollen MP. Und das bedeutet, dass wir jetzt auch MP verwenden können, um Mitarbeiter zu referenzieren. Ein Ort, an dem Sie das tun können, ist beispielsweise manchmal, wenn Sie mit mehreren Tabellen in derselben Abfrage zu tun haben, und vielleicht sind einige der Spalten die gleichen Spalten in mehreren verschiedenen Tabellen. Sie möchten sicherstellen, dass Sie in der rechten Tabelle auf die rechte Spalte verweisen. So wie wir sahen, als wir aus einer Tabelle auswählten und wir gaben den vollen Weg zum Tisch. Wir können dasselbe für die Säulen tun. So zum Beispiel können wir dann unsere Tabelle und hier referenzieren, und wir können m Punkt Vorname sagen. Sie können m Punkt Nachname sagen. Und wir können sagen, m dot email. Und wenn wir das ausführen, sehen wir, dass es das läuft. Wir sehen also, dass sich unsere Ergebnisse nicht ändern werden. Aber die Art und Weise, wie wir unsere Abfrage schreiben, funktioniert , weil wir jetzt Dinge anders referenzieren. So können wir hier sehen, so geben wir Aliase zu unseren Spaltennamen mit dem as Schlüsselwort. Aber wenn wir einen Alias zu einem Tabellennamen geben wollen, können wir einfach ein Leerzeichen setzen, nachdem wir die front-Anweisung hier im Tabellennamen haben. Und dann setzen wir den Alias, den wir dem Tabellennamen geben möchten. Und das lässt uns nur diesen Alias in unserer Abfrage verwenden , so dass wir auf diese Tabelle verweisen , anstatt den vollständigen Tabellennamen ausschreiben zu müssen. Natürlich mag es in diesem Fall ein wenig unnötig erscheinen , nur weil wir die Spalten bereits so extrahieren können. Aber wenn Sie mehrere verschiedene Tabellen in der gleichen Abfrage haben, kann es wirklich nett sein. Um sicherzustellen, dass, wenn es verschiedene Spalten gibt, sind identische Spalten in den verschiedenen Tabellen, die Sie auf die rechte Spalte aus der rechten Tabelle referenzieren. Und so können wir dann auch die Kurzschrift aus der Tabelle verwenden, die wir verwenden. Und wir können es zum Beispiel verwenden, um auf die Spaltenattribute innerhalb zuzugreifen, um sicherzustellen, dass wir auf die Spalte von dieser spezifischen Tabelle zugreifen, die eine Abkürzung für diese Tabelle ist hier. Nun eine andere Sache, die ich auch übergehen möchte, ist die Bestellung von Ergebnissen. Im Moment ist die Art und Weise, wie unsere Ergebnisse zurückgegeben werden, nur durch die Art und Weise, wie sie hier eingefügt werden. So können wir sehen, dass wir die Bestellung hier haben. Und genau so werden sie uns hier zurückgegeben. Aber manchmal wollen wir tatsächlich Dinge bestellen, entweder als Teil der Abfrage bestellen und dann später etwas anderes tun oder einfach nur die endgültigen Ergebnisse sortiert haben. Um das zu tun, werden wir die Order BY-Anweisung mit 1D hier verwenden. In Ordnung, so dass die Reihenfolge BY wir jetzt in die Spaltennamen oder die Spaltenposition setzen können. Wir schauen uns beides an und dann können wir nach denen bestellen. Nehmen wir an, wir wollen zuerst nach dem Vornamen und dann nach dem Nachnamen bestellen. Und dann wollen wir unsere Ergebnisse zurückgeben. Und wir wollen in aufsteigender Reihenfolge sortieren, damit alles, was am niedrigsten ist, zuerst sein wird und dann in zunehmender Reihenfolge gehen. Also, um zuerst nach dem FirstName zu bestellen, können wir dann zuerst hier einfügen, was in diesem Fall auf den Spaltenalias verweisen wird , den wir hier oben verwendet haben. Dann werden wir bis zum letzten Mal bestellen. Und jetzt wollen wir auch sagen, dass beide in aufsteigender Reihenfolge angeordnet werden sollten, was eigentlich der Standard sein wird. Aber lassen Sie es uns zuerst so laufen. Und dann werden wir speziell die aufsteigende Reihenfolge festlegen. Also führen wir diese Abfrage aus. Und wir können sehen, dass wir jetzt in einer aufsteigenden Vornamen-Reihenfolge zuerst bestellen, und dann, falls es einen Zeit-Vornamen gibt , der in diesem Fall nicht so aussieht, als ob es für sie gibt und den Nachnamen für die Bestellung verwenden. Um dies zu überprüfen, können wir auch in unseren Tisch gehen, der eigentlich ziemlich klein ist, wie Sie sehen können. Und wir können hier auch einfach auf die Bestellung nach Vornamen klicken. Und wir werden sehen, dass wir die gleiche Bestellung bekommen, wie wir hier drüben sind. Also wieder, die order BY-Anweisung ist die Reihenfolge, in der wir die Spalten bestellen möchten. Also zuerst werden wir nach der ersten Spalte hier sortieren, die unser Alias für die FirstName-Spalte ist. Falls es ein Unentschieden gibt, verwenden wir dann diese letzte Spalte, die unser Alias für die Nachnamensspalte ist. In diesem Fall haben wir keine Bindungen, also tut es gar nichts. Und danach gibt es keine spezifische Bestellung, die wir verwenden. Es geht also, falls es mehr Bindungen gibt, einfach zurück an den Rand, die natürliche Reihenfolge der Daten in unserer Tabelle. Nun, um explizit anzugeben, dass wir aufsteigende Reihenfolge verwenden möchten, können wir ASC hier setzen, und wir können ASC hier setzen. Damit wir das wieder ausführen können. Jetzt werden sich unsere Ergebnisse nicht ändern, da es auch standardmäßig ASC ist. Aber Sie können nach jeder Spalte sehen, die wir in dieser Reihenfolge BY-Klausel hier haben, können wir auch die Reihenfolge angeben, die wir tun möchten, entweder aufsteigend oder absteigend. Also, wenn wir zuerst den Vornamen in absteigender Reihenfolge bestellen wollen, und dann im Falle von Bindungen, verwenden Sie den Nachnamen in aufsteigender Reihenfolge. Wir können absteigend wie folgt angeben, und dann können wir den Nachname so aufsteigend lassen. Wenn wir dies ausführen, ändern sich jetzt unsere Ergebnisse weil wir zuerst den FirstName verwenden, und wir sortieren in absteigender Reihenfolge, was bedeutet, dass die höchste zuerst für alphabetische große Urnen näher an Zed. Und dann im Falle von Bindungen, in diesem Fall gibt es derzeit keine, wir werden den Nachnamen verwenden. Also in diesem Fall wird wieder der Nachname nicht verwendet, aber die Reihenfolge wird zuerst durch Vorname Reihenfolge gehen, absteigend, also höchste zuerst und dann Lois ganz unten. Und im Falle von Bindungen, verwenden Sie den Nachnamen und sortieren Sie dann die Spalten, die Bindungen auf Vorname, Nachname, aber hier verwenden Sie eine aufsteigende Reihenfolge. Und wie Sie sehen können, können wir die spezifische Reihenfolge angeben, die wir für jede einzelne Spalte verwenden möchten , die wir BY bestellen möchten. Und dann können wir auch durch, zum Beispiel, und die E-Mail Spalte hier bestellen . Wenn wir wollen. Wir können auch tatsächlich BY-Spalten bestellen, die wir nicht auswählen solange sie in der ursprünglichen Tabelle in dieser von Anweisung sind. Selbst wenn wir sie nicht zur Visualisierung auswählen, können wir tatsächlich nach ihnen bestellen, weil sie in der ursprünglichen Tabelle sind. So können wir hier bestellen, zum Beispiel, nehmen wir das Geburtsdatum. So können wir nach Geburtsnamen bestellen und es wird standardmäßig aufsteigend Reihenfolge. Damit wir das ausführen können. Nun, wir können sehen, dass wir nicht wirklich die Geburt an Spalten haben, also können wir nicht wirklich überprüfen, ob dieses MOOC immer noch nach dem Geburtsdatum sortiert ist, auch wenn wir es nicht in unserer endgültigen Select-Anweisung hier verwenden. Schließlich ist eine andere Syntax Sache, die wir verwenden können anstatt die Spaltennamen oder Aliase zu setzen. So haben wir zum Beispiel hier den Spaltennamen und zuvor den Spaltenalias wiederverwendet. Erster. Wir hätten genauso gut den Vornamen, den wahren Spaltennamen hier verwenden können. Sie können sehen, dass beide funktionieren würden, aber wir können auch zuerst verwenden, wie wir dies jetzt in absteigender Reihenfolge getan haben und dann zuletzt verwenden. Und lassen Sie uns das auch sagen, oder lassen Sie uns das in aufsteigender Reihenfolge behalten. Also hier verwenden wir die Aliase. Wir können die Namen benutzen. Und lassen Sie uns das einfach nochmal ausführen, um es zu zeigen. Aber etwas anderes, das wir auch tun können, ist, dass wir die Nummer für die Spalte verwenden können , in der sie in unserer select-Anweisung erscheint. Nehmen wir an, wir wollen zuerst nach dem ersten hier und dann zweiten Pi oder Nachname bestellen . Wir können tatsächlich auch diejenige verwenden, was bedeutet, dass wir zuerst nach der ersten Spalte in unserer select-Anweisung indizieren. Und dann zwei bedeutet die zweite Spalte in unserer select-Anweisung. Also das ist wieder nur eine weitere Kurzschrift, die wir tun können , falls ich ihn Namen nenne, zu lange. Wir können unseren Code sauberer, sauberer und schneller schreiben. So können Sie dies ausführen und wir können sehen, dass wir die gleichen Ergebnisse erhalten, weil es sich nicht ändert. Wir können hier eine haben, die referenziert wird, gehen auf die erste Spalte verweisen, die wir hier auswählen. Wir können den Alias hier setzen, das ist der Alias, den wir dieser Spalte zugewiesen haben. So können wir das ausführen und sehen. Oder wir können auch den vollständigen Spaltennamen setzen. Alle diese sind gleichwertig. Natürlich ist die Verwendung des Alias meiner Meinung nach am einfachsten, weil wir deshalb Aliase zuweisen. B kann natürlich auch den vollständigen Spaltennamen oder die Zahlenversion davon verwenden, je nach Wunsch. Die Zahlen, die ich denke, sind eine schöne Abkürzung, aber manchmal können sie verwirrend sein, denn dann muss man wieder nach oben schauen und man muss sehen, was die erste Spalte ist und was die zweite Spalte ist. Und falls Sie etwas wie 10 Spalten auswählen, müssen Sie tatsächlich anfangen, herunterzuzählen, um sicherzustellen, dass Sie die rechte Spalte referenzieren. Das kann also schön für Abkürzung sein. Aber natürlich haben sie alle ihre Kompromisse. Persönlich bevorzuge ich den Alias am meisten, aber wirklich liegt es an Ihnen, was Sie die am besten lesbaren Abfragen machen können. Nun, wie wir hier auch an der Bestellung sehen können, können wir auf zusätzliche Bestellvorfälle verketten. Zum Beispiel können wir sagen, okay, wir wollen zuerst nach der ersten, der ersten Spalte hier, dann nach der zweiten Spalte hier, da wir jemals ihre 2s wollten. Und dann wollen wir zum Beispiel nach dem Geburtsdatum bestellen , das hier nicht einmal in unseren ausgewählten Spalten enthalten ist. Und dann können wir das hier setzen. Und sagen wir hier, wir wollen absteigend bestellen. Und dann wollen wir vielleicht per E-Mail bestellen. Also können wir hier eine Drei setzen, wenn wir wollen. Oder wir können E-Mail senden, was auch immer wir wollen. So können wir sehen, und vielleicht wollen wir das aufsteigend setzen, damit wir sehen können, können wir verschiedene Ordnungen miteinander verketten, indem wir einfach alles durch Komma trennen. Und dann wird die Reihenfolge, die als erstes wählen wird, diese Loslösung sein, sie wird dies verwenden und auf TI für beide, es wird diese Löse für alle drei von ihnen verwenden, es wird dies und so weiter verwenden. Und so können Sie für jede Spalte sehen, können wir auch angeben, ob wir absteigende oder aufsteigende Reihenfolge tun wollen. 20. 18ConditionalFilterungGroup,: Also haben wir gerade gesehen, wie wir einige grundlegende Filterung durchführen können, indem wir nach Gleichheit suchen. Suchen nach kleiner oder größer als oder kleiner als gleich oder größer oder gleich. Aber was ist, wenn wir alle finden wollen, zum Beispiel hier auf der Komponisten-Kolumne, alle Aufzeichnungen, wo Angus Young, einer der Komponisten. Derzeit können wir das nicht tun, denn wenn wir zum Beispiel schauen, wo Komponisten Angus Young gleich sind, wird es uns diesen Wert nicht geben, weil er nicht genau gleich ist. Es gibt auch andere Komponenten. Und so können wir derzeit nicht die Gleichheit verwenden, um all diese Datensätze zu finden , weil es hier auch andere Elemente gibt, aber es gibt andere Dinge, die wir tun können. Sehen wir uns das jetzt an. zunächst Lassen Sie unszunächstunsere Select-Anweisung nochmals schreiben, wählen Sie alle Spalten aus der Spur aus. Und lassen Sie uns unsere Ergebnisse jetzt begrenzen. Und wieder, hier werden wir die Where Aussage haben. Jetzt wollen wir finden, wo Komponist, und wir wollen finden, wo Angus Young im Komponisten ist. Was wir also tun können, ist, dass wir das Schlüsselwort „like“ verwenden können. Und so werden wir sagen, wo der Komponist ist ist. Und dann haben wir hier einen Text, also können wir Angus Young sagen. Aber in diesem Fall würden wir immer noch nach exakten Übereinstimmungen suchen. Aber es gibt einige Charaktere, die wir setzen können, dass im Grunde etwas Raum geben, um irgendwie zu erweitern. Wenn wir also einen Prozentsatz verwenden, bedeutet das, wo diese Komponente hier drin ist. Aber das Prozent bedeutet, dass wir nach diesem Punkt alles haben können. Und der prozentuale Vorsprung würde auch bedeuten, dass wir irgendetwas vor uns haben. So können wir mehrere Charaktermengen vor sich haben. Und dann bedeutet der Prozentsatz genau so viele Charaktere hier. Aber das Wichtigste ist, dass irgendwo in uns genau Angus Raum jung passen , so. Wenn wir die Person davor wegnehmen, wäre es die Reihe müsste mit Angus Raum jung beginnen. Und danach können wir alles haben. Und wenn wir zum Beispiel den Prozentsatz und die Grenze hätten , dann müssten wir im Grunde mit Angus Space jung enden. Also, um sicher zu sein, können wir es so verwenden, was bedeutet, dass es alles vor und alles dahinter sein kann. Aber irgendwo in unserer Aufzeichnung müssten wir genau dieses Stück Text hier sehen. Also lasst uns weitermachen und das laufen. Und so können wir sehen, dass alle Zeilen hier Angus Young enthalten. Und lassen Sie uns wegnehmen oder Limit-Anweisung hier und eine erneute dies und Scrollen durch ein Ergebnis, wir können sehen, jetzt haben wir mehr Ergebnisse als alle Angus Young enthalten. Und in all diesen Fällen ist Angus Young der erste Teil dieses Eintrags hier. Also könnten wir technisch auch dieses Prozentsymbol hier wegnehmen. Und wir würden immer noch das Ergebnis bekommen, denn es wird nie etwas vorne sein, zumindest in diesem Fall, aber das konnten wir uns vorher nicht sicher sein. Und wenn du sicher bleiben wolltest, können wir das hier lassen, nur für den Fall, dass später ein Datensatz eingetragen wird, in dem Angus Young nicht der Vorname ist. Aber was passiert, wenn wir das letzte Prozentsymbol hier wegnehmen? Nun, jetzt werden wir nichts zurückbekommen, weil keine der Datensätze mit Angus Young enden und wir nicht mehr die Möglichkeit lassen, danach andere Charaktere zu haben. Also müssen wir in diesem Fall sicherstellen, dass wir danach andere Zeichen haben. Nur um sicherzustellen, dass es Fälle gibt, in denen die Angus Young-Zeichenfolge im Inneren enthalten ist, aber es gibt auch Platz für andere Werte, die hier in demselben Element enthalten sind. Nun gibt es auch einen anderen wilden Charakter, den wir verwenden können. Anstatt den Prozentsatz zu verwenden , der grundsätzlich Platz für eine beliebige Anzahl von Zeichen verliert, können wir stattdessen etwas wie einen Unterstrich setzen. Nun bedeutet der Unterstrich, dass es hier ein beliebiges Zeichen geben kann. Lassen Sie uns zum Beispiel dieses y durch einen Unterstrich ersetzen. Und wenn wir das ausführen, sehen wir, dass wir immer noch das gleiche Ergebnis bekommen, weil wir suchen, wo wir Angus-Raum haben. Und dann bedeutet dieser Unterstrich hier, dass jedes Zeichen, jedes einzelne Zeichen hier sein kann, nicht auch, es muss genau eins sein. Und es ist in diesem Fall, wir haben das y hier, und dann haben wir die OU und g. Wenn wir den Platz hier wegnehmen, würde es nicht mehr funktionieren. Denn jetzt haben wir hier keinen einzigen Charakter mehr. Aber wir könnten hier ein Prozent-Symbol setzen, was bedeutet, dass es eine beliebige Anzahl von Zeichen kann auch zwischen hier sein. Wir müssen nur irgendwann Angus haben. Und danach müssen wir es haben. An diesem Punkt. So können Sie sehen, dass es verschiedene Möglichkeiten für uns gibt. Einer von ihnen wird der Unterstrich sein, uns ersetzen lässt, sondern die Möglichkeit haben, ein freies Zeichen zu haben. Und dann haben wir die Prozentsätze, die uns die Möglichkeit haben, so viele Zeichen wie möglich zu haben. Während wir das alles tun, ist die Kapitalisierung eigentlich sehr wichtig. Wenn wir dies geändert, um Kleinbuchstaben, würde nicht mehr funktionieren, weil wir nicht mehr genau diese Übereinstimmung haben. Was wir jedoch tun können, ist, dass wir hier eine andere Aussage verwenden können, die ich mag, was bedeutet, dass es unempfindlich gegenüber Fällen ist. In diesem Fall ist es also egal, ob Groß- oder Kleinbuchstaben vorhanden sind. Und schaut nur an, ob wir diese Textübereinstimmung haben und es Fälle nicht berücksichtigt, es ist Groß- und Kleinschreibung nicht zu beachten. Und so können wir in diesem Fall sehen, es funktioniert wieder, weil wir noch den Text hier haben. Aber diesmal waren die Verwendung der KI gleichermaßen in der Groß- und Kleinschreibung nicht beachtet. Also ignorieren wir, ob alles Groß- oder Kleinbuchstaben ist. Und wir bekommen nur die Übereinstimmung, wo der Text der gleiche ist. Und Sie können sehen, dass wir das G hier zum Beispiel kapitalisieren können. Und wir werden immer noch das gleiche Spiel bekommen. Denn alles hier drin oder die Übereinstimmung, die wir von hier nach hier machen , wird Groß- und Kleinschreibung nicht beachtet. In einigen Fällen suchen wir möglicherweise nicht nach Textübereinstimmungen wie diesem, aber wir würden nach einer bestimmten Anzahl von Werten suchen. Werfen wir zum Beispiel einen Blick zurück auf unsere Spuren hier. Vielleicht wollen wir alle Tracks, bei denen die Album-ID entweder eins ist oder die Album-ID vier ist. Also suchen wir nach zwei Fällen. Wir wollen beide Alben 14 oder alle Tracks, die von Al my d1 und Album-ID für sind. Also, wie können wir das tun? Nun, zuerst werden wir Ihre Kolumne hier wieder ändern. Wir werden sagen, wo Album ID. Und wieder müssen wir hier die Anführungszeichen verwenden, da unsere Tabelle erstellen mit den Anführungszeichen für die Spalten definiert wurde. Normalerweise, wie gesagt, sind die Anführungszeichen optional. Aber in diesem Fall, weil unsere Tabelle mit den Anführungszeichen zu finden war, müssen wir sie verwenden. Und jetzt suchen wir nach den Fällen, in denen sich die Album-ID befindet. Und jetzt das Album Ideen, die wir für eine suchen 14. Wir sagen also, wir suchen nach allen Spalten der Tracks hier und nach allen Datensätzen aus den Tracks, in denen diese Datensätze die Album-ID-Spalte haben , wo der Wert in eins oder vier liegt. Also, wenn wir dies ausführen, können wir hier sehen jetzt alle Datensätze, die wir zurückgegeben haben, haben Album-ID, entweder eins oder vier. Und wir können auch tun, zum Beispiel, eine zu informieren. Und wie Sie sehen können, können wir das so weit erweitern, wie wir möchten. Aber dann gibt es auch einige Fälle, in denen wir vielleicht eine Reihe von Zahlen auswählen möchten. Nehmen wir zum Beispiel an, wir wollen alle Alben mit Album-ID eins bis fünf finden. So können wir zum Beispiel 12345 so machen und dies ausführen, was uns unsere Ergebnisse geben wird. Nun, das funktioniert, aber es ist nicht optimal, weil wir all das austippen müssen. Und es funktioniert immer noch, weil wir fünf Zahlen hier haben. Aber stellen Sie sich vor, wir hatten wie 500 oder sogar mehr oder sich vorstellen, dass wir nach einem Datumsbereich suchen. Nichts davon würde wirklich funktionieren. Und es gibt einen besseren Weg, das zu tun. Nun, eine dieser Möglichkeiten, die wir bereits vorher gesehen haben, die größer als gleich oder kleiner als oder gleich ist. Und dann können wir die Bedingungen miteinander verketten, was wir bald lernen werden. Aber es gibt tatsächlich eine andere Aussage, die wir mit gerade zwischen angerufen tun können. Wir können also sagen, dass wir nach den Fällen suchen, in denen die Album-ID zwischen 1, keine Klammern hier und fünf liegt . Also wieder, wir werden alle Spalten aus der Spurtabelle auswählen. Und wir werden nach den Aufzeichnungen filtern, wo die Aufzeichnungen hier, wo eine Rose hier eine Album-ID haben, die zwischen 15 liegt. dies ausführen, können wir sehen, dass alle unsere Werte hier zwischen 15 liegen, einschließlich an beiden Enden. Und jetzt, wie Sie vielleicht schon erraten haben, genial wegen des Vorschlags, den wir von unserem SQL-Editor hier bekommen haben. Wir können auch nicht zwischen, was bedeutet, dass wir nur auf die Aufzeichnungen schauen, wo die Werte sind. Die Album-ID liegt nicht zwischen 15. Also, wenn wir dies ausführen, sehen wir, dass alles hier Werte nicht zwischen 15 hat. Und diese NOT-Aussage funktioniert auch für die anderen Dinge, die wir uns angesehen haben. Zum Beispiel, nicht wie. Und dann hier können wir AC, DC machen. Also jeder Ort, an dem der Komponist nicht wie dieser Text hier ist, AC , DC, der uns alle Aufzeichnungen geben wird wo der Komponist nicht diese ac-dc Zeichenkette ist. 21. 19JoiningConditionalsHB: Also jetzt wissen wir bereits eine gute Menge an Filterung. Aber manchmal reicht sogar die Filterung, die wir derzeit kennen, nicht aus. Manchmal müssen wir mehr tun. Manchmal müssen wir bestimmte Filterbedingungen miteinander verbinden , um wirklich die Ergebnisse zu erhalten, die wir wollen. Also, wie können wir das tun? Nun, lassen Sie uns daran mit einem Beispiel arbeiten. Lassen Sie uns versuchen, alle Datensätze hier zu finden, wo unser Komponist gleich AC, DC ist und die Songlänge größer als oder gleich 250 Tausend Millisekunden ist. Also werden wir sagen, alle Spalten aus der Spurtabelle auszuwählen. Wir werden nach den Zeilen filtern, in denen der Komponist. Und jetzt können wir entweder gleich sagen oder wir können das Gleiche hier verwenden. Aber wir werden ein war gleich verwenden, weil wir exakte Gleichheit wollen. Also werden wir sagen, wo die Komponisten gleich AC, DC und die Millisekunden-Spalte mindestens größer oder gleich 250 Tausend Millisekunden sind. Also, wenn wir dies ausführen, können wir sehen, jetzt sind unsere Ergebnisse alle Songs von ac-dc sind alle Chromosomen in dieser Datenbank, wo hier die Millisekunden größer als oder gleich 250 Tausend sind. Wir können dies natürlich auch umschalten und nach weniger als oder gleich 0 suchen, was in diesem Fall ich bin nur einen Datensatz gibt. Wir können sehen, dass wir die und Anweisung hier verwenden können, um einige Filterung zu tun. Aber lassen Sie uns das noch komplexer machen. Nehmen wir an, wir wollen alle Fälle finden in denen die Spuren Millisekunden größer als 250 Tausend ist. Aber wir wollen nur die Songs, bei denen die Bytes kleiner sind als. Wir kamen hierher, drei und dann noch drei. Also haben wir 10 Millionen ist ungefähr so groß wie die Größenordnung, mit der wir arbeiten. Wir wollen also alle Songs finden, bei denen die Bytes weniger als 10 Millionen sind. So können wir hinzufügen, wenn wir wollen. Eine andere Bedingung hier, sagen wir, und wir sind Bytes ist kleiner als oder gleich zehn Millionen. Und jemand kann das laufen lassen. Und so können wir sehen, dass wir diese spezifischen Tracks zurückbekommen. Alternativ, anstatt Verkettung mit und wir können auch verwenden oder Anweisungen. Also lassen Sie uns zum Beispiel nach allen Songs suchen, die entweder gemacht werden, oder wir beginnen mit allen Songs, die entweder von AC, DC oder mindestens 1.050.000 Millisekunden lang sind. Die OR-Anweisung hier bedeutet also, dass wir nach einer dieser Bedingungen suchen. Also lasst uns weitermachen und das laufen. Und wir können hier sehen, dass wir entweder ac-dc haben, in diesem Fall, wie wir hier sehen können, können wir die Zeile finden. Los geht's. Die Millisekunden-Spalte ist weniger als 250 Tausend. Oder in den Fällen, in denen Komponisten nicht ac-dc, alle von ihnen Millisekunden mindestens gleich oder größer als 250 Tausend. So können wir hier sehen, wir haben eine oder Aussage. Nun, was wir auch tun können, das ist cool, ist, dass Sie die Verkettungsbedingungen mit Klammern fortsetzen können. Also lassen Sie uns zum Beispiel nach allen Songs suchen, wo der Komponist entweder ac-dc oder der Track länger als 250 Tausend Millisekunden ist. Bud Es ist Bytes auch kleiner als oder gleich 10 Millionen. Also wollen wir entweder AC, DC oder mindestens 250 Sekunden und weniger als 10 Millionen Bytes. Also eine dieser beiden Bedingungen, aber dann die zweite, die wir müssen. Was wir also tun können, ist, dass wir hier Klammern verwenden können. Und dann können wir sagen, und Bytes ist kleiner als oder gleich 10 Millionen. Und was passieren wird, ist, dass diese Aussage als eine ausgewertet wird. Und es wird mit diesem verglichen werden. Entweder haben wir diese oder wir haben das Ergebnis hier, wo beide Bedingungen erfüllt werden müssen. Sie können also sehen, dass Sie viel mit einer Filterung mit und in der Reihenfolge tun können, sowie mit Klammern, um zu entscheiden, welche Bedingungen miteinander verbunden werden müssen. Nun, natürlich verwenden wir derzeit nur Dinge wie gleich oder größer als gleich oder kleiner als gleich. Aber das wird auch genauso gut funktionieren, wenn wir hier zum Beispiel dergleichen setzen, oder wenn wir dort in eine Reihe setzen, wird alles genauso funktionieren. Wir können die anderen Schlüsselwörter, die wir auch gelernt, in wo Aussagen hier, und auch weiterhin ändern Bedingungen mit den Rudern, Verwendung der unds und setzen Klammern um Bedingungen, die wir als eine Klammer gruppieren wollen oder vielmehr, dass wir uns als eine Einheit gruppieren wollen. Und wir können auch weiterhin Klammern verketten. So können wir hier zum Beispiel eine weitere Klammer setzen und zum Beispiel noch etwas mehr tun, und Bytes ist weniger als 10 Millionen. Oder ich weiß nicht, denken wir an etwas, oder ein Komponist ist ist wie. Und dann lassen Sie uns das in eine neue Linie verschieben, um das sauberer zu machen und es in eine neue Linie zu verschieben. Und der Komponist ist wie Angus Young. Beachten Sie, dass wir hier das Licht benutzen, nicht das Ich mag, also müssen wir das richtige Gehäuse verwenden. Also in diesem Fall, und lassen Sie uns sicherstellen, dass wir die Klammern 2 schließen. Wir suchen entweder dort, wo der Komponist wie ac-dc ist, oder wo die Millisekunden größer oder gleich 250 Tausend sind und unsere Bisse weniger als 10 Millionen sind. Oder die Komponisten wie Angus Young. Also lassen Sie uns dies ausführen, um die Ergebnisse zu sehen. Und was wir hier tun, gehen wir rückwärts. Entweder suchen wir nach dem, zuerst haben wir die Bedingung hier draußen. Also wird alles, was ac-dc ist, hier sein. Aber jetzt, was wir hier haben, ist, okay, wir suchen entweder weniger als oder gleich 10 Millionen Bytes oder der Komponist muss Angus Young darin haben. Und dann, wenn einer dieser beiden wahr ist, müssen wir auch feststellen, dass die Millisekunden größer als oder gleich 250 Tausend sind . So können wir zum Beispiel in diesem Datensatz sehen, wir haben die Bytes größer als 10 Millionen. Aber unser Komponist ist wie Angus Young. So ist dieser Teil der Bedingung erfüllt, was diese oder Aussage wahr macht. Das hier. Das hier ist also wahr. Jetzt brauchen wir diesen und diesen, um wahr zu sein. Was bedeutet, dass unsere Millisekunden größer oder gleich 250 Tausend sein müssen, was wir hier haben. Also haben wir, dieser ist wahr, und dieser ist wahr. Jetzt müssen wir sagen, entweder tragen Sie einen Komponisten wie AC, DC, was falsch ist, oder wo dieses ganze Segment hier wahr war, was nicht der Fall ist. So können wir sehen, dass wir ziemlich komplizierte Logik mit dem Filter hier machen können , indem wir miteinander verketten, sind verschiedene Operationen wie, wie V gleich IR, die ich dazwischen mag, sowie die ands und die ors verwenden und sowie die ands und die ors verwenden und Klammern, um Dinge zu gruppieren, die wir zusammengefasst haben möchten. 22. 20NegatenConditionalsHB: In Ordnung, jetzt haben wir eine Reihe von Filtern gesehen, wo Bedingungen wahr sind. Aber in einigen Fällen wollen wir, dass die Bedingungen nicht wahr sind. Jetzt haben wir das schon gesehen, aber lassen Sie uns noch ein wenig detaillierter betrachten. Gehen wir also zurück zu unserem Track-Tisch hier, lassen Sie uns zunächst einmal allen Fällen suchen, in denen Composer nicht gleich AC, DC ist. Also, was wir hier tun können, können Sie auswählen, wählen Sie einfach alle unsere Spalten aus der Track-Tabelle und bewusst den Komponisten. Und jetzt nicht gleich zu haben, und wir können ein Ausrufezeichen gleich haben. Und dann hier werden wir den Text ac-dc setzen. Das wird uns also alle Aufzeichnungen geben, bei denen der Komponist nicht gleich AC, DC ist, wie wir hier sehen können, keine dieser Datensätze, die CDC enthalten. Und was wir auch hier tun könnten, weil wir hier Text haben. Also könnten wir sagen, nicht wie ACC, was alle Fälle bedeutet, in denen es nicht wie dieser Text hier ist, was uns das gleiche Ergebnis in diesem Fall geben wird. Jetzt können wir auch andere Dinge tun. Zum Beispiel, nicht dazwischen, was wir irgendwie gesehen haben. Also können wir sagen, nicht dazwischen. Und wir wollen sagen, weil in diesem Fall zwischen nicht viel Sinn für die Komponistenspalte macht, da es sich um Text handelt. Also lasst uns die Album-ID verwenden. Wir wollen also alle Datensätze finden, bei denen die Album-ID nicht zwischen 46 liegt. Also, das wird uns alle Platten hier geben, sind Album-ID ist nicht zwischen 46, also nicht vier, nicht fünf, nicht sechs, und alles andere, was wir bekommen werden. Oder wir können hier drin auch nichts tun. Und dann setzen Sie unsere Klammern, was bedeutet, dass unsere Album-ID nicht in 46 ist, was bedeutet, dass sie nicht gleich 46 ist. Also, wenn wir dieses Risiko jetzt gehen, um Album ID fünf zu bekommen , weil wir sie nicht zwischen verwenden, aber jetzt passen wir speziell die Instanzen hier in. So können wir sehen, dass wir die nicht gleich zwei verwenden können, zum Beispiel, um Negation für den Gleichheitsfall zu tun. Und wir können die NOT-Anweisung für einige der anderen komplexeren, wo Methoden, die wir haben, tun. Jetzt können Sie sich vielleicht fragen, na ja, was ist mit dem Gegenteil von größer als gleich? Wie können wir das annullieren? Nun, wir haben bereits eine Aussage für das, was weniger als ist. Also können wir sagen, dass alles, was nicht größer oder gleich ist, kleiner sein wird als. Und alles, was nicht weniger ist als, kann größer oder gleich sein. Und dann können wir das Gleiche bekommen, umgekehrt. Jetzt noch eine Sache, die ich hier hinzufügen möchte, wenn wir nur auf einige unserer vorherigen Ergebnisse für die Zwischenzeit zurückgehen, ist in einigen Fällen, dass wir tatsächlich wollen, um unsere Ergebnisse zu bestellen. Schauen wir uns also die Ergebnisse daraus an. Du hast unsere Album-ID ist nicht zwischen 46. Muss ich noch weiter zurückgehen? Wieder beunruhigt? Ok. Seltsam. Scheint in Ordnung zu sein. Also lasst uns hier alles nach unserer Album-ID bestellen. Also die Reihenfolge BY-Anweisung haben wir bereits gelernt, aber es muss tatsächlich eine bestimmte Reihenfolge zu den Orten geben, an denen wir diese SQL-Anweisungen platzieren. Also SARSA wählen und wir haben die von. In diesem Fall werden wir das Wo haben und die Reihenfolge durch wird danach kommen. So wollen wir zum Beispiel nach Album-ID in absteigender Reihenfolge sortieren, was höchste zuerst bedeutet. Wenn wir dies ausführen, können Sie sehen, dass wir mit der höchsten Album-ID beginnen und in Richtung der niedrigsten gehen. Jetzt ist es wichtig, dass diese Reihenfolge BY nach der where-Anweisung kommt. Denn wenn wir es vor die Where-Anweisung setzen, dann werden wir einen Fehler bekommen, weil, nun, lasst uns das Ganze laufen, weil es nicht dorthin gehört. Das ist nicht die richtige Reihenfolge der SQL-Syntax. Also kommt Dasa nachher. Jetzt auch das Gleiche mit der Limit-Anweisung. Die Limit-Anweisung muss am Ende kommen. Also alles, was wir für diese Reihenfolge BY-Anweisungen gelernt haben, gilt immer noch , weil noch zusätzliche Reihenfolge tun, indem Sie hier Kommas tun. Aber es ist wichtig, dass die Reihenfolge, in der wir diese Befehle ausführen, in dieser spezifischen Reihenfolge ist. In diesem Fall wird es mit select und von der where-Anweisung beginnen, dann die Reihenfolge BY und dann haben wir das Limit, weil, wenn es in einer anderen Reihenfolge ist und es nicht funktionieren wird. 23. 21FilterungNullValuesHB: Jetzt gibt es noch einen speziellen Fall der Filterung, den wir noch nicht angesehen haben. Werfen wir einen Blick auf unseren Komponistentisch hier. Einige dieser Instanzen haben möglicherweise fehlende Werte, die hier als Nullwerte dargestellt werden. Derzeit gibt es also noch keinen wirklichen Weg, wie wir das überprüfen können. Werfen wir einen Blick auf sie. Also lassen Sie uns zunächst alle unsere Spalten aus unserer Truck-Tabelle auswählen, Filtern für die Datensätze, in denen der Composer. Und jetzt wollen wir alles sagen. Wir wollen alle Fälle finden, in denen der Komponist hier null ist. Also, um das zu tun, müssen wir tatsächlich schreiben ist null. Und dann ein Semikolon nur um etwas zu beenden oder SQL-Abfrage hier und dann einen Lauf zu treffen. Und jetzt erhalten wir alle Fälle, in denen der Wert hier in der Composer-Spalte null ist. Nun, das Wichtigste ist, dass wir das hier nicht tun, denn das ist nicht richtig. Wir wollen sicherstellen, dass wir tun, ist null. Das ist die richtige Aussage, die zu verwenden ist. Jetzt zur Negation wird es ziemlich einfach sein und Sie haben dies vielleicht bereits im Codevorschlag gesehen. Alles, was Sie tun müssen, ist zu schreiben IST NICHT null. Und das wird uns alle Fälle geben, in denen der Komponist nicht bekannt ist. Und so wird das wieder funktionieren wie jede andere Konditionierung, die wir hier hatten. Auch in diesem Fall haben wir nur einen speziellen Fall zu verwenden, wenn keine Werte darin enthalten sind. Aber alles andere, was wir über die Where Aussage gelernt haben, bleibt wahr. 24. 22Erstellung 22CreatingNewColumnsAndArithmeticsHB: in dieser Lektion einen Blick darauf werfen, Lassen Sie unsin dieser Lektion einen Blick darauf werfen,wie wir einige Operationen an unseren Spalten durchführen können. Lassen Sie uns hier wieder unseren Track Table öffnen. Und das erste, was wir tun sollten, ist, lassen Sie uns versuchen diese Byte-Spalte stattdessen in Kilobyte zu konvertieren. Also, um das zu tun, werden wir alles hier durch 1024 teilen. Also, wie können wir das tun? Nun, zurück zu unserer Konsole, wir schreiben Auswahl, und dann lassen wir Stern hier als Vorlage für jetzt, aber wir kommen zurück und ändern das in einer Sekunde. Wir wählen Stern aus der Spur. Und lassen Sie uns auch nur unsere Ergebnisse für jetzt auf fünf beschränken, nur für den Fall Art von guter Praxis oder unsere Tabellen jetzt Tubing hier. Aber nur für den Fall, wenn wir Millionen von Zeilen oder etwas hätten, wäre es gut zu testen und nur ein kleines Segment dieser Zeilen zurückzugeben. In Ordnung, also lasst uns vorerst aussuchen und nur die Bytes-Spalte. Und lassen Sie uns es auch zwei Kilobyte konvertieren. Die erste Spalte, die wir herausnehmen wollen, wird Bisse sein. Und die zweite Spalte, die wir herausnehmen möchten, ist wieder die Bytes-Spalte. Aber hier wollen wir es teilen, durch 1024 teilen, um es in Kilobyte zu machen. Also tun Sie dann, wir können tatsächlich einfach den Schrägstrich hier für die Teilung verwenden und die Nummer 1024 eingeben. Und das wird die Werte in dieser Spalte hier durch 1024 teilen. Und dann können wir einen Alias verwenden, um es mehr zu machen, um ihm einen besseren Namen zu geben. So können wir das hier zum Beispiel als Kilobyte speichern. Also lasst uns weitermachen und das laufen. Und wir können hier sehen, hier haben wir die Bytes und hier haben wir die gleiche Menge, aber in Kilobyte statt. Natürlich ist die Divisionsoperation nicht das Einzige, was wir tun können. Wir könnten auch andere Dinge tun, wie, und vielleicht, lassen Sie uns einige neue Spalten dafür erstellen. Also lasst uns unsere Bisse multiplizieren. Kann es zum Beispiel mit zwei multiplizieren. Und hier können wir dies als multiplizierte Bytes speichern, nur um sie unterscheiden zu können. Wir können Subtraktionen machen. Zum Beispiel können wir unsere Pfeifen nehmen und etwas davon abziehen. Und dann können wir hier diese Subbytes für subtrahierte Bytes aufrufen. Und dann lasst uns auch einfach den anderen machen , der eine Ergänzung sein wird. Und hier wird dies unsere hinzugefügten Bytes sein. Also werde ich hier nur ein paar Leerzeichen setzen, um die Formatierung schön zu machen. Also, wenn wir dies ausführen, können Sie hier sehen, gibt es eine Menge von verschiedenen Operationen ist einfache arithmetische Operationen, die wir auf unsere Spalten tun können. So können Sie hier sehen, wir haben alle Standardoperationen, die uns zur Verfügung stehen. Wir können auch andere coole Dinge tun, anstatt nur feste numerische Werte zu verwenden. Wir können auch andere Spalten verwenden. Versuchen wir zum Beispiel, eine neue Spalte zu finden. Das ist die Anzahl der Bytes pro Millisekunde der Songlänge. Also werden wir die Werte in der Byte-Spalte durch die in der Millisekunden-Spalte teilen . Und dann erhalten wir die Anzahl der Bytes pro Millisekunde und die Spur. Um das zu tun, werden wir unsere Bissspalte nehmen und wir werden sie durch die Millisekunden-Spalte teilen. Wir geben diesem einen Alias namens Bytes pro Million. Also Bytes pro Millisekunde. Und wieder, wir können das laufen. Und wir können hier sehen, haben wir verschiedene Werte der Anzahl der Bytes verwendet, um den Song pro Millisekunde Länge des Songs zu speichern. Und wir können auch andere coole Dinge hier nicht machen. Zum Beispiel können wir jetzt nach unseren Bissen pro Millisekunde bestellen, wenn Sie möchten. Vielleicht sollten wir das erste, was wir tun sollten, einfach diese Limitaussage hier wegnehmen. Und lassen Sie uns das noch einmal ausführen, um die vollständigen Ergebnisse zu erzielen. Und lasst uns auch den Tracknamen herausnehmen, so dass wir tatsächlich sehen, was dieser Track ist. Und so werden wir das jetzt entfernen und einfach den Tracknamen herausnehmen. Und wir müssen keinen zusätzlichen Namen angeben. Wir müssen hier keine zusätzlichen Ergänzungen oder irgendetwas bereitstellen. Weil sie nicht sind, sie bedeuten hier nicht wirklich viel , diese Multiplikationen sind Subtraktionen, aber wie Sie sehen können, können wir sie nicht tun. In Ordnung, also haben wir unsere Bisse ruhig. Wenn wir das ausführen, haben wir unsere Kilobyte, wir haben den Namen des Songs und auch die Bytes pro Millisekunde. Lassen Sie uns also voran gehen und unsere Ergebnisse nach den Bytes pro Millisekunde in aufsteigender Reihenfolge sortieren. Wir werden jetzt bestellen. Wir können verschiedene Wege haben. So können wir zum Beispiel um vier bestellen, der schnellste Weg sein. Und es ist irgendwie leicht zu sehen, denn jetzt ist es immer noch einfach, die Anzahl der Spalten zu zählen, die wir haben. Sie können auch nach Bytes pro Milliliter bestellen, wenn wir möchten. So können wir hier sehen, wir erhalten die gleichen Ergebnisse oder wir können tatsächlich wiederholen die Operation und Reihenfolge nach Bytes pro Millisekunden wie folgt. Das ist bei weitem das am wenigsten Ideal. Vermutlich. Es ist viel besser, den tatsächlichen Spaltenalias zu verwenden, den Sie hier oben zugewiesen haben. Aber nur um Ihnen zu zeigen, können wir das tun, und wenn wir es auch in absteigender Reihenfolge tun können, natürlich. Also gehen wir hin. Jetzt können wir sehen, dass es verschiedene Möglichkeiten für uns gibt, Arten von einfachen arithmetischen Operationen durchzuführen, sowohl mit Art von natürlichen Werten als auch zwischen verschiedenen Spalten zu verwenden. Jetzt machen wir etwas anderes. Denn auch hier können wir dies komplexer machen, indem wir Dinge wie Klammern hinzufügen. Also sahen wir, dass, wenn wir tun, um Bedingungen zu verbinden und wo wir die Möglichkeit hatten, und-ors sowie Klammern zu verwenden. Wir können das Gleiche hier machen. Also nehmen wir einfach etwas und nehmen wir unseren LKW-Ausweis. Und fügen wir die Album-ID multipliziert mit der Medientyp-ID hinzu. Hier zum Beispiel nehmen wir unsere LKW-ID. Und dann werden wir noch hinzufügen. Und dann können wir unsere Album-ID plus die Medientyp-ID nehmen, mal die Medientyp-ID. Nun das nicht, das bedeutet nicht wirklich so viel, aber nur um Ihnen zu zeigen, dass wir das alles tun können. Also zuerst hier haben wir eine einfache Addition und Multiplikation. Und das können wir gerade jetzt als benutzerdefinierte Spalte aufrufen. Und wir gehen weiter und führen das aus. Wir können hier sehen, dass wir die Ergebnisse von dem bekommen, was auch immer das ist. Aber wenn wir Klammern verwenden, können wir zuerst r plus Operation durchführen, und dann können wir unsere Multiplikationsoperation durchführen. So wie wir es für unsere Bedingungen getan haben, in denen wir Klammern verwenden können, können wir auch genau dasselbe tun, um Klammern zu verwenden. Und dann können wir natürlich sehen, dass dieses Ding als eine Einheit ausgewertet wird. Und dann wird das Ergebnis davon multipliziert werden. Wie Sie sehen können, können wir hier auch Änderungen an unseren Spalten vornehmen. Ausführen von Spaltenabteilungen ist eine Art von Teilung einer Spalte durch die andere. Wir können Spalten auch miteinander multiplizieren. Wir können Spalten aufeinander hinzufügen, und wir können auch Klammern verwenden, um die Reihenfolge der Operationen, die wir verwenden möchten, zu diktieren. 25. 23DatatypeConversementeHB: Nun, vorher haben wir gesehen, dass wir hier zum Beispiel Abteilungen machen können . Und wir haben das getan, indem wir unsere Bissspalte durch 1024 geteilt haben, um sie in Kilobyte umzuwandeln, wie wir hier sehen. Aber Sie haben wahrscheinlich erkannt, oder Sie haben sich wahrscheinlich zumindest gefragt, dass die Teilung all unsere Bisse, immer kaufen eine 1024. Es ist sehr unwahrscheinlich, dass wir hier immer perfekte ganzzahlige Werte bekommen. Und du hast absolut Recht. Es ist nicht sehr wahrscheinlich. Und viele davon sind tatsächlich Fließkommazahlen, viele davon sind reelle Zahlen oder Dezimalzahlen. Aber sie wurden in ganze Zahlen konvertiert , weil wir hier eine ganze Zahl und eine ganze Zahl haben. Also machen wir ganzzahlige Divisionen. In dieser Lektion werden wir uns also ansehen, wie wir unsere Datentypen in unterschiedliche Werte ändern können . In diesem Fall wird es ziemlich einfach sein, denn eine Sache, die wir tun können, ist, dass wir unsere 1024 auf 1024 ändern können . Und das wird es von einer Ganzzahl zu einer Dezimalstelle ändern. Also, wenn wir dies ausführen, können wir hier sehen, jetzt haben wir tatsächlich Dezimal ist in unseren Divisionen enthalten. Und so können wir die Ergebnisse hier sehen. Offensichtlich haben Dezimalzahlen, während vorher wir sie nur auf die nächste ganze Zahl gerundet hatten. Aber es gibt auch verschiedene Möglichkeiten, wie wir dies tun können. Und da wir nicht immer nur hartcodierte Zahlen wie diese verwenden. Aber oft wollen wir vielleicht auf bestimmte Spalten verweisen oder wir wollen die Arten von Spalten ändern. Das ist nicht immer möglich. So können wir zum Beispiel nicht dasselbe mit der Byte-Spalte tun. Wir können hier nicht einfach eine 0 setzen. Und Sie können sehen, dass, wenn wir das ausführen, wir werden einen Fehler bekommen, denn wieder, das wird nicht funktionieren. Es gibt also andere Möglichkeiten, wie wir uns nähern können, das Gleiche hier zu tun. Dies wird Typecasting genannt werden. Also, was wir tun können, ist, und lassen Sie uns dies auf der Byte-Spalte versuchen. Erster. Wir können werfen, wir können unsere Bisse werfen. Und dann setzen wir hier das Schlüsselwort As ein. Und dann werden wir hier den Datentyp setzen. Und so können wir jetzt unsere Spalte umwandeln und den Datentyp ändern. Zum Beispiel können wir es ändern derzeit ist es Standard-Ganzzahl, die wir auch sehen können, wenn wir dies öffnen und wir uns die Bytes ansehen, wir können sehen, es ist eine ganze Zahl hier. So können wir zum Beispiel als echter Datentyp gegossen werden. Also, wenn wir dies ausführen und in diesem Fall werden sich unsere Ergebnisse nicht ändern, nur wegen der Art, wie sie angezeigt werden. Aber unsere Werte hier sind eigentlich jetzt ein echter Typ. Also lassen Sie uns das Gleiche unten anwenden und tatsächlich einige Ergebnisse sehen. Also lassen Sie uns unsere 124 Zahl statt in einer reellen Zahl zu sein. Also werden wir 1024 als reelle Zahl abgeben. Das hier wird also keine echte Zahl hier unten sein. Also, wenn wir das laufen, können Sie hier sehen, jetzt haben wir wieder diese Gleitkommadivision. Wieder haben jetzt Dezimalstellen. Und die Datentypen, die wir hier einfügen können, sind die Datentypen, die wir in der Einführungsstunde gelernt haben. Sie können also auf alle Datentypen umwandeln, die uns zur Verfügung stehen. Also können wir das Casting so machen. Und wie Sie sehen können, können wir auf einzelne ganze Zahlen werfen. Wir können auch auf volle Säulen werfen. Zum Beispiel, wie wir oben gesehen haben. Wir können unsere Bisse auch zu einem reellen Zahlen-Datentyp machen. Also, wenn wir das ausführen und wir sehen können, sind dies die Ergebnisse, die wir bekommen werden. Jetzt. Alle von ihnen, die wir hier tun, ändern den Datentyp. Jetzt ist eine Möglichkeit, dies zu tun, wieder die CAS-Anweisung hier zu verwenden. Aber eine andere Möglichkeit, dies zu tun, ist, und ich werde dies zuerst auf unserem 1024 zeigen, aber das funktioniert auch überall sonst. Wir können dies auch mit dieser Syntax umwandeln. Also werden wir zwei Doppelpunkte setzen. Und dann können wir hier den Datentyp setzen, auf den wir ihn umwandeln möchten. Also, es so zu laufen. Sie können hier sehen, oder mit diesem, beide sind äquivalent. Billionen, beide sind gleichwertig. Es gibt also verschiedene Möglichkeiten, die wir werfen können. Einer von ihnen ist das, was wir gerade gesehen haben, das ist die Besetzung, da der andere diese Doppelpunkte verwendet, was uns erlaubt, den Wert vor diesen neuen Datentyp zu werfen. So können wir das auch tun, zum Beispiel, um unsere Bisse hier. Aber lassen Sie uns dies in einen Text konvertieren. Denn jetzt werden wir ein Problem haben, da wir versuchen, Text durch numerischen Wert zu teilen und diese Operation nicht definiert ist. So können wir hier sehen, wir können sowohl die einzelnen Werte, die wir hier setzen, werfen, was natürlich nicht so nützlich sein wird. Aber wir können auch volle Werte oder unsere vollständigen Spalten, aber wir können auch unsere vollen Spalten zwei verschiedene Datentypen werfen. Und so kann das wirklich schön für verschiedene Operationen sein. Oder auch, wenn Sie Datentyp und die Spalten der falsche Wert sind. Wenn Sie beispielsweise stattdessen einen numerischen Wert als Zeichenfolge speichern, dann, wenn Sie versuchen, Divisionen durchzuführen, wird es nicht funktionieren, selbst wenn Sie dies getan haben. Lassen Sie uns zum Beispiel schauen, nun, nehmen wir das und konvertieren es in Text. Und wenn wir das auch in Text umwandeln, dann wird das ein Problem für uns sein, weil wir Text nicht durch Text teilen können. In diesen Fällen können wir also unsere Textwerte umwandeln, zum Beispiel zwei ganze Zahlen. Wir können das Gleiche hier machen. Wir wollen diese Außen- und Kunden-Bytes hier haben, zwei ganze Zahlen. Und so in einigen Fällen, wenn die Datentypen zum Beispiel in unserer Datenbank durcheinander gebracht werden, oder auch wenn wir Datentypkonvertierungen aus verschiedenen Gründen durchführen möchten, können wir das Casting mit den beiden Syntaxen verwenden. Einer von ihnen ist dieser Doppelpunkt, und einer von ihnen ist diese Umwandlung als Datentyp Syntax. Auf diese Weise haben wir auch mehr Flexibilität beim Umgang mit Datentypen sowie beim Umschalten auf verschiedene Datentypen. 26. 24LogicStatementsHB: In einigen Fällen möchten wir vielleicht auch Logikanweisungen in SQL-Abfragen einbinden. Schauen wir uns ein einfaches Beispiel an, wie wir das tun können. Lasst uns wieder unseren Track Table hier nehmen. Und lasst uns wieder durch die Komponisten gehen. Und jetzt werden wir eine neue Kolumne erstellen, die im Grunde ja oder nein sagt, wenn der Komponist AC, DC ist. Werfen wir einen Blick auf sie. Lassen Sie uns voran und zuerst, wählen Sie einfach alles aus unserer LKW-Säule und beschränken Sie unsere Ergebnisse auf fünf. Ich möchte diesen Skelett-Code hier haben , denn danach können Sie zurückkommen und ihn ändern. Also nur um das Skelett hier zu haben. Das erste, was wir tun werden, ist, den Komponisten zu wählen, welche Spalte, nur damit wir den wahren Wert haben, mit dem wir vergleichen können. Und jetzt wollen wir eine neue Spalte erstellen. Und wir können das nennen, zum Beispiel, ist AC, DC, was ja sein wird. Wenn unser Komponist hier AC, DC ist und nichts anderes sein wird. Also, wie können wir das tun? Wir können die case-Anweisung verwenden, die Teil unserer ist, das ist ein Teil von SQL. Also können wir sagen, Fall, wenn Komponist gleich AC, DC, dann ja sonst, nein. Und dann werden wir das als ac-dc speichern. Werfen wir einen Blick auf diese vollständige Aussage hier. Das Schlüsselwort case gibt an, dass wir hier eine case-Anweisung starten werden. Und dann haben wir das eine Schlüsselwort, das sagt, wenn diese Bedingung, dann tun wir folgendes. Sonst haben wir das. Jetzt gibt es noch eine Sache, die wir am Ende jeder Fallaussage vermissen. Sobald wir mit all unseren Fällen fertig sind, müssen hier Ende setzen. Es beginnt also mit Fall, wenn der Composer gleich AC, DC ist. Und jetzt haben wir diesen Vergleich schon gesehen, als wir uns die Filterung anschauten, speziell die Where-Aussagen. Also tun wir Fall, wenn Komponisten ac-dc, dann wird der Wert JA sein. Andernfalls wird der Wert „no“ sein. Ende, um anzuzeigen, dass dies das Ende unserer Fallaussage ist. Also lasst uns das laufen. Und wir können hier sehen, wir haben zwei Spalten. Die erste sind also unsere Komponisten hier. Und momentan begrenzen wir unsere Ergebnisse. Also lassen Sie uns voran gehen und nehmen Sie diese Limit-Anweisung weg und gehen Sie durch einige weitere Ergebnisse, so dass Sie alles sehen können, wo es nicht gleich AC, DC, wir kennen. Und wenn es gleich AC, DC ist, haben wir, ja, wie wir hier sehen können. Alles klar, cool. Wir können dies natürlich auch über mehrere Zeilen aufteilen, um das Lesen zu erleichtern, damit wir es nicht wissen, so viele Zeilen durchlaufen. So können wir zum Beispiel etwas tun. Und es wird uns immer noch die gleichen Ergebnisse liefern. Jetzt können wir auch noch mehr Dinge tun. Zum Beispiel, anstatt nur 11 Aussage, können wir auch mehrere haben. Nehmen wir also an, wir wollen eine separate Überprüfung haben und erneut überprüfen wenn der Composer so ist. Und jetzt werden wir die Lichtaussage verwenden, die wir auch vorher gesehen haben. Und hier werden wir Angus Young suchen, überall da drin. Dann sagen wir vielleicht anders, nein. Also lasst uns das nochmal laufen. Und wir können hier sehen, wenn Angus Young drinnen ist, wir haben vielleicht in dem Fall, wo es weder Angus Young noch AC DC drin ist. Wir haben NEIN. Und sonst, wenn AC, DC drinnen ist, dann haben wir ja. Nun ist das Wichtigste, was man sich auch hier bewusst sein muss, obwohl wir eine bestimmte Reihenfolge haben. Also suchen wir zuerst nach dieser Aussage, dann suchen wir nach dieser Aussage. Und das hier wird unsere Fallback-Aussage sein. Je nachdem, in welcher Reihenfolge Sie diese einfügen, können sich Ihre Ergebnisse ändern oder nicht, je nachdem, welche Vergleiche Sie verwenden. Jetzt verwenden wir in diesem Fall die Gleichheit und die Lichtaussage. Aber natürlich haben wir auch andere Aussagen gesehen, die wir zum Vergleich verwenden können , wenn wir die Filterung speziell durchlaufen haben. Vielleicht, um das ein bisschen mehr aufzuräumen. Ich werde die wann und die Venn-Anweisungen auf die gleichen Zeilen setzen. Oder ich kann jedes davon auch über separate Zeilen aufteilen, nur etwas, das es intuitiv zu lesen macht, aber auch etwas, das unsere SQL-Abfragen davon abhält , einfach zu fremd zur Horizontalen zu laufen, was wiederum macht es auch nicht sehr lesbar. So können wir sehen, dass wir viele verschiedene Optionen mit den case-Anweisungen haben. Und wir können auch andere Dinge tun. Zum Beispiel müssen wir hier keinen Textwert eingeben. Wir können hier haben, zum Beispiel, die 1. Hier können wir vielleicht 0,5 haben. Und sonst können wir 0 setzen. Und wir können das ausführen und wir können die Ergebnisse hier sehen. So können wir sehen, dass wir uns nicht nur darauf beschränken, nur Text zu setzen. Die von uns gewählten Datentypen müssen jedoch miteinander kompatibel sein. Zum Beispiel, etwas, das nicht funktionieren wird, ist, wenn wir hier einfügen, vielleicht, weil es jetzt nicht weiß, welchen Datentyp zu wählen ist. So können Sie hier sehen, es versucht, eine ganze Zahl zu verwenden, aber dann, wenn es auf den Text trifft und es einfach verwirrt wird. Stellen Sie also sicher, dass die Typen, die Sie verwenden, miteinander kompatibel sind. Wie Sie hier sehen können, werden alle diese echt wie Zahlen sein. Also sollte alles gut funktionieren. Was wir vorher mit Texten machen werden. Und natürlich können wir diese bedingten Aussagen verketten, wenn wir wollen, abhängig von anderen Dingen, die wir suchen. Und wir können wieder diese Vergleichsoperatoren verwenden, die wir auch vorher gesehen haben. Was an den Case-Anweisungen cool ist, ist jetzt haben wir einen Weg und Logik in unsere SQL-Abfragen. Und wieder, diese werden neue Spalten für uns schaffen. Und diese neuen Spalten enthalten Werte, die speziell aus Case-Anweisungen bestehen , die wir hier definiert haben. Auch hier ist die wichtige Syntax nur wir haben einen Fall, um den Neustart der case-Anweisung anzuzeigen. Dann, äh, wenn ich darauf hinweise, dass wir hier mit dem Vergleich beginnen oder bedingten, dann haben wir die eigentliche Bedingung, nach der wir suchen. Wenn diese Bedingung wahr ist, dann haben wir dieses Schlüsselwort. Wir werden diesen Wert annehmen. Diese Bedingung ist nicht wahr. Wir gehen zur nächsten, zur nächsten Aussage. Wenn es eine X1-Anweisung gibt, schauen Sie sich diese Bedingung an. Wenn diese Bedingung wahr ist, dann werden wir diesen Wert annehmen und wir werden weiter durch jede einzelne Bedingung, die wir haben. Wenn wir noch mehr haben, wann. Und dann Aussagen hier unten. Und dann werden wir all das weiter durchgehen. Und wenn alle diese fehlschlagen, dann werden wir zu dieser else-Anweisung zurückkehren, die ist, wenn alle oben genannten fehlschlagen, dann werden wir diesen Wert übernehmen. Und dann werden wir speichern oder Spalte geben es. Und dieser Alias, wie wir hier sehen können. 27. 25ManipationsStringsHB: in dieser Lektion einen Blick darauf werfen, Lassen Sie unsin dieser Lektion einen Blick darauf werfen,wie wir etwas Textbeschneiden können. Werfen wir einen Blick auf einige unserer Kolumnen. Und wieder, irgendwie standardmäßig zurück zur Composer-Spalte, die wir hier viel in dieser Track-Tabelle verwendet haben. Lassen Sie uns versuchen, das a am Anfang jedes Datensatzes hier herauszunehmen. Also, um das zu tun, werden wir wählen, nur schreiben unser Skelett, alles von Spur. Und lassen Sie uns nur begrenzen, beschränken Sie unsere Ergebnisse vorerst auf fünf. Also wieder, was wir wollen, ist, dass der Komponist nur zu vergleichen, um sicherzustellen, dass alles richtig funktioniert. Und jetzt wollen wir die Komponisen-Kolumne nehmen, aber wir wollen entfernen, wenn es eine gibt, die a am Anfang. Also, wie können wir das tun? Nun, es gibt eine sehr coole SQL, es gibt eine sehr coole SQL-Funktion, die wir verwenden können, genannt L Trump. Und was wir hier tun können, ist, dass wir den Text schreiben oder uns an sie erinnern. Und dann werden wir auch den Wert setzen, den wir von der linken Seite abschneiden wollen. Also zum Beispiel, wenn wir das A wegschneiden wollen, dann werden wir VA hier setzen. Und dann können wir uns einen Alias geben, zum Beispiel getrimmte Spalte. In Ordnung, also lasst uns das laufen. Und jetzt können wir sehen, okay, wir haben unseren Komponisten. Und wenn wir unsere Trimmsäule hier haben, haben wir alle Fälle, in denen es eine in der Front gibt. Wir haben die a weggetrimmt. Nehmen wir also unsere Limit-Aussage weg und schauen uns die vollständigen Ergebnisse an. So können wir jederzeit sehen, wenn es zum Beispiel Angus Young gibt , Sie können sehen, dass es weggenommen wird, wenn es ac-dc ist, wir können sehen, dass die a weggenommen wird. Und andere Fälle hier, wieder, das a wird weggenommen. So können wir sehen V L trimmen sucht für diesen Charakter hier auf der linken Seite. Und wenn es dort existiert, wird es es wegnehmen. Jetzt können wir das noch mehr ausdehnen. Und wenn wir hier zum Beispiel mehrere Zeichen wie AC setzen , dann werden sich natürlich die Ergebnisse ändern, weil Angus Young zum Beispiel kein C enthält, aber das a ist, können wir hier sehen, ist noch getrimmt entfernt. Es gibt also eine bestimmte Menge an Trimmen, die wir tun können, ist, dass wir von der linken Seite auf der wichtigen Sache sehen können , die hier zu beachten ist, dass das Trimmen, das wir tun, Groß- und Kleinschreibung unterscheidet. Also, wenn wir es hier Kleinbuchstaben a setzen, dann wird nichts passieren. Denn wieder, wir tun Dinge, die Groß- und Kleinschreibung beachten. Also müssen wir uns daran erinnern, dass das, was wir hier verwenden, Groß- und Kleinschreibung beachten wird. Jetzt haben wir natürlich auch die Möglichkeit, einen Schreib-Trim und rtrim zu machen. Und lasst uns zum Beispiel das n wegnehmen, so dass das n am Ende von Johnson weggenommen wird. Und wenn wir das ausführen, können wir sehen, dass all diese jetzt weggenommen werden. Überall dort, wo es eine n am Ende. Jetzt habe ich nicht weggenommen. Scrollen Sie einfach durch, es sieht irgendwie so aus, als wäre Johnson der wichtigste. So können Sie die Ergebnisse hier sehen. Jeder Fall, in dem es ein n am Ende gibt, wird es jetzt nicht weggenommen. Falls wir nicht angeben möchten, ob Schiff B, links oder rechts, und wir wollen nur zusätzliche Zeichen auf beiden Seiten entfernen. Dann können wir diese tun, indem wir nur trimmen verwenden. Was bedeutet, dass es wird, wenn es diesen Charakter auf beiden Seiten findet , wird er ihn wegnehmen. Wenn wir also laufen, werden diese Ergebnisse immer noch hauptsächlich das sein, was wir vorher hatten, nur weil wir Groß- und Kleinschreibung beachtet haben. Also in diesem Fall ist es unwahrscheinlich, dass einer unserer Komponisten. Hier werden wir mit einem Kleinbuchstaben n beginnen, aber wir haben immer noch die Möglichkeit, es von beiden Seiten wegzunehmen. Und was wir auch tatsächlich tun können, ist, dass wir Operationen verketten können. Zum Beispiel können wir die Trimmung zuerst ausführen, die nach dem N auf beiden Seiten in Bezug darauf sucht, dass es weg ist. Und dann, wenn wir wollen, können wir dann eine L-Trimmung auf die Ergebnisse ausführen. Also zum Beispiel, sagen wir, wir haben die nweggetrimmt. und dann, was wir abschneiden wollen, ist, sagen wir v a auf der linken Seite. Also, was wir tun werden, ist zuerst, dass wir die Aussage hier drinnen ausführen. Und dann werden wir die resultierende Spalte hier reinbekommen, die zum Beispiel das ist, was wir hier hatten, Angus Young und dann ist der Johnson nicht passiert n. Und dann werden wir das L-Trim auf das Ergebnis hier ausführen, diesmal suchen, um die Hauptstadt a auf der linken Seite abwenden. Daher ist es natürlich sehr schön und sehr nützlich, diese Operationen miteinander zu verketten. Und in einigen Fällen wirst du das tun. Zum Beispiel, wenn Ihre Datumswerte Art vermasselt oder in einem seltsamen Format sind und es möglicherweise zusätzliche Leerzeichen gibt oder zusätzliche Polsterung um einige Textwerte herum ist. Und Sie können einfach all diesen Müll loswerden, der nicht da sein soll, um sicherzustellen, dass Ihre Daten in einem standardmäßigeren Format vorliegen. Die meiste Zeit werden Sie dies verwenden, um eine Art von Verarbeitung für Ihre Spalte durchzuführen , falls die Daten entweder eine seltsame Polsterung um sie herum haben. Oder Sie wollen einfach ein paar unnötige Sachen wegnehmen , die nicht da sein sollten, damit Ihre Werte tatsächlich sauberer sind. Nun, zwei andere coole Dinge, die wir auch tun können, um unsere Texte ein wenig zu verarbeiten, ist, dass wir etwas Casting machen können. Wir können diese entweder in Groß- oder Kleinbuchstaben umwandeln. Das kann wirklich schön sein, denn seitdem haben wir es oft mit Groß-/Kleinschreibung zu tun. Vielleicht ist es uns an Punkten egal, ob Angus Young in Großbuchstaben ein MGUS geschrieben wird oder wenn es in Kleinbuchstaben geschrieben wird, ein MGUS ist ganz groß oder ganz klein. Manchmal wollen wir uns nicht wirklich mit diesen Groß-/Kleinschreibung beschäftigen. Eine gute Lösung dafür ist, nur alles zu werfen. Wir konvertieren alles in Groß- oder Kleinbuchstaben. das zu tun, können wir das Opera-Schlüsselwort verwenden. Und lasst uns hier einfach wieder eine Komponisten-Kolumne einbauen. Geben wir diesem den Alias, und lassen Sie uns hier einen Raum setzen, nur um es irgendwie besser lesbar als oberer Komponist zu machen. Und dann lassen Sie uns auch in Kleinbuchstaben umwandeln, was wir mit dem unteren Schlüsselwort tun können, wieder mit der Composer-Spalte. Und dann können wir das hier als niederer Komponist haben. So läuft dies, können wir hier sehen, jetzt haben wir den Begriff Anweisung, die wir zuvor hatten, die ursprüngliche Spalte, alles in Großbuchstaben umgewandelt und alles in Kleinbuchstaben umgewandelt. So können wir hier zum Beispiel auch versuchen, nachdem wir alles in Kleinbuchstaben umgewandelt haben. Schauen wir uns an, eine der Säuren wegzuschneiden. Natürlich stellen wir sicher, dass wir hier Kleinbuchstaben S verwenden, da alles hier in Kleinbuchstaben sein wird. Das sollte also wegnehmen, wenn wir nur einen Blick hier werfen, das S ist hier an der Front. Und dann haben wir auch die Taylor Straßen. Also sollte das S am Ende auch hier weggenommen werden. Also lasst uns weitermachen und das laufen. Und wir können in diesem Fall sehen, beide Ss weggenommen werden. Auch hier kann dies wirklich nützlich sein, wenn es etwas Padding oder andere Dinge um Ihre Daten herum gibt und Sie eine Verarbeitung Ihrer Strings durchführen möchten, indem Sie nur einige dieser Werte wegnehmen können. Jetzt können wir dies zum Beispiel mit dem kombinieren , was wir beim Casting gelernt haben. Und lassen Sie uns sagen, dass wir v dot 99 an jedem wegnehmen wollen, am Ende jedes Stückpreises hier. Also, was wir tun können, ist, dass wir einfach sagen können, okay, also nehmen wir unseren Stückpreis und wir werden das in Text umwandeln. Und dann hier werden wir vom MOOC trimmen, unsere Trimmung von der rechten Seite, den Punkt 99, da dies jetzt Textwerte sein wird. Und wenn wir wollen, müssen wir nicht, aber wenn wir wollen, können wir dies zurück in eine ganze Zahl konvertieren. Also denken Sie daran, dass wir den Doppelpunkt verwenden können, oder Sie können auch die als Anweisung verwenden. Und dann können wir hier die Besetzung machen. Und um zu zeigen, dass dies eine ganze Zahl ist, können wir zum Beispiel plus eins hinzufügen. Und dann in diesem Jahr können wir als getrimmten Stückpreis sparen. Also können wir das hier ausführen und nur einen Blick auf die rechte Seite werfen. Also, was wir getan haben, ist, dass wir konvertieren oder einen Einzelpreis in Text, diese Spalte hier in Text. Dann haben wir am Punkt 99 auf der rechten Seite entfernt, der jetzt alle Textwerte hat. Dann werfen wir dies zurück in eine ganze Zahl und fügen eine hinzu. So können wir auch in Fällen sehen, in denen wir es nicht mit Textdaten zu tun haben, können wir immer noch die anderen Teile von SQL verwenden , die wir kennen und diese Operationen miteinander kombinieren. So können wir sehen, zum Beispiel, hier können wir einige schöne Casting verwenden, um dann diese coole Operation zu tun, Umwandlung zwischen Texttyp und dann zurück in Integer. Und dann in der Lage sein, zum Beispiel die ganzzahligen Ergänzungen hier zu verwenden . Und natürlich, je nach Situation, können Sie je nach Bedarf bei uns bekommen. Sie können dies auch innerhalb der case-Anweisungen zum Beispiel tun, oder auch an anderen Orten. Also wieder, vieles davon können Sie nur für die Verarbeitung Ihrer Daten verwenden , um sicherzustellen, dass Sie es in dem richtigen Format erhalten können, das Sie benötigen, oder um sicherzustellen, dass Sie diese Art der Formatierung durchführen oder Dinge ändern können basierend auf Ihren Bedürfnissen. Und natürlich, weil dies auf Text funktioniert, können Sie immer noch alles in den Text umwandeln, wie wir hier gesehen haben, und in der Lage sein, technisch die gleichen Operationen für Werte auszuführen , die nicht von Natur aus Texte sind und dann nur in der Lage, sie später wieder zu konvertieren, wenn Sie möchten. Das kann also wirklich schön sein, nur für die allgemeine Datenverarbeitung, um sicherzustellen, dass Sie die Daten und das tatsächliche Format erhalten , in dem Sie es haben wollten. 28. 26StringPositionalInformationHB: Jetzt in einigen Fällen möchten wir vielleicht zusätzliche Informationen über die Größen wissen, die Komponenten unserer Strings sind. Sehen wir uns diese jetzt an. Jetzt gibt es verschiedene Möglichkeiten, wie wir diese verwenden können, und wir werden sie gerade jetzt für VR-numerische Zwecke verwenden. Aber wir können sie für die analytische Seite verwenden, um zu verstehen, mit welchen Arten von Werten wir es zu tun haben. Aber wir können sie auch verwenden, um sie zum Beispiel in case-Anweisungen zu ändern, um bestimmte bedingte Operationen durchzuführen. Also lasst uns zuerst unser Skelett schreiben. Wählen Sie alles aus der Spur und begrenzen Sie unsere Ergebnisse. Fünf hier. Und was ich tun will, ist, dass ich verstehen will , wie groß einige Namen unsere aktuelle Datenbank bekommen können. Also lasst uns unsere Namen hier nehmen. Und ich möchte wissen, wie lange Axon-Namen bekommen können, denn vielleicht haben wir eine Größe zugewiesen und wollen wissen, ob die Größe des Balkendiagramms, zum Beispiel, die wir unserer Namenspalte zugeordnet haben, angemessen ist. Sind wir näher an die obere Grenze dieser var char Größe zu erreichen ist viel zu groß. Oder vielleicht ein anderer analytischer Zweck, den wir die Länge 4 kennen wollen. Um dies zu tun, können wir diese Funktion namens Länge verwenden. Wir können es in den Wert setzen, den wir suchen. In diesem Fall werden wir uns die Namensspalte ansehen. Und dann werden wir uns einen Alias als ländliche Länge geben, oder vielleicht können wir diesen Namen Länge nennen, um es noch beschreibender zu machen. Also lasst uns weitermachen und das laufen. Und jetzt können wir sehen, dass dies uns geben wird wie viele Zeichen sind in unserem Text hier auf der Seite unserer Zeichenfolge? Wie viele einzelne Zeichen, einschließlich der Leerzeichen, einschließlich der Klammern, einschließlich aller anderen Sonderzeichen, wie lange sind in diesem Fall die Texte, die wir haben? Das ist also das Ergebnis, dass wir das tun können. Vielleicht wollen wir das nicht mehr. Aber was wir nicht tun können, ist vielleicht, dass wir das Größte finden wollen, also wollen wir es zumindest in absteigender Reihenfolge sehen. Also werden wir nach der Länge des Namens in absteigender Reihenfolge zu sortieren. Also, wenn wir das ausführen, können wir jetzt sehen, in Ordnung, also hat der größte Name in diesem Fall 123 Zeichen darin. Und wir können sehen, dass wir drei über 100 haben. Wir haben etwa 90 und so weiter. So können Sie hier das Ausmaß der Dinge sehen, die gehen. Wir können dies auch einbeziehen, wenn wir zu einer Fallaussage wollten. Also können wir sagen, denken Sie daran, Kommas zwischen separaten Spalten zu setzen. Koffer. Wenn die Länge, halten Sie einfach dieses Großbuchstaben der Namensspalte ist größer als 50. Dann nehmen wir den Wert 50 plus an. Und dann die nächste Aussage können wir haben, wenn die Länge der Namensspalte größer als 40 ist. Dann nehmen wir 40 plus, oder wir können 41 zu 50 sagen. Und so werde ich das alles nicht ausschreiben. Stattdessen werde ich es einfach mehrmals kopieren und dann eine Einrückung verwenden. So weiter. Nun, wenn die Länge größer als 30 ist und ich sage 31 bis 40, wird dieser hier 21 bis 30 sein, dieser wird 11 bis 20 sein. Andernfalls werden wir weniger als oder gleich 10 sagen unsere Fallaussage beenden. Und dann hier können wir sagen, dies zum Beispiel, Als Name Länge Eimer. Also lasst uns weitermachen und das laufen. Und jetzt können wir sehen, okay, jetzt haben wir einen noch schnelleren Überblick darüber, in welche Kategorie zum Beispiel das fällt. So können wir sehen, dass wir dies auch in verschiedenen Positionen verwenden können. So können wir es entweder direkt verwenden. Aber natürlich können wir es auch innerhalb von case-Anweisungen in anderen Dingen verwenden, was auch immer es ist, nach dem wir suchen. Nun eine andere coole Sache, die wir tun können, ist, dass wir Positionen von Zeichen finden können , wenn sie innerhalb einer Zeichenfolge existieren. Und wir können dies tun, indem wir die Positionsanweisung verwenden. Und dann können wir hier zum Beispiel die Teilzeichenfolge sagen, nach der wir suchen. Was auch immer wir hier im Hauptstrom suchen, nach dem wir es suchen. Betrachten wir zum Beispiel das erste Vorkommen des Buchstabens a in der Komponistenspalte. Aber lassen Sie uns dies in Großbuchstaben konvertieren, weil wir nicht wirklich zwischen Groß- und Kleinbuchstaben a is unterscheiden wollen. Also suchen wir nur nach der ersten Position des Buchstabens a in der Komponisensäule, wo alles in Kupferkönige umgewandelt wird. Und dann können wir das speichern oder ihm einen Alias als Position geben. Also, wenn Sie auf diese, wenn es eine neue, Gut, Wenn wir auch drucken Sie die Komponisten-Spalte auf der Seite, so dass wir tatsächlich auch die Ergebnisse vergleichen können. So können wir sehen, ob es kein Inside gibt, dann wird es uns Position geben. Nun, diese Position, fangen wir an, hier auf eins zu zählen. Es wird also 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12. So können wir hier sehen, wenn die KI zum ersten Mal erscheint, ist sie in Position 12 in unserer Zeichenfolge. Falls es 0 ist, können wir sehen, dass es überhaupt nicht auftaucht. Und dann können wir in anderen Fällen hier zum Beispiel sehen, dass es in Position 1 auftritt. Und so weiter. Auf diese Weise können wir entweder nach einem bestimmten Wert suchen oder wir können zum Beispiel nach Teilzeichenfolgen suchen. Zum Beispiel können wir nach Angus suchen. Wann immer dies vollständig erscheint. Jetzt für all diese, wird es 0 sein, bis wir finden die Instanz finden, in der es Angus Young ist. Wahrscheinlich am besten, dies zu tun, indem Sie eine Where Aussage hinzufügen, Jahr, wo Komponist. Und ich werde es einfach tun, ich mag, obwohl wir es als Kleinbuchstaben tun können, es ist schöner, als Großbuchstaben zu haben, um es lesbarer zu machen. Ist ähnlich. Angus Young hat das Auge benutzt, so dass wir die Kapitalisierung hier nicht brauchen. Ich werde es trotzdem tun, nur weil es sich irgendwie natürlich anfühlt. Also können wir hier sehen, okay, Jetzt können wir die Filterung verwenden, nur um eine schnellere Überprüfung durchzuführen. Und wir können RA sehen. Das erste Mal, wenn wir Angus sehen, ist die volle Saite Angus hier eins. Nie gut, da wir diese Filterung gemacht haben, wo Sie es nirgendwo anders sehen. So können wir auch nach etwas anderem suchen. Zum Beispiel, das erste Mal, dass wir jung waren. Und dann noch einmal, nur um es einfacher zu machen, lassen Sie uns speziell für alle Zeilen filtern, in denen junge darin enthalten sind. Und wieder verwenden wir das Auge so, dass wir hier die Groß- und Kleinschreibung nicht beachten. Und hier können wir zum Beispiel sehen, okay, also ist die erste Position sieben. Also 1, 2, 3, 4, 5, 6, 7. Also beginnt die Teilzeichenfolge jung an Position sieben hier drin. Und so können wir diese Funktion sehen, die wir auch verwenden können, um bestimmte Ausgangspositionen zu identifizieren, die wirklich schön wieder sein können, wie wir hier sehen können, wird auch das Obermaterial verwendet. So können wir sehen, dass viele dieser Funktionen miteinander verkettet werden können, jede Bereitstellung ein Stück des Puzzles, das wir dann zusammen mit anderen Funktionen verwenden können um einige Datenverarbeitung oder andere Komponenten in unseren SQL-Abfragen durchzuführen. 29. 27StringSubsetsUndConcatinationsHB: In Ordnung, also haben wir jetzt viel über Strings gelernt und wie wir verschiedene Funktionen nutzen können , um Informationen aus Strings zu gewinnen , die wir in unseren Spalten haben. Aber Flüsse, um voranzugehen und einen Blick auf einige coole Dinge zu werfen, die wir tun können , die uns speziell bei der Verarbeitung unserer Daten helfen. Also lassen Sie uns voran und schauen uns unsere Track-Säule wieder an. Und das erste, was ich betrachten möchte, ist String-Verkettung. Was bedeutet, wir nehmen zwei Saiten oder wir können sogar mehr als zwei nehmen und wir können sie miteinander verbinden. Beginnen wir zum Beispiel mit dem Beitritt des Namens und des Komponisten, so dass wir eine neue Spalte erhalten , die den Wert hat, der der Name des Songs ist. Und dann sagen wir den Komponisten danach. So zum Beispiel, das würde wie für diejenigen aussehen, die zu rocken, wir grüßen Sie, und dann würden wir dann den Namen des Komponisten haben. Um das zu tun, lasst uns einfach voran und zuerst unser Skelett SQL schreiben. Und es wird der Track Table sein. Und lassen Sie uns auch einfach voran gehen und unsere Ergebnisse auf fünf beschränken. Okay, also werden wir den Namen des Komponisten benutzen. Also lasst uns weitermachen und diese einfach extrahieren, nur damit wir natürlich unsere Ergebnisse vergleichen können. Nun, was wir tun wollen, ist, dass wir vorerst die Namensspalte nehmen wollen. Und dazu wollen wir den Komponisten hinzufügen. Nehmen wir also unsere Namensspalte. Und nun wollten wir am Ende einfach die Komponistenspalte hinzufügen. Die Art und Weise, wie wir diese String-Verkettung tun können, besteht darin nur diese doppelten vertikalen Linien zu verwenden. Also werden wir unsere erste Zeichenfolge hier setzen, die in diesem Fall auf den Spaltennamen verweisen wird. Und jetzt werden wir unsere zweite Zeichenfolge hier setzen, die in diesem Fall auf den Spaltenkomponist verweisen wird. Und dann, was es tun wird, wird es nehmen, was hier ist, und dann bis zum Ende, es wird sich anschließen, was hier ist. Also lasst uns dem einen Namen geben. Wir schneiden dies aus, rufen diese concat-Spalten auf, schleifen Concat-Spalten für verkettete Spalten. Und lassen Sie uns einfach weitermachen und sehen, wie es aussieht. Okay, also haben wir hier unsere erste Namensspalte. Dann haben wir unseren Komponisten, und jetzt haben wir hier unser Ergebnis, das buchstäblich nur der Name ist. Und dann können Sie sehen, sobald es endet sind Komponisten hier beginnen. Und wir können auch sehen, dass für andere Dinge, wenn wir keine Werte haben, das Endergebnis, wie wir hier sehen können, tatsächlich auch ein bekannter Wert sein wird. Nun natürlich ist das Format, dass wir diese Daten jetzt haben, nicht besonders nützlich. Also lassen Sie uns voran und machen es ein wenig schöner zu betrachten, indem Sie nach dem Spaltennamen ein Leerzeichen hinzufügen. Und dann sagen wir Tschüss, und dann sagen wir den Komponentennamen. Also, um das zu tun, werden wir hier nur den Saitenraum setzen. Und dann werden wir Tschüss haben. Und dann haben wir einen Raum. Und dann können wir einfach die vertikalen Linien des Tumors hinzufügen. Und plötzlich machen wir jetzt mehrere verschiedene Verkettungen. Zuerst nehmen wir die Namensspalte. Dann fügen wir zum Ende Raum für Raum hinzu. Und dann machen wir noch eine Verkettung. Zum Schluss fügen wir nun die Spalte „Composer“ hinzu. Also, wenn wir voran gehen und das laufen, können wir jetzt sehen, okay, die Formate, die besser wir den Namen haben, dann haben wir kaufen, und dann haben wir hier die Komponisten selbst. Jetzt können wir hier noch mehr tun. Also lassen Sie uns das den ganzen Weg nehmen und beginnen wir mit der Spur. Und dann legen wir die LKW-ID. Und dann geben wir den Namen des Liedes. Und dann geben wir dem Komponisten. Davor sagen wir „Track“. Und dann wollen wir jetzt die Spur IT haben. Also, wie können wir das tun? Also, um das zu tun, Was ist cool daran ist, dass wir tatsächlich, solange wir dazwischen sind, auch in ganzzahlige Werte setzen können. So können wir einfach direkt auf die Spur-ID-Spalte und die String-Verkettung verweisen. Wir kümmern uns eigentlich nur um die Konversion für uns. Und um diese Formatierung ein bisschen schöner zu machen, werde ich hier einen Doppelpunkt und ein Leerzeichen setzen. Und wenn wir das ausführen, können wir hier sehen, jetzt haben wir Track und dann haben wir die ID, und jetzt haben wir unsere Namensspalte eingeschaltet. Also lassen Sie uns voran und fügen Sie einfach ein weiteres Leerzeichen hier nur für einige Formatierungen hinzu und führen Sie das erneut aus. Und so können wir sehen, obwohl unsere Track-ID tatsächlich eine Ganzzahl ist, die wir auch sehen können, wenn wir sie nur hier betrachten. Die String-Verkettung kümmert sich für uns um die Konvertierung. Aber natürlich, wenn es nicht auch wissen würde, wie man die Konvertierung selbst mit Casting macht , indem sie zum Beispiel einfach in einen Textwert umwandelt. Für den Fall, dass es sich nicht um uns gekümmert wurde, könnten wir es so ausführen. Und natürlich würde es uns darum kümmern. Oder wir könnten es auf einen anderen Datentyp umwandeln, den wir besser finden. Aber wie wir sehen können, die String-Verkettung. Eigentlich kümmert sich um all das für uns. Nun, natürlich, in der Regel ist dies in die entgegengesetzte Richtung, wohin wir wollen gehen. Normalerweise können wir Daten wie diese haben und dann möchten wir in dieses Format gehen. Aber trotzdem ist es wirklich schön, String-Verkettung zu sehen , weil Sie es irgendwann verwenden und gut verwenden möchten. Und in diesem Fall sind unsere Datenbanken natürlich sehr sauber, ähm, aber in einigen Fällen können Sie Zeiten haben, wenn Sie zum Beispiel, werfen wir einen Blick auf die Rechnungsspalte. Es kann Zeiten geben, in denen Sie das Datum und die Uhrzeit in zwei separaten Spalten haben. Und Sie möchten sie nur zusammenfügen und sie als vollen Datumswert verwenden. Dann könnten Sie String-Verkettung durchführen, um ein Datum plus Zeit zu erhalten. Und dann können Sie zum Beispiel ein Casting zu einer Datetime machen. Und dann von dort direkt die Datetime und eine Spalte haben. Je nachdem, wie Ihre Daten formatiert sind, sind die Spalten, die Sie verwenden würden, manchmal nicht in dem idealen Format, in dem Sie tatsächlich möchten, dass sie sich befinden. Entweder keine weitere Analyse in der Zeile oder nur eine Verarbeitung, die Sie tun möchten, oder auch nur für einen saubereren Export, indem Sie weniger Spalten haben. Und so kann String-Verkettung wirklich schön sein, denn wie wir sehen können, sind wir in der Lage, verschiedene Spalten zu verbinden, sowie in Zoll hinzuzufügen. Unsere eigenen Streicher sind alle miteinander verbunden. Und natürlich, beachten Sie hier wieder, dass die benutzerdefinierten Texte, die wir haben, in einfachen Anführungszeichen sind. Und jeder Verweis auf Spalten hier befindet sich in doppelten Anführungszeichen. Nun brauchen wir die doppelten Anführungszeichen, da durch die Tabelle erstellen, die Spaltennamen mit doppelten Anführungszeichen zu finden waren. Wenn unsere Tabelle nicht mit doppelten Anführungszeichen für die Verwendung der Spalten definiert ist, könnten wir auch einfach die Spalte direkt so referenzieren. Aber wir können niemals doppelte Anführungszeichen für Strings verwenden. Es sind nur für Spaltennamen reserviert, wie wir sahen, sind auch Tabellennamen in diesem Fall, wie wir auch sehen können, abhängig davon, wie die create table Anweisung geschrieben wurde. In Ordnung, jetzt haben wir uns die Dinge angeschaut und miteinander verbunden. Gehen wir in die entgegengesetzte Richtung und schauen wir uns an, Dinge zu reduzieren. Also werde ich das wegnehmen, nur damit wir hier unten keinen sehr langen Ausgang mehr haben. Und das nächste, was wir betrachten werden, ist die Verwendung oder Finden von Teilzeichenfolgen einer Zeichenfolge, die wir haben. Also lassen Sie uns einen Blick auf eine, nur die einfachste Implementierung zuerst, um die Teilzeichenfolge zu finden. Wir gehen und verwenden diese Teilstring-Methode, Teilzeichenfolge. Und dann können wir hier Klammern öffnen und schließen. Und dann ist das erste, was wir einfügen möchten der Text oder die Zeichenfolge, von der wir die Teilzeichenfolge nehmen möchten. Nehmen wir zum Beispiel die Spalte „Composer“. Und dann wollen wir hier reinbringen, wo wir anfangen wollen. So können wir zum Beispiel von Position eins in SQL sagen, von Position eins in SQL sagen, die erste Position wird immer Position eins sein , falls Sie wissen, an welche andere Programmiersprache Sie gewöhnt sind. Die erste Position, die als Position 0 bezeichnet wird. Aber in SQL ist die erste Position Position eins. Und wenn Sie keine andere Programmiersprache kennen, dann ist dies natürlich sehr intuitiv, dass die erste Position als Position 1 referenziert wird. So oder so von einem und dem ersten Zeichen hier wird an Position eins sein. Und jetzt möchten Sie sagen, wie viele wir extrahieren möchten. Also, um das zu tun, wollen wir sagen, wir wollen die ersten fünf extrahieren. Also sagen wir ab 145. Was das bedeutet, ist, dass wir die Teilzeichenfolge nehmen. Also nehmen wir einen kleineren Teil der Schnur von allem, was hier drin steckt. Und wir werden das an Position eins beginnen. Und wir gehen für fünf Charaktere. Und geben wir dem einen Alias. Also können wir diese Unterspalte aufrufen, und lassen Sie uns voran gehen und das ausführen. Und so können wir hier sehen, wir beginnen mit Angus zum Beispiel, und wir gehen, Wir beginnen an Position 1. Mai gehen für 1, 2, 3, 4, 5. Sie kann hier sehen. Schauen wir uns das nächste an. F Ball Tez So starten wir an Position 112345. Und so können Sie sehen, das ist auch genau das, was wir hier haben. Jetzt gibt es tatsächlich einen anderen Weg, wie wir auch die Syntax tun können , von der Sie nicht wirklich schreiben müssen. Und vier können auch Kommas verwenden, stattdessen eine Trennung. Zum Beispiel könnten Sie hier einfach die Zeichenfolge anlegen und dann können wir ein Komma einfügen. Und das wird der Ausgangspunkt sein, und das wird sein, wie viele Werte wir extrahieren wollen. Wenn wir also voran gehen und das ausführen, können wir sehen, dass wir genau das gleiche Ergebnis bekommen. Und tatsächlich brauchen wir nicht einmal den letzten vier Wert. So ist der letzte vier Wert nicht einmal notwendig. Und wir können das auch rausnehmen, an welchem Punkt wir einfach werden. Beginnen Sie, die gesamte Zeichenfolge nur von der Ausgangsposition aus zu nehmen. So können wir hier sehen, in diesem Fall beginnen wir an Position 1. Also nehmen wir alles. Wenn wir zum Beispiel an Position fünf beginnen, dann gehen wir nur weiter von Position fünf weiter. Also 1, 2, 3, 4, 5. Von diesem Charakter an werden wir alles nehmen, wie wir hier sehen können. Jetzt können wir auch bei dieser Methode die Ergebnisse anderer Methoden verwenden, die wir zuvor gelernt haben. Zum Beispiel, Lassen Sie uns versuchen, die ersten fünf Zeichen zu extrahieren , nachdem wir das erste Leerzeichen begegnen. Um dies zu tun, müssen wir zunächst die Position des ersten Raumes finden. Und das können wir mit der Positionsmethode tun, die wir vorher gelernt haben. Also hier werden wir die Position finden. Und zuerst werden wir hier den Komponisten einbauen. Und wir wollen die Position des ersten Raumes finden. Und dann werden wir die nächsten fünf Zeichen extrahieren. Aber da wir nach dem ersten Leerzeichen beginnen wollen, anstatt nach dem ersten Leerzeichen, müssen wir hier auch eine Eins zum Ergebnis hinzufügen. Seit der Position des ersten Leerraums, werden wir einen Anfang genau auf den Raum machen. Aber wir wollen bei einem nach diesem Raum beginnen. Also werden wir hier einen hinzufügen. Also lasst uns weitermachen und das laufen. Jetzt auch diese Aussage können wir intelligenter machen, indem wir andere Funktionen verwenden, die wir auch vorher gelernt haben. Versuchen wir zum Beispiel, die ersten fünf Zeichen nach dem ersten Leerzeichen zu finden , auf dem Zähler begegnet. Um dies zu tun, müssen wir zunächst die Position des ersten Raumes finden. Wir können das mit der Positionsfunktion tun, die wir früher gelernt haben. So können wir Position sagen. Und jetzt möchten Sie die Position des Raums in unserer Komponisen-Spalte und Typ 2 finden. Denken Sie daran, die Positionsfunktion zu verwenden. Also wollen wir die Teilzeichenfolge der Composer-Spalte finden. Und wir wollen an der Position oder besser nach der Position beginnen. Und wir werden das in einer Sekunde nach der Position des ersten Platzes erreichen. Also, um das Nachher zu bekommen, wird dies uns die Position des ersten Raumes geben. Und das würde bedeuten, dass wir dort anfangen werden. Aber wenn wir die Position nach dem ersten Raum einnehmen wollen, und wir müssen eine zu unserem Ergebnis hier hinzufügen. Und dann wollen wir die ersten fünf Zeichen extrahieren. Und so, und das werden die fünf hier sein. Und jetzt wieder, was wir tun, ist, dass wir diese Trump-Zeichenfolge finden oder eine Teilzeichenfolge und die Farbe des Komponisten verfeinern. Jede Zeile wird also wieder einen anderen Wert haben. Und wir werden an der Position des ersten Platzes plus eins beginnen. Also beginnen wir eins nach dem ersten Leerzeichen, und dann werden wir fünf Zeichen extrahieren. Also, wenn wir das ausführen, können wir hier sehen, das sind die Ergebnisse, die wir bekommen. Und nehmen wir unsere Limit-Aussage weg und sehen, wie es für alles aussieht. Konkret. Für Fälle, in denen es keinen Platz wie ein AC, DC hier. Oder mal sehen, ob es in diesem Fall noch einen gibt. So können Sie in diesen Fällen sehen, wir beginnen gerade mit dem Anfangswert, da die Position von Raum und Komponist, gibt es keinen Platz. Und deshalb wird uns das 0 geben. Also, wenn wir dies separat ausführen und wir speichern diese als Platzposition und sind auf der zweiten. So können Sie die Platzposition in diesem Komponisten sehen, zum Beispiel, es gibt kein Leerzeichen, und so wird dies uns 0 geben. Und so das Plus, als wir nur bei Charakter eins beginnen, weshalb wir hier zum Beispiel so beginnen und y zum Beispiel für CDC. Wir sehen auch mehr nur die ersten fünf hier genommen, was uns tatsächlich den vollständigen Komponisten Namen geben wird , weil der Raum Position hier 0 sein wird. Und so werden wir an Position eins beginnen, da wir das Plus 1 hier machen. Jetzt können wir dies noch komplizierter machen, wenn wir es noch einmal wollten, mit den gleichen Methoden sind die gleichen Funktionen, die wir zuvor hatten. Und lassen Sie uns das tatsächlich tun, teilen Sie dies über mehrere Zeilen auf, um es nicht zu weit in die Horizontale gehen zu lassen. Also, was wir tun werden, ist, dass wir das erste Wort nach dem ersten Leerzeichen finden. So wollen wir zum Beispiel alles zwischen dem ersten und dem zweiten Raum finden. Also in diesem Fall wird es junges Komma sein, oder hier wird es Bolzen Komma haben. Also, wie können wir das tun? Nun, jetzt müssen wir diese Komponente hier schlau machen, sonst musst du sie dynamisch machen. Also zuerst, was wir tun wollen, ist, dass wir alles nach dem ersten Raum finden wollen. Und dann wollen wir nur alles bis zum nächsten Raum finden. Also fangen wir damit an, alles in den ersten Raum zu finden, was wir hier tatsächlich schon gemacht haben. Also können wir das einfach nehmen und das kopieren und hier reinlegen. Aber dann schließen Sie unsere Klammern ab, da wir alles nach dem ersten Leerzeichen nehmen wollen . Nun, wir haben dies tatsächlich bereits getan, weil genau das hier, dieser Teil unserer Abfrage hier extrahiert, na ja, in diesem Fall extrahieren wir die ersten fünf Zeichen, aber wir könnten das genauso leicht entfernen. Und jetzt extrahieren wir alles nach dem ersten Raum. Also wollen wir das aber als Eingabe nehmen. Also, was wir tun werden, ist, anstatt unsere Composer-Spalte hier zu verwenden, oder besser gesagt die Zeichenfolge, die der aktuellen Zeile der Composer-Spalte entspricht. Wir werden stattdessen das Ergebnis davon verwenden. Und so gehen wir einfach hier, können wir das sehen. Wir wollen nur sicherstellen, dass alle unsere Klammern richtig geschlossen sind. Also unser erstes Element hier drin, und lassen Sie uns wieder einfach unseren Abstand anpassen, um dies lesbarer zu machen. Wir können sehen, dass das erste Element oder der erste Wert, und beiseite hier ist das Ergebnis dieser Aussage. Und das wird uns nach dem ersten Platz alles geben. Also jetzt in diesem Fall, zum Beispiel, werden wir jung und so weiter haben, weil wir die Charaktere nicht einschränken. Das nächste, was wir tun wollen, ist, dass wir alles bis zum nächsten Platz finden wollen. Da wir also wissen, dass wir nach dem ersten Leerzeichen beginnen, kann unser Startcharakter hier nur eins sein. Da wir direkt nach dem ersten Leerzeichen beginnen, was bedeutet, dass wir immer mit dem nächsten Wort beginnen wollen. Aber jetzt müssen wir die Endposition finden, die sich basierend auf der Länge des Namens ändern wird. Zum Beispiel hat junge fünf Zeichen im Namen Malthus F6. Und in jedem dieser Fälle haben wir tatsächlich ein Komma hinter sich. Und wie weit wir gehen wollen, um den zweiten Raum zu erreichen, wird sich wieder ändern. Also, was wir tun können, ist, dass wir sagen können , in Ordnung, nun, wir haben das schon hier. Grundsätzlich wollen wir nur auf die Position des nächsten Raumes gehen, sondern vielmehr auf die Position des nächsten Raumes und Komponisten gehen, was die Position des ersten Raumes sein wird. Wir müssen das Ergebnis dieser Aussage hier wieder verwenden. Also setzen Sie das hier rein und setzen Sie es einfach wieder auf eine neue Zeile, so dass alles einfacher zu wiederholen ist. Na gut, also gehen wir weiter und geben dem einen Lauf. Und schauen wir uns unser Ergebnis an. Also, was wir sehen können, ist jetzt bekommen wir genau das, was wir wollten, das ist jung ein Biotas Komma und dieses Quiz, es ist nur eine AMD. Lasst uns das noch einmal durchlaufen, denn diese Struktur ist irgendwie kompliziert. Hier gibt es viele verschachtelte Komponenten. Also unser erster Wert, die Zeichenfolge, von der wir die Teilzeichenfolge nehmen, ist tatsächlich das Ergebnis der Einnahme der Teilzeichenfolge der Composer-Spalte, die nach der Position des ersten Leerzeichens beginnt, was wir getan haben früher. So zum Beispiel, für unsere erste Reihe hier, wäre es nur jung und alles danach, da wir nicht einschränken, wie weit wir gehen. Das nächste, was wir dann mit diesem Ergebnis tun, ist, dass wir an Position 1 beginnen. Da wir jetzt, damit, beginnen wir nach dem ersten Raum. Und wir wollen auf die Position des nächsten Raumes gehen. Also wird die Position des nächsten Raumes dann zwei sein oder besser gesagt, um das richtig zu bekommen, wir müssen wieder das Ergebnis hier verwenden. Und so können wir dann die Jungen benutzen und so weiter. Und jetzt müssen wir die Position des nächsten Raumes finden, denn wenn wir nur die ursprüngliche Komponisten-Spalte verwendet haben, dann wird es uns nur die Position des ersten Leerzeichens in der vollständigen Spalte geben. Aber wir wollen das nicht, weil wir bereits einen Teilstring Teil dieser Spalte verwenden. Also wollen wir sicherstellen, dass wir, wenn wir die Positionsfunktion hier verwenden, das gleiche Substrat verwenden. Also wieder, wir werden die Position der ersten Zeichenfolge im Ergebnis der Teilstring-Anweisung finden , die wir hier geschrieben haben, die die gleiche sein wird, die wir hier unten verwenden. Nun, eigentlich gibt es hier eine Subtilität, die ist, dass wir tatsächlich ein nachgestelltes Leerzeichen zusätzlich zu den nachgestellten Kommas haben , die wir in einigen Fällen haben. Und jetzt könnten wir versuchen, im Grunde zu sagen, okay, wir gehen auf die Position minus eins, um die hinteren Leerzeichen loszuwerden. Aber das Problem ist in einigen Fällen, wenn es keine Leerzeichen mehr in unserer Teilzeichenfolge gibt. Zum Beispiel hier wird unser Ergebnis hier 0 sein. Also werden wir schon gehen für 0 Länge, weshalb, zum Beispiel hier AC, DC, wir haben nichts Kühler genommen eine keine Zeichen. Und wenn wir einen negativen Wert setzen, können Sie hier sehen, dass sich Postgres in diesem Fall beschwert, weil wir nicht in negative Werte setzen dürfen. Hier können wir negative Mengen von Text oder negative Mengen von Zeichen entfernen. Aber wir haben die Lösung bereits bekannt oder wir kennen bereits die Funktion, mit der wir dieses Problem lösen können. Nämlich, wir werden die Trim-Methode verwenden. Und hier werde ich nur den richtigen Trumpf verwenden , weil wir gezielt die rechte Seite abschneiden wollen. Und was wir tun wollen, ist, dass wir das abschließende Komma und auch das nachfolgende Leerzeichen abschneiden wollen. Wir werden unsere Funktion hier beenden und dies einfach wieder in die gleiche Zeile setzen , nur um irgendwie alles und Syntax zu haben. Und lasst uns weitermachen und das laufen. Und jetzt können wir sehen, dass wir das abschließende Komma sowie den abschließenden Raum, der tatsächlich versteckt ist, losgeworden sind. Und wenn wir hier nur ein Komma hätten, würden sich die Ergebnisse tatsächlich nicht ändern, weil wir zuerst das nachgestellte Leerzeichen haben , das wir in diesem Fall nicht sehen können, weil die Ausgabe aussieht. Seien Sie sich dessen bewusst, dass wir in diesem Fall einen Trainingsraum und ein abschließendes Komma haben würden. Nun, wie er hoffentlich sehen kann, auch wenn einige der Funktionen in den Postgres selbst ein wenig ähnlich erscheinen mögen. Zum Beispiel, warum sollten wir wissen die Position, dass es nicht sehr viele Anwendungsfälle geben darf. Aber die coole Sache ist, dass Sie alle diese Funktionen zusammen nutzen können. Und dadurch können Sie tatsächlich einige ziemlich coole Verarbeitungssachen schreiben. Und Sie können sehen, dass wir hier Art von Verschachtelungsergebnissen und die Ergebnisse einer Sub-Zeichenfolge als Einstiegspunkt für eine andere Teilzeichenfolge verwenden können . Es gibt also eine Menge coole Sachen, die wir tun können, indem wir verschiedene Funktionen miteinander verketten , verwenden die Ergebnisse, um einige wirklich schöne Datenverarbeitung zu machen. Selbst in diesem Fall, wenn die Aufgabe nur war, den ersten Wert nach dem ersten Leerzeichen und zwischen, zwischen dem ersten und dem zweiten Leerzeichen eher herauszuziehen . Also können wir hier sehen, es gibt wieder einige wirklich nette Sachen, die wir tun können, indem wir einfach mehrere dieser verschiedenen Funktionen zusammen verwenden , so dass wir ino, eine einzigartige und benutzerdefinierte Verarbeitung bekommen können , wo alles irgendwie nur Anpassung an die Eingabewerte, die wir haben. Und wir müssen nicht speziell hartcodieren bestimmte Längen Startpunkte oder so etwas sind. Wie wir hier sehen können, sind diese beiden Werte, die wir zurückgegeben haben, nicht sehr unterschiedliche Längen. Aber das ist völlig in Ordnung, weil unsere Abfrage alles kümmert und es ist nicht wirklich egal, wie lange jeder von ihnen ist, weil es auch das automatisch im Inneren erledigt hat. 30. 28String-AusstellungHB: Und wir haben uns bereits eine Menge Dinge angesehen , die wir mit Strings in SQL tun können. Aber es gibt noch eine coole und nützliche Sache, die ich Ihnen zeigen möchte, die Werte innerhalb von Strings ersetzt. Also lasst uns zuerst einfach unseren Skelett-Code hier schreiben. Einrichtung, wir haben etwas. Und in diesem Fall werden wir tatsächlich die Rechnungsspalte verwenden , weil ich diese Datumsspalte hier verwenden möchte. Also werden wir aus dieser Rechnungsspalte auswählen. Lassen Sie uns nur unsere Ergebnisse zuerst auf fünf beschränken. Und was ich tun möchte, möchte ich diesen Raum hier stattdessen mit einem T ersetzen. Nun gibt es verschiedene Möglichkeiten, dass verschiedene Programme und Schreibzeiten gibt es verschiedene Möglichkeiten, dass verschiedene Leute Themen formatieren können? Also manchmal etwas, das Sie sehen werden, ist ein T hier, oder Sie werden einige Schrägstriche hier sehen. Jetzt hat SQL ein sehr spezifisches Format, das Sie auch hier sehen können, Jahr, Monat, Tag mit Bindestrichen zwischen ihnen. Und du hast den Platz, und dann hast du Stunden, Minuten, Sekunden. Und dann haben Sie hier die Millisekunden-Komponenten. Und Sie können sehen, all dies ist Unterfelder sind durch Doppelpunkte getrennt. Und hier haben wir einen durch einen Punkt getrennt. Und so können wir auch in Ehre Rechnungstabelle suchen. Und wir können hier sehen, dass das Rechnungsdatum in diesem Fall tatsächlich ein Zeitstempel ist. Aber der Wert, den wir sehen, wie die Benutzer Art von freundlich für uns gemacht. Und es ist eigentlich die schönere Darstellung dieses Zeitstempelwerts. Und wir können dieses Ergebnis auch direkt nutzen. Aber weil verschiedene Programme und manchmal sogar verschiedene Menschen Datumsangaben anders formatieren. Und das ist das SQL-Format, das Sie wollen, aber Sie können es nicht immer bekommen, weil manchmal, wenn die Daten gerade aus dem Ergebnis einer Zeichenfolge von Urlaub eines Zeitstempels hochgeladen werden, manchmal die Art und Weise, wie dieses Programm diesen Zeitstempel oder dieses Datum in eine Zeichenfolge und ist möglicherweise nicht das tatsächliche Format, das Sie benötigen. Also schauen wir uns einfach eine Reihe von Platzierungen an. Auch wenn wir bereits den Wert haben, den wir hier wollen. Mit den String-Ersetzungen können Sie, wenn das andere allgemeine Format das gleiche ist, können Sie bereits einige wirklich schöne Werte erhalten. Wir können wirklich einfach zu dem Format gehen, das Sie brauchen. Also hast du das getan? Lassen Sie uns einfach dieses Rechnungsdatum hier ändern, um stattdessen Gewohnheit Kapital T dazwischen hier, die die gemeinsame Sache sind, die Sie irgendwann sehen könnten. Um das zu tun, werden wir Rechnungsdatum auswählen und wir werden es auswählen, so dass wir zu vergleichen haben. Und jetzt, um die tatsächliche Platzierung zu tun, werden wir die Ersetzen-Funktion verwenden. Und lassen Sie uns das Großbuchstaben behalten. Und die Syntax, die wir hier verwenden möchten, ist zuerst, wir wollen die vollständige Zeichenfolge setzen, die wir verwenden werden, was in diesem Fall nur mit dem Ergebnis des Rechnungsdatums sein wird, dann wollen wir den Wert haben, den wir wollen ersetzen. So zum Beispiel, in diesem Fall, und lassen Sie uns den Raum ersetzen. Und dann haben wir den Wert, durch den wir ihn ersetzen wollen. Also, zum Beispiel, ersetzen wir es durch das Kapital T und dann geben wir diesem einen Alias als modifiziertes Datum. Jetzt gibt es tatsächlich eine weitere Subtilität, um die wir kümmern müssen, das ist unser Rechnungsdatum intern ein Zeitstempel ist. Aber wenn wir es betrachten, wird es tatsächlich zu uns in die Textdarstellung dieses Zeitstempels umgewandelt, was es natürlich viel einfacher macht zu lesen. Es ist viel einfacher, das tatsächliche Datum mit Jahr, Monat, Tag, Stunden, Minuten, Sekunden zu lesen Monat, Tag, Stunden, Minuten, , anstatt nur eine Reihe von Zahlen zu betrachten, die eine Zeit darstellen. Was wir tun müssen, um dies richtig zu tun ist, müssen wir auch diesen Zeitstempel in ein Textformat konvertieren. Und gehen wir weiter und machen die Bekehrung hier. Und lassen Sie uns auch voran und machen die Konvertierung intern. Eigentlich, lassen Sie uns das hier nicht tun, weil ich Ihnen das Ergebnis seiner beiden zeigen möchte, aber wir müssen es hier drin haben, denn sonst betrachten wir diese, sind dies tatsächlich Zeitstempelwerte. Es gibt also Zeitstempel, aber wir müssen sie in eine Textdarstellung eines Zeitstempels konvertieren , der, wenn Sie es in SQL tun, so aussieht. Andernfalls können wir es nicht richtig verwenden. Wenn wir also voran gehen und dies ausführen, können wir hier sehen, dass dies das Ergebnis ist, das wir bekommen, wenn wir es in ein Textformat konvertieren, was im Grunde alles nach dem Punkt hier ist, der in diesem Fall nicht nur verwendet wird weil es nicht anwesend ist. Und dann haben wir den Platz hier durch den Tee ersetzt. So können wir sehen, dass dies die SQL oder Präsentation ist, die wir sehen, wenn wir Zeitstempelwerte haben, aber wir machen keine andere Konvertierung. So werden sie in diesem Fall dem Benutzer angezeigt. Und wir würden tatsächlich, wenn wir dies in einen Text umwandeln wollen, können wir hier sehen, dies ist das resultierende Casting, das wir haben, die genau den gleichen Wert sind , weil wir hier keine zusätzlichen Millisekunden-Komponenten haben. Aber es ist immer noch schön, nur diesen subtilen Unterschied bewusst zu sein , den Sie erhalten werden, wenn eine Zeitstempelspalte in einen Textdatentyp konvertieren. Nur weil es etwas ändert, wie die Ausgabe aussieht, aber das wirkt sich auch wirklich darauf aus, wie wir diese Werte verwenden werden. So können wir manchmal sehen, dass wir Datumswerte, Datumswerte oder Datetime-Werte erhalten , die dieses Team zwischen haben, die in diesem Fall können wir tatsächlich verketten. Und wir werden an die Kette gehen. Denn in Wirklichkeit, lassen Sie uns einfach das Beispiel behandeln, dass wir diesen Wert in sich bekommen. Also werden wir unsere Operationen hier verketten. Aber in Wirklichkeit haben wir nur diese modifizierte Datumsspalte genommen und dann lassen Sie uns dieses grundlegende UND, ODER dieses t wieder entfernen . Also werden wir das Ergebnis dieser Ersatzaussage hier ersetzen, was wir hier sehen. Wenn dies also eine echte Eingabe war und wir den Tee wegnehmen wollen, da diese Art von bringt es in das esco Format, dass wir es als ID, Datum, Uhrzeit oder als Zeitstempel verwenden müssen . Also werden wir das ersetzen und wir werden ersetzen. Und lasst uns das vorerst auf eine neue Linie setzen. Wir werden das T ersetzen, und wir werden es durch einen Raum und das Endlose ersetzen . Und es ist auch geben Sie den Spaltennamen hier wieder. Wenn wir also weitermachen und das ausführen, können wir sehen, dass wir den genauen Wert zurückbekommen. Aber wieder, was wir getan haben, ist, dass wir den Raum hier durch das t ersetzt und dann haben wir das T waken ersetzt. Und manchmal werden Sie nur sehen, dass es Fälle geben kann, in denen Sie nur Datumszeiten haben, die so aussehen. Jetzt gibt es einige SQL-Datenbanken, die sich mit diesem Format befassen können. Zum Beispiel ist postgres einer von ihnen, wo wir das tatsächlich noch nehmen und es in einen Zeitstempeltyp konvertieren können . Und wir können sehen, ob wir das laufen, rennen, diese ganze Sache. Wir können hier sehen, dass wir es irgendwie wieder in Zeitstempel umwandeln. Aber im Allgemeinen die richtige SQL-Formel, die Sie als Leerzeichen zwischen hier wollen, da nicht jede SQL-Datenbank mit diesen T-Werten wie folgt umgehen kann. Und so in einigen Fällen kann die Aussage tatsächlich abstürzen. Und so sei dir bewusst, dass es eine Art ideales SQL für immer gibt, ohne dass du willst, das ist Jahr, Monat, Tag, Raum, Stunden, Doppelpunkt Minuten, Doppelpunkt Sekunden. Und der Grund, warum Sie es so haben, ist, dass , selbst wenn diese Werte Strings sind, wenn Sie sie sortieren, sie immer noch in der richtigen Reihenfolge sortiert werden. Und deshalb ist es auch wichtig, dass wir dieses Format von Jahr, Monat, Tag und NADH Tag, Monat, Jahr oder Monat Tag, Jahr oder so etwas haben. Mit diesem sehr spezifischen Format ist alles sehr Standard. Also in diesem Fall können wir in Postgres sehen, das Kapital T ist kein Problem, aber das gilt nicht für alle Datenbanken. Und SQL ist irgendwie sehr variabel. Und natürlich, wenn Sie am Ende tragen müssen, verwenden Sie vielleicht mehrere verschiedene SQL-Datenbanken. Die Aussage kann mehr als eine von ihnen machen und kann abstürzen und die andere, weil sie wieder näherten, dass etwas anders war. Also seien Sie sich dessen bewusst. Idealerweise möchten Sie für dieses saubere Format gehen. Und natürlich können Sie alle Ersatz- und Gussteile verwenden. Und das waren Teilzeichenfolgen und alles andere, was wir gelernt haben, alle Verarbeitungssachen, um alle Spalten zu modifizieren und sie in das richtige Format zu setzen, so dass Sie die Typkonvertierung durchführen können. Aber seien Sie sich bewusst, dass Sie manchmal Datumsspalten und falsche Formate haben können. Und eine andere, die häufig gesehen wird, ist zum Beispiel, Striche, Schrägstriche anstelle von Bindestrichen zu haben . Also eine andere, die nicht so häufig gesehen ist, ist , um zu beginnen, dies in einen Zeitstempel zu konvertieren, damit wir das Ergebnis tatsächlich sehen können. Aber eine andere, die allgemein als Summen wie Striche hier oder so etwas gesehen wird. Seien Sie sich also bewusst, dass dies Dinge sind, denen Sie begegnen können. Und dieser Fall, wie wir sehen können, weil das Timestamp-Casting wieder funktionierte, aber andere SQL-Datenbanken sind möglicherweise nicht so großartig, sich an diese verschiedenen Formate anzupassen. Seien Sie sich also bewusst, dass wir die einfachen Ersetzungsmethoden sowie andere String-Methoden verwenden können , die wir zuvor für die Verarbeitung oder Bearbeitung von Daten verwendet haben , um unsere Daten in das richtige Format zu bringen. 31. 29DateandTimeHB: Jetzt werden Datums- und Uhrzeitinformationen, wie wir auch hier in der Spalte Rechnungsdatum haben , wahrscheinlich in der einen oder anderen Form sehr oft in Ihren SQL-Tabellenerscheinen in der einen oder anderen Form sehr oft in Ihren SQL-Tabellen weil es wirklich schön ist, den Überblick zu behalten, wann Dinge aufgetreten sind. Lassen Sie uns also einen Blick auf Daten und Zeiten werfen und wie wir sie verwenden können, um einige Informationen aus ihnen zu extrahieren. Nur weil es so ein gemeinsames Feld sein wird, das zu sehen ist. Nun, was wirklich schön ist, ist, dass SQL wirklich gut im Umgang mit Datums- und Zeitinformationen ist . Und, und das ist großartig, weil es uns viel Flexibilität gibt. Also lassen Sie uns einfach voran und schreiben Sie zuerst eine Skelett-Select-Anweisung aus unserer Rechnungstabelle, die unsere Ergebnisse begrenzt 25. Und wieder, wir haben das schon vorher gesehen, aber lassen Sie uns einfach voran und wählen Sie die Spalte Rechnungsdatum aus. Und wir gehen weiter und führen das aus. Und wir können hier sehen, dass dies eine Art von Texten oder Präsentation ist, die wir in unserer Tabelle nicht zu uns zurückkehren können , weil der Wert selbst einen Zeitstempel hat. Und wir haben auch gesehen, dass, wenn wir dies auf einen Textwert umwandeln, wir es einfach ohne die Millisekundenkomponente in diesem Fall bekommen können , weil es tatsächlich nicht enthalten ist. Aber sagen wir, wir sind nur daran interessiert, das Datum zu verwenden, zum Beispiel, wir sind nicht besonders daran interessiert, die Zeit zu nutzen. Nehmen wir an, wir wollen eine Analyse durchführen, wo wir sehen wollen, okay, ich muss verstehen, wann Dinge von Tag zu Tag allein passieren, oder vielleicht sogar nicht einmal diese Größe. Aber ich bin nicht super interessiert an der Zeitkomponente hier. Was wir also tun können, ist unser Rechnungsdatum zu verwenden. Wir können das einfach zu einem Date machen. Also lasst uns voran und vielleicht lasst uns diesem einen Alias als Datum geben. So können wir das ausführen und wir können hier sehen, dies wird nur unsere Art von anfänglicher Ausgabe sein. Und wenn wir nur die Datumskomponente herausnehmen, können wir sehen, dass wir sehr leicht das Datum ausschneiden und wir Dinge mit dem Datum machen können. Und wir können zum Beispiel auch die Zeit rausholen. Denn vielleicht, sagen wir mal, wir sind nur daran interessiert , eine Analyse durchzuführen, die bestimmte Tageszeit betrachtet. Und wir sind nicht sehr interessiert an den Tagen und dem Datum hier, sondern wir sind eher daran interessiert, die Tageszeit zu betrachten , weil wir Schwankungen mit der Tageszeit oder so etwas verstehen wollten. So können wir hier sehen, sobald wir es im richtigen Zeitstempelformat oder im richtigen Datumszeitformat haben. Wir können dann sehr einfach nur die Informationen, die wir brauchen, daraus extrahieren. Und wir können dies auch zum Filtern verwenden. Also zum Beispiel, nehmen wir zuerst unsere Limit-Anweisung weg , so dass wir irgendwie das vollständige Ergebnis erhalten. Nehmen wir an, wir sind daran interessiert, einige Verhaltensweisen basierend auf der Tageszeit in der Woche zu analysieren. Das ist zwischen, Das beginnt mit der ersten der ersten Linie 2000 und geht bis zum sechsten der ersten. So können wir tun, ist in unserer Where-Klausel, wir können sagen, wo Rechnungsdatum zwischen ist. Und hier können wir sagen, wir nehmen die Saite 2019, äh, 11. Dies können wir zu einem Datum und Ende werfen. Brauche diese Klammern nicht dazwischen. Und dann auch hier, was wir dieses 2000 haben werden und wen ich hier neun schreiben wollte jetzt 192 Tausend Zeile und dann ein 1 und 0, 6. Und wieder, wir werden das in ein Date umwandeln. Wenn wir also voran gehen und dies ausführen, können wir hier sehr leicht sehen, wir können Datumsfilterung durchführen und wir können auch tagsspezifische während tun. Weil SQL von Natur aus Datums- und Uhrzeitformate versteht, was natürlich sehr nützlich ist, weil Datums- und Uhrzeitwerte so oft auftauchen. Und zuletzt, oder ganz allgemein, kümmern Sie sich um das, was zuletzt passiert ist, nicht so sehr wie das, was fünf Jahre passiert ist. In der Vergangenheit sollten Sie natürlich auf diese Informationen zugreifen können. Aber die meisten der Zeit, wenn Sie versuchen, auf Informationen zuzugreifen oder eine Analyse durchzuführen, sind Sie am meisten an den neuesten Daten interessiert. Und so können wir dies mit SQL sehr einfach tun, indem wir nur die inhärenten Datumswerte, die inhärenten Zeitwerte sowie den Zeitstempelwert verwenden die inhärenten Zeitwerte , da sie alle Art miteinander kompatibel sind. Nun, es gibt auch eine andere coole Sache, die diese Funktion jetzt genannt wird. Nun, was das tut, ist, dass es im Grunde den aktuellen Datums- und Zeitwert gibt. Also lasst uns weitermachen und das laufen. Und wir können hier sehen, dass das Ergebnis hier das gleiche ist , weil es nur einen Wert zurückgibt, aber es gibt das aktuelle Datum und die Uhrzeit in UTC-Zeit. So können wir sehen, dass es den genauen Datums- und Zeitwert in UTC-Zeit gibt. Und wir können dies auch hier wieder verwenden, um Werte daraus zu extrahieren. Zum Beispiel, um das aktuelle Datum zu erhalten, können wir einfach ab und zu das Ergebnis verwenden. Und von hier aus extrahieren Sie einfach das Datum. Und wir können dies als aktuelles Datum speichern. Und so unsere aktuelle Datumsspalte hier, zum Beispiel, wird es nur sein, was wir hier sehen, das aktuelle Datum. Jetzt können wir dies auch für Filter verwenden. Zum Beispiel können wir sagen, in Ordnung, lassen Sie uns alle Orte finden, an denen das Rechnungsdatum größer oder gleich oder Eisbahn ist. In diesem Fall wird es mehr Sinn machen. Aber sagen wir, oder die Devs-Komponente des Rechnungsdatums ist gleich dem heutigen Datum, was wir tun können. In diesem Fall werden wir natürlich keine Werte an uns zurückgeben, weil die Daten hier alt sind und es nichts gibt, was dem heutigen Datum nahe kommt, wie wir sehen können. Aber wir können immer noch dynamische Filterung wie diese verwenden. Zinsen lassen sich unsere Abfragen basierend auf dem Datum anpassen und wenn sich die Dinge ändern, bleiben unsere Daten immer noch aktualisiert, weil wir diese interne NOW-Funktion verwenden, die uns nur das aktuelle Datum und die aktuelle Uhrzeit gibt. Und dann können wir zum Beispiel das Datum extrahieren und, wissen Sie, Datumsinformationen von dort erhalten. Und natürlich, weil SQL von Natur aus Datums- und Zeitwerte versteht und richtig verwendet, können wir alle möglichen Vergleiche durchführen und Bereiche und alle möglichen coolen Sachen betrachten. 32. 30DateTimeIntervall, 30DateTimeIntervall, 30Date-: Keine Ergänzung dazu, nur Datums- und Zeitwerte zu extrahieren und Vergleiche und so zu machen. Sql hat auch eine wirklich coole Option, dass wir Zeitintervalle verwenden können. Sehen wir uns das an. Lassen Sie uns einfach unsere Skelett-Select-Anweisung hier ausführen, wählen Sie aus unserer Rechnungstabelle und beschränken Sie unsere Ergebnisse auf fünf. Gehen Sie weiter und führen Sie das aus. Versuchen wir nun, zuerst die Zeitdifferenz zwischen dem heutigen aktuellen Datum und dem Rechnungsdatum auszuwählen, oder versuchen wir, hier zu finden . Also lassen Sie uns das Rechnungsdatum extrahieren, so dass wir Vergleichswert haben. Und dann werden wir unsere jetzt nutzen, um uns den aktuellen Zeitpunkt zu geben. Und jetzt, um ein Intervall zu erhalten, müssen wir nur vom Rechnungsdatum subtrahieren, das einen Zeitstempel hat. Da beide Zeitstempel-kompatibel sind, können wir jetzt unseren Nullwert nehmen , der uns auch einen Zeitstempel gibt und vom Datum der Rechnung subtrahieren. Und hier können wir das zum Beispiel als Zeit seit der Rechnung nennen . Und wenn wir das ausführen, können wir hier sehen, das ist unser Rechnungsdatum und dieses Jahr ist der Zeitunterschied seit der Stimme. So zum Beispiel, wir haben hier gesehen, sind wir in diesem Fall zu sehen, es ist etwa 4.200 Tage seit diese Rechnungen halb vorbei, abhängig vom genauen Datum. Jetzt können wir diese beispielsweise auch in Datumswerte konvertieren, da wir derzeit Informationen über Stunden, Minuten und Sekunden erhalten. Wir können diese auch auf Datum umwandeln. Also, wenn wir wollen und welchen Fall werden wir nur direkt Daten bekommen, dunkle di, Unterschiede, wie wir hier sehen können. Dies ist also eine Möglichkeit, dass diese Art von Intervall auftaucht. Wir können Intervallunterschiede zwischen verschiedenen Zeiten bekommen. Aber natürlich hört es dort nicht auf. Wir können auch Intervalle verwenden. Sehen wir uns das an. Nehmen wir zuerst unsere Rechnungsspalte und unsere Rechnungsdatumsspalte, und lassen Sie uns einfach etwas Zeit darauf hinzufügen. Also Baby, wir wollen nicht haben oder wir wollen die Daten nicht in UTC zeigen. Wir haben nicht intern in UTC gespeichert, aber wenn wir es herausnehmen, wollen wir zu einer separaten Zeitzone wechseln. Gehen wir zum Beispiel zu UTC plus 1. Also, wie können wir hier eine Stunde auf Tour Rechnungsdatum hinzufügen? Nun, es ist wirklich einfach, weil alles, was wir tun müssen, ist Plus hier. Und jetzt haben wir diese Intervalloption und SQL. Und das Intervall. Jetzt haben wir hier nur eine Zeichenfolge von der Menge an Zeit, die wir hinzufügen möchten. Zum Beispiel möchten wir auf eine Stunde hinzufügen. Und hier können wir dies speichern, wie zum Beispiel, fügen Sie eine Stunde. Also, wenn wir das ausführen und uns das vorerst wegnehmen, kommt irgendwie im Weg. Wenn wir das ausführen, können wir sehen, dass dies unser ursprünglicher Eingabezustand ist und das ist unser Rechnungsdatum mit einem unserer Audits darauf. Was schön ist, ist, wenn wir unsere Datetime-Werte intern haben, wie Sie sehen können, können wir immer noch alle möglichen Timeline-Konvertierungen durchführen. Und sobald wir es herausnehmen und es angemessen machen, was auch immer wir zeigen wollen, sind natürlich Optionals viel, nur um eine Stunde hinzuzufügen, aber wir können wirklich nicht alles, was wir möchten, zum Beispiel, sondern lassen Sie uns unsere Spalte zuerst umbenennen. Also hier können wir sagen, Zeit hinzufügen. Lassen Sie uns 1 hinzufügen. Zweitens, Trend. Mach es so. Du kannst das tun und für eine Minute nachdenken. Wir können auf einen Monat hinzufügen, wir können auf ein Jahr hinzufügen, oder wir können sogar auf mehrere Jahre. Wenn Sie mehrere Jahre hinzufügen möchten, können Sie entweder zwei Jahre tun oder Sie können auch ein S hier setzen, wie wir sehen können, ihre Ergebnisse selbst ändern sich nicht. Aber es ist schön, weil wir diesen Intervallwert jetzt verwenden können, um ein Zeitintervall zu haben , das wir durch die Zeichenfolge hier angeben. Nun, was wir auch tun können, sagen wir, wir wollen sie zwei Jahre und einen Monat hinzufügen. Führen Sie das aus. Und wir können sehen, dass sich alles zu zwei annimmt. Die Intervallanweisung hier ist also cool. Und es ist cool, es in der select-Anweisung verwenden zu können, aber es ist noch kühler, es innerhalb unserer Filterung verwenden zu können. Also werfen wir einen Blick auf das und lassen Sie uns wählen oder wegnehmen oder Aussagen. Und lasst uns vorerst unser Limit loswerden. Und auch nur das hier loswerden und es machen, wonach wir filtern werden. Also möchte ich auf 15 Jahre zu unserem Rechnungsdatum hinzufügen. Und jetzt möchte ich filtern, wo unser Rechnungsdatum plus das Intervall aller. Lassen Sie uns alle Kapital machen, nur um irgendwie wieder anzuzeigen, das ist SQL-Anweisung. Plus das Intervall von 15 Jahren ist größer als das aktuelle Datum und die aktuelle Uhrzeit. Also, wenn wir dies ausführen, können wir in diesem Fall sehen, werden wir alle Werte zurückgegeben, weil wenn wir 15 Jahre auf das Rechnungsdatum hinzufügen , dass wir in 2024 sein werden. Und so können wir natürlich sehen, in diesem Fall wird alles nach dem aktuellen Datum und der aktuellen Uhrzeit sein. Das ist ein Weg, es zu tun. Eine andere Möglichkeit, dies zu tun oder zu filtern, ist, sagen wir, wir wollten alle Rechnungen in der letzten Woche finden. Was wir hier tun können, ist, dass wir auch Intervalle auf der anderen Seite verwenden können. Nehmen wir also zuerst an, lassen Sie uns diesen Weg nehmen, nur um die Spalten so zu verwenden , wie wir sie in regulären Tabellen finden würden. Nehmen wir also an, unsere Rechnungsdatumstabelle wird noch aktualisiert und wir möchten alle Rechnungen innerhalb der letzten Woche finden , damit wir alles in Ordnung hören können. Nehmen wir das aktuelle Datum und die aktuelle Uhrzeit und subtrahieren wir das Intervall von sieben Tagen. Also suchen wir alles in den letzten sieben Tagen. Und damit wir das ausführen können. In diesem Fall werden wir nichts zurückbekommen, weil das vor ewig passiert ist. So können wir hier zum Beispiel tun, wie wir es wieder können. In diesem Fall sind unsere Ergebnisse natürlich nicht ändern Routing bekam so viele Jahre. Aber Sie können hier sehen, nur vorstellen, dass unser Rechnungsdatum irgendwie ständig aktualisiert wurde. Wir können unsere Anfragen an die aktuellen Zeitintervalle anpassen lassen, oder wir können bestimmte Zeitbereiche finden, indem wir entweder das aktuelle Datum und die aktuelle Uhrzeit nehmen und sieben Tage abheben. Wir können dies auf ein Datum umwandeln, um sicherzustellen , dass die Zeitinformationen nicht hereinkommen und dann sieben Tage abnehmen. Und auf diese Weise können wir einige wirklich schöne Filterung tun, um zum Beispiel die Dinge zu betrachten, die die letzten sieben Tage passieren und Dinge, die in den letzten 10 Tagen passiert sind, die Dinge, die in den letzten 24 Stunden passiert sind, die Dinge, die geschah in den letzten fünf Stunden. Wir können eine wirklich benutzerdefinierte Zeitintervalle für die Filterung verwenden. Und das ist wirklich schön, weil die meiste Zeit, wenn wir Daten verwenden, die eine Art Zeitstempel zugeordnet sind. Wir werden nicht alle Daten über die ganze Zeit verwenden. Meistens sind wir meistens nur daran interessiert, bestimmte Zeitregionen zu betrachten. Und so können wir sehen, dass diese Option in der Lage sein, Intervalle zu verwenden um entweder Vergleiche mit dem aktuellen Datum und der Uhrzeit oder mit dem aktuellen Datum zu machen, oder Zeitintervalle zu definieren, indem wir diese Intervallanweisung hier verwenden, können wir wirklich benutzerdefinierte Select-Anweisungen, die uns nur Daten für genau die Zeitrahmen liefern, an denen wir interessiert sind. 33. 31KommentareHB: Jetzt ist eine weitere sehr wichtige Sache beim Schreiben von Abfragen oder auch beim Schreiben von Code im Allgemeinen das Verlassen von Kommentaren. Denn wenn Sie etwas lesen und wenn es komplex wird, Es ist wirklich schön, Kommentare oder Anmerkungen zu haben, die erklären, was Sie tun oder was Sie denken oder was dieser Teil vier ist, so dass, wenn Sie später wieder darauf kommen oder als andere Leute versuchten, es zu lesen, verstehen sie den Denkprozess und was hier vor sich geht. Denn manchmal, wenn Sie eine komplexere Abfrage oder komplexeren Code schreiben, und dann lassen Sie es für ein paar Monate und dann versuchen Sie , zurückzukommen, wenn Sie versuchen, herauszufinden , was genau Sie an jedem Punkt getan haben und warum dies hier in Ohio, es hat dieses Format und warum Sie vielleicht den besonderen Trick gemacht haben. Einen Kommentar hinterlassen zu haben, ist eine wirklich nette Möglichkeit, Menschen durch sie zu führen, so dass sie Ihren Denkprozess verstehen, die Art des Denkens und warum, zum Beispiel, spezifisch, das getan wurde oder was auch immer Sie wollen, um zu schreiben. Lassen Sie uns also einen Blick darauf werfen, wie wir Kommentare schreiben können. Und wir werden nur eine einfache Abfrageaussage hier aus unserer Rechnungstabelle verwenden. Und nur unsere Ergebnisse auf fünf zu begrenzen, nur weil es eine Gesichts-Skelett-Aussage ist. Also lasst uns weitermachen und einige Kommentare hinterlassen. Lassen Sie einige sehr grundlegende Kommentare wird die dennoch. Der erste Weg, wie wir Kommentare hinterlassen können, ist mit einem doppelten Bindestrich. Und dann wird alles, was wir nach diesem Bindestrich hier schreiben, gemeinsam sein. - Gut. Setzen Sie hier ein Leerzeichen, damit es besser lesbar wird. Zum Beispiel können wir hier sagen, Spalten auszuwählen. Und wenn wir das ausführen, dann können Sie sehen, dass wir irgendwie alles zurückbekommen. Und selbst wenn wir den Raum hier entfernen, ist es immer noch alles funktioniert. Die Kommentare sind nicht Teil der Ausführung, aber wir können sie hier lassen. Wir können sehen, dass sich diese nicht auf die nächsten Zeilen erstrecken , wie wir sehen können da dieser Teil der SQL-Anweisung noch geschrieben wird. Wenn wir jedoch nicht getrennt oder SQL-Anweisung über mehrere Zeilen haben, dann wird alles danach in der gleichen Zeile kommentiert werden, in diesem Fall werden wir jetzt ein Problem haben. Also das ist auch, es ist schön, all das Zeug über mehrere Zeilen aufgeteilt zu haben. Nun in diesem Fall, wie Sie vielleicht gesehen haben, macht Databricks tatsächlich etwas kluges Kommentieren, wobei, wenn Sie einen Kommentar haben und irgendwo eine neue Zeile hinzufügen, automatisch diesen Zahlenstrich vorne hinzufügt , der in den meisten Fällen eigentlich wirklich schön in diesem Fall als wir versuchten, zu unserer Abfrage zurückzukehren und natürlich nicht das war, was wir zu tun versuchten. Das ist eine Sache, die spezifisch für den Datengriff und nicht spezifisch für Postgres ist. Wie auch immer, wir können gemeinsame Aussagen wie diese verwenden. Und lassen Sie uns das einfach noch einmal ausführen, um die Warnung loszuwerden. So können wir KMS-Anweisungen wie diese verwenden, um unseren Code oder unsere Abfragen zu kommentieren. So können wir hier sitzen, zum Beispiel, Auswahl aus Rechnungstabelle. Natürlich sind unsere Kommentare in diesem Fall irgendwie trivial und nicht besonders nützlich. Aber wenn sich der Gedankenprozess dreht, hinterlässt Sie vielleicht einen Kommentar am Anfang eines komplexeren Teils der Abfrage. Und dann können Sie sehen, dass dieser Teil dies tut. Sie müssen nicht jede einzelne Zeile kommentieren, aber nur sagen, wie dieser folgende Block ist dafür verantwortlich oder wenn Sie irgendwo eine bestimmte Logik haben, verwenden wir zum Beispiel Positionsanweisungen, um bestimmte -Intervallen. Sie können sagen, dass R-Datenformat so ist, weshalb wir die Annahme verwenden können, um die Position dieses zu finden, um diesen nächsten Wert zu finden. Wissen Sie, nur erklären Ihren Denkprozess davon, wenn die Leute kommen, um es zu sehen oder zu erneuern, kommen Sie ein paar Monate später zurück, weil Sie vielleicht nicht ändern müssen, dass Sie immer noch verstehen können , dass Denkprozess und Sie müssen nicht versuchen, die Abfragen aufzuschlüsseln und den verstehen und irgendwie Gedankenprozess zu verstehen und irgendwiezusammenzufassen, den Sie ein paar Monate zuvor aufgetaucht haben. Also ja, wir können einzelne Zeile schreiben kommt dies, wir können sie auch in separaten Zeilen schreiben. Zum Beispiel ein neuer Zeilenkommentar. Dies wird also ein Kommentar sein, der in einer neuen Zeile auftritt. Und wieder, alle diese Kommentare, die mit S Doppelstrich beginnen, erstrecken sich nur über einzelne Zeilen. Wir können auch mehrzeilige Kontinente haben. Nun, eine Möglichkeit, die wir irgendwie gesehen haben, ist, dass wir einfach auf mehrere Zeilen erweitern und Commons und mehr Zeilen hier haben können . Aber das ist nicht sehr effizient. Denn wenn Sie über mehrere Zeilen schreiben möchten, möchten Sie nicht alle diese Bindestriche drin haben. Was wir stattdessen tun können, ist, dass wir ein Format verwenden können, das wie Schrägstrich Stern aussieht. Und dann startet das den mehrzeiligen Kommentar. Und wir können den Kommentar mit Stern Vorwärtsslash wieder beenden. Und dann einfach wegnehmen die Aussagen hier, weil es nicht mehr weniger als nötig. Und jetzt können wir sehen, jetzt haben wir einen mehrzeiligen Kommentar. Also alles zwischen diesem Schrägstrich Stern und Stern vorwärts Schrägstrich, all dies wird kommentiert werden und fragen Kommentare gehen. Wir können sehen, dass sich unsere Ergebnisse natürlich nicht ändern werden, wenn wir dies ausführen . Nun, mit diesem, nun, können wir sogar tun, ist, dass wir ungewöhnlich zwischen den Aussagen. Zum Beispiel können wir hier sagen, um die Tabelle zu sagen und dann enden oder gemeinsam wieder. Und wir können dies ausführen, und das wird immer noch funktionieren, weil nichts davon Teil der tatsächlichen abschließenden Abfrage sein wird, die ausgeführt wird. Alle Kommentare, die hier entlasten, sind nur um unsere Anfragen zu stellen oder wenn Sie es woanders verwenden. Und Code ist die Kommentare im Allgemeinen gibt es, um den Code lesbarer zu machen, um Ihren Denkprozess zu erklären, um die Logik zu erklären. Auch hier ist der Punkt der Kommentare nicht, jede einzelne Zeile zu kommentieren, vor allem wie die triviale gemeinsame, die hier begangen haben, indem wir unsere Spalten auswählen, aus der Rechnungstabelle auswählen. Aber vielmehr ist es, wenn Sie in einen Teil gehen, der nicht offensichtlich und selbsterklärend ist , das einige Verwirrung verursachen kann. Es ist gut, einfach einen Kommentar zu hinterlassen, um in diesem gemeinsamen zu erklären kann kürzer sein, kann lang sein, je nachdem, wie viel Erklärung notwendig ist , nur um zu erklären, was hier vor sich geht. Das ist also jemand, der neu darin ist, der die Abfrage zum ersten Mal sieht. Kommen Sie zurück einen Monat, zwei Monate, sechs Monate, ein Jahr später auf die gleiche Abfrage kann immer noch sehr schnell verstehen und irgendwie verstehen, die Essenz der Abfrage. Verstehen Sie, was in jedem Teil los ist und dass sie nicht durch sie gehen und oder verloren durch das, was auf einem bestimmten Teil vor sich geht. Und dann müssen sie Zeit damit verbringen, herauszufinden, okay, was genau macht dieser Teil der Abfrage hier und warum ist es so und wie warum gibt es all diese besonderen Bedingungen? Auf diese Weise, Mino, Kommentare zu haben, kann das Leben eines jeden viel einfacher machen. 34. 32AggregationsFunctionsHB: Was an SQL wirklich cool ist, ist, dass Abfragen weit über die Auswahl bestimmter Spalten und Zeilen hinausgehen und Operationen für Zeilen ausführen können , was bereits sehr cool ist. Aber wir haben auch Möglichkeiten, alle Arten von Aggregationen durchzuführen. Lassen Sie uns jetzt einen Blick auf etwas davon werfen. Lasst uns wieder in unseren Track-Tisch gehen. Und schauen wir uns genau diese Millisekunden-Spalte an und schauen Sie sie an, versuchen Sie, einige aggregierte Informationen darüber zu erhalten. Zum Beispiel, was, wenn wir wollen, um die durchschnittliche Zeit eines soliden oder die längste Zeit oder die kürzeste Zeit zu finden. Oder was, wenn wir nur einige Informationen wollen, wie viele Werte in dieser Spalte sind? Werfen wir einen Blick auf einige davon. Wir werden unsere Skelett-Select-Anweisung zuerst schreiben, Auswahl aus der Truck-Tabelle und Begrenzung unserer Ergebnisse auf 5 plus nur irgendwie sehen Sie, dies ist die Tabelle für Ich mag die Auswahl aus. Ordnung, also werden wir jetzt zuerst versuchen, die durchschnittlichen Millisekunden für den Patienten zu finden. Um dies zu tun, können wir eine Funktion namens oder bezeichnet AVG für den Durchschnitt verwenden. Und wenn wir hier nur in die Millisekunden-Spalte setzen, dann werden wir einen Wert zurückgeben, der die durchschnittliche Dauer sein wird. Wir wissen, dass es die Dauer ist, weil das irgendwie ist, was die Millisekunden-Spalte spendet. Aber es ist nur der Durchschnitt der Millisekunden-Spalte. So können wir uns einen besseren Aliasdurchschnitt von Milli Sekunden geben. Und so wird dies der Durchschnittswert unserer Millisekunden-Spalte sein. Wir können auch andere Dinge tun. Zum Beispiel können wir die längste Zeit finden. So können wir das Maximum der Millisekunden-Spalte finden, die wir hier sehen können. Dies hier wird die längste Zeit sein, die wir in dieser Millisekunden-Spalte hier haben. Und das ist unser Wert hier. Wir können auch die kürzeste Zeit finden, indem wir das Minimum nehmen. Sum, unseren Namen hier nochmals zu aktualisieren, werden wir das Minimum haben. Und hier können wir sehen, das ist die kürzeste Zeit, die wir in unseren LKW-Werten für die Zeit in Millisekunden haben. Wir können auch eine, eine andere Aggregationsfunktion verwenden, wo wir alle Werte in einer Spalte zusammenfassen können , zum Beispiel. So können wir alles in Millisekunden zusammenfassen, was die Gesamtzeit aller Tracks sein wird. Wenn wir also alle Werte in dieser Millisekunden-Spalte zusammenfassen , wird uns dieses Ergebnis hier geben, wie wir sehen können, jetzt gibt es eine weitere coole Funktion, die wir haben, die die Zählung ist. Jetzt die Zählung hier drin, wir werden eine Spalte setzen und es wird die Anzahl der Vorkommen zählen, die wir haben. Es wird uns also nur eine Zählung der Anzahl der Werte geben, die wir haben. So können wir zum Beispiel hier die Millisekunden-Spalte einfügen. Und es wird uns die Anzahl der Instanzen in Millisekunden sagen. Und wenn wir das ausführen, können wir in diesem Fall sehen, dass wir 3.503 verschiedene Instanzen haben. Also 3.503 Werte hier drin. Dies sind keine eindeutigen Werte. Dies sind nur verschiedene Instanzen in diesem Fall, oder die Tabelle wurde irgendwie bei 500 abgeschnitten, nur weil sie nicht zu viel zeigen will. Aber wir können tatsächlich, wir können hier für Sie sehen in sie Filterung zum Beispiel, wir haben mehr Werte zur Verfügung. In der Tat haben wir 3.503 Zeilen, in denen diese Werte zu finden sind. Nun der Grund, warum ich ausdrücklich die Anzahl der Instanzen in Millisekunden sage und weil, wenn es Nullwerte gibt, dies die Anzahl beeinflusst. Also lassen Sie uns einen Blick auf einen Wert werfen ist, wo wir wissen, dass es keine Werte gibt, die die Komponistenspalte ist. Also lassen Sie uns die Anzahl der Instanzen zählen, die wir haben und die Hoffnung und die Komponistenspalte als Anzahl der Instanzen und Composer und führen Sie diese und Blick auf die Ergebnisse hier sehen wir haben 2525 Zeilen, die keine Nullwerte enthalten. Während für die Millisekunden, haben wir 3.503 Zeilen, die keine Nullwerte enthalten. Was ist, wenn wir nur die Gesamtzahl der Zeilen erhalten wollen, ohne sich Gedanken darüber machen zu müssen, ob eine Spalte passieren kann oder nicht, kein Wert innerhalb. Na ja. Und zwei gängige Wege, das zu tun. Einer von ihnen setzt nur einen Stern hierher. Dies wird die Gesamtzahl der Zeilen sein und der Anfang wird nur im Grunde gehen, um uns alles zählen zu lassen. So können wir hier sehen, wenn wir es betrachten, haben wir 3.503 Zeilen ohne alte Werte. Wir könnten auch die ganze Zahl hier einfügen, und es wird nur eine für jede einzelne Zeile zählen, die es hat. Und damit wir sehen können, werden wir das gleiche Ergebnis hier zurückgeben. So können wir die Zählfunktion für Spalten verwenden, in diesem Fall werden wir die Anzahl der Zeilen zählen, in denen wir eine unbekannte Werte haben, die wir sehen können, sind unterschiedlich in Abhängigkeit von den verschiedenen Spalten. Zum Beispiel, im Komponisten, wo wir einen Nullwert haben, ist diese Zahl niedriger. Oder wir können entweder einen Stern oder die Nummer eins hier drinnen setzen. Und das wird nur für uns die Gesamtzahl der Zeilen zählen, die wir haben, wie wir hier sehen können. Jetzt können wir natürlich immer noch ein paar coole andere Sachen machen, oder Spalten. Zum Beispiel, verwenden wir zuerst einige einfache Arithmetik und drehen oder Millisekunden in zwei Minuten, Bruchminuten. Das erste, was wir tun werden, ist, nur zu teilen oder Millisekunden durch tausend. Das wird uns die Gesungene als Sekunden geben. Und dann werden wir es durch 60 teilen, was uns die Länge des Songs in Minuten geben wird. Also lasst uns weitermachen und das laufen. Und wenn wir nach links scrollen, sehen wir hier die durchschnittliche Songlänge in blau. Dieser Fall wird es Minuten dauern, ist nur ein wenig mehr als sechs Minuten. Also 6.05, das ist 606, das ist jetzt nicht sechs Minuten und Sekunden. Aber dieser Wert liegt hier zwischen 01. Also ist es 0,6 von einem. Das wird also ein Bruchteil sein, der hier ist. So können wir sehen, wir können immer noch Dinge mit unseren Spalten im Inneren tun und dann die Aggregationen darauf verwenden. Und natürlich werden wir nur die Funktion für das Endergebnis aufrufen , das wir hier drin haben. 35. 33Groupingund 33GroupingAndFilteringAggregationsHB: Also haben wir gerade gesehen, dass Aggregationen und Aggregationen cool sind. Aber was ist noch cooler als Aggregationen von verschiedenen Gruppen. Also, was das bedeutet, ist, sagen wir, wir wollen die Anzahl der Songs, die jeder der Komponisten, die geschrieben haben, herausfinden. Derzeit müssten wir die Zählfunktion verwenden, mit der wir die Anzahl der Zeilen zählen können, die wir haben. Und dann müssen wir für jeden Komponisten filtern, für jeden anderen Komponisten. Aber SQL kann tatsächlich weit darüber hinausgehen. Und was wir tun können, ist, dass wir Gruppierungen nach jedem einzelnen Eintrag erstellen können , den wir hier drin haben. Und dann können wir Aggregationen für jeden dieser verschiedenen Einträge erhalten, die wir haben. Jetzt wird dies spezifisch für die Verwendung von Aggregationen sein und es gibt einige spezifische Anforderungen, aber schauen wir uns das an. Lassen Sie uns tun, die erste Aufgabe kann nicht über gesprochen werden, die Auswahl für die Suche nach der Anzahl der Tracks, die wir für jeden verschiedenen Komponisten hier haben. Beginnen Sie also mit unserer Skelett-Anweisung, wählen Sie alle Spalten aus der Truck-Tabelle aus und beschränken Sie unsere Ergebnisse auf Phi, hier ein Semikolon für gute Praxis zu haben. Und wir können es richtig sehen. Das sind also die ersten fünf Ergebnisse auf unserem Tisch. Ok? Also, was wir jetzt haben wollen, ist, vor allem, lasst uns die Anzahl der Zeilen zählen, die wir haben. Und so wird das nur unsere Anzahl von Zeilen sein, die Sie hier sehen können, sind 3.503. Okay, aber wie können wir das nach den verschiedenen Komponisten gruppieren, die wir haben? Nun, wir können tun, ist es eine coole Aussage, die wir aufgerufen und Gruppe BY verwenden können. Und hier können wir die Spalte oder Spalten setzen, nach denen wir gruppieren möchten. Lassen Sie uns beispielsweise nach der Spalte „Composer“ gruppieren. Und jetzt, wenn wir das ausführen, können wir hier sehen, dass wir unterschiedliche Zählwerte bekommen. Eigentlich wissen wir im Moment nicht, worauf sich das bezieht. Das ist okay. Wir können einfach unsere Komponistin Spalte zwei herausnehmen. Und wir können unsere Komponisten-Kolumne zeigen. Und wir können das Ergebnis des Kontos zeigen. Und wir können hier sehen, okay, Also, wenn der Komponist John Dolan ist, sehen Sie, wir haben CounTIF eins und führen den Komponisten ist das, Sie haben eine Zählung von eins, und so weiter. So können Sie hier sehen wir die verschiedenen Werte für die verschiedenen Einträge, die wir Komponisten haben. Und wenn wir wollen, können wir die Frauenaussage entfernen und irgendwie das volle Ergebnis für alle verschiedenen Komponisten sehen. So können Sie hier einige Komponisten sehen, für die wir mehr Einträge haben. Die meisten von ihnen sind viele von ihnen, für die wir nur einen Eintrag haben. Also in diesem Fall ist es wirklich abhängig vom Komponisten ist, können wir hier sehen. Jetzt können wir natürlich auch unsere Order BY Anweisung und weniger Ordnung verwenden und uns auch einen Alias als Anzahl der Tracks geben . Und lassen Sie uns nach einer Reihe von Spuren, nach einer Anzahl von Spuren in absteigender Reihenfolge sortieren, so dass wir zuerst die höchste Zählung erhalten. Also das erneut ausführen, zurück nach oben scrollen, okay, also ist die höchste Anzahl tatsächlich diejenige, bei der Sie keine Werte haben. Danach haben wir Steve Harris, U2, Jogger, Schrägstrich Richards, und so weiter. So können Sie hier jetzt für jeden Komponisten sehen, den wir haben, wir wissen auch, wie viele Tracks in diesem Fall wir für sie in unserer Tabelle haben. Jetzt können wir auch einige Filterung für diese hinzufügen, und es gibt zwei verschiedene Arten der Filterung. Lassen Sie uns zuerst mit einer grundlegenden 1 gehen und nehmen Sie einfach alle Fälle heraus , in denen der Komponist null ist. Also, wo werden wir das hinstellen? Weil wir es von früher erinnern, dass die Reihenfolge, die wir Anweisungen haben, und es ist eigentlich wichtig, eine SQL-Abfrage. Und wir müssen sicherstellen, dass alles in der richtigen Reihenfolge ist. Nun ist der Ort, an dem dies los war, zwischen der Anweisung von und der Gruppe BY. Also werden wir sagen, wo der Komponist nicht null ist. Und jetzt lassen Sie uns das ausführen und wir können hier sehen, jetzt ist der Null-Fall verschwunden, aber keiner der anderen Werte hier wird geändert, weil wir Käuferkomponisten hier gruppieren. Jetzt ist es wieder wichtig, dass wir die richtige Reihenfolge haben. Denn zum Beispiel, wenn wir das nehmen und wir es hier setzen, dann wird es nicht funktionieren. Daher müssen wir sicherstellen, dass unsere Reihenfolge der Anweisungen, die wir in unserer SQL-Abfrage verwenden, korrekt ist. Ordnung, also haben wir nach oder Komponisten gruppiert und wir haben die Fälle herausgefiltert, in denen der Komponist nicht null ist. Und so haben wir jetzt das Ergebnis für jeden Komponisten. Wir haben die Anzahl der Tracks, die wir für sie in unserer Datenbank haben. Was passiert also, wenn wir versuchen, hier eine Spalte auszuwählen, die wir nicht gruppiert haben. Zum Beispiel, was passiert, wenn wir auch versuchen, die Namensspalte auszuwählen, die den Namen jeder Spur enthält. Also, wenn wir das ausführen, dann bekommen wir einen Fehler. Denn sobald wir diese Gruppe für Anweisung verwenden, verwenden wir diese Aggregationen. Wir können hier keine Spalten haben, die selbst keine Aggregation sind oder die Gruppe für Anweisung hier verwenden. Um also die Namensspalte anzeigen zu können, müssten wir tatsächlich nach Komponisten und Namen gruppieren. Nun, wenn wir dies ausführen, werden wir sehen, dass dies nicht besonders nützlich ist weil es sein sollte, dass wir nur einen Datensatz haben. Und Sie können in einigen Fällen sehen, hier haben wir mehr. Aber wirklich, was wir hier erwarten, ist, dass, wissen Sie, die Zahlen hier klein sein werden und es gibt wirklich nicht viel Praktikabilität zu Gruppieren, sondern Komponisten in Namen. Wir können sehen, dass es tatsächlich funktioniert. Und so wie diese Gruppierung ihre erste macht, gruppieren wir nach Komponisten. Und dann innerhalb jedes Komponisten gruppierten wir nach dem Namen des Liedes. Wenn wir also zwei Komponisten haben, die ein Lied mit dem exakt gleichen Namen geschrieben haben, wird es nicht sein, dass die beiden Komponisten zusammengefasst werden, sondern zuerst gruppieren wir uns nach Komponisten und dann innerhalb jedes Komponisten haben wir nach Namen gruppiert. Und dann haben wir unsere Aggregation, Käufergruppierung hier. Wenn wir die Reihenfolge wechseln, dann Schleife, dann in den Fällen, in denen zwei Komponisten den gleichen Songnamen geschrieben haben, dann würden wir diese Art von reflektiert sehen. In diesem Fall haben wir einige dieser Fälle wieder, weil wir uns erinnern, dass wir mehrere Aufzeichnungen haben , wo der Komponist de Paris ist und wo der eigentliche Name Rothschild ist. Aber wir würden auch zusätzliche Ergebnisse bekommen, weil wir nur haben können, wenn wir diese Komponisten-Kolumne hier wegnehmen, wenn zwei Lieder den gleichen Namen haben, dann wären sie das. Und jetzt müssen wir den Komponisten nehmen wir von hier, dann würden sie in das gleiche Segment gruppiert werden. Also, das ist eine wichtige Sache zu beachten, dass die Bestellung, und nehmen wir das, lassen Sie uns das wieder herausnehmen. Die Reihenfolge der Gruppierung, die wir tun, wirkt sich auf das Endergebnis aus. Und so funktioniert die Gruppierung durch die erste Anweisung, das wird die erste Gruppe innerhalb dieser Gruppe sein. Wir haben dann die nächste Gruppierung. Das wird also die zweite Gruppe machen, und dann so weiter. Versuchen wir zum Beispiel, dies auf praktischere Weise zu nutzen. Und lasst uns versuchen, die Anzahl der Tracks zu finden, die wir für jeden Komponisten haben, für jedes Album. So sehen wir hier haben wir eine Album-ID-Spalte. Also lasst uns zuerst nach Komponisten gruppieren und dann gruppieren wir nach Album-ID. Und so lassen Sie uns auch die Album-ID hier zeigen. Und was wir haben können, ist jetzt, dass wir die Ergebnisse haben, die für jeden Komponisten, ähm, und für dieses spezifische Album ist das die Anzahl der Tracks, die wir für diesen Komponisten und dieses Album haben. Und wir können tatsächlich anders werden. Wir können hier sehen, dass wir den gleichen Komponisten haben, aber wir haben zwei verschiedene Alben. Und diese Fall, das sind Album-IDs, die wir finden können, zum Beispiel, in der Spalte oben haben wir hier die Karte der Album-ID zum tatsächlichen Namen des Albums selbst, weil es gute Praxis ist, ganze Zahlen und andere Orte zu verwenden , so dass, wenn sich der Titel ändert oder etwas, müssen Sie nicht alle Datenbanken aktualisieren, sondern nur die Informationen, in denen er gespeichert ist. So können wir hier sehen, wir haben die Album-IDs, die ein bestimmtes Album darstellen. In diesem Fall haben wir also einen Komponisten, den wir zwei Alben für und für das Album 55 dieses Komponisten haben, wir haben 20 Tracks und Album 54 von diesem Komponisten, wir haben 17 Tracks. Nun, natürlich müssen wir hier nicht nur die Zählaggregierung durchführen . Wir können auch andere tun. Zum Beispiel können wir es nennen, können alle, die wir zuvor gesehen haben, tun. Zum Beispiel hat es die durchschnittlichen Millisekunden hier. Also als Song-Länge, und dann werden wir eine andere Spalte haben, die uns die durchschnittliche Song-Länge jedes Albums für jeden Komponisten gibt . Also werden wir zuerst nach Komponisten gruppieren. Dann gruppieren wir meine Album-ID für jede Komponisten-Album-Kombination. Wir werden dann die Anzahl der Trucks sowie die durchschnittliche Länge des Songs haben. Und wir entfernen diesen Tippfehler hier. Und so können wir das sehen, was wir haben, wenn der Komponist JC Fogarty ist. Und dann ist die Album-ID hier 55. Hier haben wir 20 Tracks dafür in unserer Datenbank mit einer durchschnittlichen Songlänge von 224 Tausend Millisekunden in diesem Fall. So können wir hier in diesem Fall sehen, wir mussten auch nicht die Millisekunden-Spalte in die Gruppe für Anweisung hinzufügen , da sie Teil der Aggregation ist. Solange wir Aggregationen hier haben, ist das in Ordnung. Aber die einzigen Spalten, die wir auswählen dürfen, entweder die Spalten, die in der Gruppe nach Anweisung enthalten sind, oder wenn die Ergebnisse von Aggregationen sonst, wie wir auch früher gesehen haben, werden wir einen Fehler erhalten. Was passiert jetzt, wenn Sie zusätzliche Filterung durchführen möchten? Zum Beispiel, sagen wir, okay, wir wollen alle Ergebnisse erhalten, aber wir wollen nur die Ergebnisse sehen, wo wir mindestens 15 Tracks haben. Wenn wir versucht haben, dies zu Ihrer Ursache hinzuzufügen und sagen, und wo die Anzahl der Spuren größer oder gleich 15 ist, werden wir ein Problem haben, da die Aggregation nicht durchgeführt wurde. Und so können wir das Filtern noch nicht durchführen. Es gibt tatsächlich einen anderen Weg, wie wir durch Aggregationsergebnisse filtern können. Und die Art und Weise, wie wir das tun können, ist nach der Gruppe für Anweisung und vor der Bestellung BY, können wir setzen haben und wir hier können wir die Aggregation setzen, nach der wir filtern wollen. Zum Beispiel können wir sagen, dass eine Zählung größer als oder gleich 15 ist. Und so bedeutet das, dass die Zählung dieser Aggregation hier mindestens 15 beträgt. Jetzt ist das Wichtigste, und lassen Sie uns dies ausführen, um zu sehen, ob das Ergebnis. So können Sie sehen, ob wir jetzt nach unten scrollen, wir haben keine Ergebnisse, die unter 15 und die Anzahl der Tracks sind. So können wir sehen, dass die where-Anweisung hier uns erlaubt, nach einer Zeile für Zeilenschritte zu filtern. Wir würden es uns leisten, Aggregation in unserer Anfrage zu machen. Dann müssen wir die habende Aussage verwenden. Wenn wir Filterung nach Aggregationsergebnissen in der gleichen Zeit tun wollen , wie wir die Aggregation selbst tun. Und wir können das nicht in die Siegeraussage setzen. Wir müssen dies in diese neue Aussage namens habend setzen. Nun, hier wieder, können wir auch Filter ketten. Zum Beispiel können wir sagen, eine Zählung größer als oder gleich 15 und eine durchschnittliche Millisekunden Dauer von mehr als oder gleich 200 Tausend. Und so, wenn Sie das laufen, und bevor wir 13 Reihen hatten. Und wenn wir das jetzt ausführen, haben wir jetzt neun Reihen. Und wir können hier in all diesen Fällen sehen, die Anzahl der Tracks beträgt mindestens 15 und die durchschnittliche Songlänge wird mindestens 200 Tausend Millisekunden betragen. So können wir immer noch die zusätzliche Filterung auch mit den gleichen Regeln durchführen, die wir bei der Layer-Anweisung gesehen haben. Es ist nur, weil wir Aggregation machen, die Filterung für diese Aggregationsergebnisse von allem, was wir in der Abfrage tun, muss in diese spezielle habende Anweisung eingefügt werden und kann nicht in die where-Anweisung hier eingefügt werden. 36. 34JoinsHB: So haben wir früher gelernt, wie man einige coole Aggregationen macht, auch die Gruppenkuchen-Anweisungen sowie die Verwendung von habenden für die Aggregationsfilterung. Aber eines der etwas lästigen Probleme, die wir gesehen haben, ist, dass das optimierte D hier als Ganzzahl und nicht als Namenswert dargestellt wird, zum Beispiel, oder als Titel hier. Und das liegt natürlich an der Art, wie relationale Datenbanken aufgebaut werden. Und es ist auch sehr gute Praxis, weil es keinen Sinn macht, den gleichen Namen zu wiederholen. Hunderte oder sogar Tausende von Malen, je nachdem wie groß die Tabelle, die in diesem Album ID Wert hier bekommt, Es ist viel besser, eine ganze Zahl zu haben, die den Albumtitel darstellt. Auf diese Weise, wenn der Albumtitel geändert wird, zum Beispiel, wird die Groß- und Kleinschreibung geändert oder so etwas. Wir müssen das Update nicht durch alles andere laufen. Aber auch die Verwendung von Ganzzahlen ist platzsparender als die Volltextwerte hier. So werden Sie das sehr oft sehen, dass wir verschiedene Tabellen haben. Und wieder haben wir darüber auch in einer relationalen Struktur erfahren. Aber wir werden verschiedene Tische für verschiedene Dinge haben. So wird zum Beispiel jedes Album nur von selbst verfolgt und hat eine spezifische ID. Jeder Künstler hier wird durch seine ID referenziert, aber jede ID repräsentiert tatsächlich einen bestimmten Künstler, wie wir hier sehen können. Und so ist dies eine wirklich schöne Möglichkeit, Daten zu teilen , um sicherzustellen, dass keine Tabelle zu groß wird oder dass wir unnötige große wiederholte Informationen in einer Tabelle haben , die effizienter gemacht werden kann. Wenn wir beispielsweise den Namen des Künstlers und den Albumtitel anstelle der Album-ID verfolgen . In diesem Fall haben wir nicht die Künstler-ID. Aber Sie verstehen meinen Punkt, dass, wenn wir den Namen und nicht die ID verfolgen, es nicht so effizient ist, weil es viel effizienter ist, ganzzahlige Werte hier zu verfolgen , weil sie kleiner werden , anstatt Wiederholen, zum Beispiel, den Titel für diejenigen, die über den Irak, wir grüßen Sie Hunderte oder Tausende von Malen, je nachdem, wie viele Einträge wir haben nicht verschiedene Tabellen sind. Und wieder, es ist auch eine gute Praxis, denn dann, wenn wir eine Änderung an einem Titel vornehmen wollen, weil wir aus irgendeinem Grund bemerkt haben, dass wir einen Tippfehler oder etwas gemacht haben, wenn wir es in setzen, anstatt alle diese Änderungen und alle einzelne verschiedene Tabelle, die diesen Titelwert hat, können wir es einfach in der ändern, in diesem Fall, zum Beispiel, Album-Tabelle. Und dann findet jedes Album, das von dieser ID referenziert wird, einfach den richtigen Titel, anstatt dass wir durch jede Zellentabelle gehen müssen, um zu sehen, ob es einen Titel gibt und ob es aktualisiert wird. Auf diese Weise ist alles eine nette Struktur, die alles noch verbunden ist, aber wir machen die Verbindung und eine viel intelligentere Art und Weise, die alles viel weniger fehleranfällig macht und auch effizienter ist. Also verdoppeln Sie da drin. Aber natürlich stoßen wir jetzt auf diese Probleme, wie wir hier sehen, wo wir die Album-ID haben. Aber wirklich, natürlich würden wir an dieser Stelle gerne den Albumnamen sehen. Also, wie können wir das tun? Also zuerst, was ich tun werde, ist, dass ich das kommentieren werde, weil ich später darauf zurückkommen möchte, damit wir die Lösung hier implementieren können. Aber zuerst möchte ich nur den einfacheren Anwendungsfall dafür betrachten. Und was wir tun werden, ist, dass wir eine Join-Anweisung schreiben , in der wir zwei Tabellen miteinander verbinden können. Und wir werden unseren Künstlertisch ebenso wie hier den Albumtisch benutzen. Also nehmen wir hier den ABO-Tisch. Und für jedes Album werden wir uns auf dem Künstlertisch anschließen. Jetzt wissen wir, dass der Künstlerwert hier auf den Künstlerschlüssel bezieht, so dass wir wissen, zum Beispiel, wenn wir Künstler ID und eine hier sehen, wir, dies entspricht dem Namen ac-dc. Die Art und Weise, wie wir diese Tabellen miteinander verbinden können, ist die Verwendung einer SQL-Anweisung namens join. Also lassen Sie uns einen Blick auf, Lassen Sie uns zuerst schreiben sind nur eine Art Skelett SQL-Anweisungen. Wir wählen alles aus. Und wir fangen erst mit dem Albumtisch an, den wir hier haben. Denken Sie daran, in diesem Fall brauchen wir die Anführungszeichen um ihn herum nicht weil wir diese Änderung wieder da gemacht haben, wo wir sie tatsächlich umbenannt haben. Und lassen Sie uns unsere Ergebnisse einfach auf fünf beschränken. Für jetzt. Gehen Sie weiter und führen Sie das aus. In Ordnung, jetzt haben wir unseren Albumtisch hier, aber lassen Sie uns die Künstler mitmachen. Um das zu tun, werden wir unsere select-Anweisung haben und auch die Spalten hier definieren, die wir die von Anweisung haben werden. Und jetzt werden wir danach eine Join-Anweisung haben. Das wird also der Tisch sein, und das wird der zweite Tisch sein, an dem wir uns anschließen werden. Also wollten wir uns an diesen Tisch anschließen, hier, an den Künstlertisch. Aber jetzt müssen wir angeben, was die gemeinsame Norm ist, denn im Moment gibt es keine Möglichkeit zu wissen , welche Spalte diese Tabellen dem entsprechen sollten? Nun, wissen Sie, können Sie sagen, Okay, der Titel hier ist Künstler-ID. Und wenn wir in die Spalte des Künstlers gehen hier wird auch Artist ID genannt. Aber denken Sie daran, dass wir in einigen Fällen einfach diese ID nennen können weil es die ID ist und impliziert wird, dass es sich um die Künstlerkennung handelt. Aber in einer anderen Tabelle kann es die Künstler-ID genannt werden, um es expliziter zu machen , dass dies sich auf die ID der Künstler bezieht, weil wir andere Ideen haben können, zum Beispiel die Album-ID. Also jetzt müssen wir angeben, was diese Dinge mit diesen beiden Tabellen verbunden werden müssen. Und wir tun das mit der ehrlichen Aussage, indem wir sagen, wo. Und jetzt sagen wir, okay, wo das Album oh, na ja, das war automatisch durch Datengriff abgeschlossen. Aber lassen Sie uns das richtig machen. Wo das Album und jetzt in der Albumspalte, werden wir die Künstler-ID finden. Also, wo die Album-Künstler-ID, die wir hier haben, gleich ist. Und jetzt wollen wir es auf den Künstlertisch verbinden. Wir wollen also sagen, wo die Album-Künstler-ID gleich der Künstler-ID ist , die wir innerhalb der Künstler-Tabelle finden. Nun, das ist aber die Aussage. Wir haben auch gerade Autocomplete, um von Daten zu kaufen aufgewachsen. Und wenn wir uns unsere Tabellenformate ansehen, können wir hier sehen. Und der Grund, warum es das weiß, ist, weil wir uns das Album ansehen können und die Künstlerkennung hier hat einen Fremdschlüssel, der auf die Künstler-ID in der Künstler-Tabelle verweist. Also ist es genau hier. So können wir sehen, dass es diese Fremdschlüssel-Links gibt, die wirklich nett sind weil es angibt, wie diese Spalten mit den verschiedenen Tabellen zusammenhängen. Aber wir können es tatsächlich eine ehrliche Aussage hier verwenden und wir werden sagen, OK. Lassen Sie uns das einfach ausführen, damit wir die Ergebnisse sehen können. Damit wir Kunst sehen können. Also haben wir unsere Album-ID und wir haben unseren Titel. Diese kommen vom Albumtisch hier. Also haben wir hier unser Album, das die Album-ID und den Titel hat. Aber jetzt haben wir noch zwei Spalten, Karte, die Künstler-ID und eine andere Künstler-ID. Und das liegt daran, dass wir zwei Künstler dabei haben, einen aus der Album-ID-Spalte und einen aus der Künstlerkolonne. Also in diesem Fall sind wir tatsächlich, Es zeigt uns, dass dies die Künstlerkennung aus der Albumspalte ist, und das ist die Künstlerkennung aus der Spalte des Künstlers. Und wir können hier sehen, natürlich werden sie übereinstimmen, weil wirauf diesen Tabellen mit der Bedingung verbundensind auf diesen Tabellen mit der Bedingung verbunden , dass die Künstler-ID und Album-Tabelle gleich der Künstler-ID in der Künstler-Tabelle sind. So können wir hier sehen, dass sich verbindet. Jetzt stimmen diese Werte hier überein. Und jetzt haben wir die Namensspalte, die von der Künstler-Tabelle hier kommt. So können wir sehen, dass wir zwei Datenbanken oder zwei Tabellen genommen haben, eher die Gliederungstabelle und die Künstler-Tabelle. Und wir haben sie einfach eingefügt oder wir haben sie irgendwie an der Seite zusammengeklebt , wo diese Künstler-ID-Spalte gleich ist, was wir hier sehen können. Jetzt wäre es wirklich gut, Tabellenaliase zu verwenden. So zum Beispiel, lassen Sie uns diese Tabelle ja Kunst bekommen. Und hier können wir uns zum Beispiel ALP geben. Und so können wir jetzt angeben, anstatt Album Dot Artist ID zu sagen, weil wir Tabellen-Aliase verwenden, werden wir L Dot Artist ID sagen. Und hier sagen wir Kunst. Dies ist also der erste Weg, den wir angeben können, aber auch möchten wir wahrscheinlich nicht alle Spalten auswählen. Wir wollen wahrscheinlich, vielleicht wollen wir die Album-ID, aber die Album-ID kommt von der Album-Tabelle. Es ist also gut anzugeben, dass wir die Album-ID aus der Album-Tabelle wollen. Nehmen wir an, wir wollen den Titel vom Albumtisch. Du wirst vom Albumtisch sagen, wir wollen den Titel. Und sagen wir, wir wollen eine der Künstler-IDs, aber wir wollen nicht beide. Und wir können wählen, ob wir das Album wollen. Hier, die Künstler-ID, oder wenn wir die aus der Künstler-Tabelle wollen, macht es keinen Unterschied, weil sie gleich sein werden , weil wir uns auf sie angeschlossen haben. Aber es ist einfach schön, einen auszuwählen, damit wir hier keine doppelten Werte haben. Und wir wollen auch den Namen des Künstlers selbst, der aus dem Künstlertisch stammt. Also gehen wir von der Künstler-Tabelle, wir wollen den Namen verwenden. Und damit wir das ausführen können. Und wir können jetzt sehen, dass alles viel sauberer ist , speziell weil wir keine Künstler-Duplikate haben, aber es ist gut, die Tabellen-Aliase zu verwenden, damit wir uns hier auf die richtigen Tabellen beziehen. Und natürlich brauchen wir keinen Tisch aSUS zu verwenden. Wir können auch die vollständigen Tabellennamen verwenden, aber es ist schöner, Aliase zu verwenden, weil es kürzer wird. Aber es ist gut, genau anzugeben, welche Spalten Sie auswählen möchten. Denn oft, besonders wenn Tabellen größer werden, werden sie viele Spalten sein, die Sie wahrscheinlich nicht verwenden möchten. Und daher ist es besser, einfach anzugeben, welche Spalten genau Sie verwenden möchten. Sie haben es nicht nur für den Beitritt. Lassen Sie uns zum Beispiel einen Blick werfen. Unser Lastkraftwagen hier hat eine Reihe von Säulen. Also, um uns auf einen anderen Tisch zu verbinden, der ungefähr so groß ist, dann werden wir natürlich nur eine Reihe von Spalten haben. Wir werden nicht viele von ihnen benutzen. Also, wissen Sie, es ist eine gute Übung, nur sicherzustellen, dass das und lassen Sie uns beginnen, einige davon zu schließen , weil sie auch viel Platz in Anspruch nehmen. Es empfiehlt sich also, nur die Spalten auszuwählen , die Sie tatsächlich möchten, es sei denn, Sie möchten alle Spalten verwenden. Aber selbst dann ist es gut zu wissen, dass Sie keine doppelten Spalten haben wollen, die den Künstler haben, den ich zweimal brauche, Das ist nur eine Verschwendung von Platz. Es empfiehlt sich also, anzugeben, welche Sie auswählen möchten. So können wir hier sehen, das ist die Aussage, die wir verwendet haben, um das Album und den Künstlertisch zusammen zu verbinden. Und dieser Join wurde in der Spalte durchgeführt, in der die Künstler-ID und die Album-Tabelle gleich der Künstler-ID und der Künstler-Tabelle sind. Und natürlich können wir hier wegnehmen oder eine Limitaussage. Und das wird uns die volle Antwort auf all diese Fälle geben. Und jetzt ist etwas, das wichtig zu wissen ist, dass das, was hier passiert, tatsächlich ein innerer Join genannt wird. Und wir können den inneren Join angeben, wenn wir wollen. Obwohl, wenn wir nur die Join-Anweisung selbst verwendet , ist es nicht, es wird die innere Verknüpfung implizieren, aber mit dem inneren Join bedeutet, dass, wenn einer dieser Werte null ist, es nicht auf ihnen beitreten wird. Zum Beispiel, wenn wir hier einen Fall hatten, in dem die Künstler-ID null ist, dann wird diese Zeile gelöscht werden. Oder wenn hier eine Künstlerkennung vorhanden ist, die nicht in der Artist-Tabelle dargestellt wird, dann werden diese Werte nicht berücksichtigt. Was also ein innerer Join bedeutet, ist, dass wir nur suchen oder wir nur die Ergebnisse erhalten wo diese Tabelle oder diese Werte hier übereinstimmen. Und waren diese Werte hier übereinstimmen? Jetzt gibt es noch andere Freuden, die wir dort tun können, wenn wir zum Beispiel keine Künstler-ID haben, oder wir haben eine Künstler-ID, aber es ist hier nicht dargestellt, dass wir diese Informationen behalten. Aber in diesem Fall, wenn wir den inneren Join verwenden, impliziert wird, wenn wir die gemeinsame Anweisung verwenden, nur die einfache gemeinsame Anweisung. Dann suchen wir nur nach der Kreuzung dieser beiden. Wir suchen nur, wo dieser Wert und dieser Wert, sie auf beiden Seiten existieren. Und wenn also einer der Werte nicht auf beiden Seiten existiert , werden wir diesen Raum nicht haben. Dies ist wichtig zu wissen, denn wenn ein Wert irgendwo vorhanden ist, aber er irgendwo anders nicht vorhanden ist, werden diese Zeilen entfernt. Also seien Sie sich dessen bewusst. Dies hier ist, was ein innerer Join genannt wird. In Ordnung, jetzt, wo wir wissen, wie der Join funktioniert, lasst uns das benutzen. Alle von ihnen. Unsere vorherige Aussage, die wir auskommentiert haben, warten Sie jetzt früher hier. Also lassen Sie uns das erneut ausführen. Und was wir tun wollen, ist, dass wir diese Album-ID-Spalte stattdessen durch den Albumnamen ersetzen wollen. Wie können wir also unsere Aussage hier ändern, um den äußeren Namen zu entfernen? Also, was wir tun werden, ist, dass wir uns anschließen und wir werden einen inneren Join machen. Aber das ist impliziert, wenn wir hier die gemeinsame Aussage schreiben. Wir werden hier an diesem Track-Tisch teilnehmen, dem Album-Tisch, diesem hier . Also werden wir uns hier an den Albumtisch anschließen. Ich werde die Kurzschrift hier draußen benutzen. Und hier werde ich benutzen, nun, nur die Kurzschrift TR. Und ich gebe jetzt jede der Spalten an, um sicherzustellen , dass es keine Verwirrungen oder Fehler gibt. Zum Beispiel hat das Album auch eine Spalte namens Composer, denn dann wird es einen Konflikt von zwei geben. Ich wähle einen Komponisten aus dem Track oder aus dem Album-Tisch. Also werde ich jetzt sicherstellen, dass jede der Spaltenverweise angegeben wird, die ich habe, um sicherzustellen , dass es keine Verwirrung oder Fehler gibt. Also all diese Fälle, wenn wir es auf dem Track-Tisch verwenden, denn jetzt bringen wir in den Album-Tisch. Also wieder auf den Truck-Tisch, werden wir einen inneren Join mit dem Album-Tisch machen. Und wir werden beitreten, wo die, mit der Abkürzung für Anziehungstabelle, wo die Album-ID gleich V Album-ID des Album-Tabelle ist . Und jetzt, anstatt die Album-ID hier auszuwählen, möchte ich auswählen, erweitern Sie den Albumtitel aus der Album-Tabelle. Also, wenn wir das laufen und wir haben immer noch unsere Album-ID Referenz hier unten. In diesem Fall können wir die Gruppierung nach dem Albumtitel durchführen , weil wir den Join durchführen und dann den Aggregationsvorgang durchführen. So können Sie hier zuerst sehen, dass wir den Join durchführen, dann führen wir die Gruppierungsaggregationsoperation durch. Also, anstatt sich an die Album-ID zu beteiligen, JETZT werden wir uns dem Albumtitel anschließen. Es wird uns natürlich dasselbe Ergebnis geben, denn die ID bezieht sich nur auf einen Titel. Also lasst uns das noch einmal laufen. Und jetzt können wir sehen, dass unsere ID stattdessen durch den Titel ersetzt wurde , der von der Album-Tabelle hier kam. Und wir haben das bekommen, weil jede Argumentation, die Track-Tabelle, jede Album-ID hier, wir uns auf die Album-ID hier angeschlossen haben, und wir haben unsere Select-Anweisung aktualisiert, um stattdessen den Titel aus der Album-Tabelle zu extrahieren, wo unser Track Tisch und unser Albumtisch wurden zusammengefügt. So können wir uns hier erinnern, dass wir unsere beiden Tabellen auch in den Album-ID-Spalten beigetreten sind. In diesem Fall wurde die Album-ID aufgerufen und mein D in beiden Fällen, und in einigen Fällen, zum Beispiel, in der Albumspalte, wäre es sinnvoll, diese DID einfach aufzurufen, weil es implizit implizit impliziert würde , dass die ID würde die Album-ID darstellen. Also für den Fall, dass ich einfach sagen würde ID hier. Und dann würden wir nur auf die ID-Spalte der Album-Tabelle verweisen. In diesem Fall tut es das nicht. Aber ich sage nur, dass diese beiden nicht immer gleich sein müssen. In diesem Fall sind sie zufällig gleich, aber es gibt auch viele Fälle, in denen sie nicht gleich sind weil der Primärschlüssel nur ID genannt würde, anstatt den Tabellennamen oder etwas zu haben, das auch angibt, welche ID genau es ist. So können wir sehen, dass Joins sehr nützlich sind , weil relationale Datenbanken aufgebaut werden, was wirklich nützlich und effizient ist, weil es uns erlaubt, Informationen zu trennen und einfach den Überblick verschiedene Dinge getrennt, um sicherzustellen, dass nicht alles nur beeinflusst alles andere, dass unsere Lagerungen effizient sind. Und dann, wenn wir Updates machen, werden diese Updates nur an einem Ort angewendet. Und dann, wenn wir Joins verwenden, die im Grunde überall propagiert werden, weil wir IDs überall sonst verwenden. Vieles davon ist eine sehr gute Praxis, die zu guter Leistung, guter Speicher führt und auch zu einer viel einfacheren Aktualisierung führt. Und dann können wir die gemeinsamen Aussagen verwenden, weil wir all diese Beziehungen zwischen unseren verschiedenen Tabellen haben , um dann die richtigen Informationen auszufüllen. Beispiel: Ersetzen Sie hier die Album-ID durch den Titel des Albums. Und wir können hier keine unserer anderen Aussagen wirklich geändert sehen, außer weil wir jetzt nicht mehr V verwenden oder die Album-ID herausnehmen. Wir müssen stattdessen die Aggregation ersetzen, den Albumtitel anstelle der Album-ID, da die Album-ID nicht mehr in der Select-Anweisung vorhanden ist. Und dann die andere Sache, die wir getan haben, als die Aliase für unsere Tabelle hinzuzufügen , um sicherzustellen, dass es keine Verwirrung gibt. Zum Beispiel, wenn wir doppelte Spaltennamen haben, um sicherzustellen, dass wir auf die richtige Spalte aus einer bestimmten Tabelle verweisen. So zum Beispiel hier Verweis auf die Composer-Spalte aus der Truck-Tabelle, weil es sein könnte, dass die Composer-Spalte auch in der Albumtabelle vorhanden sein könnte. Um sicherzustellen, dass wir das nicht bekommen, geben wir an, welche Tabelle, aber ich möchte nur für den Fall wählen, wenn Sie verwirrt sind, was gerade passiert ist, wenn Sie darauf doppelklicken, nimmt diesen Navigationsbereich auf der linken Seite und doppelklicken Sie dann erneut darauf und es bringt es nur als Nebennotiz zurück. Aber ja, wie Sie sehen können, sind die Joins wirklich nett weil es uns erlaubt, all diese Informationen zusammenzuführen, die aufgrund der Struktur relationaler Datenbanken absichtlich aufgeteilt werden. 37. 35LeftRightVoll, 35LeftRightFullJoinsHB: Alles klar, jetzt haben wir von einem Join gelernt, speziell von inneren Joins, wo wir uns den Schnittpunkt zwischen zwei Tabellen ansehen. Aber in diesem Fall sind wir nur auf die Kreuzung beschränkt. Und es kann einige Fälle geben, in denen wir Daten irgendwo haben und es möglicherweise keinen entsprechenden Wert irgendwo anders geben. Lassen Sie uns beispielsweise einen Blick auf diese Rechnungspositionstabelle werfen. Die Rechnungsposition enthält nur einige Kaufinformationen darüber, wer oder was gekauft wurde, welche Rechnung war, welche Spur zum Preis gekauft wurde, sowie die gekaufte Menge. Und wir können sehen, dass wir hier eine Spur-ID-Referenz haben. Und wenn wir uns das nur ansehen, obwohl Sie wahrscheinlich bereits wissen, wo der Name, können wir hier sehen, ist die LKW-ID ein Fremdschlüssel Referenz auf die LKW-ID in der LKW-Tabelle. Also, wenn wir die Track-Tabelle öffnen, können hier sehen wir die verschiedenen Track-IDs haben. Also zählen wir zuerst, wie viele Spuren wir in der Truck-Tabelle haben. Also lasst uns voran und wählen und wir werden nur eins von unserem Truck-Tisch zählen . Und wir werden nichts anderes tun. Und so können wir hier sehen, haben wir 3500 und drei verschiedene Reihen. Und da jede Zeile eine eindeutige Track-ID hat, da die LKW-ID der Primärschlüssel ist, können wir auch ableiten, dass wir 3500 und drei eindeutige Spuren haben. Aber nur weil wir so viele Tracks haben, bedeutet das nicht, dass jeder einzelne Track, der gekauft wurde vielleicht war es vielleicht nicht. Lass es uns herausfinden. Wenn wir also die Rechnungszeile betrachten, wie können wir zählen, wie viele verschiedene Tracks gekauft wurden? Derzeit haben wir unsere Aggregationsmethoden, aber im Moment haben wir noch kein bestimmtes Tool, um genau zu verstehen, wie viele einzigartige Tracks hier gekauft wurden. Da einige Tracks mehr als einmal gekauft werden können, da verschiedene Leute den gleichen Track kaufen können. So oft finden wir das heraus. Nun, was wir tun können, ist, dass wir eine leichte Änderung unserer Zählung hier vornehmen können , die drin ist. Sie können das Schlüsselwort distinct setzen, die nach verschiedenen Vorkommen suchen wird. Aber in diesem Fall dürfen wir die Nummer 1 nicht mehr benutzen. Sie müssen einen bestimmten Verweis auf eine Spalte machen. Also werden wir die Spur-ID-Spalte innerhalb der Rechnungsposition referenzieren. Also werden wir hier die Spur des D referenzieren und wir werden unsere Tabelle von der Spur bis zur Rechnungspositionstabelle aktualisieren . Lassen Sie uns diese Aussage abdecken. In Kriegszeiten machen wir hier die Zähl-Aggregation. Aber anstatt nur alle Vorkommen zu zählen, wollen wir die Anzahl der eindeutigen Vorkommen und Track-ID kennen. Also wollen wir wissen, wie viele verschiedene Spur-IDs und innerhalb dieser Track-ID-Spalte vorhanden sind. Und so ist das, was die Besonderen uns erlaubt, hier zu tun, erlaubt uns, einzigartige Erscheinung zu zählen. Es ermöglicht uns, verschiedene Vorkommen von separaten Elementen im Inneren hier zu zählen. Auch hier ist es wichtig, dass wir tatsächlich auf die Spalte verweisen, in der wir die Anzahl der eindeutigen Vorkommen innerhalb finden möchten. Also, wenn wir dies ausführen, können wir in der Rechnungspositionstabelle und der LKW-ID-Spalte sehen, wir haben einhundert, zehnhundertneunhundertvierundachtzig verschiedene oder vielmehr eindeutige Spuren. bedeutet nicht, dass jeder Lkw nur auftaucht wenn es möglich ist, dass er mehr als einmal auftaucht. Das sind nicht die Informationen, die wir bekommen wollen. Wir wissen nur, dass 1984 eindeutige Spur-IDs in dieser LKW-ID-Spalte innerhalb der Rechnungspositionstabelle angezeigt werden. Was bedeutet das und warum ist das wichtig? Nun, wenn wir vielleicht unseren Track und unsere Rechnungspositionstabelle beitreten wollen, bedeutet das, dass einige unserer Tracks tatsächlich über eine 1000 oder sogar über 1500 Tracks keine Rechnungen für Schleife haben, was bedeutet, dass die Daten nicht verwendet werden weil wir uns die Kreuzung ansehen. Aber manchmal wollen wir es nicht verlieren. Manchmal, wenn es keine Rechnung gibt, wollen wir sie einfach so behalten, wie Sie wissen, wir wollen sie dort behalten, aber wir wollen nur sagen, dass es keine Daten für diese gibt. Und so können wir das nicht mit einer inneren Verbindung tun weil die innere Verbindung nach dem Schnittpunkt sucht. Also lasst uns eine Abfrage schreiben, wo wir unsere Track-Tabelle hier nehmen. Und zu jeder Spur fügen wir auch grundsätzlich die Informationen, die wir hier aus unserer Rechnungspositionstabelle haben. Jetzt, für jede Spur, dann haben wir mindestens eine Rechnung. Jetzt können wir mehrere Rechnungen haben, was bedeutet, dass wir einige doppelte Zeilen erhalten, wo die Informationen über die Spur selbst als Duplikat. Aber dann werden die Informationen über die Rechnung getrennt sein. Also, das zu tun, oder wir werden tun, ist, dass wir wählen sagen. Und starten wir einfach mit wählen Sie alles aus dem Track-Tisch. Es sei denn, geben Sie diesem eine Kurzschrift TR. Und wir werden jetzt einen linken Join machen. Und wir werden es in der Rechnungspositionstabelle beitreten. Und lassen Sie uns einfach das auch Abkürzung I L. Und dann werden wir auf, wo die LKW-ID des LKWs beitreten. Und wir können bereits sehen, dass Datengruppe es uns wegen der Fremdschlüsselreferenz vorschlägt . Aber wo die LKW-ID der Spur gleich der LKW-ID der Rechnungspositionstabelle ist. Also wieder, wir wollen übereinstimmen, wo diese LKW-ID hier gleich der LKW-ID ist, die wir hier haben. Und wenn wir mehr als ein Vorkommen haben, zum Beispiel für unseren ersten Track hier, dann werden wir die Daten der LKW-Tabelle duplizieren lassen. Also werden wir hier zwei Zeilen haben, aber die Rechnungsdaten, die darauf angehängt werden, werden eine Zeile für grundsätzlich jede Rechnung sein, jede separate Rechnung, die wir dafür haben. Also werden wir keine vollständigen doppelten Zeilen haben. Es könnte sein, dass die Teile davon, zum Beispiel aus unserer Track-Tabelle hier, dupliziert werden können, aber dann die entsprechenden Rechnungen, wenn es mehr als eine Rechnung gibt, zum Beispiel, wenn es drei Rechnungen zum ersten Mal hier gibt, für diejenigen, die gerne rocken, grüßen wir dich und wir werden drei Reihen dafür haben. Track, Informationen werden gleich bleiben, aber jede Zeile wird Informationen über eine separate Rechnung haben. Aber all dies wird uns für jede einzelne Zeile zur Verfügung stehen, für jeden einzelnen Datensatz, den wir in unserer jetzt die Join-Tabelle haben. Also lassen Sie uns voran und führen Sie dies einfach aus, um das Ergebnis zu sehen. Und wie wir hier sehen können, haben wir jetzt wieder die Informationen, wenn es doppelte Spalten gibt , über welche Tabelle die Spalte kommt. Wir haben Informationen vom Track-Tisch. Und wenn wir dann nach rechts scrollen, haben wir auch die Informationen aus der Rechnungspositionstabelle, die wir hier sehen können. Und so, ja, das werden unsere Tische sein, die jetzt miteinander verbunden sind. Aber das Wichtigste ist, und werfen wir einen Blick auf die Anzahl der Track-Ideen aus unserer Track-Spalte, die hier auftauchen. Also werden wir zählen unterschiedlich, und wir werden uns auf die LKW-ID aus der Spurspalte konzentrieren, da nicht alle Tracks in unserer Rechnungspositionstabelle hier angezeigt werden, aber alle Tracks werden in unserer Track-Tabelle hier verfolgt. Betrachten wir also die eindeutige Anzahl von Spur-IDs, die wir in dieser Join-Tabelle haben, wobei wir uns auf die Spalte Truck ID konzentrieren, die von der Spurtabelle kam. So können wir sehen, dass wir 3500 und drei einzigartige Tracks haben, was genau das ist, was wir erwarten würden. Aber für diese Tracks, für nicht alle, haben wir tatsächlich Rechnungsdaten. Also lassen Sie uns einfach alles hier noch einmal auswählen. Aber konzentrieren wir uns darauf, die Fälle zu finden, in denen wir keine Rechnungsdaten haben, um zu sehen, wie diese aussehen. Also werden wir sagen, wo die Rechnung Linie LKW-ID. Und jetzt in den Fällen, in denen wir keine Daten haben, werden diese Werte null sein. Wir werden also suchen, wo eine der Spalten aus unserer Rechnungsposition null ist. Wir können die LKW-ID benutzen. Wir können auch jede andere Spalte aus der Rechnungsposition verwenden. Denn wenn wir eine Spur haben, die keine entsprechenden Daten enthält , und die Tabelle, in der wir sie verbinden, dann werden die resultierenden Zeilen für dieses Gelenk nur null sein. Also, wenn wir das laufen, können Sie hier sehen wir haben, zum Beispiel, die LKW-ID 7. Und wenn wir schauen, haben wir keine Rechnungsdaten, die ihm entsprechen. Und das ist, was unser linker Join mit einem linken Join tut, ist es dauert diese ganze Spalte und nimmt die erste, sorry, es dauert die erste ganze Tabelle, diese ganze Tabelle hier. Und es verbindet es auf, oder verbindet sich auf einem anderen Tisch und ein Joins unter dieser Bedingung. Aber wenn es keine entsprechende Instanz in unserer zweiten Tabelle gibt, dann werden wir immer noch die Informationen aus dieser ersten Tabelle behalten oder von dieser eine linke Tabelle ist irgendwie das, was Sie davon denken können. Aber da wir keine entsprechenden Informationen aus der anderen Tabelle haben, werden die Werte, die wir hier haben, null sein, da es keine entsprechenden Informationen gibt, die dazu hinzugefügt werden können. Wie unterscheidet sich das also von der inneren Verbindung, die wir zuvor hatten? Nun, wenn wir hier die Linke wegnehmen, und wenn wir das wieder laufen, können wir hier sehen, dass unsere Ergebnisse nichts sein werden. Es gibt keine Senke, keine Zeile, in der sich ein Nullwert innerhalb dieser Rechnungsposition befindet. Und das liegt daran, wenn wir einen inneren Join machen, schauen wir uns die Kreuzung an. Während wir einen Links-Join machen, halten wir alle Informationen aus der ersten Tabelle. Und wenn Informationen aus der zweiten Tabelle vorhanden sind, werden wir das auf hinzufügen. Aber für die Fälle, in denen diese Informationen nicht vorhanden sind, zum Beispiel in den Fällen, in denen der Tractus keine Rechnung und die Rechnungspositionstabelle hat. Da wir dann immer noch die Spalten und die resultierende Join-Tabelle haben, werden diese Täler hier einfach null sein, weil es nichts dazu gibt. Und so können wir sehen, dass das ist, was der linke Join tut, ist, dass wir nicht die Zeilen herauswerfen, die keine entsprechenden Daten in der anderen Tabelle haben. Was manchmal gut sein kann. Manchmal ist es auch nicht gut, weil das auch bedeutet, dass Ihre resultierenden Tabellen viel größer werden. Denn wenn es keine gibt, gibt es keine entsprechenden Daten, dann würde dies in der Kreuzung weggeworfen und die resultierende Tabelle wäre kleiner, während wir jetzt daran festhalten. Je nachdem, was Sie benötigen, wenn Sie immer noch Informationen behalten möchten, die möglicherweise keine entsprechenden Informationen in der anderen Tabelle haben, möchten Sie einen Links-Join verwenden. Eine weitere Alternative ist ein rechter Join , den wir in einer Sekunde sehen werden, oder ein vollständiger Join oder ein vollständiger Outer-Join. Wenn Sie sich aber nur auf den Schnittpunkt konzentrieren möchten, dann möchten Sie sicherstellen, dass Sie eine innere Verbindung verwenden, die Sie auch verkürzen können, indem Sie einfach die Verbindung hier haben. Also erwähnte ich zwei andere Arten von Joins. Also haben wir den linken Join, der die ganze Sache laufen wird. Also haben wir den linken Join. Jetzt konzentriert sich der linke Join wieder darauf, jeden einzelnen Wert von hier aus zu halten und hier die Daten aus dieser Tabelle zu verknüpfen. Und in den Fällen, in denen es keine Übereinstimmung von der zweiten Tabelle gibt, behalten wir nur noch die Daten aus der ersten Tabelle, dass die entsprechenden Werte aus der zweiten Tabelle werden wir einfach nein sein. Jetzt gibt es auch etwas, das als Rechts-Join und Rechts-Join bezeichnet wird. Der Unterschied besteht darin, dass anstatt diese Tabelle alle Formen der Basis beizubehalten und die Nullwerte beizubehalten. Zum Beispiel, ich werde diesen Tisch haben. Und so ist der rechte Join und der linke Join oder einfach nur eine Frage der Perspektive, denn ein rechter Join, was ein rechter Join ist, ist es im Grunde ein linker Join. Aber wir haben die Tischreihenfolge so gekippt. Das ist also, was ein richtiger Join ist. Und so, wissen Sie, es ist einfacher, einfach immer mit einem linken Join zu gehen und einfach Ihre Tischreihenfolge entsprechend zu haben. Und dass Sie immer die erste Tabelle als Basis verwenden, auf die Sie sich verbinden können. Denn bei einem linken Join, wenn es hier einige Werte gibt, zum Beispiel in der Spurspalte. Und wenn wir dies ausführen, können wir sehen, dass es keine Instanzen in unserer Rechnungspositiongibt keine Instanzen in unserer Rechnungsposition denen wir eine LKW-ID haben, die in der Rechnungsposition vorhanden ist, die nicht in der Track-Tabelle vorhanden ist. Es gibt keine Instanzen. Also, wenn wir einen linken Join in der Rechnungsposition machen, dann wird dieses Ergebnis hier null sein. Aber wenn wir jetzt einen richtigen Join gemacht haben, indem wir unsere aktuelle Syntax verwenden, dass wir das Ergebnis bekommen, das wir vorher haben. Denn jetzt halten wir auch die Informationen aus der LKW-Tabelle und es gibt einige Spuren, die eine alte LKW-Tabelle verfolgt werden , die keine entsprechende Rechnung in der Rechnungspositionstabelle haben. So können wir einen linken und einen rechten Join sehen oder einfach, sie sind im Grunde dasselbe. Es ist nur die Reihenfolge, in der wir diese Tabellen erwähnen, ist anders. Sie können also einen linken Join anstelle eines rechten Joins verwenden und einfach die Reihenfolge der Tabellen umkehren. Und das ist in der Regel ein besserer Weg, um sicherzustellen, dass Sie eine konsistente Denkweise behalten. Aber natürlich haben Sie immer die Möglichkeit, dies zu tun. Nun, es gibt auch eine andere Art von Join, was ist, wenn wir alle Informationen aus beiden Tabellen behalten wollen? Was ist, wenn wir einige Daten und unsere Rechnungspositionstabelle haben, die keine entsprechenden Werte in der Track-Tabelle haben. Und wir haben einige Daten in der Track-Tabelle, die keine entsprechenden Werte in der Rechnungspositionstabelle haben . Und wir wollen all das behalten. Und in den Fällen, in denen wir Daten auf der Rechnungspositionstabelle haben, aber nicht in der Spur. Wir möchten, dass die Werte aus der, für die Spalten, die aus der Spurtabelle kommen, null sind. Und in den Fällen, in denen wir Informationen über die Spur haben, aber nicht über die Rechnungsposition oder keinen entsprechenden Wert in der Rechnungsposition. Wir möchten, dass die Werte in den Spalten, die der Rechnungsposition entsprechen , nein sind und die Werte für den LKW noch vorhanden sind, so dass wir den Schnittpunkt sowie die Informationen von jedem einzelnen Band haben . Und so wird dies als Full Join bezeichnet, oder es wird auch als Full Outer Join bezeichnet. Da, das Gleiche. Also, was gruppiert, was dies tut, ist, dass Sie den Schnittpunkt sowie alle Werte in beiden Tabellen betrachten sowie alle Werte in , die keine entsprechenden Werte in der anderen haben. Während Sie mit der linken Verknüpfung den Schnittpunkt plus all unsere Werte in der ersten Tabelle betrachten , die nicht in der zweiten Tabelle angezeigt werden. Als Rechtsverknüpfung betrachten Sie den Schnittpunkt plus alle Werte in der zweiten Tabelle, die nicht in der ersten Tabelle angezeigt werden. Tut mir leid, ja, das sind die verschiedenen Arten von Joins, die uns zur Verfügung stehen. Denken Sie daran, ich weiß, wenn Sie Größen erhöhen oder verbinden, die im Grunde von innen nach links oder rechts zu einem vollständigen äußeren Join gehen. Sie behalten mehr Daten und behalten auch die Daten, die möglicherweise nicht in der anderen Tabelle übereinstimmen. Aber das bedeutet auch, dass Ihre resultierenden Tabellen größer werden. Nun, normalerweise, wenn wir Joins machen, werden die Größen unserer Tabellen nur zunehmen, weil wir zum Beispiel eine einzelne Instanz in der Track-Tabelle haben kann mehrere entsprechende Rechnungen in der Rechnung-Lichttabelle haben. Wenn wir also 100 Tracks haben und jede Spur drei Rechnungen hat, wird unser Tisch wachsen, weil wir jede einzelne dieser inneren Stimmen verfolgen müssen . Also denk einfach darüber nach. Selbst wenn Sie mit einer kleinen Tabelle beginnen, können Ihre Tabellengrößen zunehmen, da Sie nach all diesen Schnittpunkten suchen. Also wieder, wissen Sie, verwenden Sie es basierend auf Ihren Bedürfnissen, aber verwenden Sie nicht nur linke oder rechte oder vollständige äußere Joins, wenn Sie die Daten nicht verwenden , weil die entsprechende Tabelle groß sein wird. Und es ist besser, nur auf die Kreuzung zu schauen wenn Sie tatsächlich nur an allen Fällen interessiert sind, in denen die Spalten, die aus jeder Tabelle kommen oder beide NOT null. Grundsätzlich möchten Sie sicherstellen, dass Sie alle Informationen aus der Track-Tabelle haben , die entsprechende Informationen in der Rechnungspositionstabelle enthält. Konzentrieren Sie sich also nur auf den Schnittpunkt und diese Fälle stellen Sie sicher, dass Sie nur die Verknüpfung verwenden, um Ihre Tabellengröße zu reduzieren, was effizienter sein wird. Und es wird auch zu einer besseren Leistung führen. Aber eine andere am letzten, wenn Sie Instanzen haben, in denen Sie sicherstellen möchten, dass Sie diese Informationen beobachten können, auch wenn in der anderen Tabelle möglicherweise keine entsprechenden Werte vorhanden sind, haben Sie immer die Möglichkeit, die linke oder rechte Joins, sowie vollständige Joins sind vollständige äußere Joins, da ihr vollständiger Name aufgerufen wird. 38. 36SelfJoinsHB: Jetzt haben wir gesehen, dass verschiedene Arten von Joins, innere links gebratene äußere Joins, wo wir die Informationen von einer Tabelle zu den Informationen verbinden können , die wir in einer anderen Tabelle haben. Aber eigentlich gibt es nichts den gemeinsamen Aussagen, die besagen, dass Sie keinen Tisch auf sich selbst verbinden können. Eigentlich können wir das tun. Wir können einen Self-Join machen, wo wir die Informationen aus einer Tabelle nehmen und wir verbinden sie auf sich selbst. Das werden wir uns jetzt ansehen. Und wir werden auch prüfen, wie wir verwenden können, oder besser gesagt, wie wir zu mehreren Bedingungen beitreten können. Seitdem waren wir immer nur aufeinander abgestimmt. Beispielsweise müssen die LKW-ID und die Rechnungsposition der LKW-ID in der LKW-Tabelle entsprechen. Aber wir können auch mehrere Bedingungen verwenden, wie wir es zum Beispiel bei der Filterung getan haben. Also schauen wir uns das an. Lassen Sie uns zuerst, wählen Sie einfach alles aus unserer Rechnungspositionstabelle, gibt uns die Kurzschrift IL. Und dann werden wir wieder auf der Rechnung beitreten, auf der Rechnungspositionstabelle . Und lassen Sie uns einfach eine Kurzschrift ILA geben, nur Rechnungszeile und dann eine für bedingte. Und so werden wir uns anschließen, zuerst wollen wir uns daran beteiligen, wo die Rechnungsposition und die Rechnungs-ID gleich sind. Also in diesem Fall möchte ich für eine Rechnung suchen und ich möchte sehen, was andere Einkäufe oder vielleicht in dieser Rechnung getan. Und so werden wir sehen, warum genau. werden wir später in diesem Video machen. Also lassen Sie uns einfach mitmachen, wo die Rechnungs-IDs hier die gleichen sind. So können wir sehen, dass wir unterschiedliche Rechnungspositions-IDs haben können, aber alle diese verschiedenen Artikel sind Teil in diesem Fall der gleichen Rechnung. So zum Beispiel, in dieser Rechnung, kaufte die Person zwei verschiedene Tracks. Und so können wir sehen, dass wir zwei verschiedene Tracks hier vertreten haben. Also lassen Sie uns verbinden, wo die Rechnungsposition, die Rechnungs-ID ist gleich der Rechnungs-ID unserer zweiten Rechnungspositionstabelle hier, oder die gleiche Rechnungspositionstabelle. Aber lassen Sie uns auch eine weitere Bedingung hier hinzufügen, wo wir sagen, dass wir wollen die Track-ID hier größer ist als die LKW-ID in unserer ersten Tabelle. Auf diese Weise können wir nur sicherstellen, dass wir keine Reihe von Cross-Matches haben, sondern dass wir zumindest eine Art von Bestellung haben. Wieder sehen wir die Anwendung hier in einer Sekunde. Also nehme ich einfach unsere Rechnung Linie LKW-ID und wir wollen das machen. Wir möchten, dass die LKW-ID der traditionellen Geschichte größer als die LKW-ID der Anfangstabelle ist. Jetzt spielt die Bestellung hier keine Rolle weil alles irgendwie symmetrisch ist. Aber es hilft nur, dies in deinem Kopf zu visualisieren. Die zweite ist eine Art von der, die Sie als Referenz sehen möchten. Und diese hier können Sie an uns denken, die Basis. Und Sie können hier sehen, die Einfachheit des Hinzufügens zusätzlicher Bedingungen von unseren Join-Anweisungen ist nur, indem Sie hier ein Ende setzen. Also sagen wir unter dieser Bedingung, und dann können wir einfach die Hände verwenden, um zusätzliche Bedingungen zu verketten. Wir können auch einen Krieg benutzen, wenn wir wollen. Also, genau wie wir in den Where Fällen gesehen haben, gilt die gleiche Art von Logik, wenn Sie hier mehr bedingte Logik dafür erstellen möchten, wie wir genau diese Tabellen zusammenfügen möchten. Also wieder, dies wird im Grunde das gleiche sein, was wir in den Fällen im Filter gesehen haben. Außer jetzt hier tun wir es auf der auf Aussage, die auf die gemeinsame Aussage verweist, die wir oben haben. Also lassen Sie uns unser Semikolon hier setzen und lassen Sie uns das ausführen. Also die Ergebnisse, die wir daraus bekommen, können wir hier sehen wir haben, wir haben alle die gleichen Spalten, eine für jede Tabelle. Wir haben die umgekehrte Zeilenkennung von den ersten Tabellen hier und alle anderen entsprechenden Werte. Und dann haben wir die gleichen Spalten aus der zweiten Tabelle, der Rechnungszeile a, wie wir es nennen. Und wieder hier der MOS auf ID, die Rechnungs-ID, die LKW-ID und der Stückpreis. Aber wir können auch sehen, dass wir hier die LKW-ID aus der zweiten Tabelle haben , die wir auf diesen vier beigetreten sind. Und die LKW-ID des ersten ist, wie pro unserer zweiten Bedingung hier, muss die LKW-Idee der zweiten Tabelle größer sein als die LKW-ID der ersten Tabelle. Also, warum sollten wir das tun wollen? Wofür können wir das nutzen? Nun, es gibt bestimmte Zeiten, in denen diese Informationen Namen veröffentlicht werden. Nun, zum Beispiel, lassen Sie uns sagen, wir wollen herausfinden , welche Tracks oft zusammen gekauft werden oder wenn jemand einen LKW kauft, was ist die Kreide vielleicht auch wie einige. Was wir tun können, ist, geben wir einige dieser Tabellennamen, einen Alias, so dass wir besser darauf verweisen können. Und wir brauchen auch nicht alle Daten hier. Also, was wir wählen wollten, wie wir wollen, um die LKW-ID aus unserer Rechnungspositionstabelle nehmen. Die erste hier können wir das als Basisspur nennen, vielleicht die Art von Baseline-Spur, die gekauft wird. Und wir wollen auch die LKW-ID-Informationen aus der zweiten Tabelle. Und das kann der zusätzliche Lkw sein, und wir brauchen auch das as Schlüsselwort hier. Wenn wir also einen Blick darauf werfen, haben wir jetzt diesen LKW, er wurde gekauft und diese Strecke wurde auch gekauft. Wir haben diese Strecke gekauft und dieser LKW wurde auch mit ihm gekauft. Und dieser LKW wurde gekauft und diese Strecke wurde auch damit gekauft. Also, jetzt haben wir Informationen über. Ein Track, der Bob war, sowie eine andere Strecke, die mit der gleichen Strecke gekauft wurde. Nehmen wir an, wir wollen herausfinden, welche Tracks oft mit Truck ID sechs gekauft werden. Also, wenn wir hier zur Track-Tabelle gehen, machen wir diese Suche einfach manuell. Ok. Truck ID sechs entspricht dem Finger auf Sie, den Truck. Nehmen wir an, wir wollen herausfinden, wo wir wissen wollen, ob jemand diesen Track kauft, was sind andere Tracks, die sie mögen? Oder nur allgemeiner, was sind andere Tracks, die in der gleichen Art von Rechnung gekauft wurden , denn wenn jemand diesen LKW kauft und sie auch einen anderen LKW kaufen, ist wahrscheinlich, dass sie nicht wie die anderen Spuren zu. Also, wenn jemand diesen LKW kaufen will, vielleicht als erstes, was wir darüber nachdenken können, ist, was andere Lastwagen für Menschen, die bereits diese Strecke gekauft haben, was andere Lastwagen, die sie auch kaufen. Denn vielleicht kann jemand, der diesen LKW kauft, auch an den Dingen interessiert sein , die andere Leute gekauft haben. Und so können wir dieses Ergebnis hier verwenden, um diese Informationen sehr schnell mit einer Gruppe für Anweisung zu erhalten. Weil wir sagen können, in Ordnung, lasst uns nach unserem Basstrack gruppieren. Und wir wollen auch gruppieren durch nachher sind zusätzliche Spur. Und jetzt wollen wir auch eine Aggregation verwenden und wir wollen die Anzahl der Vorkommen zählen als. Und wir können diesen einen gekauften Einkauf nennen. Und dann lassen Sie uns alles durch die gepaarten Einkäufe in absteigender Reihenfolge bestellen, um nur eine Tabelle Ausgabe hier von einem dieser LKW gekauft wurde. Und als ein anderer LKW damit gekauft wurde, wie oft wurden diese Tracks zusammen gekauft? Also lasst uns weitermachen und das laufen. Und wir können hier zum Beispiel sehen, wann der LKW 1412 gekauft wurde, als sie zwei Mal waren , wo auch der LKW 1424 damit gekauft wurde. Und wir können in diesem Fall sehen, die Art der gekoppelten Einkäufe sind, sind ziemlich niedrig. Aber das ist auch eine Art Einschränkung, wie viele Tracks wir zur Verfügung haben, sowie wie viele Rechnungen wir in unseren Daten haben und wie die Anzahl der Rechnungen in unserer Rechnungspositionstabelle hier wächst. Das heißt, wir haben mehr Einkäufe, mehr Informationen über Einkäufe und wir erhalten mehr Informationen über Tracks, die oft zusammen gekauft werden. Und so können wir erwarten, dass diese Zahlen auch hier wachsen. Natürlich können wir auch in der anderen Reihenfolge sortieren, um zu sehen, okay, nun, da unser Maximalwert zwei ist, ist die einzige andere Option, die wir haben, einen Wert von eins zu haben. Aber Sie können den Ansatz sehen, den wir damit verfolgen können , ist, dass wir einen Tisch an sich selbst anschließen können. Und in der Regel wollen wir zusätzliche Bedingungen für die Jobs verwenden. Jetzt müssen wir nicht nur zusätzliche Bedingungen für Self-Joins verwenden. Wir haben natürlich auch die Möglichkeit, zusätzliche Bedingungen zu verwenden , wenn wir andere Arten von Joins machen. Es ist nur, wenn wir Self-Joins machen, wir wahrscheinlich möchten zusätzliche Bedingungen verwenden oder einfach nur einige zusätzliche Filterung durchführen. Denn wenn Sie alle Informationen auf der Tabelle mit sich selbst verbinden , wird Ihre Tabellengröße wieder stark wachsen. Also, um sicherzustellen, dass Sie dies reduzieren und wirklich nur die Informationen auswählen, die Sie benötigen. Sie möchten wahrscheinlich zusätzliche Bedingungen zu dieser Aussage hier über den Join setzen , der oben vor sich geht. Und so konnten wir in diesem Fall zum Beispiel den Self-Join nutzen, um wenigstens einige oberflächliche Informationen über, wissen Sie, wenn ein LKW gekauft wurde, welche anderen Tracks auch gekauft wurden und Wie oft wurden diese Tracks zusammen gekauft? 39. 37UnionsHB: Wir haben jetzt Joins gesehen, aber es gibt auch andere Fälle, in denen wir Informationen über Tabellen miteinander verbinden möchten, aber wir wollen sie eigentlich nicht horizontal verknüpfen, sondern sie vertikal stapeln. Und diese können zum Beispiel angezeigt werden, wenn Sie mehrere Tabellen haben, die dieselbe Sache verfolgen, aber die Informationen werden auf mehrere Tabellen aufgeteilt, nur um zu verhindern, dass jede einzelne Tabelle vielleicht zu groß wird . Oder Sie haben verschiedene Tabellen, von denen jede Art von Daten eines einzelnen Tages darstellt. Und Sie möchten alle diese Informationen in einer Tabelle zusammenfügen , so dass Sie tatsächlich eine Abfrage für die vollständige Tabelle ausführen können. Also, wie kannst du das tun? Nun, lassen Sie uns zuerst unsere zwei Teilmengen von Tabellen erstellen , so dass wir sie miteinander verbinden können. Und wir werden die create table Anweisung verwenden. Und wir werden diese Tischspur Teil eins nennen. Und wir werden dies als Ergebnis der folgenden Abfrage erstellen. Wir werden alles aus der Spurtabelle auswählen, aber nur dort, wo die LKW-ID kleiner oder gleich 2000 ist. Lassen Sie uns hier ein Semikolon für eine Art guter Praxis setzen. Und gehen wir weiter und lassen Sie uns das laufen und werfen einen Blick auf unsere Datenbank jetzt. Also gehen wir in unsere Schemas in einen Tisch hier. Also haben wir unseren einen Tisch, den Truck, den einen , der alle Informationen aus unserem Tractable enthält, aber nur die ersten zweitausend Lastwagen. Und dann lassen Sie uns eine zweite Tabelle LKW Teil 2 erstellen, wo alle Informationen und wo die LKW-ID MOOC aus der LKW-Tabelle größer als 2000 ist. Also teilen wir im Grunde unsere Spur Tabelle hier, die wir von früher erinnern, enthält etwa 3.500 Zeilen in zwei kleinere Tabellen, LKW Teil 1 und LKW geparkt zu. Wie wir sehen können, wenn wir diese hier öffnen, können wir sehen, dass wir LKW-ID 2001 starten. Wie können wir diese Informationen miteinander verbinden? Weil wir vielleicht das Ergebnis all unserer Tracks nutzen wollen , weil wir es für etwas brauchen. Vielleicht, wissen Sie, wenn wir einen Join auf all unseren Kreiden machen wollen, müssen wir zuerst in der Lage sein, zusammenzuschließen oder verschiedene Tabellen zusammen, so dass wir tatsächlich alle Informationen über alle Gespräche haben , die wir haben, sondern als eine kleinere Tabelle zu verwenden , die nur eine Teilmenge aller Daten enthält, die wir haben. Um dies zu tun, können wir nur, vor allem, nur das Skelett des Schriftstellers die Select-Anweisung hier, wir werden alles auswählen. Beginnen wir einfach mit LKW Teil eins und hier wollen wir nun auf die Informationen aus dem LKW Teil 2 hinzufügen. Um das zu tun, werden wir hier eine Gewerkschaftsaussage verwenden. Und dann werden wir eine weitere Select-Anweisung haben wo wir wieder alles auswählen. Jetzt werden wir sagen, wählen Sie alles aus Spur Teil 2. Also, wenn wir das ausführen, wir jetzt die ganze Sache aus und setzen hier ein Semikolon, auch für eine gute Übung. Also werden wir alle unsere Informationen von den beiden Tracks haben. Wir wählen alles aus LKW Teil 1. Wir wählen alles aus Track Teil 2 aus. Und diese Gewerkschaftsaussage bedeutet hier, dass diese Information, oder dass diese beiden Ergebnisse vertikal gestapelt miteinander verbunden werden. Anstatt also die Art von horizontalen Verknüpfungen zu haben, die wir sahen, wenn wir die gemeinsamen Anweisungen verwenden. Stattdessen ist die Gewerkschaft, wir werden die Ergebnisse von hier verwenden. Und wir werden nur auf den Boden hinzufügen, auch die Ergebnisse, die wir von hier haben. Auf diese Weise können wir die Union-Anweisungen verwenden, um dann mehrere Tabellen miteinander zu verbinden. Und das können wir sogar erweitern. In diesem Fall haben wir nur zwei Tabellen, aber lassen Sie uns einfach so tun, als hätten wir eine andere Tabelle, damit wir eine andere Vereinigung machen können. Und sagen wir, wir wollen wieder alles aus Luke Spur Teil 2 auswählen. Und wir können das einfach nochmal ausführen. Und wir können sehen, dass es immer noch läuft. Also, wenn wir mehrere Tabellen hier hatten, könnten wir einfach mehrere Union-Anweisungen tun, wo wir die Informationen auswählen, die wir aus der entsprechenden Tabelle wollen. Und dann mit der Union-Anweisung hier, um es irgendwie übereinander zu halten, so dass das Endergebnis die letzte Tabelle sein wird, die wir eigentlich wollen , die alle Daten enthält, die miteinander verbunden sind. Also wieder, in den Fällen, in denen in Ihren Daten und möglicherweise über mehrere verschiedene Tabellen aufgeteilt werden, können Sie die Union-Anweisungen verwenden, um diese Informationen aus allen Tabellen zusammen zu verbinden , so dass Sie alles an einem Ort haben , so dass Sie Wenn Sie Ihre Abfrage ausführen, können Sie sie für alle Tabellen ausführen. Sind alle Daten aus den separaten Tabellen miteinander verbunden, vertikal übereinander gestapelt. Anstatt jede Untertabelle einzeln abfragen zu müssen und dann später versuchen, die Ergebnisse zu verbinden. Nun, wenn wir die beiden Tabellen wieder loswerden wollen, denken Sie daran, alles, was wir tun müssen, müssen Sie nur sagen Drop Table. Und wir werden unseren Truck Teil 1 fallen lassen und das laufen lassen. Und dann werden wir auch unseren Stamm Teil zwei fallen lassen und diese wieder ausführen jetzt haben wir eine Art bereinigte Datenbank, weil wir unsere Spurtabelle nicht in zwei separate Spuren aufteilen müssen . So können wir diese verwenden, oder wir können sie als Beispiel der Union verwenden. Aber dann ist es auch gut, das wieder aufzuräumen. Wir haben hier kein Haufen Unordnung in unserer Datenbank. 41. 39WindowFunktionenUndAliasenHB: Jetzt haben wir bereits gesehen, dass wir viel mit SQL machen können, aber es gibt einige Dinge, die noch auf Einfügen sind. Und eines dieser Dinge ist zum Beispiel, Aggregationen noch einen Schritt weiter zu gehen. Denn derzeit, wenn wir Aggregationen ausführen, konzentrieren wir uns hauptsächlich darauf, die Ergebnisse über die gesamte Tabelle zu aggregieren. Aber manchmal wollen wir keine aggregierten Ergebnisse über die gesamte Tabelle, sondern wir möchten alle Zeilen behalten und dennoch in der Lage sein, Zwischenaggregationsergebnisse oder Aggregatergebnisse zu haben Zwischenaggregationsergebnisse oder , die Durchschnittswerte oder ähnliches ausführen. Lassen Sie uns also einen Blick darauf werfen, wie wir einige dieser Probleme lösen können. Also zuerst schreiben wir einfach unsere Skelett-SQL-Anweisung hier. Und wir werden hier den Track-Tisch benutzen. Also lassen Sie uns voran und wählen Sie einfach alles aus dem LKW-Tisch jetzt. Und vor allem, beschränken Sie einfach unsere Ergebnisse. Wenn wir das ausführen, können wir hier sehen, Ordnung, genau was wir erwarten. Was also, wenn wir zum Beispiel eine laufende Aggregation über die verschiedenen Alben sehen wollen, die wir hier haben. Und wir wollen wissen, was die Laufzeit für jeden Track ist, der durch das Album geht. Oder was, wenn wir die Informationen über die Zeilen behalten wollen , aber immer noch Zugriff auf den Aggregatwert haben. Wie können wir das tun? Momentan können wir nicht. Lassen Sie uns also zuerst die zweite Frage beantworten, die heißt, wir möchten Informationen über alle Zeilen behalten, aber wir wollen auch Zugriff auf den Aggregatwert haben. Also, was wir tun werden, ist alles auszuwählen, damit wir diese Informationen haben können. Aber jetzt wollen wir auch auf diese laufende Summe zugreifen können. Im Grunde wollen wir also über die Millisekunden hier zusammenfassen , damit wir die Zeit jedes Songs verfolgen , während wir durch das Album gehen. Also wollen wir über die Millisekunden-Tabelle hier oder über die Millisekunden-Spalte eher summieren . Aber wenn wir das tun, dann müssen wir eine Gruppe für Anweisung verwenden. Aber es gibt einen anderen Weg, wie wir die Anweisung tatsächlich erweitern können, nämlich Fensterfunktionen verwenden. Was wir also tun können, ist, dass wir überhören können und dann Leerzeichen und Klammern öffnen und schließen. Und innerhalb der Anweisung können wir dann Partitionen erstellen, indem wir partitioniert durch. Und lasst uns zuerst die Aussage beenden und dann irgendwie zurückgehen und es anschauen. Und lassen Sie uns nach der Albumidee partitionieren. Was das bedeutet, ist, dass wir alle Spalten noch auswählen, und wir werden eine Summe über die Millisekunden-Spalte machen, aber wir verwenden nicht die Gruppe für Anweisung stattdessen, es gibt eine andere Option, die wir zur Verfügung haben, die diese Übertreibung hier. Und so innerhalb dieser Übertreibung, können wir dann Partitionen erstellen, was ähnlich ist, was wir in der Gruppe BY-Klausel tun würden. Aber hier definieren wir nur, wie wir unsere Daten aufteilen wollen. Und anstatt aggregierte Ergebnisse für jede Spalte zurückgegeben zu bekommen und diese als eine Art Ausgabe basierend auf dem, was wir in der Gruppe BY haben, enthalten zu müssen, können wir einfach immer noch alle unsere Spalten nehmen und alle unsere Datensätze pflegen. Aber wir können eine zusätzliche Spalte haben, die entweder eine laufende Aggregation hat , sind auch nur eine Aggregation basierend auf der Gruppe. Nun hängt die Art und Weise, wie diese Aggregation funktioniert, davon ab, was wächst ausgewählt werden. Also in diesem Fall, wenn wir die Partition BY verwenden, was passieren wird, werden wir alle unsere Daten in verschiedene Partitionen aufteilen, basierend auf jeder Album-ID hier. Und für jede Partition, wo Lincoln eine diese Aggregation laufen, wir werden es in diesem Fall über jede Partition laufen. Wenn wir uns also nur einen Alias geben, können wir dieses Album Länge, Albumdauer oder was auch immer Sie wollen nennen . Und lasst uns einfach das ausführen und einen Blick auf die Ausgabe werfen. Und lassen Sie uns auch wegnehmen oder Begrenzung Aussage hier. Also, wenn wir das laufen und dann zu unserem Output hier unten gehen, den ganzen Weg nach rechts bewegen, haben wir hier unsere Albumlänge. Und wir können sehen, ob wir nach unten scrollen, das wird sich je nachdem unterscheiden, welche Album-ID wir haben. Wir haben also eine eindeutige Albumlänge für jede Album-ID. Aber das Interessante daran, dass sich dies von der Gruppe für Anweisung unterscheidet , ist, dass wir immer noch über einzelne Zeilen halten. Wir haben immer noch alle Informationen über die einzelnen Zeilen. Wir haben auch Zugriff auf den Gesamtwert. Und wir können sehen, dass sie sich über die verschiedenen Partitionen hier unterscheiden. Wir haben also unsere Album-ID eins, und Sie können in diesem Fall sehen, alle diese Werte gleich sind. Wir haben unsere Album-ID 2 hier. Wir haben nur diesen einen Wert. Wir haben hier wieder ein offenes E3, die Werte werden gleich sein und für vier und so weiter. Also jetzt haben wir das Aggregat, oder besser gesagt die Summe über diese Millisekunden-Spalte für jede Album-ID. Also alles durch die verschiedenen Album-IDs aufteilen und über die Millisekunden summieren. Aber weil wir diese Übertreibung verwenden und wir hier oben Partitionen verwenden. Anstatt die Gruppe für Anweisung zu verwenden, haben wir nun auch Zugriff auf die einzelnen Roboter. Das ist natürlich großartig, wenn Sie auch Zugriff auf diese anderen Daten haben müssen. Aber manchmal kann die Gruppe für Anweisung besser sein , weil Sie eine viel kleinere Tabelle bekommen und Sie hauptsächlich die Ergebnisse erhalten, die Sie benötigen wenn Sie hier keinen Zugriff auf die anderen Daten haben müssen. Auch hier hängt es von Ihrem Anwendungsfall ab und was genau Sie aus diesen Aggregationsergebnissen benötigen. Jetzt sind derzeit aggregierter Wert hier ist der gleiche über alle Spalten, aber selbst das muss nicht so bleiben. Die Art und Weise, wie diese Aggregation funktioniert, hängt wiederum davon ab, wie wir unsere Daten hier aufteilen. Wenn wir nur die Partition BY-Anweisung verwenden, dann, was passiert, ist für jede Partition, alle Zeilen sind enthalten. Aber wir können hier auch eine weitere Klausel hinzufügen, nämlich die Reihenfolge nach. Und das ist die gleiche Reihenfolge, die wir zuvor gesehen haben, aber intern für jeden Split, den wir tun, in diesem Fall durch die Album-ID, können wir auch die Ergebnisse innerhalb jeder Split sortieren. Und lassen Sie uns zum Beispiel nach der Namensspalte sortieren . Und was in diesem Fall passiert, wenn wir es ausführen, werden wir tatsächlich verschiedene Werte erhalten, sogar innerhalb der gleichen Album-ID. Und was Sie von hier aus sehen können, bekommen wir tatsächlich eine laufende Gesamtsumme. Also in diesem Fall bekommen wir eine Gesamtsumme von bis zu diesem Song. Das ist, wie viel Zeit, diese beiden Songs, und dann hier oben sind es alle drei dieser Klänge zusammen. Hier sind es alle vier Lieder. Und sobald wir ein neues Album erreicht haben, wird der Zähler zurückgesetzt. Und der Grund, warum dies anders ist, liegt darin, dass wir, wenn wir die Reihenfolge nach Klausel anstelle aller Zeilen für jede Partition verwenden , die zusammen betrachtet wird nur die Zeilen berücksichtigen, die bis zu dem Wert liegen, nach dem wir sortieren. Nun, wenn es Duplikate gibt, werden alle diese Duplikate berücksichtigt. Also, wenn wir haben, zum Beispiel, den Namen des zweiten hier und der dritte Song ist der gleiche. Dann wird der aggregierte Wert, den wir hier bekommen werden, in den beiden gleich sein , weil wir nach bestellen und es gibt ein Duplikat im Namen, also wird es dasselbe sein. Und es wird auch gleich den ersten drei sein im Grunde, weil die erste nicht eindeutig in der zweiten oder dritten wäre ein Duplikat sein. Und so wäre der Wert, den wir hier bekommen, derjenige für alle drei. Also nur einige Dinge zu beachten, wie dieses Verhalten oder wie sich das verhält. Also ja, wie wir jetzt sehen können, können wir einen anderen Weg haben, Aggregation anzugehen. Und einer von ihnen ist die GroupBy und der andere verwendet diese Übertreibung. Und dann können wir hier nach verschiedenen Spalten partitionieren. Und wenn wir nur die Partition BY verwenden, dann werden die Aggregatwerte, die wir bekommen werden im Grunde innerhalb jeder Partition sein. Aber wenn wir, wenn wir eine Reihenfolge für Klausel zwei hinzufügen, dann wird unsere Aggregation jetzt nicht mehr eine innerhalb jeder Partition sein, sondern es wird eine laufende Aggregation sein , die auf der Reihenfolge basiert, die wir hier definiert haben. Nun, was, wenn wir zusätzliche Aggregationen machen wollen? Zum Beispiel haben wir die Summe, aber vielleicht wollen wir auch wie eine laufende Zählung tun weil es eine zusätzliche Aggregation ist und dass wir tun können. So können wir auch tun, zum Beispiel, nur um einen hier zu berücksichtigen. Und vielleicht wollen wir auch einfach den Überblick über die durchschnittliche Songlänge zwei behalten. Also wollen wir vielleicht auch einen Durchschnitt der Millisekunden-Spalte machen. Hier haben wir also unsere Album-Song-Anzahl, und hier haben wir unsere durchschnittliche Albumlänge. Also, wenn wir fortfahren und das wieder ausführen, und wir können jetzt ein bisschen mehr blättern und uns die Ergebnisse ansehen. Also wieder hier für jeden von ihnen, werden wir eine laufende Aggregation haben, weil wir die Order by -Klausel verwenden. Hier. Wir werden eine laufende Summe haben, oder Sie laufen einige der Millisekunden. Hier werden wir eine laufende Zählung haben. Und hier werden wir einen laufenden Durchschnitt über alle Millisekunden haben. In diesem Fall können wir sehen, dass wir nur einen Wert betrachten, weshalb wir hier haben. In diesem Fall wird es der Durchschnitt der ersten beiden sein, was dieses Ergebnis hier ist. Hier wird der Durchschnitt der ersten drei sein und so weiter. So können Sie sehen, dass wir die verschiedenen Aggregationsfunktionen verwenden und sie immer noch über diese verschiedenen Fenster verwenden können . Aber in diesem Fall ist es nicht ideal, die Aussagen hier immer zu wiederholen. Idealerweise könnten wir eine Abkürzung dafür haben, so dass wir dies nicht nur wiederholen, weil es es schwieriger macht, sondern es macht es schwieriger zu lesen. Aber auch wenn Sie etwas ändern wollen, müssen Sie durchgehen und Sie müssen es und jeden einzelnen Ort ändern. Und wir können hier auch Aliase für diese Fenster erstellen. Also, um das zu tun gehen wir hier runter und wir werden Fenster definieren. Dann geben wir ihm einen Aliasnamen oder wir geben ihm einfach einen Namen, damit wir sagen können Album, Name, Split zum Beispiel hören können . Und dann werden wir Aussage verwenden. Und dann können wir die Definition dieses Fensters hier nehmen. Und wir werden es hier runterlegen. Und dann können wir stattdessen diesen Alias verwenden, den wir jetzt für dieses Fenster hier in hier erstellt haben. Und damit wir das verwenden, werden wir darauf verweisen. Und dann können wir es auch hier reinlegen. Und wir können es auch hier reinlegen. Dies hat nun auch den Vorteil, dass dies einerseits leichter lesbar wird. Aber auf der anderen Seite ist das auch viel sauberer zu schreiben, denn wenn wir hier eine Änderung an unserem Fenster vornehmen wollen, dann können wir einfach die Änderung machen und es wird auf alle anderen propagiert. Aggregation ist, dass wir hier tun, sind die verschiedenen Verwendungen. Während wenn wir einfach alles kopieren, was jedes Mal, wenn wir eine Änderung vornehmen, müssen wir diese Änderung und jede einzelne Spalte vornehmen, was natürlich nicht so schön ist. Also lassen Sie uns das laufen und wir können sehen dass wir offensichtlich die gleichen Ergebnisse bekommen, weil sich nichts anderes geändert hat. Wir haben gerade einen Alias eingeführt. Aber jetzt, wenn wir etwas anderes tun, zum Beispiel, versuchen wir, nach Album-ID zu partitionieren, aber auch vielleicht nach der Genre-ID als zweite Ebene der Partition zu partitionieren. Jetzt ist es sehr wahrscheinlich, dass jedes Album die gleiche Genre-ID haben wird. Aber vielleicht gibt es einige Fälle, in denen ein Album verschiedene Tracks hat, die unterschiedliche Genres haben. Es ist möglich. Nicht sehr wahrscheinlich in vielen Fällen, aber es ist möglich. Also in den Fällen, in denen es mehr als ein Genre gibt, dann werden wir eine Spaltung haben, die dort vor sich geht. Und wenn es nur ein Genre im Inneren gibt, dann, selbst wenn wir uns nach der Genre-ID aufteilen, weil es nur ein Genre oder Ergebnisse gibt, werden wir uns nicht ändern. So wie wir in der Gruppe für Anweisung haben, können wir auch zusätzliche hinzufügen hier. Es ist also nicht nur, es muss nicht nur eine Spalte sein, die wir fünf partitionieren, wir könnten tatsächlich durch mehrere partitionieren. Das Wichtige dabei zu beachten ist nur, dass wir zuerst diese Partition machen, dann machen wir diese Partition. Und wenn wir mehr als haben, würden wir diese nachher tun. Die Genre-ID würde also nur innerhalb jeder Album-ID-Gruppe aufgeteilt. Also nur eine wichtige Sache im Auge zu behalten. Aber jetzt können wir dies erneut ausführen und Sie können sehen, dass, weil wir keinen Alias verwenden, all diese Änderungen automatisch auf jede Weise angewendet werden, in der wir den Alias verwenden. Während wenn wir nur den kopierten Wert verwenden, hätten wir diese Änderung dreimal vornehmen müssen, was einerseits ärgerlich ist. Aber auf der anderen Seite können Sie auch vergessen, die Änderung irgendwo vorzunehmen. Und so werden Ihre Ergebnisse falsch sein, hauptsächlich weil Sie die Änderung nicht überall angewendethaben und das sind hauptsächlich weil Sie die Änderung nicht überall angewendet häufige Fehler, die passieren. Auf diese Weise können Sie die Dinge beschleunigen, Dinge leichter zu lesen machen und sich weniger Sorgen über diese Arten von Fehlern machen. Jetzt, wo diese Definition in unserem vollen SQL-Format gehen würde. Das wird also gehen, wenn wir eine Where-Anweisung haben und danach das Fenster haben werden, aber es wird auch vor der Bestellung von BY passieren, also sagen wir, wir wollen sagen, was auch immer sagen und wir werden keine andere Filterung machen. Wir werden nur sagen, dass wir Tracking-ID größer oder gleich eins ist. Und dann hier unten werden wir unsere OrderBy haben. Und lasst uns einfach alles nach Album-ID bestellen, was wahrscheinlich schon ist. Aber wir können einfach voran gehen und es wieder tun und hier einfach eine aufsteigende Reihenfolge sagen. Und hier muss die Aliasdefinition des Fensters gehen. Wir nehmen das und schieben es hierher und führen das aus. Dann können wir hier sehen, dass wir einen Syntaxfehler bekommen, denn wieder müssen wir Dinge in einer bestimmten Reihenfolge haben und so gehört es nicht dorthin. Also müssen wir es hier zurückbringen. Und dann, wenn wir es wieder ausführen, ist alles in Ordnung. Jetzt können wir sehen, dass wir hier das Aufsteigende benutzen. Natürlich, wenn wir die Order by Klausel verwenden und hier die gleiche Sache gilt immer noch. Wir können auch einen Sonntag hier definieren, oder wir können auch die absteigende verwenden. Und genau wie wir hier in der Partition mehrere Dinge hinzufügen könnten, können wir auch mehrere Dinge hier auf der OrderBy hinzufügen, um Verbindungen möglicherweise aufzulösen. So können wir zum Beispiel zuerst nach dem Namen sortieren und dann vielleicht wollen wir nach etwas anderem, zum Beispiel nach den Bytes, bestellen . Und so in diesen Fällen, und wieder, hier werden wir nicht tun, um Namen aufsteigend und weiß absteigend , da wir das Bestellformular für jede Spalte, die wir verwenden, liefern müssen. Sonst wird es nur angenommen, aufsteigend. So können wir sehen, dass wir auch hier viel Flexibilität haben. Aber jetzt, wenn es eine Bindung in der Namensspalte gibt, anstatt sie in der Aggregation für als im Grunde einen doppelten Wert verwendet wird. Statt Skinner schauen Sie auf die zweite Reihenfolge, die in der Byte-Spalte sein wird und nur eine doppelte Anzahl und die Aggregation irgendwohaben eine doppelte Anzahl und die Aggregation irgendwo wenn der Name und die Bytes beide gleich sind. Sonst haben wir die ordnungsgemäße Bestellung. So können wir sehen, dass wir das immer wieder ausführen können. Wir können nur unsere Ergebnisse hier sehen. Und die Tabelle unten. 42. 40RowNumbersUndRanksHB: Jetzt haben wir gerade gesehen, wie wir Fensterfunktionen verwenden können, um Aggregationen über einzelne Teile von Partitionen zu machen , die wir definieren. Aber mit 10 Funktionen können wir nicht nur Aggregationen durchführen, sondern auch andere Dinge wie das Zählen von Zeilennummern tun. Und das kann auch wirklich nützlich sein. Werfen wir einen Blick darauf, wie das jetzt zu tun ist. Und dafür werden wir die Rechnungspositionstabelle verwenden. Und was wir tun werden, ist, dass wir ein Ich bin albern, irgendwie aufteilen und einfach alles nach dem Stückpreis aufteilen, oder vielmehr alles durch den Einzelpreis partitionieren , damit wir ein paar doppelte Werte bekommen. Und dann können wir sehen, wie diese verschiedenen Dinge alles beeinflussen. Lassen Sie uns voran gehen und schreiben sind nur wählen Skelett. Wir werden schreiben, wählen Sie alles aus der Rechnungspositionstabelle, nur setzen Sie ein Semikolon hier. Ordnung, also werden wir alles auswählen und jetzt werden wir unsere Fensterfunktionen hier haben. Das erste, was wir uns vielleicht ansehen können, ist die Zeilennummer. Also verfolgen Sie einfach die Zeilennummer, die sich in jeder Partition befanden. Um dies zu tun, anstatt hier eine Aggregationsfunktion zu setzen, können wir stattdessen die Zeilennummerfunktion einfügen, die keine Eingabe übernimmt. Und dann werden wir unser Standard-Fensterfunktionenformat haben , das wir auch vorher gesehen haben, wo wir ein Over machen. Und jetzt definieren wir hier, was wir wollen partitionieren BY. Lassen Sie uns also durch den Einzelpreis partitionieren. Und lassen Sie uns auch etwas bestellen. Lassen Sie uns nach der LKW-ID bestellen. Und das hier können wir einfach als Zeilennummer setzen. Nun dafür werden wir auf jeden Fall einige doppelte Werte erhalten, da es natürlich wahrscheinlich einige doppelte Spur IT-Käufe geben wird. So können wir sehen, dass wir gruppieren, oder besser gesagt, wir partitionieren nach dem Einzelpreis hier und hier. Vogel Bestellung nach der LKW-ID innerhalb jeder Partition. In diesem Fall ist es wahrscheinlich, dass alles einen Einzelpreis von 0,99$ hat. Und so haben wir nur eine große Partition, die diese Reihenfolge hat. Und in diesem Fall können wir nur die Zeilennummern sehen, wir haben immer noch inkrementelle Zeilennummer ist, obwohl wir doppelte Werte hier haben. Nun, wenn wir weiter definiert sind, bestellen es nicht nur durch LKW-ID, sondern auch durch Rechnungs-ID, dann werden sich unsere Ergebnisse hier nicht wirklich ändern, nur weil sich nicht viel anderes geändert hat. So können wir immer noch den Überblick über einzelne entstanden hier, und wir können noch weitere Bestellung tun. Aber es gibt auch verschiedene Möglichkeiten, wie wir Zeilennummern zählen können. In diesem Fall geben wir für jede einzelne Zeile eine Zeilennummer an, die wir haben, unabhängig davon, ob es einen doppelten Wert gibt oder nicht. Nehmen wir diese Bestellung wieder hier weg. Aber manchmal wollen wir das nicht. Manchmal möchten wir, dass doppelte Werte dieselbe Zeilennummer haben. Und dazu können wir eine Funktion verwenden, die hier Rang genannt wird. Auch hier nimmt es keine Eingabe. Und nur für jede, innerhalb jeder Partition, werden wir dann einen Rang zu jeder Reihenfolge nach Branche geben , die wir haben eine eher durch jeden Eintrag, den wir haben. Aber der Rang unterscheidet sich dadurch, dass doppelte Werte, wie wir hier sehen können, die gleiche Zeilennummer zugewiesen werden. Es ist wahrscheinlich besser, wenn wir das auf Rang aktualisieren. Aber Rang ist wieder nur eine Form der Zeilennummer. Aber für doppelte Werte werden sie den gleichen Rang haben. So können Sie hier sehen, das ist 1, 2, und das wäre drei, aber es ist ein Duplikat, denn wenn wir nach der LKW-ID bestellen, sind dies die gleichen Werte. Also innerhalb dieser Partition eines Stückpreises von 0,99, die LKW-ID-Werte hier sind die beiden Zeilen hier sind Duplikate, weil wieder, sie haben die gleiche LKW-ID. Also in diesem Fall sind sie der gleiche Rang. Und wir können sehen, wenn wir weitermachen, gehen wir dann zu 45678 und so weiter, bis wir ein weiteres Duplikat erreichen. Und dann werden sie den gleichen Rang bekommen. Aber dann zählen wir weiter und verfolgen im Grunde nur die Anzahl der Duplikate hier und zählen dann weiter darauf wo wir hätten, wenn wir stattdessen die Zeilennummern verwenden würden. Jetzt kann das wirklich schön sein, weil Sie manchmal keine Zeilennummern zuweisen möchten , sind unterschiedliche Zeilennummern, wenn es doppelte Instanzen gibt. Und so kann der Rang auch eine sehr nützliche Sache zu verwenden sein. Aber es gibt auch andere Fälle, in denen Sie keine Zahlen überspringen möchten und Sie nicht so viel Interesse an der absoluten Zeilennummer haben , anstatt an der vollständigen Reihenfolge , in der die Dinge gehen, und Sie wollen nur eine Art konsistente aufeinanderfolgende Bestellung. Und was Sie tun, können Sie dafür verwenden, ist etwas, das als dichter Rang oder die dichte Rangfunktion bezeichnet wird . Und wenn wir das ausführen, ist die Änderung, die wir haben, eher als in diesem Fall, zum Beispiel, eine Vier zu haben, weil wir zwei zwei hier haben, werden wir einfach weiter von der nächsten fortlaufenden Nummer zählen. Es ist also nicht mehr wichtig, wie viele Duplikate wir haben. Wir werden im Grunde nicht so viele Zahlen überspringen, sondern wir werden nur weiter von der nächsten Zahl zählen. Nun wieder, dies ist spezifisch für jede Partition, die wir haben. In diesem Fall ermöglichte es uns die Verwendung des Stückpreises, eine Partition zu erstellen , auf der wir sicher sein können, dass es einige Duplikate für die LKW-IDs gibt. Aber natürlich, wenn Sie, wissen Sie, mehrere Partitionen als Ihren Rang haben , oder in diesem Fall wird es tatsächlich der dichte Rang oder auch die Zeilennummern sein. Sie werden für jede Partition spezifisch sein. Sie werden nicht über den ganzen Tisch gehen. Sie werden für jede Partition spezifisch sein. Das ist also nur eine wichtige Sache zu beachten, dass Ihr Rang, Ihr dichter Rang oder sogar Ihre Zeilennummer zurückgesetzt werden und sie nur innerhalb jeder Partition definiert werden , die Sie hier haben. Wenn Sie es nun über die Datenbank finden wollten, können Sie anstelle von Partitionen durch irgendetwas aufteilen, und vielleicht haben Sie nicht einmal eine Spalte, die überall den gleichen Wert hat. Sie können einfach diese Partitions-Anweisung wegnehmen und einfach die Reihenfolge BY-Anweisung verlassen. Und auf diese Weise wird unsere Fensterfunktion immer noch laufen, aber wir partitionieren jetzt nicht mehr durch irgendetwas. Auf diese Weise bewegen wir uns von dem Rang oder dem dichten Rang oder der Zeilennummer, die für jede Partition spezifisch ist. Vielmehr haben wir es für das gesamte Dataset , weil wir jetzt keine Partition mehr erstellen. 43. 41UsingOtherRowsFensterFunktion, 41Fenster: Ordnung, also haben wir einen Blick auf Fensterfunktionen bekommen und wir haben einige coole Sachen gesehen, die wir damit machen könnten, speziell laufende Aggregationen sind Aggregationen, die auf den Partitionen basieren , ohne die Informationen, die wir in den einzelnen Zeilen haben. Jetzt ist es jedoch wahrscheinlich, dass Sie wahrscheinlich auf Informationen aus anderen Zeilen zugreifen möchten. Zum Beispiel, vielleicht möchten Sie über zwei aufeinanderfolgende Einkäufe wissen oder 11 Kauf passiert, wenn der nächste Kauf passieren wird oder, oder so etwas. Derzeit ist die Art und Weise, wie wir über die Verwendung von Daten gehen , jede Zeile wird Art von individuell behandelt. Und jetzt gibt es für uns keine Möglichkeit, auf Informationen von anderen Straßen zuzugreifen. Sehen wir uns das jetzt an. Und wir werden dafür die Rechnungstabelle verwenden. Und lassen Sie uns einfach unsere Skelett-SQL-Anweisungen schreiben. Wir werden sagen, wählen Sie alles aus der Rechnungstabelle. Und lassen Sie uns einfach weitermachen und unsere Ergebnisse vorerst auf fünf beschränken. Gehen Sie weiter und führen Sie das aus. Das wird also unsere Ergebnisse hier sein. Und nun versuchen wir, eine Zeile oder Modifikatorzeile zu erstellen, so dass wir mit jeder Zeile, wir haben, die Rechnungsdatumsspalte haben und wir auch etwas haben, den nächsten Zustand genannt gerade jetzt nur die Stimme des Datums der nächsten Rechnung sein wird, unabhängig davon, ob es vom selben Kunden oder so etwas ist. Lassen Sie uns nur eine neue Spalte haben, die uns das Datum der nächsten Rechnung gibt. Also, wie können wir das tun? Nun, die Art und Weise, wie wir das tun können, ist wieder, unsere Fensterfunktionen zu verwenden. Aber was wir hier tun werden, ist, dass wir etwas namens Read benutzen. Nun, was wir mit Lead tun, wie wir in zwei Parametern setzen, wird der erste eine Spalte sein, aus der wir die nächste Information wollen. In diesem Fall möchten wir also das Rechnungsdatum verwenden. Und auf dem anderen Parameter, den wir haben, ist, wie weit voraus wollen wir gehen? So wollen wir zum Beispiel den Wert aus der nächsten Zeile nehmen. Dann werden wir den Lead am Rechnungsdatum verwenden und wir werden einen vorwärts gehen. Zum Beispiel, denn in dieser aktuellen Zeile und was der Lead tun wird, wird es uns erlauben, auf den Wert von einer Zeile weiter im Rechnungsdatum zuzugreifen. Wenn wir zwei machen, wenn wir diese Reihe wären, würden wir nach Zeilen weiter suchen. So können wir das hier definieren. Wie viele Reihen wollen wir vorne gehen? Also lasst uns bei einem bleiben. Nun, um dies zu beenden, müssen wir auch wieder die Partition definieren, die wir speziell mit den Fensterfunktionen gehen wollen . Aber wie wir bereits gesehen haben, müssen wir die Partition nicht definieren, wenn wir nicht wollen. Also, wenn Sie nur die vollständige Tabelle verwenden wollen, was wir für jetzt tun werden. Wir werden nur die Bestellung BY-Klausel verwenden und lassen Sie uns einfach nach Rechnungsdatum bestellen. So wird alles nach Rechnungsdatum bestellt werden. Und für jede Zeile haben wir nur das nächste Rechnungsdatum. Und lassen Sie uns voran gehen und geben Sie diese Spalte Alias, nennen es nächstes Rechnungsdatum. Und wenn wir weitermachen und das ausführen, und gehen wir weiter und schauen uns an. Unser Output. Hier haben wir das nächste Rechnungsdatum, und hier haben wir das aktuelle Rechnungsdatum. Und wir können sehen, dass dieser Wert genau dem entspricht, was wir für diesen Wert hier haben. Sie können also sehen, dass wir immer nur den nächsten Wert aus der Spalte Rechnungsdatum nehmen und ihn in unserer aktuellen Zeile haben. Jetzt können wir natürlich auch mehr damit tun. Wir können etwas von der Arithmetik tun. So haben wir auch vorher gelernt. Zum Beispiel, wenn wir den Zeitunterschied zur nächsten Rechnung erhalten wollen, dann nehmen wir einfach unsere Aussage hier, und lassen Sie uns einfach alles kopieren. Legen Sie es hier herunter, und aktualisieren Sie den Spaltenalias, um Zeit zur nächsten Rechnung zu sagen. Und was wir tun werden, ist, dass wir unser Rechnungsdatum nehmen und uns das ansehen werden. Wir werden diese Lead-Funktion hier verwenden, um den nächsten Wert zu erhalten. Und dann können wir einfach das aktuelle Rechnungsdatum subtrahieren. Also, wenn wir voran gehen und das laufen und wir eine zusätzliche Spalte hier bekommen. Und jetzt können wir sehen, okay, was ist der Zeitunterschied zum nächsten Rechnungsdatum? In diesem Fall haben wir also einen eintägigen Zeitunterschied , den wir auch hier sehen können. Und lassen Sie uns eigentlich nur die Rechnungsdatumsspalte hier auswählen , damit wir alles nebeneinander vergleichen können . Also, das wieder zu laufen. Hier haben wir also das aktuelle Rechnungsdatum erhalten, das nächste Rechnungsdatum, das aus der Verwendung dieser Lead-Funktion in der Rechnungsdatumsspalte stammt. Also nehmen wir den nächsten Wert, da es derjenige aus der Rechnungsdatumsspalte ist, der hier ist. Wir können sehen, dass hier die Zeit Unterschiede eines Tages zwischen diesem Wert und diesem Wert. Auch hier ist der Zeitunterschied ein Tag zwischen diesem und diesem. Hier beträgt der Zeitunterschied drei Tage zwischen diesem und diesem. Und damit wir sehen können, verwenden wir nur den Wert aus der nächsten Zeile. Und natürlich können wir hier auch weiterhin unsere Arithmetik nutzen. Es ist nur wichtig, die Reihenfolge zu beachten, in der wir die Arithmetik verwenden, dass wir es tun, nachdem wir unser Fenster hier definiert haben. Denn wenn wir Fensterfunktionen verwenden, wie das Blei hier, zum Beispiel, müssen wir sicherstellen, dass der Eierstock. Und Schlüsselwort kommt es danach. Also müssen wir all das als Gruppenaussage haben. Und dann können wir dann zum Beispiel das Minus tun, wie wir es hier haben. Nun müssen wir nicht nur aus der nächsten Spalte auswählen. Wir können auch gehen, oder besser gesagt von der nächsten Zeile, wir können auch zu Zeilen nach vorne gehen oder einfach nur ändern, um eine Zwei zu sein. Und wenn wir weitermachen und das laufen, können Sie hier sehen, jetzt überspringen wir im Grunde zwei Rho Hat. Dieser Wert hier ist also für diese Zeile, zwei Zeilen weiter. So können wir sehen, dass dieser hier kommt, dieser 12 Reihen weiter, dieser hier geht. So können Sie sehen, dass es nicht nur auf eine Zeile beschränkt ist. Wir können den Sprung definieren, den wir machen wollen. Was ist, wenn wir rückwärts gehen wollen? Was wäre, wenn anstatt auf die nächste Zeile oder den nächsten Profi danach oder danach oder, wissen Sie, was auch immer sonst. Was, wenn wir stattdessen rückwärts gehen wollen, wollen wir uns die vorherige Zeile ansehen. Was wir hier tun können, ist, anstatt den Lead zu verwenden, die Funktion, die wir hier verwenden möchten, wird die Verzögerung genannt. Und hier können wir dann unseren Namen aktualisieren und sagen vorherige Rechnungsteam. Und wir können das Gleiche hier mit dem LOG anstelle des Leads tun. Und wir werden dasselbe bekommen. Lassen Sie uns nur die vorherige Zeile statt zwei Zeilen vorher tun. Und wir werden dasselbe bekommen, außer in diesem Fall haben wir, wir schauen auf den Zeilenkopf und nicht auf die nächste Reihe. Hier. Wir müssen auch diese Zeit seit der vorherigen Rechnung aktualisieren. Jetzt wird es hier etwas Interessantes geben und wir haben nicht überlegt, wo wir den anderen Fall nicht getroffen haben, den ich aus der Führung kam, aber wir werden sehen, wenn wir das ausführen, wird der erste Wert hier null sein. Und das liegt daran, dass es nichts vor der ersten Reihe gibt. Und das Gleiche passiert mit der Führung, wenn wir die letzte Reihe erreichen. Oder wenn Sie hier haben, vielleicht zwei oder drei. Wenn wir den zweiten Verlust für den drittletzten oder welche Zahl wir hier haben, Zeile und jede Zeile danach erreichen , werden wir einen Nullwert in diesen Spalten haben. Nur weil diese Werte nicht existieren, oder? Es gibt nein, ist es, wenn dies unsere erste Zeile ist, gibt es keine vorherige Zeile in der ersten Zeile, also werden diese Werte null sein. Ähnlich, wenn wir zu unserer letzten Reihe kommen, gibt es keine Reihe nach der letzten Reihe. Und so müssen diese Werte null sein. Das ist also nur etwas, das irgendwie von der IT kommt und etwas, worauf man sich bewusst sein muss. Aber auch hier können wir die Sperrfunktion zusammen mit diesem Fenster verwenden, das wir hier definiert haben, um Zugriff auf Werte in den vorherigen Zeilen zu erhalten. Und natürlich brauchen wir nicht nur das Rechnungsdatum zu verwenden. Wir können jede andere Spalte in 1D verwenden. Wir können einfach definieren, welche Spalte wir auf den vorherigen Wert zugreifen möchten. Wie viele Zeilen wir hin oder her gehen möchten , je nachdem, ob Sie die Verzögerung oder den Lead verwenden. Und dann auch das Fenster, das wir verwenden möchten. Und in diesem Fall, weil wir keine Partition definiert haben, verwenden wir nur den gesamten Datensatz, aber wir können dies auch auf Partitionsbasis tun. So könnten wir zum Beispiel versuchen, nach Kunden-ID zu partitionieren. So können Sie das einrichten. Wir können sagen, Partition BY, und dann werden wir die Kunden-ID verwenden. Und dann können wir das Gleiche hier machen. Und an diesem Punkt, weil wir bereits zwei verwenden und wir mussten das Kopieren einfügen und wahrscheinlich gut, um einen Alias zu definieren. Wir werden schnell sagen Fenster hier und wir werden unser Fenster definieren oder wahrscheinlich nicht nach außen verwenden. Also sagen wir einfach w As und setzen das hier. Und gehen Sie stattdessen über W, wo wir nicht mit diesen Copy-Paste Probleme zu tun haben. Also lasst uns weitermachen und das noch ein Mal ausführen. So können Sie sehen, jetzt haben wir gerade einen Alias erstellt, von dem wir früher gelernt haben. Also gehen wir zurück zur vorherigen Reihe. Aber in diesem Fall haben wir eine Partition nach Kunden-ID erstellt. Lassen Sie uns also auch voran gehen und schauen Sie sich unsere Kunden-ID an. Und wir können diese Informationen auch für Sie sehen. Gehen Sie weiter und führen Sie das aus , okay, hier haben wir alle Rechnungen für die Kundennummer eins. Und es ist auch die Spaltenreihenfolge hier ändern, nur um Dinge einfacher zu vergleichen. Also erste Kostümideen, die erste Spalte, die wir jemals invertieren können , sowie das vorherige Rechnungsdatum und die Zeit seitdem. So haben Sie Kunden-ID eins, ihre Einkäufe und im Grunde jeden Punkt hier, die Zeit bis zum vorherigen Kauf und was der Zeitunterschied dazu war. Und wenn wir unsere Limit-Anweisung entfernen, dann können wir natürlich die Informationen bekommen. Und auch für die anderen Kunden Partitionen, die Kappe. Sie können irgendwann sehen, je nachdem, wie viele Kunden oder wie viele Einkäufe ein Kunde hat. Manchmal hat ein Kunde nur einen Kauf, dann alle von ihnen würden wir sehen, zum Beispiel, wäre nur eine Null. In diesem Fall haben diese Kunden alle mehrere Einkäufe. Aber natürlich, wenn wir Partitionen erstellen, ist es nicht unwahrscheinlich, dass einige unserer Partitionen nur den Wert eins enthalten. Aber das Wichtige, was hier auch zu sehen ist, ist, dass wir, wenn wir die Partitionen verwenden , wegen der Art, wie Fensterfunktionen funktionieren, dies über jedes Fenster berechnen. Und so können wir sehen, dass, obwohl hier wahrscheinlich ein Datum vor diesem passiert ist, weil dies spezifisch für die Kunden-ID acht Gruppe ist. Wir haben hier keine Werte, da dies das Datum des ersten Kaufs der Kundennummer acht war . Also wieder, irgendwie das gleiche Prinzip mit Partition, das wir auch in der Aggregation gesehen haben, als wir zuerst über Fensterfunktionen erfuhren, dass hier unsere Fensterfunktion, oder vielmehr die Funktion, die wir über dieses Fenster anwenden, wird wieder spezifisch für jede Partition sein. Und es wird auch durch die Aussage begrenzt, die wir hier drin haben. 44. 42NTilesHB: In einigen Fällen möchten wir nun unsere Daten in verschiedene Buckets aufteilen und gleichermaßen oder besser gesagt Daten in Buckets gleicher Größe haben. Also, das würden wir vielleicht eine Art Block- oder Bucket-Analyse oder für welche andere Anwendung, für die wir versuchen, sie zu verwenden. Wie würden wir also in der Lage sein, SQL zu verwenden , um vielleicht bereits einige Buckets für uns zu erstellen, die wir verwenden oder vielmehr Zahlen in jede unserer Zeilen setzen und sie im Grunde in Buckets aufteilen können . Also wieder, wir können das mit Fensterfunktionen tun, und lassen Sie uns wieder die Rechnungstabelle hier und ein Schreiben unserer Skelett SQL-Anweisung verwenden, nur alles aus der Rechnungsspalte auswählen. Und gehen Sie einfach vor und beschränken Sie die Ergebnisse auf fünf auf den ersten. Gehen Sie voran und führen Sie dies nur so aus, dass wir bereits ein Ergebnis haben. In Ordnung, also teilen wir unseren Eimer und zwei gleichgroße Gruppen auf. Also wieder, wir werden hier eine Fensterfunktion verwenden. Was wir tun werden, ist die Funktion n-Typ genannt, was uns erlaubt zu definieren wie viele gleich große Buckets wir unsere Daten in R aufteilen möchten , denen wir unsere Daten zuweisen möchten. Also zum Beispiel, wenn wir sagen, und fünf, das bedeutet, dass wir es in fünf gleich große Eimer oder so gleich wie möglich. Werfen wir einen Blick auf diese Ausgabe und lassen Sie uns das tatsächlich machen. Eigentlich wird es das Fenster tun, warum Partition über Kunden-ID, um sicherzustellen, dass wir tatsächlich die Unterschiede sehen können. Da wir also hier eine Fensterfunktion verwenden, müssen wir das Schlüsselwort verwenden. Jetzt werden wir nach der Kunden-ID partitionieren. Und lasst uns auch noch einmal nach Datum bestellen. Und lasst uns ein Rechnungsdatum haben. Und geben wir dem einen Alias oder wir sagen Bucket-Nummer. Und lassen Sie uns auch unsere Limitaussage hier wegnehmen. Und, äh, gehen Sie weiter und führen Sie das aus. Alles klar, also scrollen Sie den ganzen Weg nach rechts, wo unsere letzte Spalte sein wird. Wir haben hier unsere Eimer-Nummer. Und nehmen wir eigentlich nur eine reduzierte Anzahl von Spalten hier, da wir sie sowieso nicht benutzen werden. Also nehmen wir die Kunden-ID, wir nehmen das Rechnungsdatum, weil das ist, was wir partitionieren sowie was wir bestellen und das noch einmal ausführen. Also haben wir hier die Kundennummer eins. Und wir können sehen, dass unsere Einkäufe hier grundsätzlich in so gleiche Eimer wie möglich aufgeteilt wurden. Wir sind nicht in der Lage, in alles zu kommen. Aber wir können hier das erste Jahr sehen, das ich in Eimer 1, zweite 2 oder Nummer 3 und 4 der kongruenten Eimer auf die nächste 1345 gruppiert wurde . So versuchen, so gleich wie möglich zu werden, aber es gibt keine perfekte Gleichgewichtsverteilung. Dann können wir hierher kommen. Und dann geht es zum nächsten Bucket für Kunden-ID 2. Wieder haben wir die Aufspaltung in die verschiedenen Eimer. Und in diesem Fall haben wir tatsächlich die gleiche Anzahl von Einkäufen für Kunden mit id1 und Kunden mit id2. In diesem Fall, nur weil wir einen Übungsdatensatz verwenden, sieht es so aus, als hätten alle Kunden tatsächlich eine sehr gleiche Anzahl von Käufen. Also alle Bucket-Distributionen, die wir hier bekommen, werden Sie in den verschiedenen Kunden-IDs gleich sein. Auch hier, nur weil jeder Kunde tatsächlich eine sehr ähnliche Anzahl von Käufen hat, wenn nicht identische Anzahl von Käufen. Aber wir können hier wieder einfach mit unseren Eimergrößen herumspielen. Zum Beispiel, wenn wir sieben verwenden, das ist die Anzahl der Einkäufe, die jeder Kunde hier tatsächlich hat. Wir können sehen, dass unsere Eimer hier werden wir jetzt gleich eins sein und jeder für stattdessen drei verwenden. Wir werden drei von den ersten 12 in den anderen erwarten. So können wir die n Kachel hier verwenden, um zu definieren, wie viele Buckets von, idealerweise ungefähr gleich groß sind, in die wir unsere Daten aufteilen möchten. Und es wird die einfach reinlegen. Und wieder mit der ersten Art des Erhaltens der meisten Werte kann Säugling nicht füllen. Der untere ist, dass sie einen weniger haben werden. Aber versuchen, unsere Daten in zwei gleiche Buckets aufzuteilen , basierend auf der Partition, die wir hier definiert haben, und auch basierend auf der Reihenfolge, die wir auch in unserem Fenster hier definiert haben. 45. 43UnderstandingQueryPerformanceHB: Wenn Sie jetzt wirklich in SQL einsteigen, es vielleicht einige Punkte. Sie möchten auch mehr darüber verstehen, wie Ihre Abfragen geplant oder strukturiert sind oder wie der Ansatz für die Ausführung verwendet wird , und vielleicht einige andere Optimierung von Schritten, die Sie tun können. Um dies zu tun, lassen Sie uns eine kleine Beispielabfrage auf der Spurtabelle ausführen. Und lassen Sie uns einfach eine Aggregation ausführen, um die Anzahl der Tracks in jedem Album zu zählen. Also werden wir die Auswahl ausführen und wir werden die Album-ID auswählen. Und dann wollen wir auch einen als Holzlastwagen zählen. Und lasst uns einfach dieses Kapital haben, nur um es einfacher aus dem Track-Tisch zu lesen. Und dann müssen wir immer noch nach der Album-ID gruppieren. Also wieder, wir wählen aus der Truck-Tabelle und wir gruppieren nach der Album-ID und wir zählen nur die Anzahl der Trucks, die jedes Album hat. Also, wenn wir weitermachen und das laufen, sind das die Ergebnisse, die wir bekommen werden. Dies ist die Album-ID und dies ist die Anzahl der Tracks, die es hat. Aber jetzt, wenn wir seine Leistung verstehen wollen, wird es ein bisschen schwierig sein. So hat SQL tatsächlich eine Anweisung namens Explain für uns zur Verfügung. Und wenn wir das ausführen, können wir es uns ansehen. Es, anstatt uns die Ausgabe so zu geben, wie es ist, anstatt uns den Plan der Abfrage zu geben. Jetzt werde ich nicht ins Detail gehen, aber der Abfrageplan, weil der Abfrageplan selbst ist, kann ziemlich komplex werden. Und wenn Sie wirklich an diesen Optimierungen arbeiten möchten, müssen Sie wahrscheinlich einige zusätzliche Untersuchungen durchführen, um zu verstehen, wie verschiedene Aggregation funktionieren, aber auch darüber, wie Ihre Datenbank, die Sie verwenden, eingerichtet, da verschiedene Datenbanken tatsächlich ausgeführt werden. Aggregationen sind auch nur Abfragen im Allgemeinen anders. Denn wenn wir Abfragen schreiben, sagen wir der Datenbank nur, was wir tun wollen. Und die Datenbank selbst führt und findet den optimalsten Weg, um diese Werte zu erhalten. Und so kann sich dies von Datenbank zu Datenbank unterscheiden basierend darauf, wie die Datenbank funktioniert und wie sie einatmet und Rechte und wie sie plant und wie es ist, wie die Werte indiziert werden und all das Zeug. Also wieder, dies wird irgendwie tiefer in, wie die Datenbank selbst als Setup. Deswegen werden wir nicht in sie eintauchen. Aber dennoch ist es wichtig zu wissen, dass diese Option für Sie verfügbar ist. Und so können Sie die Explain-Anweisung verwenden, um ein Verständnis über den Plan zu erhalten, dass der Abfrageplan, wie die Datenbank plant die Abfrage auszuführen, um Ihnen die Ergebnisse zu erhalten, die Sie suchen. Und dann können Sie auch verstehen, wie viele Zeilen verarbeitet werden oder wie viele Spalten verwendet werden und in jeder Komponente. Oder Sie können auch etwas wie Erklären, Analysieren tun, die Ihnen auch die Berechnungszeit, die Ausführungszeit sagen , anstatt wie lange die Ausführung tatsächlich gedauert hat. Damit Sie tiefer in das Verständnis jeder dieser Komponenten eintauchen können , so dass Sie vielleicht finden können, wo die Abfrage am längsten dauert und daran arbeiten, dies zu optimieren. Oder vielleicht verstehen Sie, dass der, oder vielleicht finden Sie, dass der Ansatz, den Sie verwenden, in einer Datenbank optimal ist, aber es ist eigentlich suboptimal verpassen, weil es eingerichtet wurde. Und so sind Sie in der Lage, wirklich tief in Ihre Abfragen zu gelangen und einige große Optimierungen durchzuführen , indem Sie die Struktur und den Ansatz verstehen , den Ihre Datenbank definiert hat, wie Sie Howard die Ausführung dieses -Abfrage, um die Ergebnisse zu erhalten, die Sie angefordert haben.