Jobtaugliches SQL an einem Nachmittag | Max S | Skillshare

Playback-Geschwindigkeit


1.0x


  • 0.5x
  • 0.75x
  • 1x (normal)
  • 1.25x
  • 1.5x
  • 1.75x
  • 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
Wähle aus einer 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
Wähle aus einer Vielzahl von Themen, wie Illustration, Design, Fotografie, Animation und mehr

Einheiten dieses Kurses

    • 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
  • Jedes Niveau

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.

389

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
Level: Beginner

Kursbewertung

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

1. Einführung: Hallo, da ist es Max und willkommen zu deiner SQL-Mission. In dieser Mission lernen Sie, wie Sie SQL verwenden, um Daten direkt in der Datenbank mithilfe von SQL-Abfragen zu verarbeiten und zu analysieren . Am Ende dieser Mission werden Sie in der Lage sein, SQL-Abfragen zu schreiben , die so aussehen, und Sie werden auch lernen, was relationale Datenbanken sind Während des gesamten Kurses werden Sie zunächst mit Ihrem Setup beginnen Anschließend werden Sie sich mit einigen Grundlagen zu Tabellen, Datenbanken und Abfragen befassen. Sie werden etwas über Arithmetik lernen. Sie werden etwas über Datum und Uhrzeit lernen , Daten manipulieren, und dann werden Sie sich auch mit komplexeren Dingen wie Verknüpfungen, Vereinigungen und Fensterfunktionen befassen komplexeren Dingen wie Verknüpfungen, Vereinigungen und Deshalb freue ich mich darauf, dass du anfängst. 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. 3. Datenarten und Schemas: Ordnung. Jetzt wissen wir etwas mehr über relationale Datenbanken und wie sie aufgebaut sind und wie sie funktionieren und wie sie im Allgemeinen aussehen In dieser Lektion möchte ich auf Datentypen und Schemas eingehen . Lassen Sie uns nun zunächst über Datentypen sprechen. Ich werde nur eine der Tabellen haben , die wir hier in unserer vorherigen Lektion hatten , damit wir auf diese visuelle Sache zurückgreifen können. Wenn wir uns diese Tabelle ansehen und uns nur einige der Werte ansehen, können wir feststellen, dass hier verschiedene Arten von Daten dargestellt werden . Zum Beispiel sieht die ID-Spalte so aus, als ob sie mindestens ganze Zahlen oder ganze Zahlen Die Namensspalte sieht aus, als ob sie Text enthält, die Verknüpfung sieht aus, als ob sie Datums- oder andere Uhrzeitinformationen enthält, und dann besteht die E-Mail wieder aus Text Wenn wir eine Tabelle definieren, anstatt einfach beliebigen Wert kann es für uns sehr sinnvoll sein , den Datentyp zu definieren, den wir in jeder Spalte erwarten, anstatt einfach jeder Spalte einen zuzuweisen. Das ist nützlich, weil Sie aus einer externen Perspektive schnell erkennen können, welcher Datentyp in jeder Spalte enthalten sein sollte und was Sie dort erwarten. Das ist auch gut, weil unterschiedliche Datentypen unterschiedliche Speichermengen benötigen. Sie können den Speicher optimieren, indem den entsprechenden Datentyp auswählen , sodass Sie nicht unnötigen Speicherplatz blockieren , der nicht verwendet werden muss. Dies kann auch bei Dingen wie der Leistung sehr hilfreich sein, denn wenn Sie die richtigen Datentypen verwenden , werden die Abfragen in den meisten Fällen schneller ausgeführt, werden die Abfragen in den meisten Fällen schneller ausgeführt als wenn Sie nur einen allgemeinen Typ für alles verwenden würden, da die Operationen für das, was Sie genau tun möchten, viel besser definiert sind. Und es ist auch nett, denn wenn Sie neue Daten eingeben möchten oder wenn Sie die Tabelle ansehen und Daten daraus extrahieren möchten, wissen Sie, was Sie erwartet. Wenn es eine Diskrepanz gibt, können Sie das schnell vergleichen oder Sie erhalten eine Meldung von der Datenbank, die besagt, dass erhalten eine Meldung von der Datenbank, die besagt, Sie versucht haben, hier Text einzugeben, aber dieses Feld erfordert eine Ganzzahl oder dieses Feld erwartet ein Datum, eine Uhrzeit oder etwas Ähnliches. Auf diese Weise werden Ihre Datenbanken wahrscheinlich konsistenter bleiben und weniger fehleranfällig sein, da diese Validierungsprüfung durchgeführt werden muss , um sicherzustellen, dass alles, was eingeht, vom richtigen Typ ist. Da können Sie natürlich verschiedene Vorteile sehen, sowohl aus Sicht der Benutzer als auch aus Sicht der Datenbank selbst und unter dem Gesichtspunkt der Effizienz, sowohl in Bezug auf den Speicher als auch in Bezug auf Leistung und Geschwindigkeit unserer Abfragen Schauen wir uns einige der Datentypen an , die uns zur Verfügung stehen, beginnend mit den numerischen Datentypen Eine der häufigsten, die Sie sehen werden, ist eine Ganzzahl. Es gibt auch verschiedene Varianten einer Ganzzahl. Sie können eine kleine oder eine kleine Ganzzahl und ein großes Ende eine große Ganzzahl haben. Der Unterschied besteht hier in der Menge an Speicherplatz, die jedem Wert zugewiesen wird Sie können sehen, dass wir im Integer-Fall vier Byte am kleinen Ende haben, wir haben zwei Byte am großen Ende, wir haben acht Wir können hier schon sehen, dass wir hier Entscheidungen treffen können , die sich auf die Leistung auswirken. Wenn wir zum Beispiel eine Datenbank haben, die Testergebnisse bewertet, wäre es sinnvoll, eine kleine Ganzzahl zu verwenden, da Testergebnisse wahrscheinlich nicht über 100 liegen können. Wenn Sie dagegen große Mengen großer Zahlen speichern möchten , kann es sinnvoll sein, große Ganzzahlen zu verwenden Andernfalls werden Ihre Zahlen irgendwann abgeschnitten und Sie können nicht mehr größer werden irgendwann abgeschnitten und Sie können nicht mehr größer Je nachdem, was Sie von den Daten erwarten, können Sie tatsächlich die entsprechenden Entscheidungen treffen, um sicherzustellen, dass Sie nicht unnötig zusätzlichen Speicher verbrauchen Dann gibt es natürlich auch andere Typen. Es gibt noch einen anderen, der numerisch heißt oder eine andere Variante davon wäre dezimal. Das bedeutet nur, dass wir so viel Präzision haben, wie wir wollen. Diesem Datentyp ist keine festgelegte Anzahl von Bytes zugewiesen und er variiert. Dies macht ihn aus Benutzersicht natürlich viel flexibler , aber auch aus Datenbanksicht etwas weniger effizient , da er nicht jedem Datentyp oder jedem Wert, der in jeden Datensatz aufgenommen wird , spezifische Datenmengen zuordnen kann zuordnen Datentyp oder jedem Wert, der in jeden Datensatz aufgenommen wird , spezifische Datenmengen Wert, der in jeden Datensatz aufgenommen wird , Jetzt haben wir auch etwas, das als reelle und doppelte Genauigkeit bezeichnet wird Beide werden zum Speichern von Dezimalzahlen verwendet. Der Realwert kann jedoch bis zu fünf Dezimalstellen haben, wohingegen der Wert mit doppelter Genauigkeit bis zu 15 Dezimalstellen betragen kann . Auch hier gilt: Je nachdem, wie viel Genauigkeit Sie benötigen, können Sie entweder die reelle Zahl verwenden, wenn es nach fünf Dezimalstellen wirklich keine Rolle mehr spielt, oder wenn Ihnen diese zusätzlichen Dezimalstellen wirklich wichtig sind, dann können Sie beispielsweise die doppelte Genauigkeit verwenden, um sicherzustellen, dass Sie all diese Informationen beibehalten. Dann wird ein weiterer numerischer Datentyp , den wir festlegen können, Getreide genannt. Auch hier haben wir die Möglichkeit, entweder kleine Getreidearten oder auch große Getreidearten oder einfach nur normale Getreidearten zu verwenden . Was Müsli ist, ist eine automatische Inkrementierung. Das ist wirklich nett, wenn wir eine zusätzliche Spalte für einen Primärschlüssel haben wollen , aber diese Spalte ist nicht speziell festgelegt Es wäre nur ein Zahlenzähler, der inkrementiert. Die Seriennummer wird tatsächlich automatisch inkrementiert. Wenn wir zum Beispiel einen Primärschlüssel haben wollen, der nur die Zeilennummer oder eine eindeutige Kennung speichert, dann können wir ihm den Typ serial geben, weil er automatisch inkrementiert wird und wir ihm eigentlich keinen zusätzlichen Wert übergeben müssen Es wird nur sicherstellen, dass es sich gegenüber dem vorherigen Wert, den es zuvor hatte , immer weiter erhöht vorherigen Wert, den es zuvor hatte , Es kann natürlich auch zwischen dem kleinen Müsli und dem großen Getreide oder auch nur dem normalen Getreide Auch hier kommt es nur darauf an, wie viele Daten wir voraussichtlich in unserer Datenbank haben werden. Die nächste Datentypkategorie sind nun Textdaten. Es gibt einen Datentyp namens Text, der dem numerischen oder dezimalen Datentyp ähnelt , den wir zuvor hatten , der nur variable Datenmengen zulässt. Es ist kein fester Betrag, aber er kann je nach Eingabe wieder variieren. Aber wir haben auch Optionen , zum Beispiel Char oder Character, und dann definieren wir tatsächlich , wie viele Byte wir dem Objekt zuweisen wollen Das bedeutet, wenn wir zum Beispiel Char 25 sagen , bedeutet das, dass wir jedem einzelnen Datensatz für diese Spalte 25 Byte zuweisen jedem einzelnen Datensatz für diese Wenn wir nicht auf 25 Byte steigen, werden wir ein gewisses Padding haben und andernfalls werden wir bei 25 abgeschnitten Auch hier können wir Datengrößenbeschränkungen festlegen , die auf unseren Erwartungen basieren. Dann haben wir auch die Möglichkeit, ein Var-Zeichen oder ein variierendes Zeichen zu verwenden , was einfach bedeutet, dass wir zu so vielen Typen wechseln können. Auch hier können wir für all diese Textdaten speichern, aber die Speichermenge, die wir für jeden Datensatz verwenden , den wir eingeben oder für jeden Wert im Datensatz in einer bestimmten Spalte, die wir eingeben wird variieren je nachdem, welchen Datentyp wir hier wählen. Jetzt gibt es einige zusätzliche Datentypen Datum und Uhrzeit spezifisch sind. Wir haben Zeitstempeloptionen, die nur Zeitstempel sein werden, aber wir haben auch einen Zeitstempel TZ, und wir haben diese auch an anderen Orten, wo wir zusätzliche Zeitzoneninformationen speichern können Wir entscheiden uns dafür, den Zeitstempel mit Zeitzone zu verwenden? Das wird auch die Menge an Speicherplatz, die wir für jedes Element darin benötigen, erneut erhöhen Speicherplatz, die wir für jedes Element darin benötigen Dann können wir einen Datentyp für Datum verwenden , der kleiner als der Zeitstempel ist , weil wir uns jetzt nur noch um das Datum kümmern müssen und keine zusätzlichen Informationen über die Stunden, Minuten oder Sekunden oder sogar Millisekunden , falls wir das verfolgen Das Datum hängt wiederum davon ab, wie viel Genauigkeit wir in unseren Zeitinformationen haben wollen wir es mit Daten zu tun und ist die Datumsgenauigkeit ausreichend, Haben wir es mit Daten zu tun und ist die Datumsgenauigkeit ausreichend, oder benötigen wir beispielsweise bestimmte Zeitstempel angeht, können wir auch mit der Uhrzeit umgehen, was wiederum eine Möglichkeit ist, das Datum zu speichern, aber zusätzlich zum Datum können wir dann auch die Uhrzeit speichern Auch hier haben wir die Möglichkeit, auch die Zeitzone zu verwenden. Aber wenn wir die Zeitzone verwenden, benötigen wir wieder mehr Datenspeicher, weil wir auch hier diese zusätzlichen Zeitzoneninformationen speichern müssen. Wenn Sie jetzt keine Zeitzone verwenden, wird normalerweise die UTC-Zeit als Standardzeitzone verwendet. Speicherplatz zu sparen, können Sie in den meisten Fällen die Uhrzeit oder den Zeitstempel ohne Zeitzone verwenden und nur sicherstellen , dass alle Daten, die Sie eingeben, in UTC-Zeit vorliegen Schließlich gibt es noch einen anderen coolen Datentyp namens Intervall, der , wie der Name schon sagt, Intervalle zwischen verschiedenen Zeiten darstellt Das kann sehr nützlich sein, weil es uns ermöglicht, zeitbasierte Berechnungen durchzuführen. Zum Beispiel, wenn wir auf eine Woche zurückblicken oder eine Woche vorwärts oder auf morgen oder innerhalb der letzten Stunde. Das Intervall ist ein weiterer Datentyp , dessen Verwendung sehr cool ist. Wie Sie sehen werden, wenn wir beim Schreiben der SQL-Abfragen zum Abschnitt „Tageszeiten“ kommen . Das kann auch bei Abfragen selbst sehr nett sein. Nun, es gibt einige zusätzliche Datentypen, die wir haben. Einer von ihnen ist ein boolescher Wert. Dies ist ein sehr kleiner Datentyp, und alles, was wir hier speichern, sind Informationen über wahr oder falsch Dies kann nur zwei Werte annehmen, zwei oder falsch. Wir haben das Geld, das als Währung verwendet werden kann, wir haben Byte A, das zum Speichern von Byte-Strings verwendet werden kann . Wir haben aufgezählt, was nur ein benutzerdefinierter Datentyp ist , den wir erstellen können Wo wir eine Reihe von Elementen oder eine Reihe von Objekten zuweisen Elementen oder eine Reihe von und ihnen eine Reihenfolge zuweisen können Zum Beispiel können wir enumerate verwenden um die verschiedenen Monate des Jahres aufzuzählen Auf diese Weise können wir die Reihenfolge der Monate vergleichen Zum Beispiel können wir anhand eines Enumerator-Datentyps sagen , dass April auf März folgt. Wenn wir das jedoch nur als Textinformation speichern würden, könnten wir das nicht tun Die Aufzählung ist ein benutzerdefinierter oder benutzerdefinierter Datentyp, den wir erstellen können, wobei wir Objekten eine bestimmte Reihenfolge geben können Jetzt. Eine Erweiterung davon wären dann nur allgemeine benutzerdefinierte Datentypen, bei denen wir tatsächlich unsere eigenen Datentypen definieren und diese dann in unserer Tabelle selbst verwenden können unsere eigenen Datentypen definieren . Mit der Weiterentwicklung von Postgres oder allgemein mit der Entwicklung relationaler Datenbanken werden auch andere benutzerdefinierte Datentypen eingeführt, die für das System selbst zunächst möglicherweise nicht selbstverständlich sind zunächst möglicherweise nicht selbstverständlich Einige Beispiele sind zum Beispiel JS, XML, Arrays, Textsuchen, UUIDs, geometrische Datentypen oder Netzwerkdatentypen All dies sind im Grunde genommen Erweiterungsdatentypen, die verwendet werden, weil es sehr nützlich sein kann , diese Art von Daten speichern zu können, da es immer üblicher wird dass diese Datentypen Es kann sehr nett sein , das in einer Tabelle in einer relationalen Datenbank ablegen zu können Aber auch hier handelt es sich um benutzerdefinierte Datentypen, bei denen es sich um Erweiterungen handelt Mit zunehmender Zeit wird es wahrscheinlich auch mehr benutzerdefinierte Datentypen geben , die verwendet werden können. Kommt auch darauf an, was die Situation erfordert. Wie Sie sehen, gibt es eine Vielzahl von Datentypen, die uns tatsächlich zur Verfügung stehen. Im Allgemeinen konzentrieren sich die Datentypen , die Sie sehen werden, jedoch , die Sie sehen werden, mehr auf die grundlegenden Datentypen. Es kann wirklich nett sein, sich bewusst zu sein, welche Datentypen verfügbar sind und wofür sie Datentypen verfügbar sind und wofür sie stehen, denn wenn Sie eine Tabelle durchgehen und versuchen , sie zu verstehen, werden Sie dies einfach erkennen und auch, wenn Sie vielleicht eine Entscheidung treffen müssen, eine neue Tabelle zu erstellen, verstehen, welche Optionen Ihnen zur Verfügung stehen , und vielleicht sogar in der Lage sein, sich ein Ein bisschen darüber, wie ich die Effizienz optimieren kann , indem ich sicherstelle , dass ich den richtigen Datentyp verwende und ihm auch die richtige Menge an Datenspeicher zuweise. Nun, die andere Sache , über die ich sprechen möchte, sind Schemas Wenn Sie sich nun auf Schemas beziehen, bedeutet das im Allgemeinen, dass wir ein Schema haben, das eine Sammlung von Tabellen sowie Informationen zu jeder der Tabellen darstellt eine Sammlung von Tabellen sowie Informationen zu jeder der Es ist aber auch üblich, das Wort Schema zu verwenden, um die Eigenschaften und Strukturen einer Tabelle selbst zu definieren Schauen wir uns zum Beispiel diese eigentliche SQL-Abfrage unten links an, aber nicht zu viele Gedanken über die Abfrage. Schauen wir uns einfach die Elemente im Inneren an. Was wir hier sehen können, ist, dass wir eine ID haben , bei der es sich um eine Ganzzahl handelt, die auch für t abgekürzt werden kann. Wir können sehen, dass es sich um den Primärschlüssel handelt, und wir können sehen, dass er auch und wir können sehen, dass er auch keine Nullwerte annehmen darf Wir definieren hier lediglich unsere Benutzerinformationstabelle auf der rechten Seite Wir können hier sehen, dass unsere ID-Tabelle derzeit so definiert ist, dass sie Integer-Datentypen enthält. Sie ist auch als Primärschlüssel definiert und darf auch keine Nullwerte enthalten. Die nächste Spalte, die wir haben, wird der Name sein. Hier haben wir uns für den Varchar-Datentyp entschieden, was in diesem Fall bedeutet, wir ihm 25 Byte zugewiesen haben, was bedeutet, dass wir davon ausgehen, dass unsere Namen nicht länger als 25 sein werden , weil das die Menge an Speicherplatz ist, die wir jedem Element zugewiesen haben jedem Element zugewiesen , das wir mit jedem Datensatz Joined here wird ein Datentyp mit Datum sein, denn wenn wir uns die Spalte ansehen, speichern wir eigentlich nur Datumsinformationen, wir speichern keine zusätzlichen Zeitinformationen. Um die Speicherung etwas effizienter zu gestalten, müssen wir keine zusätzlichen Informationen über die Uhrzeit speichern keine zusätzlichen Informationen über , sondern nur über das Datum. Wenn wir zusätzliche Informationen über die Uhrzeit speichern möchten , dürfen wir natürlich nicht den Datentyp Datum verwenden , da dieser nicht genügend Informationen enthalten würde. Schließlich haben wir das E-Mail-Feld. Hier haben wir uns für den Datentyp Text entschieden , da E-Mails sehr unterschiedliche Links haben können. Es ist auch wichtig sicherzustellen, dass Benutzer E-Mails haben. Wenn sich ein Benutzer mit einer E-Mail anmeldet und er eine sehr lange oder eine sehr kurze E-Mail hat, ist es schwer vorherzusagen, wie lang Benutzer ihre E-Mails haben können. Jetzt könnten wir einige Annahmen darüber treffen. Aber wir möchten natürlich nicht, dass ein Benutzer seine E-Mail-Adresse eingibt. Dann sagt unsere Datenbank, dass wir nicht genug Speicherplatz dafür haben genug Speicherplatz dafür , um die gesamte E-Mail zu speichern. Deshalb haben wir uns hier für den Textdatentyp entschieden, aber Sie können diese Entscheidung auch fundierter treffen. Wenn Sie bereits Daten über eine Reihe von Benutzern und eine Reihe von E-Mails haben , können Sie sehen, wie groß diese E-Mails werden, und dann vielleicht etwas zusätzlichen Platz für das Abfüllen lassen und dann so etwas wie einen Varchar-Datentyp verwenden Was Sie hier unten links sehen können, ist im Grunde die Schemadefinition unserer Tabelle Kann sehen, was jede Spalte ist und welchen Datentyp sie enthält. Wir können hier anhand dieser Abfrage nur Informationen über unsere Tabelle selbst sehen . Wir wissen, dass sie vier Spalten hat, die ID, den Namen, den Link in der E-Mail, und wir kennen auch den Datentyp jeder Spalte, bedeutet, dass wir auch wissen was bedeutet, dass wir auch wissen, welche Werte von jeder Spalte zu erwarten Werte in jede Spalte eingefügt werden sollten, wenn wir Werte einfügen wollen welche Werte in jede Spalte eingefügt werden sollten, wenn wir Werte einfügen wollen . Schauen Sie sich eine andere Tabelle an, insbesondere unsere Ereignisprotokolltabelle. Hier wird ein Schema etwas anders sein und wir haben den Event-Schlüssel , der hier ein serieller Datentyp sein wird, weil der Event-Schlüssel einfach mit jedem Ereignis inkrementiert wird mit jedem Ereignis inkrementiert Wenn wir eine Menge Daten erwarten , weil wir eine sehr große Plattform haben, wollen wir hier vielleicht sogar die große Datenmenge verwenden Der Entlüftungsschlüssel wird ein Primärschlüssel sein. Auch hier ist es nicht erlaubt, Null zu sein. Dann haben wir die Event-ID-Spalte, die eine Ganzzahl sein wird. Sie können hier sehen, Vergleich zur Benutzer-ID-Spalte unten wir im Vergleich zur Benutzer-ID-Spalte unten sowohl in als auch als Ganzzahl verwenden können. Es ist nur eine Abkürzung für Integer. Auch hier sagen wir, dass die Event-ID nicht Null sein darf Dann haben wir die Zeit, die in diesem Fall eigentlich ein Zeitstempel ist. Wir können hier sehen, dass wir Zeitinformationen haben, aber das ist ein Format, das einem Zeitstempel ähnelt Deshalb wollen wir sicherstellen, dass wir den Typ verwenden , und dann haben wir die Benutzer-ID, die wiederum eine Ganzzahl sein wird . Auch hier werden wir sagen, dass es nicht erlaubt ist, Null zu sein. Hier definieren wir auch unsere beiden Fremdschlüssel, da unser Ereignisprotokoll zwei Fremdschlüssel enthält. Wir können die Benutzer-ID in unserem Ereignisprotokoll sehen, verweist auf die ID-Spalte in der Benutzerinformationstabelle. Wir können es noch einmal sehen, nur über den Link hier. In unserer Tabelle mit den Ereignisinformationen haben wir die Ereignis-ID in der Ereignisprotokolltabelle, die auf die ID-Spalte in den Ereignisinformationen verweist. Wir können also anhand der Abfrage unten links, aber auch anhand der Schemadefinition unserer Tabelle sehen , dass unsere Ereignisprotokolltabelle wiederum vier Spalten hat, den Ereignisschlüssel, die Ereignis-ID, die Uhrzeit und die Benutzer-ID. Wir kennen auch den jeweiligen Datentyp. Wir wissen, was der Primärschlüssel ist, und wir verstehen auch die Fremdschlüssel-Links für unsere Benutzer-ID-Spalte sowie die Ereignis-ID und die Spalten, auf die in den anderen Tabellen verwiesen wird. Also ja, so können wir die Schemas der einzelnen Tabellen definieren Aber wenn Sie die Informationen über eine neue Tabelle lesen , dass Sie vielleicht nur jemand hinter Ihrer neuen Tabelle sind , den Sie verwenden können, können Sie die Schemadefinition der Tabelle ansehen , um zu verstehen, welche Spalten verfügbar sind, aber auch, welche Datentypen und wie sie gespeichert sind und welche Verweise es gibt Auch hier gilt: Machen Sie sich nicht zu viele Gedanken über die Abfrage, denn genau das werden wir sehr bald lernen. Seien Sie sich nur bewusst, dass wir auf diese Weise die Schemas unserer Tabellen definieren können, und das ist auch, was die Schemadefinitionen für unsere Tabellen bedeuten, sodass wir unsere Tabelle als Ganzes sowie richtig zugewiesene Datentypen richtig definieren können , sodass wir unsere Tabelle als Ganzes sowie richtig zugewiesene Datentypen richtig definieren , was für die Datenbank selbst von Vorteil sein kann , um sicherzustellen, dass sie effiziente Speicherspeicherung verfügt die Schemas unserer Tabellen definieren können, und das ist auch, was die Schemadefinitionen für unsere Tabellen bedeuten, sodass wir unsere Tabelle als Ganzes sowie richtig zugewiesene Datentypen richtig definieren können, was für die Datenbank selbst von Vorteil sein kann, um sicherzustellen, dass sie auch über eine effiziente Speicherspeicherung verfügt um die Abfragen effizienter Aber auch aus Benutzersicht ist es großartig , weil wir wissen, welche Daten eingegeben werden sollen, welche Daten wir erwarten können welche Verknüpfungen zwischen verschiedenen Tabellen bestehen können und wie diese Tabellen verknüpft sind. 4. [Mac] Einrichtung eines lokalen a: Jetzt werden wir uns ansehen , wie wir PostGress auf unserem Computer zum Laufen bringen können , sodass wir es tatsächlich verwenden können Nun, wenn Sie in einem Unternehmen oder so arbeiten, ist es sehr wahrscheinlich, dass Ihre Datenbank irgendwo online sein wird , sodass Sie Verbindungsdetails haben Aber hier werden wir lernen, wie wir einen lokalen Server einrichten können , zu dem wir eine Verbindung für Datenbanken herstellen können, sodass wir einfach alles verfolgen und alles auf unserem lokalen Computer behalten können. Wenn Sie dann mit einer anderen Datenbank arbeiten, müssen Sie nur die Verbindungen ändern , die wir uns in den folgenden Videos ansehen werden . Da ist nicht viel anderes dran, je nachdem, welche Datenbank Sie verwenden werden, müssen Sie dann eine Verbindung zu einer anderen Quelle herstellen. Aber jetzt schauen wir uns an, wie wir das tatsächlich auf unserem lokalen Computer zum Laufen bringen können . Wir werden zu postreql.org gehen. Sobald wir hier sind, werden wir hier auf den Download-Button klicken, um zum Download-Bereich zu gelangen Abhängig von Ihrem Betriebssystem sollten Sie nun sicherstellen, dass Sie das richtige Paket dafür auswählen. Ich bin auf einem Mac, also werde ich auf macOS klicken. Und dann scrolle ich hier nach unten zur PostGress-App Dies ist eine sehr schöne benutzerfreundliche visuelle interaktive App, die wir verwenden können Ich werde hier klicken, um zu dieser Seite zu gelangen. Dann gehe ich zu Downloads und klicke hier einfach auf die Download-Schaltfläche Dann wird Ihr Download gestartet, dem Sie dann die Datei abrufen können , die wir für die Installation benötigen. Sobald der Download abgeschlossen ist, öffne ich einfach die resultierende Datei. Und dann nehme ich einfach dieses Post-Gras-Symbol und nun, Mac-Standards ziehen es in die Anwendung. Dann kann ich auch, sobald das Kopieren fertig ist, meinen Anwendungsordner öffnen und wir können hier sehen, dass es gerade installiert wird. Um es dann zu öffnen, muss ich nur noch hier doppelklicken. Dann öffnet es den Postgress für uns, den wir verwenden können, um unseren lokalen Server zu hosten Klicken Sie auch hier auf Öffnen. Wenn Sie es zum ersten Mal öffnen , dann los geht's. So wird Ihr Visual Client aussehen. Sie werden hier oben auch ein kleines Symbol haben , das dazu gehört. Wenn wir dann einen lokalen Server starten wollen, wir hier einfach an, und dann können Sie sehen, dass wir jetzt einen laufenden Server haben. Standardmäßig haben Sie nur drei Datenbanken auf Ihrem Computer, eine mit Ihrem Namen für den Computer, den Sie eingerichtet haben, eine namens Postscri und eine weitere namens Template One Dies sind drei verschiedene Datenbanken, die jetzt für uns auf unserem Computer eingerichtet sind und auf die wir zugreifen können Das Wichtigste ist, dass wir sicherstellen müssen, dass, wenn wir eine dieser Datenbanken verwenden , unser Server hier tatsächlich läuft. Denn wenn wir auf Stopp klicken, können wir keine Verbindung mehr herstellen. Wenn Sie Verbindungsprobleme haben, überprüfen Sie einfach, ob Ihr Server tatsächlich läuft und ob der Datenbankname, Sie ebenfalls verwenden, korrekt ist. Dann zeigt Ihnen das nächste Video wie wir eine Verbindung zu diesen Datenbanken herstellen können. Jetzt können Sie dies auch über das Symbol hier oben verwalten. Sie können sehen, dass wir hier oben auch einfach anhalten oder Server anlegen können. Wenn wir wollen, können wir es auch vollständig aus der Menüleiste zitieren oder es einfach aus unserer Anwendung zitieren Aber ja, ich empfehle Ihnen, dies während des Kurses einfach eingeschaltet zu lassen, nur um sicherzustellen, dass Sie immer Zugriff auf die Datenbank haben 5. [Windows] Lokale Postgres Server: Schauen wir uns nun an, wie wir unseren Post Gress-Server unter Windows installieren können unseren Post Gress-Server unter Auch hier gehen wir ins Postgres oder hierher. Dann gehen wir zum Download-Tab , auf den wir derzeit entweder hier oben oder einfach durch Klicken auf die Schaltfläche hier zugreifen können hier oben oder einfach durch Klicken auf die Schaltfläche Dann klicken wir hier auf Windows. Dann laden wir hier oben das Installationsprogramm herunter, das für Version 12 sein wird, was wir hier wollen. Wir werden derzeit den Windows-Installer für Version 12 herunterladen . Dann speichern Sie das einfach und lassen Sie es herunterladen. Sobald es heruntergeladen ist, werden Sie es öffnen wollen. Ich führe es hier als Administrator aus, und dann sagst du hier: Sobald unser Installationsprogramm geöffnet ist, können wir einfach weitermachen und das Setup hier durchgehen , also klicken wir auf Weiter. Wählen Sie aus, wo es installiert werden soll. Wir lassen hier einfach alles angekreuzt und klicken auf Weiter Lassen Sie auch hier einfach alles in der Standardposition. Jetzt müssen wir eine Datenbank und ein Passwort für unsere Datenbank angeben , und es ist wichtig, dass Sie sich daran erinnern. Wir können hier sehen, dass unser Benutzer Beiträge schreiben wird. Ich werde einfach das Passwort Postgres für beide verwenden für beide Aber natürlich können Sie es auf alles andere einstellen , was Sie wollen. Aber ich werde mein Passwort hier der Einfachheit halber mit dem Benutzernamen identisch haben , da dies sowieso eine lokale Sache ist. Dann fahren Sie fort und klicken Sie auf Weiter. Belassen Sie den Standardport hier auf 5432 und fahren Sie fort und klicken Sie auf Weiter Auch hier lasse ich dies einfach als Standard stehen und klicke auf Weiter und dann hier auf Weiter und starte dann einfach den Installationsvorgang Die Einrichtung ist abgeschlossen, dann gelangen Sie einfach zum Abschlussbildschirm. Sie werden gefragt, ob Sie Stack Builder gerade jetzt starten möchten . Das müssen Sie nicht. Das kannst du nehmen. Wenn Sie das Häkchen links gesetzt haben und als Reaktion auf Fertig stellen klicken, können Sie bei der nächsten Stack-Builder-Anwendung, die geöffnet wird, auch einfach auf Abbrechen oder Schließen nächsten Stack-Builder-Anwendung, die geöffnet wird, Das müssen wir nicht verwenden. Du kannst hier einfach auf Fertig stellen klicken. Um nun in unser Admin-Panel zu gelangen, gehen wir zu unserer Suchfunktion. Wir werden nach PG Admin suchen. Hier haben wir das PG-Admin-Formular. Öffne das. Sobald das geöffnet ist, wird es in einem Browser geöffnet, wie wir hier sehen können. Jetzt wollte ich uns bitten, einfach ein Master-Passwort für Post Cris festzulegen ein Master-Passwort für Post Cris Admin. Ich werde hier nur ein Passwort festlegen. Es muss nicht dasselbe sein , das Sie bei der Installation festgelegt haben , aber achten Sie darauf, dass Sie sich beide Passwörter notieren , die hier verwendet werden. Dann können Sie auf Okay klicken. Dann können wir zum Beispiel in den Browser gehen. Wenn wir uns nun den Postgress-Server ansehen wollen, was wir bei der Postgress-Installation getan haben Jetzt müssen wir das Passwort verwenden , das wir während des Installationsvorgangs festgelegt haben, nicht das Master-Passwort, das wir gerade hier erstellt haben, sondern das oder das Passwort, das wir bei der Installation verwendet haben Denken Sie daran, dass ich hier das Passwort postgress verwendet habe , da wir uns mit dem Postgres-Benutzer verbinden Ich gebe hier das Passwort ein, das ich während des Installationsvorgangs festgelegt habe oder das wir vor ein paar Minuten durchgemacht haben, und klicke haben, Und dann können wir hier sehen, dass ich jetzt grundsätzlich Zugriff auf die Post-Postgres-Datenbank auf dem Server Sie können auch sehen, dass wir, wenn Sie hier auf die Registerkarte gehen , auch diese Option haben, mit der wir sie beispielsweise in einem neuen Fenster öffnen können , was wir hier haben Aber so können Sie es auch in Ihre Taskleiste bekommen, und hier haben wir dann tatsächlich die Datenbank, die wir später auch untersuchen werden. In späteren Fällen, wenn wir auch nur eine Verbindung zu unserer Postgres-Datenbank oder dem lokalen Postgres-Server herstellen möchten unserer Postgres-Datenbank oder , stellen Sie sicher, dass Sie denselben Benutzernamen und dasselbe Passwort verwenden, die Sie bei der Installation festgelegt haben stellen Sie sicher, dass Sie denselben Benutzernamen und dasselbe Passwort verwenden , die Sie bei der Installation festgelegt Wir werden später sehen, wenn wir uns Data Grip ansehen, zum Beispiel für den Fall von MAC, wir eigentlich keinen Benutzernamen und kein Passwort festlegen oder angeben müssen Benutzernamen und kein Passwort festlegen oder angeben , weil wir Im Windows-Fall noch einmal für das Data Grip-Beispiel , das wir bald durchgehen werden. Stellen Sie sicher, dass Sie den Benutzer Postcres verwenden , wie wir es hier getan haben, um eine Verbindung zum Server herzustellen, und stellen Sie dann sicher, dass Sie das Passwort verwenden , das Sie während des Installationsvorgangs festgelegt haben, nicht das Passwort, das Sie hier als Master-Passwort festgelegt haben, sondern das Passwort, das Sie während des Installationsvorgangs festgelegt haben. Das ist dasselbe, das wir auch hier eingegeben haben, als wir dazu aufgefordert wurden gehen Sie auf den Server Auch hier wird der Benutzername Postcre sein und dann wird das Passwort das sein , das Sie während des Installationsvorgangs festgelegt haben des Installationsvorgangs 6. [Mac] Postico Setup: In diesem Video erfahren wir, wie wir tatsächlich eine Verbindung zu unserer Datenbank herstellen und damit beginnen können , SQL-Abfragen in diese Datenbank zu schreiben Wenn Sie auf einem Mac sind, gibt es eine coole Schnittstelle namens Postco , über die Sie eine Verbindung herstellen können Dies ist nur die Download-Seite , auf der wir vom letzten Mal waren Wenn Sie sich im Einführungs-Tab befinden und nach unten scrollen, können Sie hier einen Link zu Postco sehen Ich habe es hier schon in einem neuen Tab geöffnet. Dann kannst du das einfach herunterladen und lokal stehen lassen. Wenn du es dann öffnen willst, können wir hierher gehen und das wirst du sehen. Derzeit haben wir keine Datenbank oder sind keiner Datenbank verbunden. Aber lass uns einfach das Setup durchgehen. Dies wird je nach den anderen Plattformen, die wir uns ebenfalls ansehen werden, dasselbe sein . Aber lassen Sie uns das auch hier durchgehen. Wir können unserer Datenbank einen Spitznamen geben. Das ist nur, damit wir verstehen , was wir uns ansehen. Hier können wir zum Beispiel sagen, meine erste Datenbank oder falls du ihr einen genaueren Namen geben möchtest, kannst du natürlich hier hosten, das ist unser lokaler Host. wollen wir behalten. Unser Port wird Port 5432 sein Es ist wichtig, dass wir das auch behalten. Wenn wir auch zu den Postcras zurückkehren, wird das auch auf Port 5432 laufen Es ist wichtig, dass wir einfach sicherstellen, dass wir dasselbe beibehalten. Benutzer, wir können auch dasselbe behalten. Es ist kein Passwort erforderlich , da wir es auf einem lokalen Host ausführen. Die Datenbank, mit der wir eine Verbindung zur Standarddatenbank herstellen können, wird nur der Name des Benutzers sein , den wir hier haben. Wenn wir zu unserem Postgres gehen, können wir auch sehen, dass diese Datenbank existiert Wir können aber auch sehen, dass wir verschiedene Optionen haben, zum Beispiel die Postgres-Option hier sowie die Vorlagenoption sowie Sie können sich mit jedem dieser Geräte verbinden. Ich werde eine Verbindung zu Vorlage eins herstellen. Wenn Sie hier nichts eingeben, werden nur die Standardwerte verwendet , die hier drin sind. Sobald wir fertig sind, können wir einfach auf Fertig klicken. Jetzt, wo wir die Datenbankverbindung eingerichtet haben, können wir einfach hier auf Verbinden klicken, und dann öffnet sich dieses neue Fenster für uns, wo wir sehen können, wir können in den Abfrage-Editor gehen und hier können wir dann unsere Abfragen schreiben. der Menüleiste hier oben können wir auch sehen, mit welcher Datenbank wir verbunden sind. Im Moment können wir sehen, dass wir mit Vorlage eins verbunden sind. Aber wenn wir einfach auf Background my first DB klicken, was der Spitzname ist, den wir unserer Datenbank gegeben haben, sehen wir, dass der Server, mit dem wir verbunden sind, tatsächlich drei Datenbanken hat. Wenn wir wollen, können wir uns auch mit den verschiedenen verbinden. Wir können hier jetzt sehen, dass wir in meiner Benutzernamen-Datenbank sind, oder wir können rausgehen und in die erste Vorlage gehen oder wir können rausgehen und in die Postgres-Datenbank gehen Sie können für jeden von ihnen sehen, dass wir dann auch den Abfrage-Editor öffnen können und je nachdem, in welcher Datenbank wir uns befinden Nun, das wird die sein , mit der wir verbunden sind und für die wir Abfragen schreiben. Wenn wir eine neue Datenbank auf ihrem Server oder auf unserem Server erstellen wollen , können wir das auch tun, indem wir hier auf die Datenbank-Schaltfläche klicken , und dann können wir unserer Datenbank einen Namen geben, wenn wir wollen, oder um sie zu löschen, können wir hier einfach auf Löschen klicken, und dann geben wir einfach Drop Database ein und schon wird die Datenbank gelöscht. Wenn wir zu der Option zurückkehren möchten , bei der wir es tatsächlich mit dieser Datenbank verbinden, können wir in die Datei gehen, das Favoritenfenster anzeigen und dann wird das ursprüngliche Fenster angezeigt, in dem wir uns mit unserem Datenbankraum verbunden haben in dem wir uns . weitere Verbindungen einrichten möchten, können Sie einen neuen Favoriten erstellen. Es wird empfohlen, zuerst die Verbindung zu diesem zu trennen Derzeit befinden wir uns in der kostenlosen Testversion. Wenn du hier neue Verbindungen erstellen möchtest, dann kannst du einen neuen Favoriten erstellen und dann geht es gut, dann kannst du zusätzliche Verbindungsoptionen einrichten. Sie können zum Beispiel eine auf Ihrer lokalen Seite haben , mit der Sie herumspielen möchten. Wenn Sie einen bei der Arbeit oder woanders haben, können Sie sich auch hier mit diesen verbinden. Wie Sie sehen, verwenden Sie beim Herunterladen von Postco standardmäßig die Testversion Die Testversion ist auf unbestimmte Zeit kostenlos. Sie hat nur eine reduzierte Anzahl von Funktionen. Aber in jeder Hinsicht wird es gut funktionieren Aber wenn Sie es aktivieren möchten, können Sie das natürlich tun aktivieren möchten, können Sie das natürlich Aber stell einfach sicher, dass du dir die verschiedenen Videos ansiehst oder dass du dir zumindest auch das andere Video ansiehst. Ich werde über einen Datengriff sprechen, nur damit Sie die verschiedenen Benutzeroberflächen sehen , mit denen Sie umgehen können, oder die verschiedenen Verbindungsdienste oder Verbindungsanwendungen, die Sie verwenden können, sodass Sie entscheiden können, welche für Sie die beste ist welche Ihnen am besten gefällt. Dann empfehle ich, einfach bei der zu bleiben, die Ihnen am besten gefällt und mit der Sie sich am wohlsten fühlen. 7. Datagrip: Nun, das nächste Tool , mit dem ich Ihnen zeigen werde , wie Sie eine Verbindung zu Datenbanken herstellen und all diese coolen Sachen mit dem Schreiben von Abfragen und allem machen diese coolen Sachen mit dem Schreiben von Abfragen und können, wird ein Datengriff von Jet Brains sein Dies ist auch das, das wir während des gesamten Kurses verwenden werden. Sie können das bekommen, indem Sie zu jetbrain.com gehen, dann zu Tools und hier zu Data Grip gehen Mit Data Grip erhalten Sie eine kostenlose 30-Tage-Testversion. Sie sollten in Ordnung sein, um den Kurs zu absolvieren und einige zusätzliche Übungen zu machen Aber wenn es Ihnen Spaß macht, dann gibt es eine kostenpflichtige Version. Es gibt sie, wie wir auch bei Postco oder auch bei anderen GYs gesehen haben. Es gibt natürlich auch andere kostenlose, die Sie verwenden können, je nachdem, wie sehr Sie es mögen oder ob Sie mit anderen herumgespielt haben Sie können sich dann entweder für Data Grip oder natürlich auch für ein anderes System entscheiden Letzten Endes ist es nicht wirklich wichtig. All das wird nur eine Verbindung zu unseren Datenbanken und so herstellen. Es ist einfach das, mit dem Sie sich am wohlsten fühlen. Wir beginnen also mit einer kostenlosen 30-Tage-Testversion. Wenn Sie den Kurs genau verfolgen möchten, können Sie sich hier natürlich mit den Daten vertraut machen. Sobald Ihre Testversion abgelaufen ist, können Sie entweder entscheiden, ob Sie mit Data Grip weitermachen möchten oder ob Sie eine andere GI verwenden möchten , die kostenlose Dienste z. B. die Postleitzahl, von der wir gesehen haben, dass sie eine lebenslange kostenlose Testversion anbietet, und dort können Sie sie einfach weiterhin kostenlos verwenden. Das liegt ganz bei Ihnen. Aber mach weiter und lade Data Grip herunter. Sobald das erledigt ist, folgen Sie einfach dem Setup und öffnen Sie es. Sobald Sie einen Open Data Grip heruntergeladen haben, wird dieser beim Öffnen angezeigt, falls Sie dieses Fenster hier in der Seitenleiste nicht haben. Sie können das ganz einfach erreichen, indem Sie in die Ansicht gehen, dann in die Toolfenster gehen und hier auf Datenbank klicken. Dann wird das Fenster auf der linken Seite einfach geöffnet oder geschlossen. Um hier eine Verbindung zu einer Datenbank herzustellen, klicke ich einfach mit der rechten Maustaste auf eine neue Datenquelle. Ich werde hier Postgress QL auswählen. Auf diese Weise können wir eine Postgres-Datenquelle einrichten eine Postgres-Datenquelle einrichten Ich werde darauf klicken, und es sich dieses Verbindungsfenster Falls du Postgress nicht siehst , wenn du mich das wieder schließen lässt Wenn Sie Postgress hier oben nicht sehen, dann ist es wahrscheinlich einfach hier unten Sobald Sie sie zuvor ausgewählt haben, werden sie für Sie hier nach oben verschoben , sodass Sie leichter darauf zugreifen Es wird wahrscheinlich nicht für Sie da oben sein , wenn Sie Data Group noch nie benutzt haben In diesem Fall wäre es irgendwo hier unten. Wie dem auch sei, mach weiter und öffne es, und das gibt uns unser Postgress-Verbindungsfenster Auch hier können wir einen Spitznamen angeben. Dann können wir unsere Verbindungsoptionen haben. Unser Host wird immer noch der lokale Host sein. Unser Port wird immer noch Port 5432 sein. Wir benötigen weder einen Benutzernamen noch ein Passwort, um es in der lokalen Datenbank zu sammeln Dann können wir bei der Datenbank, zu der wir eine Verbindung herstellen möchten , natürlich wieder zwischen Postgress wählen Oder wenn wir einfach unsere Postgress-App öffnen , haben wir natürlich auch Temple One sowie den Benutzernamen des Computers, den Sie Wir können dann einfach auf Okay klicken. Und das wird uns mit einer Datenbank verbinden , und wir können hier sehen, wir damit auch eine Konsole bekommen in die wir unsere SQL-Abfragen schreiben können. Wenn wir wollen, können wir die Datenbank auch erkunden , indem wir sie öffnen, und dann können wir die Struktur hier sehen. Standardmäßig ist darin bereits eine Datenbank eingerichtet. Aber es sind noch keine Tabellen drin. Wir werden etwas später mehr darüber erfahren , sobald wir uns mit all dem befassen. Aber so können wir mithilfe einer Datengruppe eine Verbindung zur Postgres-Datenbank herstellen Falls Sie hier versehentlich Ihre Konsole schließen, können Sie sie einfach erneut öffnen, indem Sie hier mit der rechten Maustaste klicken und dann die Abfragekonsole öffnen Das Coolste an Data Grip ist, dass wir tatsächlich mehrere Datenbankverbindungen öffnen können. Zum Beispiel werde ich eine weitere neue Datenquelle hinzufügen, und ich werde hier eine weitere Postgres-Datenquelle hinzufügen, und jetzt werden wir auch eine Verbindung zur ersten Vorlage herstellen Unsere Einstellungen hier sagen immer noch, dass dasselbe immer noch auf dem lokalen Host sein wird, immer noch auf dem Port sein wird Unser Spitzname hier wird einfach in meine Standardeinstellung eingegeben, und dann kann ich klicken. Jetzt können wir sehen, dass wir hier auf unserem lokalen System eine Verbindung zu einer anderen Datenbank herstellen, nämlich dieser. Hier. Hier können wir auch sehen , dass wir auch hier reingehen und es erkunden können. In der Postgres-Datenbank sind standardmäßig noch einige weitere Dinge eingerichtet Aber auch hier werden wir mehr darüber erfahren, sobald wir uns tatsächlich mit der Abfrage befassen Dies ist nur mehr, um sicherzustellen, dass wir das richtige Setup haben. Sie können hier auch sehen, dass ich jetzt zwei Konsolen habe. Eine, die mit unserem Postgres verbunden ist. Nochmals, das wird unser Spitzname sein. Der andere, der für die Datenbank mit Vorlage eins ist. Wenn Sie eines oder einige dieser oder alle schließen, können Sie natürlich einfach hierher zurückkehren, mit der rechten Maustaste auf Abfragekonsole öffnen klicken, und auch hier können wir die Abfragekonsole öffnen. Sie möchten nur sicherstellen, dass Sie unabhängig von der verwendeten Abfragekonsole sicherstellen, dass sie für die richtige Datenbank bestimmt ist falls Sie mehrere Datenbanken geöffnet haben Ich habe das Gefühl, dass Ihre Werkzeugleisten-Registerkarte hier zu voll wird. Sie können auch einfach erneut auf die Datenbank klicken, rechten Maustaste klicken und sie entfernen, dann wird die Konfiguration für die Datenbank entfernt. Eine Sache, die Sie dabei beachten sollten , ist, dass die Konfiguration ebenfalls gelöscht wurde. Wenn Sie erneut eine Verbindung herstellen möchten, müssen Sie die Schritte zur neuen Datenquelle erneut ausführen und dann eine Verbindung zur Datenquelle herstellen und die Konfigurationsdetails eingeben Aber wenn Sie es entfernen möchten, können Sie das auf diese Weise tun 8. CLI: Die andere Option, die Sie wählen können und die Sie manchmal wählen können , ist die Verwendung der Befehlszeilenschnittstelle. Das bedeutet nur, das Terminal oder etwas Ähnliches zu verwenden , um eine Verbindung herzustellen. Manchmal möchtest du das vielleicht benutzen. Obwohl ich persönlich die grafischen Benutzeroberflächen bevorzuge. In anderen Fällen sind Sie möglicherweise dazu gezwungen. Wenn Sie beispielsweise mit einem Remote-Computer verbunden sind und an der Datenbank dort arbeiten müssen und die einzige Option, die Sie haben, die Verwendung einer Befehlszeilenschnittstelle ist. In beiden Fällen können Sie auch die Befehlszeilenschnittstelle verwenden. Für uns wird es einfach sein, eine Verbindung herzustellen, da wir hier unseren Postgres-Server haben Wir können einfach eine Verbindung herstellen oder auf eines davon doppelklicken, und dann wird die Verbindung in einem Terminal hier geöffnet , und dann können wir hier nur unsere SQL-Befehle schreiben Dies sind die verschiedenen Optionen , die uns zur Verfügung stehen. In diesem Kurs werden wir uns auf Data Grip konzentrieren. Aber natürlich können Sie wählen, was Sie möchten. Sie können natürlich auch zwischen den verschiedenen Anwendungen wechseln . Letzten Endes wird es nicht sonderlich wichtig sein, für welche Sie sich entscheiden weil sie alle dieselben Mittel zum Zweck bieten , nämlich eine Verbindung zu unserer Datenbank herzustellen und uns unsere Abfragen schreiben zu lassen. welcher auch immer Sie sich am wohlsten fühlen Mit welcher auch immer Sie sich am wohlsten fühlen, sollten Sie wählen, denn am Ende des Tages werden sie uns alle im Grunde dasselbe ermöglichen 9. Datenbanken erstellen und: Jetzt wissen wir, wie man eine Verbindung zu einer Datenquelle herstellt. Lassen Sie uns weitermachen und lernen, wie wir eine Datenbank innerhalb unserer Datenquelle erstellen können . Ich werde eine Verbindung zur ersten Vorlage herstellen, nur weil sich hier keine Datenbanken oder irgendetwas anderes befinden, ist sie völlig leer. Ich würde empfehlen, dass Sie dasselbe tun, nur um eine völlig neue Datenquelle zu haben. Für Sie ist es sogar möglich, dass Sie beim Klicken auf diesen Dropdown-Pfeil nichts sehen, da diese Ordner normalerweise nur erstellt werden, wenn Sie eine Datenbank erstellen und anschließend entfernen. Wenn Sie das Drop-down-Menü verwenden, ist es möglich, dass tatsächlich nichts angezeigt wird. Falls Sie sich zum Beispiel hier in der Konfiguration befinden, wird Ihnen mitgeteilt, dass die Datenbank nicht gefunden wurde oder Sie keine Verbindung zu ihr herstellen können. Zum Beispiel, wenn ich hier versuche, eine Verbindung zu Vorlage zwei herzustellen. Bevor ich mich tatsächlich bewerbe, kann ich die Verbindung auch einfach testen. Wenn ich das versuche, wird es nicht funktionieren, weil die Datenbank nicht existiert. In diesem Fall, wenn Sie eine Verbindung zu einer anderen Datenbank herstellen möchten , aber eine Option ist natürlich immer nur eine Verbindung zur PoC-Datenbank herzustellen, die immer auf jedem System enthalten und erstellt werden sollte auf jedem System enthalten und erstellt Die anderen werden normalerweise auf den anderen Systemen erstellt, aber es kann Fälle geben, die sich von System zu System unterscheiden, in denen die Datenbank möglicherweise nicht standardmäßig erstellt wird Dazu können wir zum Beispiel einfach eine Verbindung zu Postcras herstellen, dann können wir das entweder direkt verwenden oder wir können in unsere Abfragekonsole gehen, und das werden wir auch in der kommenden Lektion lernen, wir werden Create Database schreiben und wir werden zum Beispiel Vorlage zwei erstellen, zum Beispiel Vorlage zwei erstellen, falls das die ist, zu der wir eine Verbindung herstellen möchten. Dann können wir das ausführen und wir können hier sehen, dass es gerade aktualisiert wurde, und wir werden hier zu unseren Eigenschaften zurückkehren. Wenn wir nun versuchen, eine Verbindung zu Vorlage zwei herzustellen, testen wir unsere Verbindung. Wir sehen hier jetzt, dass es richtig funktioniert. Das liegt nur daran, dass ich im Video die Datenbank Template One verwenden werde , falls sie für Sie nicht existiert Sie können sie so erstellen und dann eine Verbindung herstellen. Aber natürlich können Sie alternativ auch einfach die Standard-Postgres-Datenbank verwenden Aber lassen Sie uns weitermachen und eine Datenbank erstellen , denn denken Sie daran, als wir das relationale Modell kennengelernt haben, haben wir Tabellen, die sich innerhalb einer Datenbank befinden Bevor wir Tabellen erstellen können, benötigen wir zunächst eine Datenbank, in die wir diese Tabellen einfügen Wie können wir eine Datenbank erstellen? Nun, hier werde ich die Querin-Konsole öffnen. Sie werden feststellen, dass dies die Konsole für meine Template-One-Datenquellenverbindung ist, wie Sie anhand des Namens hier sehen können Falls Sie mehrere Datenquellen geöffnet haben, stellen Sie sicher, dass Sie die richtige Konsole für die richtige Datenquelle verwenden . Stellen Sie außerdem sicher, dass Sie über Ihren Post-Grass verbunden sind , um sicherzustellen, dass Ihr lokaler Postgress-Server läuft Ist dies nicht der Fall, stellen Sie sicher, dass Sie auf Start klicken. Okay, wie können wir also eine Datenbank in unserer Vorlage und in einer Datenquelle erstellen ? Um das zu tun, verwenden wir, oder wir werden hier in unsere Abfragekonsole tippen, Datenbank erstellen, und dann geben wir hier den Namen der Datenbank ein , den wir in einer Sekunde eingeben werden. Dann beenden wir es mit einem Semikolon. Hier sind einige wichtige Dinge zur allgemeinen SQL-Abfragestruktur zu beachten . Zuallererst werden alle SQL-Befehle normalerweise vom Benutzer großgeschrieben, nur um die Abfrage lesbarer zu machen Außerdem ist es üblich, SQL-Befehle mit einem Semikolon zu beenden Sie müssen das nicht tun, aber das bedeutet, dass die Abfrage beendet ist und Sie können tatsächlich mehrere Abfragen miteinander verketten. Immer wenn Sie eine Abfrage beenden, können Sie hier ein Semikolon setzen, um im Grunde zu sagen Lassen Sie uns unsere Datenbank erstellen und sie unsere Datenbank nennen Wenn wir das ausführen, können wir sehen, dass wir hier eine Konsole bekommen. Wenn wir in Datenbanken gehen, haben wir jetzt unsere Datenbank erstellt Das ist der Datenbankname , den wir ihr gegeben haben. Wir können hier sehen, dass wir auch einige zusätzliche Ordner bekommen , die mitgeliefert werden. Ja. So können wir eine Datenbank erstellen. Was ist, wenn wir eine Datenbank entfernen wollen ? Nun, dann müssen wir das Create auf Drop ändern. Wenn wir das dann ausführen, werden Sie feststellen, dass unsere Datenbank jetzt weg ist. Wir können sehen, dass es aus unserer Datenquelle entfernt wurde. Um Ihnen zu zeigen, dass die Großschreibung nicht erforderlich ist und das Semikolon Lassen Sie uns weitermachen und dieselbe Abfrage wiederholen , die wir am Anfang gemacht haben Aber diesmal wird alles in Kleinbuchstaben geschrieben und das Semikolon am Ende nicht verwendet Wenn wir das ausführen und los geht's, können wir unsere Datenbank wieder öffnen und alles ist wieder so, wie wir Sie können sehen, dass Sie immer noch SQL-Abfragen schreiben können , bei denen alles in Kleinbuchstaben und ohne Semikolon In der Regel empfiehlt es sich jedoch, beim Semikolon am Ende zu bleiben und alle SQL-Befehle in Großbuchstaben zu schreiben Denn auf diese Weise ist es viel einfacher, die Abfrage zu lesen. Es ist leicht zu unterscheiden, was Teil einer SQL-Abfrage ist und was vielleicht ein Name ist, und was vielleicht ein Name ist in einer Tabelle in unserer Datenbank vorkommt, die einen ähnlichen oder identischen Namen hat etwas, das Sie in einer SQL-Abfrage haben würden. Und natürlich sollten Sie auch eine zweite Datenbank erstellen. Lassen Sie uns hier eine weitere Datenbank erstellen als unsere zweite Datenbank bezeichnet wird. Lassen Sie uns hier einige Unterstriche verwenden, um diese Datenbank oder diesen Namen lesbarer zu machen diese Datenbank oder diesen Namen lesbarer Wenn wir weitermachen und das ausführen, werden Sie hier sehen, dass wir jetzt zwei Datenbanken und unsere Vorlage eine Datenquelle haben zwei Datenbanken und unsere Vorlage eine Datenquelle Sie können sehen, dass wir auf jede von ihnen eingehen können, und jede davon ist eine separate Datenbank. Natürlich können wir diese wieder auf diese Weise entfernen, und dann können wir auch unsere erste Datenbank entfernen , indem wir den entsprechenden Namen verwenden. Rufen Sie dann erneut die Anweisung drop database auf. 10. Schemas erstellen: Ordnung. Da wir nun wissen, wie man Datenbanken erstellt und löscht, schauen wir uns an, wie wir Schemas erstellen und löschen können, da wir dort unsere Tabellen platzieren wollen In unserer letzten Lektion konnten wir hier RDB erstellen Aber manchmal kann es tatsächlich zu einem Fehler kommen. Wenn ich zum Beispiel hier „Datenbank löschen“ eintippe und RDB löschen möchte, erhalte ich eine Fehlermeldung, da ich bereits mit der aktuell geöffneten Datenbank verbunden bin mit der aktuell geöffneten Datenbank verbunden Da ich mit ihr verbunden bin, kann ich sie nicht wirklich löschen Eine Sache, die Sie tun können , um dies zu ändern, wäre zum Beispiel eine andere Option, die wir hier haben. Wir sehen, dass wir unsere Datenbank haben, die in unserer ersten Vorlage enthalten sein wird, aber wir haben auch verschiedene Optionen, auf die wir zurückgreifen können. Die andere Sache, die wir tun können, wenn wir eine Datenbank wirklich löschen wollen, ist, wir eine neue Datenbank erstellen können. Zum Beispiel unser Unterstrich DB Wir können das erstellen, und dann müssen wir unsere Verbindung ändern, was wir tun können, indem wir hier reingehen und auf RDB klicken Ich schätze, diese Namen sind nicht besonders nützlich, wenn Sie es laut aussprechen, aber jetzt haben wir zwei Datenbanken In einer von ihnen ist ein Unterstrich enthalten, mit dem wir gerade verbunden sind, wie wir hier in der oberen rechten Ecke sehen können Der andere hat keinen Unterstrich, und es ist nicht der, mit dem wir in unserer aktuellen Sitzung hier verbunden sind , denn auch das ist nicht der, den wir hier oben in unserer oberen rechten Ecke haben Das hier wird spezifisch für den Data-Grip sein, aber es ist wahrscheinlich, dass Sie ähnliche Benutzeroberflächenangaben haben , wenn Sie verschiedene SQL-Editoren verwenden Wenn wir möchten, können wir jetzt zum Beispiel unsere Datenbank löschen, da wir jetzt mit der Datenbank verbunden sind, die einen Unterstrich enthält Wenn wir die Datenbank löschen möchten , mit der wir zuvor verbunden waren, können wir jetzt die Datenbank löschen und dann den Namen in diesem Fall ohne Unterstrich aufrufen , können wir sie ausführen Jetzt können wir sehen, dass die Datenbank entfernt wurde. Eine Sache, die Ihnen auffallen wird, ist, dass wir, wenn wir hier auf das Schema eingehen, eigentlich keine Schemas sehen können Wenn wir uns hier jedoch unser RDB-Symbol genau ansehen, sehen wir tatsächlich, dass wir mit unserer Underscore-DB verbunden sind , der öffentlichen Datenbank, also dem Schema Wenn dies der Fall ist, erhalten Sie wahrscheinlich diese Benachrichtigung, die ich auch hier oben von Data Grip aus sehe , wo wir einfach auf das Introspect-Schema klicken können Wenn wir dann zu unserem Schema gehen, können wir sehen, jetzt ist es für uns verfügbar Wir haben tatsächlich das öffentliche Schema verfügbar. Aber wie können Sie ein neues Schema erstellen. Nun, um das zu tun, geben wir create schema ein und dann geben wir einfach den Namen ein, und dann geben wir einfach den Namen genau wie wir es für die Datenbank getan haben. Hier können wir zum Beispiel unser Schema nennen, und wir können es ausführen. Für mich habe ich es bereits erstellt, daher erhalte ich eine Fehlermeldung , die bereits existiert. Mal sehen, wie wir es löschen können. Wir können Drop-Schema eingeben, unser Schema. Wenn wir das dann ausführen, können wir sehen, wie das Schema entfernt wird. Wenn wir wollen, können wir es dann erneut erstellen , indem wir create schema eingeben, und dann wird es ein anderes Schema für uns erstellen. Jetzt muss der Schemaname natürlich nicht so lauten. Es kann jeder Name sein, der am besten geeignet ist. Wenn wir wollen, können wir das wieder fallen lassen. Normalerweise ist es üblich, oder. Normalerweise ist es in Ordnung, sich an das öffentliche Schema zu halten . Daran ist nichts falsch. Wenn Sie bereits ein öffentliches Schema haben , das standardmäßig vorhanden sein sollte, können Sie sich auch einfach an ein öffentliches Schema halten und sich nicht zu viele Sorgen machen. Wenn Sie jedoch speziell zusätzliche Schemas benötigen oder erstellen möchten , um dann Tabellen zu gruppieren, dann wissen Sie jetzt natürlich, wie das geht, und Sie haben die Möglichkeit, dies zu tun 11. Tabellen erstellen: Lassen Sie uns nun lernen, wie wir Tabellen in unseren Datenbankschemas erstellen können Tabellen in unseren Datenbankschemas Um das zu tun, verwenden wir die Syntax create this time table, und wir werden unseren Tabellennamen haben Hier können wir zum Beispiel die Benutzerinformationen verwenden , wie wir es auch in den vorherigen Lektionen gesehen haben. Nun, es gibt einige zusätzliche Dinge , die wir hier erledigen müssen. Wir wollen hier Klammern öffnen und schließen, und jetzt können wir die tatsächlichen Namen der Spalten in unserer Tabelle sowie den Datentyp, den sie enthalten, eingeben der Spalten in unserer Tabelle sowie den Datentyp, den sie Lass das alles ein bisschen schöner aussehen. Ich werde das über mehrere Zeilen tragen. Ich werde auch hier wieder ein Semikolon ans Ende setzen, nur um sicherzugehen hier wieder ein Semikolon ans Ende setzen, nur um sicherzugehen , dass ich es später nicht vergesse. Auch wenn es, wie Sie bereits gesehen haben, auch ohne funktioniert, ist es nur eine gute Übung, es da zu haben. Nehmen wir unsere erste Spalte, die ID, die nur eine Ganzzahl sein wird . Hier, lassen Sie uns das zu unserem Primärschlüssel machen. Um nun eine nächste Spalte zu erstellen, werden wir hier ein Komma setzen, um diese zu trennen Dann unsere nächste Spalte, lass uns das der Name sein. Lassen wir das ein Varchar sein, das 25 Byte verwendet. Der nächste, dem wir uns hätten anschließen können. Das hier, lass uns das achte Date haben. Wir können ihre E-Mail-Adresse angeben, wenn wir wollen, und diese können wir zum Beispiel ein Textfeld sein. Wenn wir das ausführen, können wir hier sehen, unsere Benutzerinformationstabelle innerhalb des öffentlichen Schemas erstellt wurde . Wir können hier auch sehen, ob wir reingehen, wir haben auch Informationen über den Primärschlüssel sowie die Spalten, die sich darin befinden oder die Attribute, sowie die Datentypen jedes Spalten-Reach-Attribut, das wir haben. Wie können wir eine Tabelle entfernen? Nun, das wird viel einfacher sein. Wir geben einfach Drop Table ein. Dann geben wir hier den Tabellennamen ein. Zum Beispiel Benutzerinformation, Semikolon auf Da haben wir's. Vergiss auf Ausführen zu klicken und dann warte einfach und du kannst hier sehen, dass unsere Tabelle jetzt entfernt wurde. Was ist, wenn wir mehrere Schemas haben. Lassen Sie uns ein zweites Schema erstellen und dieses wieder unser Schema nennen Dann lassen Sie uns das ausführen. Jetzt haben wir zwei Schemas Ich werde hier nur ein bisschen zurückkommen , damit wir unseren Code bekommen , den wir vorher hatten Was passiert jetzt, wenn wir unsere Create Table-Anweisung ausführen ? Nun, lass es uns ausprobieren. Wenn wir unsere Anweisung create table ausführen, sehen wir hier, dass wir sie in das öffentliche Schema einfügen, mit dem wir auch hier verbunden sind. Es gibt verschiedene Optionen , die wir zur Verfügung haben. Eine davon ist, dass wir unsere Verbindung hier oben ändern können. zum Beispiel eine Verbindung zu unserem Schema her, anstatt zu dem öffentlichen, und wir können jetzt hier sehen, dass unsere Verbindung geändert wurde. Hier können wir wieder die Benutzerinformationstabelle erstellen. Dieses Mal wird sie in unserem Schema erstellt. Manchmal haben Sie vielleicht nicht den Luxus, auf diese Weise umzuschalten. Manchmal mag es anders sein. In anderen Fällen, wenn Sie ein Schema angeben müssen, können Sie es auch hinzufügen, indem Sie den Schemanamen vor die eigentliche Tabelle setzen. Lassen Sie uns hier eine weitere Tabelle mit dem Namen Benutzerinfo Two erstellen. Lassen Sie mich diesen Tippfehler hier korrigieren. Sie können sehen, obwohl ich mit unserem Schema verbunden bin, das hier das Schema ist Ich habe im öffentlichen Schema eine Tabelle mit Benutzerinformationen erstellt , wie wir hier sehen können. Wenn ich dieses Präfix hier entferne und es erneut ausführe, wird es natürlich und es erneut ausführe, wird es in dem Schema erstellt , mit dem wir gerade verbunden Sie können sehen, ob Sie es mit mehreren Schemas zu tun haben Sie können dann entweder zu ihnen wechseln und Tabellen direkt in ihnen erstellen , oder wenn Sie möchten, können Sie vorher auf das Schema verweisen , um dann dort Tabellen zu erstellen Was nun passieren würde , da wir nach unserem Schema erstellt sind, lassen Sie uns weitermachen und zurück zum öffentlichen Schema wechseln , indem wir in RTB gehen, in Öffentlichkeit gehen Was passiert jetzt, wenn wir das Schema löschen wollen und wir das neue Schema, das wir erstellt haben, löschen wollen Nun, jetzt werden wir auf ein Problem stoßen , weil wir darin Tabellen erstellt haben. Eine Sache, die wir tun können, ist, dass wir weitermachen und jede Tabelle darin entfernen können, und dann können wir das Schema löschen, oder wie uns Daten Grepard vorschlägt, können wir am Ende etwas verwenden, das Cascade genannt wird Wir können hier Cascade eingeben. Dann wird es im Grunde nur diesen Vorgang ausführen, aber es wird fortgesetzt und in diesem Fall auch im Inneren die entsprechende Bereinigung Wenn wir das jetzt ausführen, wird nicht nur unser Schema entfernt, sondern auch alle darin enthaltenen Tabellen Nun, um das noch mehr aufzuräumen. Lassen Sie uns auch die Tabelle mit den Benutzerinformationen zwei löschen, damit wir keine seltsamen Tabellennamen haben, die dieselben Spalten enthalten , die widersprüchlich sind Lassen Sie uns weitermachen und diese zweite Tabelle löschen. Schauen wir uns auch an, wie wir die anderen beiden Tabellen, die wir in der Lektion gesehen haben, so erstellen können , dass wir uns auch Fremdschlüssel ansehen können. Hier können wir wieder Tabelle erstellen und dann unsere Event-Info-Tabelle, Event Underscore Info, erstellen Event Underscore Info Hier werden wir zwei Spalten haben. Eine davon wird ID sein, was wiederum eine Ganzzahl sein kann, und lassen Sie uns das zu unserem Primärschlüssel machen. Dann werden wir auch den Namen haben, den wir als Text oder ein Varchar oder was auch immer wir wollen, was auch immer wir für angemessen halten , haben können oder was auch immer wir wollen, was auch immer wir für angemessen halten , haben Nun, eine Sache, die ich tun möchte ist, diese Namen groß statt klein zu schreiben, nur um Ihnen zu zeigen, was hier statt klein zu schreiben passiert Wenn wir das ausführen und in unsere Event-Info-Tabelle gehen, können wir hier sehen, dass wir, obwohl wir sie mit Großbuchstaben erstellt haben, wenn wir in die Tabelle gehen, hier immer noch nur Namen in Kleinbuchstaben haben Das ist auch der Grund, warum es so schön ist, diese Unterstriche zu verwenden , denn selbst wenn diese Konvertierungen passieren, ist es immer noch leicht zu lesen Lassen Sie uns weitermachen und auch die Ereignisprotokolltabelle erstellen. Hier haben wir unseren Ereignisschlüssel, seriell sein wird , sodass er automatisch inkrementiert Dann lass uns einfach unsere beiden IDs hier behalten und uns nicht zu viele Gedanken über die anderen Dinge Wir werden eine Event-ID haben, die eine Ganzzahl sein wird. Dann werden wir auch eine Benutzer-ID haben, die ebenfalls eine Ganzzahl sein wird . Wenn wir wollen, können wir ihr dann zum Beispiel auch die Zeitspalte hinzufügen , oder wir können sie Zeit in Großbuchstaben nennen. Damit können wir einen Zeitstempel erstellen, lassen Sie uns das in Großbuchstaben schreiben Wir werden hier keine Zeiten hinzufügen denn wenn wir das verwenden, verwenden Sie einfach UTC, und das spart Speicherplatz für uns Jetzt, wo wir unsere vier Spalten haben, wie können wir auf die Fremdschlüssel verweisen? Um das zu tun, werden wir in eine neue Zeile gehen und sagen, Fremdschlüssel, und Sie erinnern sich vielleicht schon aus den Lektionen davor daran. Wir werden Klammern öffnen und schließen. Wir werden hier den Namen eingeben , auf den wir aus unserer Tabelle verweisen möchten, nämlich die Event-ID Wir werden Referenzen sagen. Aber dann werden wir hier unseren Tabellennamen eintragen. Zum Beispiel Lüftungsinformationen. Dann geben wir hier den Spaltennamen ein, auf den wir verweisen möchten. In diesem Fall die ID. Unsere Ereignis-ID wird ein Fremdschlüssel sein, der auf die ID-Spalte und die Ereignisinformationstabelle verweist dasselbe für die Benutzerinformationen tun, werden wir den Fremdschlüssel erstellen, und das wird unsere Benutzer-ID sein. Es heißt, referenziert auf die Benutzerinformationstabelle, hier wird es auf die ID-Spalte verweisen. Wenn wir weitermachen und das ausführen, lassen wir uns weitermachen und uns unsere Tabellen ansehen. Jetzt haben wir auch die Eventlog-Tabelle. Wir können hier sehen, wir haben den Primärschlüssel, aber wir haben hier auch Fremdschlüsselreferenzen. 12. Tabellen ändern: Nun ist es wahrscheinlich, dass sich Ihre Datenbankanforderungen im Laufe der Zeit ändern werden Möglicherweise möchten Sie Tabellen ändern, Dinge hinzufügen, sie entfernen oder sogar Dinge darin ändern. Dazu können wir den Befehl alter table verwenden. Dann geben wir den Namen der Tabelle ein, die wir ändern möchten, und dann, was genau wir daran ändern wollen. Sehen wir uns einige Beispiele an. Nehmen wir an, wir möchten unseren Benutzerinformationen auch eine Region hinzufügen. Wir sagen, wir haben ihre ID, ihren Namen und ihre E-Mail-Adresse, wann sie beitreten , aber wir wissen nicht wirklich, in welcher Region sie sich befinden. In welchem Teil der Welt befinden sie sich. Wir werden sagen, dass wir unsere Benutzerinformationstabelle ändern werden. In diesem Fall möchten wir eine Spalte hinzufügen. Wir werden hinzufügen eingeben. Hier werden wir den Spaltennamen haben , der Region sein wird, und dann wollen wir den Spaltendatentyp haben. Das können wir zum Beispiel noch einmal sagen, lassen Sie uns das als Varchar verwenden, vielleicht mit der Größe 20 oder was auch immer wir für angemessen Dann wollen wir natürlich auch sichergehen, dass wir hier ein Semikolon an das Ende setzen, nur um es zu Wenn wir das dann ausführen und nur einen Blick auf die Benutzerinformationstabelle werfen, sehen wir, dass wir jetzt die Regionsspalte hinzugefügt haben. Nehmen wir an, irgendwann wird unsere Tabelle zu groß und wir entscheiden, dass die Regionsspalte eigentlich nicht so wichtig ist. Dann können wir anstelle des Befehls Drop-Spalte verwenden. Jetzt geben wir einfach den Namen der Spalte ein, die wir löschen möchten. Wir wollen die Regionsspalte löschen. Sie können hier klicken oder es ausführen, und dann wird es aus unserer Benutzerinformationstabelle entfernt . Nehmen wir an, wir stellen irgendwann fest, dass unsere ID-Spalte zu groß wird, die Ganzzahlen hier zu groß werden und wir unsere Spalte ändern müssen, damit wir uns um größere IDs kümmern können , weil unsere Benutzerbasis immer größer wird Wir können das tun, wir können die erstellen, oder wir können sagen, die Tabelle mit den Benutzerinformationen ändern Jetzt wollen wir die Spalte ändern. Wir wollen die ID-Spalte ändern, wir wollen den Typ der ID-Spalte ändern, zum Beispiel auf ein großes. Wir können das ausführen. Dann können Sie hier sehen unser Typ von Integer jetzt auf einen großen Typ aktualisiert wird. Wenn wir wollen, können wir das auch rückgängig machen. Sie werden hier feststellen, dass ich sowohl die Klein- als auch die Großbuchstabenversion verwenden kann die Klein- als auch die Großbuchstabenversion Auf diese Weise kann ich Spalten, die bereits verfügbar sind, ändern oder ändern. Jetzt gibt es viel mehr Änderungen, die Sie vornehmen können die wirklich von der Situation abhängen Je nachdem, in welcher Situation Sie sich befinden, möchten Sie vielleicht Ihre Datenbank aktualisieren oder Sie müssen Ihre Datenbank aktualisieren und möchten etwas ändern oder modifizieren Ähm, am einfachsten ist es, schnell ein schnelles Googeln zu machen und zu sagen, wie mache ich das hier, und dann ist es genau dieselbe Syntax, die wir hier hatten. Entweder ist es etwas, das Sie bereits gesehen haben , zum Beispiel Ändern von Spaltentypen oder das Hinzufügen oder Entfernen von Spalten, oder etwas sehr Ähnliches, zum Beispiel Ändern einer Spalte oder das Ändern ihrer Einschränkungen 13. Gezählte Arten: Schauen wir uns also an, wie wir Aufzählungsdatentypen erstellen können, weil wir manchmal eine Aufzählungsdatentypen erstellen natürliche Ordnung haben wollen oder es gibt eine natürliche Ordnung, aber es ist schwierig für uns, diese vielleicht einem Computer darzustellen Ein einfaches Beispiel dafür ist, nehmen wir die Wochentage und nehmen wir an, es gibt eine bestimmte Reihenfolge, und wir beginnen damit dafür ist, nehmen wir die Wochentage und nehmen wir an, , dass Montag der früheste Tag ist, und dann können wir Dienstag, Mittwoch, Donnerstag, Freitag, Samstag, Sonntag gehen , oder vielleicht möchten Sie mit Sonntag beginnen und bis Samstag gehen oder zu der Reihenfolge gehen, die Sie verwenden möchten. Aber vielleicht möchtest du etwas sagen wie Ich möchte nur nach Fällen suchen, die nach Mittwoch passieren. Also zwischen Mittwoch und Samstag oder so. Diese Reihenfolge zu verwenden ist schwierig, weil sie nicht den Wörtern selbst innewohnt. Wir wissen es, weil wir die Bedeutung von Wochentagen verstehen , aber ein Computer weiß das natürlich nicht. Eine Sache, die wir in SQL tun können , ist, einen aufgezählten Datentyp zu erstellen, und darin können wir dann die hierarchische Reihenfolge zwischen diesen verschiedenen Instanzen angeben die hierarchische Reihenfolge zwischen diesen dies zu tun, können wir zum Beispiel einen Typ erstellen, und wir werden unseren Typnamen hier haben Diesen können wir zum Beispiel den Wochentag nennen . Dann sagen wir hier als Zahl, also als Aufzählung , offene und schließende Klammern, und dann haben wir offene und schließende Klammern, und dann hier zur besseren Praxis ein Semikolon am Jetzt können wir hier die Reihenfolge der verschiedenen Typen eingeben . Nehmen wir zum Beispiel an, wir haben zuerst Montag, dann haben wir Dienstag. Dann haben wir Mittwoch und dann setzen wir das in der nächsten Zeile fort , damit es besser lesbar ist. Dann haben wir Donnerstag. Dann haben wir Freitag, Samstag und Sonntag. Jetzt haben wir einen neuen Typ namens Wochentag erstellt, dem es sich um einen aufgezählten Datentyp handelt, und die Reihenfolge zwischen ihnen ist so, wie wir sie hier sehen Was wir zum Beispiel tun können, ist, dass wir diesen Typ jetzt verwenden können, um eine weitere Tabelle zu erstellen Lassen Sie uns eine Tabelle erstellen. Dann können wir hier einfach diese Testtabelle nennen. Auf diese Weise müssen wir uns keine Gedanken über einen Namen machen. In dieser Tabelle wollen wir sie verwenden , um beispielsweise die Anwesenheit zu verfolgen. Obwohl ich denke, ein besserer Name wäre jetzt Anwesenheit gewesen, aber was auch immer. Lassen wir es so. Was wir hier verfolgen können, ist zum Beispiel ein Studentenausweis Lassen wir das einfach eine Ganzzahl sein. Dann können wir zum Beispiel auch unseren Enumerator-Datentyp verwenden, also können wir das hier als Wochentag bezeichnen, was unseren Wochentags-Datentyp verwenden wird, und dann benötigen wir immer noch einen Primärschlüssel Nennen wir das einfach irgendeinen Schlüssel, und das wird seriell sein, und es wird unser Primärschlüssel sein Wenn wir das hier ausführen , gibt es uns tatsächlich die Wahl, welche Anweisungen wir ausführen möchten. zum Beispiel nur die Anweisung create ausführen, erhalten wir eine Fehlermeldung, weil wir den Numerate-Typ noch nicht erstellt Und das liegt wahrscheinlich daran, dass wir hier das Bildschirmfeld haben , das uns anzeigt , dass wir diesen Abfrageabschnitt hier ausführen Lassen Sie uns das noch einmal ausführen und diesmal die gesamte Anweisung auswählen. Wenn wir dann auf Ausführen klicken oder es auswählen und ausführen, können wir sehen, wie es funktioniert weil es unseren Typ für uns erstellt hat. Wir können hier sehen, ob wir in unsere Testtabelle gehen, wir haben jetzt einen benutzerdefinierten Datentyp oder Wochentag, , wie wir hier sehen können, hier erstellt haben. Das Wichtigste dabei ist auch, dass wir hier das Semikolon am Ende haben , weil es sonst versucht hätte, diese Befehle miteinander zu verketten diese Befehle miteinander zu verketten Auf diese Weise haben wir jetzt verschiedene SQL-Abfragen, und es ist wichtig, verschiedene SQL-Abfragen einfach durch Semikolons zu trennen , um sicherzustellen, dass sie nicht versucht werden, miteinander zu verketten oder so , sondern dass sie nacheinander ausgeführt werden. Selbst wenn einige Abfragen oder Befehle nacheinander ausgeführt werden, ist es immer ratsam, sie zu trennen, da in anderen Fällen Probleme auftreten ist es immer ratsam, sie zu trennen, da in anderen Fällen Probleme können Es empfiehlt sich immer, Ihre Abfragen einfach durch ein Semikolon zu trennen oder sie besser zu beenden Auf diese Weise weiß der Abfrage-Editor , dass dies das Ende der Abfrage ist Dann wird das nächste , was kommen wird, der Start einer neuen Abfrage sein. 14. Werte hinzufügen: Jetzt wissen wir also, wie man Tabellen erstellt und entfernt sowie wie man unsere benutzerdefinierten Enumeratortypen erstellt und damit Tabellen erstellt Lassen Sie uns lernen, wie wir Daten in unsere Tabellen einfügen können. Um das zu tun, werden wir Insert Into verwenden. Dann werden wir hier den Tabellennamen haben. Lassen Sie uns zum Beispiel unsere Testtabelle verwenden und dann optional, und wir werden in einer Sekunde darauf zurückkommen. Wir können die Reihenfolge der Spalten hier angeben, aber lassen wir das vorerst aus. Dann werden wir die Schlüsselwortwerte verwenden. Dann werden wir Klammern öffnen und schließen und der guten Praxis halber das Semikolon an das Ende der Abfrage setzen an das Ende der Abfrage Jetzt werden wir die Werte eingeben, die wir einfügen möchten. Jetzt werden die Werte standardmäßig in der Reihenfolge sein , in der wir sie auch hier eingegeben haben. Zum Beispiel haben wir einen Studentenausweis und einen Wochentag. Da unser Schlüssel hier eigentlich eine Seriennummer ist, müssen wir dafür keinen Wert angeben. Nehmen wir an, unser Studentenausweis wird eins sein und der Wochentagswert wird Montag sein. Dann können wir das ausführen und dann wird es eingefügt. Es hat die gesamte Anweisung ausgeführt. Es wird die Werte Eins und Montag in unsere Testtabelle einfügen. Wie können wir das sehen? Nun, wir können hier einfach auf unsere Tabelle doppelklicken und das öffnet sie in einem neuen Tab. Hier können wir sehen, dass wir den Studentenausweis haben. Wir haben den Wochentag als Montag und wir haben hier auch unseren Schlüssel , der automatisch für uns erstellt wurde. Jetzt können wir hier auch die Spaltenreihenfolge angeben, wenn wir wollen. Vielleicht möchten wir zum Beispiel zuerst den Wochentag danach den Studentenausweis einfügen. Auf diese Weise müssen wir die Reihenfolge hier ändern. Sagen wir für Dienstag, wir haben wieder einen Schüler. Beachten Sie jedoch, dass die Reihenfolge der Spalten diesmal anders ist. Wir haben unsere benutzerdefinierte Reihenfolge ausgewählt, die wir zum Einfügen in diese Tabelle verwenden möchten, oder wir haben sie ausgewählt. Es ist jedoch wichtig, dass wir diese benutzerdefinierte Reihenfolge einhalten. Andernfalls geht die Tabelle davon aus, dass wir die Standardreihenfolge verwenden, und so werden auch die Werte eingefügt. Eine weitere wichtige Sache , auf die ich auch hinweisen möchte , ist, dass es hier wichtig ist , dass wir einfache Anführungszeichen verwenden , während wir keine doppelten Anführungszeichen verwenden. Ich werde gleich erklären, warum. Lass uns weitermachen und das machen. Wir werden die gesamte Abfrage ausführen. Sie wird hier in unsere Tabelle eingefügt. Lassen Sie mich es schließen und erneut öffnen. Es wird in unsere Tabelle eingefügt. Auch hier haben wir unseren Studentenausweis. Wir haben den Wochentag jetzt Dienstag, was genau das ist, was wir hier angegeben haben. Der Grund, warum wir keine doppelten Anführungszeichen verwenden möchten , ist, dass doppelte Anführungszeichen für Spaltennamen verwendet werden. Manchmal haben wir möglicherweise Spaltennamen, die mit etwas anderem in SQL kollidieren können. Um anzugeben, dass etwas eine Spalte ist, können wir es auch in doppelte Anführungszeichen setzen. Verwenden wir hier zum Beispiel Mittwoch. Verwenden wir hier die doppelten Anführungszeichen , um anzugeben, dass es sich um Spalten handelt. Auch dies wird für den ersten Studentenausweis sein. Nochmals, weil wir gerade auf diese Weise die Reihenfolge der Spalten angeben. Wenn wir weitermachen und das jetzt wiederholen, und ich irre mich , dass meine Schreibweise von Mittwoch falsch ist. Schauen wir uns unseren Wochentag und unseren Datentyp an, und ich werde es einfach tun, ich verstehe. Hier gab es einen zusätzlichen Platz. Nun, lassen wir es vorerst einfach so wie es ist. Wir müssen nur ein zusätzliches Leerzeichen davor platzieren. Hier können Sie dann natürlich auch sehen, was passiert, und genau das wollte ich als Nächstes behandeln. Aber Sie können sehen, was passiert, wenn Sie hier einen Wert in einen aufgezählten Datentyp eingeben, der nicht zum Datentyp selbst gehört jetzt mit der entsprechenden Formatierung Lassen Sie uns jetzt mit der entsprechenden Formatierung fortfahren und dies noch einmal ausführen und dann einen Blick auf unsere Tabelle werfen Okay. Schauen Sie sich hier eine Tabelle an. Wenn wir wollen, können wir es schließen und wieder öffnen. Wir können auch hier einfach auf die Schaltfläche „Aktualisieren“ klicken und wird unsere Tabelle aktualisiert , wie wir hier sehen können. Das können wir sehen, wenn wir zu unserer Konsole zurückkehren, indem wir hier die doppelten Anführungszeichen verwenden Lassen Sie uns erneut die Spalte angeben. Verwenden wir dagegen ein einfaches Anführungszeichen, geben wir den Wert an , den wir einfügen möchten. Wenn wir hier zum Beispiel doppelte Anführungszeichen einfügen, verwenden wir hier Donnerstag, aber in diesem Fall werden wir doppelte Anführungszeichen verwenden. Wir können bereits an der Farbcodierung erkennen , dass es fehlschlagen wird. Und lassen Sie uns das schließen. Aber lass es uns trotzdem versuchen. Lass uns weitermachen und das laufen damit wir sehen können , dass hier steht, die Spalte Donnerstag nicht existiert. Auch hier sind doppelte Anführungszeichen vier Spalten. Einfache Anführungszeichen stehen für Textzeichenfolgen. Wenn wir das jetzt ausführen, es hier einfügen und einfach unsere Seite neu laden, können wir hier jetzt wieder sehen, dass wir unsere Daten hier eingefügt haben Was passiert, wenn wir unseren Typ, den wir verwenden, aktualisieren wollen unseren Typ, den wir verwenden, da wir unseren Typ jetzt ein wenig durcheinander gebracht haben Was wir dafür tun können, ist uns unsere Typen hier noch einmal anzusehen Die Syntax, die wir verwenden werden, sagen wir, Typ ändern, und wir werden unseren Wochentag ändern. Wir werden Wert umbenennen sagen und wir werden Mittwoch zwei umbenennen, hier Sam Colon. Lassen Sie uns einen Blick auf unseren Typ werfen und ihn dann aktualisieren. Wir können hier jetzt sehen, dass unser Typ aktualisiert wurde. Ich stelle den gleichen Fehler hier am Sonntag fest. Machen wir weiter und machen das auch für Sonntag. Sonntag und wir werden das in Sonntag umbenennen. Lass uns weitermachen und das machen. Gehen wir hier zurück zu unseren Typen, beim Nachladen, und wir sehen hier, dass ein Sonntag jetzt auch behoben wurde Wenn wir uns unsere Datenbankaktualisierung ansehen, können wir tatsächlich feststellen , dass auch unser Datenbankwert entsprechend aktualisiert wurde Jetzt haben wir gesehen, wie wir Daten in unsere Datenbank einfügen können. Außerdem, wie wir den Typ ändern können, wenn wir wollen. Eine weitere Option ist natürlich, wenn Sie gerade neu anfangen eine völlig saubere Datenbank haben, Sie können die Tabelle auch einfach entfernen und den Typ einfach von Grund auf neu erstellen und dann mit dem richtigen Typ weitermachen. Natürlich gibt es verschiedene Möglichkeiten , dasselbe Problem zu lösen. 15. Ein SQL-Script erstellen: Wie Sie sehen, kann das Einfügen von Daten in unsere Tabellen etwas mühsam sein, vor allem, weil wir sie in SQL einen Wert nach dem anderen einfügen müssen Das ist normalerweise der Grund, warum Daten in SQL-Tabellen von hinten nach innen eingefügt werden, wo die Dinge mit den anderen Pipelines eingerichtet werden . Wann immer die erforderlichen Daten zu ihnen kommen oder sie passieren, werden sie dann in die Datenbank hochgeladen Die Verwendung des Einfügens in Anweisungen ist nicht besonders effizient, wenn Sie als Benutzer das tun müssen , weil Sie alles herausschreiben müssen Es ist viel effizienter, dies als Teil des Codes zu tun , wo das Teil Ihrer Datenpipeline ist , sodass Sie die Daten dann einfach in die Datenbank hochladen können Daten dann einfach in die Datenbank hochladen In den meisten Fällen werden Sie also keine Daten einfügen Wenn Sie es für Abfragen verwenden um entweder Ihre Daten zu untersuchen, zu analysieren oder sie entweder zu exportieren, um Ihre eigene benutzerdefinierte Analyse durchzuführen, oder um andere Dinge damit zu tun Seien Sie sich dessen bewusst. Jetzt gibt es einige Möglichkeiten, wie wir Daten schneller einfügen können. Wenn wir zum Beispiel zu unseren Event-Informationen gehen und sagen wir, in die Event-Info einfügen, und wir wollen die Werte einfügen und nur eine Vorstellung von einem und einem Namen geben, zum Beispiel Login, dann, wenn wir das ausführen können oder wenn wir tatsächlich mehrere Werte gleichzeitig eingeben wollen tatsächlich mehrere Werte gleichzeitig eingeben , werden hier zwei angeklickt. Wie Sie dann die Einfügewerte sehen können, können wir sie einfach durch Kommas trennen und dann steht jede Zeile oder jeder Datensatz, den wir hier einfügen möchten, in eigenen Klammern. Wir können zum Beispiel zwei Werte einfügen. Schauen wir uns unsere Event-Info-Tabelle an. Derzeit ist sie leer. Wenn wir das ausführen und dann einen Blick darauf werfen und unsere Tabelle aktualisieren, können wir sehen, dass wir zwei Werte gleichzeitig eingefügt haben. Aber auch das ist nicht besonders effizient. Auch hier gilt, dass dies in den meisten Fällen quasi die ganze Zeit vom Back-End aus erfolgt, wenn Ihre Daten die Daten-Pipelines passieren wenn Ihre Daten die Daten-Pipelines die Daten-Pipelines weil all dies automatisiert werden kann, und das ist extrem toll, weil Ihre Datenbank dann ständig mit Daten gefüllt wird , während Ihre Daten-Pipelines die Daten verarbeiten oder verschieben Für uns werden wir nun eine offene Datenbank verwenden, mit der wir herumspielen können. Bevor wir das tun, lassen wir einfach alle unsere Tabellen fallen. Wir werden sagen, lassen Sie uns hier bei der Großbuchstaben-Syntax bleiben. Wir werden die Tabelle mit den Veranstaltungsinformationen löschen. Lassen Sie uns weitermachen und das ausführen. In diesem Fall, weil wir unser Ereignisprotokoll mit einem Fremdschlüssel mit den Ereignisinformationen verknüpft haben . Wenn Sie sich erinnern, wie wir das Ereignisprotokoll erstellt haben, haben wir hier einen Link. Zu den Event-Informationen mit dem Fremdschlüssel. Wir werden auch die Cascade-Anweisung verwenden, um diese fortlaufende Reihe von Löschungen durchzuführen , bei denen sich all diese Verweise befinden. Das ausführen. Es wird unsere Event-Info-Tabelle für uns entfernen. Dann können wir dasselbe für die Benutzerinformationen erneut tun, indem wir das Ereignis kaskadieren, weil es immer noch im Ereignisprotokoll verknüpft ist, und dann können wir das Ereignisprotokoll löschen Hier müssen wir nichts mehr kaskadieren, weil es mit nichts mehr verknüpft ist mehr verknüpft Lass uns weitermachen und das entfernen. Und dann können wir auch die Testtabelle entfernen. Lass uns weitermachen und das entfernen. Dann können wir hier auch unseren zusätzlichen Wasserhahn schließen , weil er nicht mehr relevant ist. Wir kehren zurück zur Datenverwaltung und lassen uns einfach unseren Abfrage-Editor hier in unserer Abfragekonsole löschen . Um an unsere neuen Daten zu kommen, gehen wir zu dieser Einrichtungsseite hier für die Chinook-Datenbank Fügen Sie in der Registerkarte Materialien einen Link dazu ein, damit Sie auch von dort aus darauf verweisen können. Um diese Daten zu erhalten, wird das eine SQL-Abfrage sein , die wir ausführen können Sie können einfach hier auf Herunterladen klicken, und entweder wird sie direkt kostenlos heruntergeladen oder wie bei mir, sie wird sie in einer Sekunde öffnen, wenn ich darauf geklickt habe Es wird sie hier in einem neuen Tab öffnen und Sie können hier sehen, dass das alles eigentlich SQL-Anweisungen Auch hier gilt: Wenn Sie SQL haben oder wenn Sie SQL haben, ist die Tabelle in Ihr Unternehmen integriert. In den meisten Fällen wird es immer noch nicht mit SQL-Anweisungen eingefügt, sondern es wird direkt mit der SQL-Tabelle verbunden . Aber wie auch immer. Hier wird all dies mithilfe von SQL-Abfragen für uns erledigt. Wenn Sie möchten, können Sie sich das auch ansehen , um zu sehen, was es tatsächlich tut. Aber wenn Sie diese Abfrage dann verwenden möchten, klicken Sie mit der rechten Maustaste hier. Okay. Sie klicken mit der rechten Maustaste und können dann auf Speichern klicken. Dann habe ich es auf dem Desktop gespeichert, wie Sie bereits sehen können. Stellen Sie nur sicher, dass Sie die Punkt-TXT-Erweiterung wegnehmen die Punkt-TXT-Erweiterung , damit wir sie in einer Sekunde verwenden können. Und dann klicken Sie einfach auf Speichern. Sie können es natürlich auch speichern, wo immer Sie möchten. Das habe ich schon gemacht. Um diese SQL-Abfrage oder die Reihe von SQL-Abfragen, die wir jetzt heruntergeladen haben , auszuführen und sie unserer Datenbank hinzuzufügen. Wir werden hier mit der rechten Maustaste auf unser Schema klicken. Dann werden wir hier das SQL-Skript ausführen lassen. Wir werden dieses SQL-Skript hier wählen. Wir werden auf Öffnen klicken und dann wird es für uns ausgeführt. Wir können einfach warten, bis es fertig ist, was nur ein paar Sekunden dauern würde. Jetzt , wo es fertig ist, können wir hier sehen, dass es neue Tabellen für uns erstellt hat. Wir können uns jede einzelne ansehen, wenn wir wollen, und sie einfach ein bisschen erkunden, oder Sie können sie sich auch hier direkt ansehen. Jetzt haben wir Daten, die wir verwenden können, die tatsächlich viel mehr sind, als wir selbst manuell hätten einfügen können. Wenn Sie den Abfrage-Editor öffnen möchten weil es sich um einen Unfall handelt. Auch hier wissen wir, wie das geht. Auf diese Weise können wir dann auch SQL-Skripte ausführen, wenn wir wollen, wodurch wir in diesem Fall einfach eine Praxis erstellen oder eine Übungsdatenbank verwenden können , die wir dann für zusätzliche Abfragen verwenden Auch hier gilt: Wenn Sie mit einer Unternehmensdatenbank oder etwas anderem arbeiten, ist die Datenbank bereits gefüllt. Wenn Sie also einen Strich durch die Rechnung machen mit einer Unternehmensdatenbank oder etwas anderem arbeiten, , werden , Sie sich einfach darauf konzentrieren, entweder Ihre Analyse durchzuführen oder die notwendigen Daten zu finden, die Sie für weitere Dinge herausnehmen können. Da das Hochladen hauptsächlich in den Daten-Pipelines erfolgen wird in den Daten-Pipelines erfolgen wird es viel effizienter sein, all das automatisch als Teil der Pipelines zu aktualisieren . 16. Daten lesen: Ordnung. Nun, da uns unsere Tabellen zur Verfügung stehen, wollen wir nun lernen, wie wir tatsächlich Daten aus unseren Tabellen abrufen können . Lassen Sie uns weitermachen und einfach einen Blick auf die erste Tabelle hier werfen, die auf Alben namens Album. Wenn wir hier nur nachschauen, sehen wir, dass wir mehrere verschiedene Spalten haben, mehrere verschiedene Attribute, wir haben die Album-ID. Wir haben den Titel sowie eine Künstler-ID. Wir haben hier verschiedene Alben , die von verschiedenen Künstlern gemacht wurden, und jedes Album hat natürlich auch seine eigene eindeutige ID. Wie können wir Daten von hier bekommen? Wie können wir die Daten aus dieser Tabelle mit einer SQL-Abfrage lesen ? Wir kehren zu unserer Konsole zurück und stellen sicher, dass wir hier über die richtige Konsole mit der richtigen Datenquelle verbunden sind . Um nun Daten aus unserer Tabelle abzurufen, sagen wir: Wählen Sie aus. Dann sagen wir Stern, was alles bedeutet. Wählen Sie alle Spalten aus. Dann wollen wir aus dem Album auswählen. Wenn ich hier die Eingabetaste drücke und es automatisch vervollständigen lasse, werden Sie tatsächlich sehen, dass wir hier Anführungszeichen haben. Wir werden hier über diese und auch über diesen Stern sprechen und darüber, wie wir diese Dinge modifizieren können. Aber lassen Sie uns das zunächst ausführen und die Ergebnisse sehen, die wir erhalten. Wenn wir das ausführen, können wir hier sehen, dass dies die Ergebnisse sind, die wir mit unserer Abfrage erhalten. Wir können sehen, dass wir drei verschiedene Spalten ausgewählt haben. Wir haben die Album-ID, den Titel sowie die Künstler-ID, und wir können hier sehen, wir nach unten scrollen und eine Reihe von Daten auswählen können , oder in diesem Fall tatsächlich alle unsere Daten aus unserer Albumtabelle hier. Schauen wir uns zunächst diese Anführungszeichen an , denn in SQL-Abfragen werden Ihre Tabellennamen oft nicht in Anführungszeichen gesetzt. Woher kommt das? Nun, wenn wir uns das SQL-Skript ansehen, das wir ausgeführt haben, können wir hier tatsächlich die Anweisung create table sehen , die sie verwendet den Tabellennamen in Anführungszeichen gesetzt, haben. Sie hat den Tabellennamen in Anführungszeichen gesetzt, was bedeutet, dass wir jetzt mit Anführungszeichen darauf verweisen müssen. Wenn ich die Anführungszeichen weggenommen hätte, können Sie hier schon sehen, dass es rot wird, aber wir können trotzdem versuchen, es auszuführen. Wir werden eine Fehlermeldung bekommen, weil es heißt, dass die Tabelle nicht existiert. Wie können wir das ändern , weil es nicht sehr schön ist, es immer in Anführungszeichen setzen zu müssen . Um das zu aktualisieren, verwenden wir wieder die Anweisung alter table, und wir werden das Album erneut ändern, es hier in Anführungszeichen setzen , und dann sagen wir, zwei umbenennen, und jetzt nennen wir es einfach Album ohne die Anführungszeichen. Lassen Sie uns weitermachen und das ausführen. Lassen Sie uns jetzt die gleiche Select-Anweisung schreiben und Stern aus dem Album auswählen. Aber dieses Mal werden wir hier keine Anführungszeichen setzen. Wenn wir das ausführen, können Sie sehen, dass wir diesmal kein Problem haben, weil wir unsere Tabelle jetzt umbenannt haben, sodass wir von den Anführungszeichen zu einem Tabellennamen ohne Anführungszeichen wechseln den Anführungszeichen zu , was einfach viel praktischer ist weil wir nicht immer alles in Anführungszeichen setzen müssen . In einigen Fällen kann es vorkommen, dass Sie auf dieses Problem stoßen, und das liegt einfach daran, dass die Anweisung create table, wie wir hier sehen können, im ursprünglichen Create Table -Ding Anführungszeichen hatte . Lassen Sie uns hier auch über diesen Stern sprechen. Was wir hier einfügen, sind die Spalten, die wir aus unserer Tabelle auswählen möchten. In diesem Fall setzen wir Stern, das heißt, wählen Sie jede einzelne Spalte aus. Ich möchte manchmal nicht jede einzelne Spalte auswählen. Was ist, wenn wir manchmal nur eine Teilmenge von Spalten auswählen möchten eine Teilmenge von Spalten auswählen Nehmen wir an, wir interessieren uns nur für die Album-ID und den Titel. Wir wollen den Künstler nicht extrahieren. Nun, was wir tun können, ist , die Album-ID auszuwählen, und wir werden auch den Titel auswählen. Aus dem Album. Jetzt werden Sie wieder sehen, ich Anführungszeichen setzen muss, und auch hier hat das automatische Ausfüllen hier von Data Grip das für mich erledigt. Auch das liegt daran, dass wir, wenn wir hier in unsere SQL-Abfrage gehen, sehen können, dass die Tabellennamen auch mit Anführungszeichen erstellt wurden. Wenn wir zurückgehen, können wir hier wieder sehen, dass wir auch Tabellennamen in Anführungszeichen setzen müssen. Wenn wir das ausführen, können wir jetzt hier sehen unsere aktualisierten Ergebnisse nicht mehr die Künstler-ID enthalten, die wir hier haben. Stattdessen haben wir sowohl die Album-ID als auch den Titel. Jetzt können wir natürlich auch die Reihenfolge hier ändern. Anstatt zuerst die Album-ID zu haben, können wir vielleicht stattdessen den Titel und dann die Album-ID lesen . Wenn wir das also ausführen, können wir hier sehen, dass die Ausgabe der Reihenfolge unserer Spalten ebenfalls umgedreht wird Nach der Select-Anweisung hier wählen wir aus, welche Spalten wir wollen Wenn wir alle Spalten auswählen wollen, setzen wir einen Stern. Wenn wir bestimmte Spalten auswählen wollen, müssen wir ihren Namen hier eingeben. Anweisung Create Table verwendet bei der Definition der Spaltennamen keine Anführungszeichen, dann müssen wir sie hier auch nicht verwenden. In diesem Fall tun sie es jedoch, was bedeutet, dass wir sie auch in unserem Code verwenden müssen. Nun, manchmal, wenn Sie gerade eine Datenbank erkunden oder vielleicht eine Abfrage schreiben und die Ergebnisse der Abfrage sehen möchten, aber nicht möchten, dass alles zurückgegeben weil das Zurückgeben aller Daten, vor allem, weil es eine Menge Daten in Ihrer Datenbank gibt , eine Menge Arbeit ist. Es gibt eine zusätzliche Anweisung namens mit , die wir am Ende unserer Abfrage platzieren können . Dies begrenzt die Anzahl der Zeilen , die an uns zurückgegeben werden und tatsächlich angezeigt werden. Wenn ich es zum Beispiel auf fünf setze, bedeutet das, dass wir hier nur fünf Zeilen sehen werden. Es werden die ersten fünf Zeilen sein. Wenn wir das ausführen, können wir hier jetzt sehen uns nur die ersten fünf Zeilen zurückgegeben wurden. Wenn ich zwei beschränke, werden nur die ersten beiden Zeilen angezeigt. Wenn ich 50 mache , erhalten wir die ersten 50 Zeilen. Auf diese Weise können Sie auch verwalten, wie viele Werte zurückgegeben werden, die Sie entweder innerhalb von Abfragen verwenden können, wenn Sie möchten denn ich weiß nicht, ob Sie eine bestimmte benutzerdefinierte Filterung durchführen , oder Sie können sie auch verwenden, wenn Sie Ihre Abfragen testen und Sie nicht möchten, dass alle Werte zurückgegeben werden, Sie aber nur sicherstellen möchten dass sie ordnungsgemäß funktionieren, und Sie möchten also nur ein paar Werte, Sie möchten Ihre Ergebnisse auf ein paar Zeilen beschränken , damit Sie sie sich ansehen, sicherstellen können, dass sie richtig funktionieren oder vielleicht einige Fehler entdecken, Ihre Abfrage korrigieren, es erneut versuchen und dann, bis sie funktioniert, und dann können Sie auch wieder die Limit-Anweisung entfernen, die Limit-Anweisung entfernen, wenn Sie sie für den gesamten Datensatz ausführen möchten oder besser gesagt, wenn Sie möchten, dass alle Datensätze zurückgegeben werden. 17. Tabellen aus der Query erstellen: In der vorherigen Lektion haben wir also gelernt, wie wir Daten aus unseren Tabellen in unserer Datenbank lesen können . Aber jetzt schauen wir uns an, wie wir tatsächlich neue Tabellen aus den Ergebnissen erstellen können neue Tabellen aus den Ergebnissen , denn manchmal schreiben Sie vielleicht eine Abfrage und möchten diese Ergebnisse dann in einer separaten Tabelle speichern , sodass Sie entweder schnell zur Visualisierung darauf zugreifen können , weil Sie Daten verarbeitet haben , oder sie vielleicht woanders verwenden können. Daher kann es natürlich Situationen geben, in denen Sie die Ergebnisse Ihrer Abfrage nur in einer separaten Tabelle speichern möchten, um die Ergebnisse Ihrer Abfrage nur in einer separaten Tabelle speichern nur in einer separaten Tabelle später weiter zu verwenden. Wie können wir das tun? Um das zu tun, geben wir hier zuerst eine Tabelle ein und dann erhalten wir den Tabellennamen. Oh. Erstellen Sie eine Tabelle und wir haben den Tabellennamen. Vielleicht nennen wir dieses Album Ergebnisse und dann sagen wir als, und dann setzen wir Klammern um unsere ausgewählte Aussage wie folgt Das bedeutet, dass wir eine Tabelle erstellen und die Ergebnisse von hier verwenden werden Jetzt werden Sie feststellen, dass wir eigentlich keine der Spalten definieren oder auch keinen ihrer Datentypen definieren. All das wird aus den Ergebnissen unserer Abfrage hier abgeleitet aus den Ergebnissen unserer Abfrage hier Wenn wir das ausführen, dann behalten Sie hier einfach die linke Seite im Auge Wir können jetzt sehen, dass wir unsere Album-Ergebnistabelle haben, die, wie wir sehen können, nur die Ergebnisse unserer Abfrage hier ist und sie wird mit unserer Albumtabelle identisch sein , denn das ist wieder das, was wir von hier zurückgegeben haben. Wir können auch einen Blick hinein werfen, wenn wir wollen. Wir können hier einfach einen Blick hineinwerfen, wir können sehen, dass die Typen abgeleitet sind Eine Sache, die uns auffällt , ist , dass hier kein Primärschlüssel definiert ist Der Primärschlüssel sowie mögliche Fremdkeelings werden hier nicht in unsere neue Tabelle übernommen Aber wir können immer noch die Ergebnisse unserer Abfragen verwenden und sie dann in separaten Tabellen speichern , sodass wir diese Ergebnisse später für alles verwenden können , was wir speziell möchten Wie Sie mich jetzt schon mehrere Male gesehen haben, habe ich damit begonnen, unsere Abfragen auf mehrere Zeilen auszudehnen , nur um sie leichter lesbar zu machen. Manchmal ist es völlig in Ordnung gesamte Abfrage als eine einzige auszuführen, aber in anderen Fällen funktioniert das möglicherweise nicht oder es ist möglicherweise nicht optimal, weil es wirklich sehr lang wird. Sie können Ihre Abfrage natürlich auf mehrere Zeilen aufteilen , wodurch sie auch leichter lesbar ist. Normalerweise möchten Sie sie nach bestimmten Schlüsselpunkten aufteilen. Wenn Sie beispielsweise aus verschiedenen Spalten auswählen, möchten Sie in der Regel auch die FROM-Anweisung in einer neuen Zeile haben , und wir können hier eine korrekte Reihenfolge vornehmen. Wir möchten eine Tabelle erstellen und den Tabellennamen hier haben, und dann können wir unsere Abfrage hier platzieren. Wenn Sie beispielsweise bestimmte Spalten wie die Album-ID auswählen möchten. Dann können wir in der nächsten Zeile hier zum Beispiel den Titel angeben, sodass dieser Weg viel lesbarer wird und er nicht sehr weit in die Horizontale hineinreicht. Was passiert, wenn wir diese Abfrage erneut ausführen ? Das Ganze laufen lassen. Diesmal machen wir wieder einen Fehler , weil unsere Tabelle bereits existiert. Was wir tun können, ist unsere Create-Table-Anweisung hier zu ändern, und wir können sagen, Tabelle erstellen, falls nicht vorhanden. Das funktioniert jetzt für die Create Table-Anweisung , die das Ergebnis der SELECT-Anweisung verwendet, aber das funktioniert auch für unsere allgemeine Create Table-Anweisung. Denken Sie daran, als wir unsere Create Table hatten und dann den Tabellennamen angegeben haben und wir jede Spalte sowie jeden Typ sowie Primärschlüssel und Fremdschlüsselverweise sowie möglicherweise andere Einschränkungen definiert jede Spalte sowie jeden Typ sowie Primärschlüssel und Fremdschlüsselverweise haben. Auch dort können wir Create Table verwenden, falls es nicht existiert. Das Schöne daran ist, dass dadurch nur die Anweisung ausgeführt wird oder nur versucht wird, die Tabelle zu erstellen , wenn sie noch nicht existiert. Dann wird es nicht das Problem geben , mit einer bereits vorhandenen Tabelle zu kollidieren Nun möchte ich noch eine Sache durchgehen, wie wir auf Tabellennamen zugreifen können Lassen Sie uns das wieder entfernen und wir werden einfach alles auswählen. Jetzt machen wir gerade Hoop Lass uns hierher zurückkehren. Derzeit wählen wir alles aus dem Album aus und leiten daraus ab, welche Tabelle wir wollen, weil wir uns sowohl in der Datenbank als auch im Schema bereits befinden in der Datenbank als auch im Aber manchmal haben wir entweder mehrere Datenbanken oder mehrere Schemas Wie können wir genau auf die Tabelle verweisen , die wir wollen, wenn wir hier mehrere Datenbanken oder mehrere Schemas haben hier mehrere Datenbanken oder mehrere Schemas Wir können auch den vollständigen Pfad zu unserer Datenbank bzw. zu unserer Tabelle angeben . Wir können sagen, wir wollen von RDB ausgehen , hier wollen wir das öffentliche Schema wählen Und hier wollen wir das Album auswählen. Wenn wir jetzt auf Ausführen klicken, können Sie sehen, dass es immer noch vollständig funktioniert. In diesem Fall verweisen wir jedoch den vollständigen Pfad zu unserer Tabelle Das ist jetzt natürlich nützlich. Auch hier gilt: Wenn wir mehrere verschiedene Schemas oder mehrere verschiedene Datenbanken darin haben , können wir immer sicherstellen, dass wir bei sich wiederholenden Tabellennamen auf die richtigen Tabellen verweisen Ich kann dasselbe auch tun. Lassen Sie uns zum Beispiel unsere Albumergebnistabelle entfernen , die wir erstellt haben. Wir sagen „Tabelle löschen und löschen die Tabelle mit den Albumergebnissen mithilfe des vollständigen Referenzpfads. Wir könnten es hier auch nur mit dieser Komponente verwenden, aber wir können auch den vollständigen Referenzpfad verwenden. Wenn wir das ausführen und zusehen können, wie unsere Tabelle jetzt entfernt wird, können wir auch sehen, dass unser Datengriff sie aktualisiert und im Grunde sagt, dass dies nicht definiert ist. Das ist eine unbekannte Referenz. Wir können sehen, dass wir sowohl absolute Pfade als auch relative Pfade verwenden können sowohl absolute Pfade als auch relative Pfade Vieles davon ist einfach zu implementieren. In unserem Fall, wenn wir zum Beispiel nur eine Datenbank haben, Schema mit einer Reihe von Tabellen, wird es viel einfacher sein, einfach direkt auf die Tabelle zu verweisen , als den vollständigen Pfad anzugeben. Aber wenn Ihre Datenbank wächst oder Sie mehr Schemas erhalten oder vielleicht hat das Unternehmen bereits mehrere verschiedene Datenbanken oder mehrere verschiedene Schemas Die Verwendung dieser absoluten Pfade kann sich als nützlich erweisen , da dadurch sichergestellt wird, dass Sie auf die richtigen Tabellen verweisen 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. 19. Conditional: Jetzt haben wir gerade gesehen, wie wir Daten aus unserer Datenbank lesen können. Aber natürlich ist es wirklich nicht ideal, die gesamte Datenbank zu lesen oder sie nach einer bestimmten Anzahl oder Begrenzung von Zeilen abzuschneiden nach einer bestimmten Anzahl oder Begrenzung von . Im Idealfall möchten wir mehr mit SQL machen als nur alle Daten aus unserer Datenbank zu lesen. Das Erste, was wir zusätzlich lernen werden, ist das Filtern. Schauen wir uns diesen Track an. Tabelle hier. Wenn wir sie durchblättern, können wir sehen, dass wir hier verschiedene Spalten haben, wir haben die Track-ID, den Titelnamen, die Album-ID, die Medientyp-ID, die Genre-ID, die Komponisten, die Zeit und Millisekunden des Songs, die Bytegröße des Songs sowie den Preis für die Lassen Sie uns versuchen, anhand dieser Tabelle alle von ACDC komponierten Songs zu finden Um das zu tun, sagen wir „Wählen“ und wir sagen „Einfach starten Drücken Sie in der Track-Tabelle hier die Eingabetaste. Auch hier haben wir die Anführungszeichen. Nochmals, weil die Tabelle so mit den Anführungszeichen um sie herum erstellt wurde . Lassen Sie uns dann einfach weitermachen und unsere Ergebnisse für alle Fälle auf fünf Zeilen beschränken , damit wir sie überprüfen können, bevor wir die gesamte Tabelle zurückgeben. Um nun gezielt nach etwas zu filtern oder generell zu filtern, werden wir hier eine zusätzliche Anweisung namens where haben. Hier können wir sagen, wonach genau wir filtern wollen. Zum Beispiel wollen wir aktuell nach dem Komponisten filtern und herausfinden, wo der Komponist gleich ACDC ist Wie führen wir diesen Vergleich durch? Nun, Zeichenketten werden in einfache Anführungszeichen gesetzt , wie wir es hier haben oder Text wird in einfache Anführungszeichen gesetzt Gehen Sie hier zu unserer Datenbank. Wir nochmal, ACDC wird hier in Großbuchstaben geschrieben , mit einem Schrägstrich Wir werden sagen, wobei der Komponist gleich ACDC ist. Beachten Sie hier, dass wir ein einziges Gleichheitszeichen haben. Falls Sie eine andere Programmiersprache kennen, ist es üblich, doppelte Gleichheitszeichen und andere Sprachen zu verwenden . Aber in SQL haben wir hier ein einziges Gleichheitszeichen. Lassen Sie uns weitermachen und diese Abfrage ausführen. Wir können hier sehen, dass alle unsere Rückgabeergebnisse von ACDC erstellt wurden Wenn wir wollen, können wir dieses Limit auch hier deaktivieren und die vollständige Liste der Zeilen oder die vollständige Liste der Datensätze abrufen der Zeilen oder die vollständige Liste der Datensätze Wir können sehen, dass jeder einzelne Datensatz hier dieses ACDC-Kriterium erfüllt Jetzt können wir auch andere Arten von Vergleichen durchführen. Zum Beispiel ist etwas anderes, das wir tun können , kleiner oder gleich. Nun, es wird natürlich nicht viel Sinn machen , weniger als oder gleich mit einem Namen zu vergleichen , weil wir dann eine seltsame Textsortierung durchführen, die hauptsächlich auf alphabetischen Dingen basieren wird Es wird hier nicht so viel Sinn machen. Verwenden wir eine andere Spalte. Verwenden Sie hier die Millisekunden-Spalte. Nehmen wir an, die Millisekunden kleiner oder gleich, und wählen wir zwei 100.000 Millisekunden, 200 Wir wählen alle Zeilen oder alle Spalten aus der Spur aus, in der die Datensätze dieses Kriterium erfüllen , wobei die Millisekundenspalte Lassen Sie uns weitermachen und unsere Antwort erneut einschränken. Also werden wir das ausführen. Jetzt können wir sehen, wenn wir hier nach rechts scrollen Alle unsere Tracks haben eine Zeit von weniger als 200.000 Millisekunden, weniger als Auch hier können wir die Limit-Angabe weglassen. Führen Sie dies vollständig aus, anstatt alle Werte zurückzugeben. Wir können sehen, dass alle hier Zeiten von weniger als 200.000 Millisekunden haben , weniger als Wir können auch einen Wert größer als oder gleich angeben. Alles, was mindestens 200.000 sind. Und wir bekommen alles, was Millisekunden hier über 200.000 Millisekunden hat , wie wir hier sehen 200.000 Millisekunden Wir können auch einfach das Gleiche wegnehmen und einfach größer als sagen, oder wir können auch einfach weniger als machen und so können wir auch einfach weniger als machen und sehen, dass wir auch spezifische Filter wie diese durchführen können einfach größer als sagen, oder wir können auch einfach weniger als machen und so können wir sehen, dass wir auch spezifische Filter wie diese durchführen können. Der Hauptunterschied bei der Verwendung von weniger als oder kleiner als oder gleich besteht natürlich darin, dass „Gleich Zwei“ auch alles einschließt , was 200.000 entspricht, wohingegen „weniger als“ nur die Instanzen einschließen würde , die kleiner als 200.000 sind Hier hätten wir zum Beispiel eins, neun, neun, 999. Das wäre die höchste Instanz, die wir einbeziehen können, wenn wir annehmen , dass hier alles Integra ist , weil wir andernfalls 200.000 wären und das wäre also gleich und das wäre nur im Fall kleiner als oder gleich enthalten, oder wenn wir nach Gleichheit suchen, oder wenn wir nach größer als oder gleich suchen 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. 40. Unterfragen: Ordnung. In dieser Lektion werden wir uns mit etwas wirklich Cooles befassen, das Ihnen wirklich viel Flexibilität in Bezug auf die von Ihnen geschriebenen Abfragen bietet Flexibilität in Bezug auf die von , da Sie damit im Grunde verschiedene Ergebnisse miteinander verschachteln können. Worüber wir in dieser Lektion lernen werden, sind sogenannte Unterabfragen. Nun zu den Ideen, und lassen Sie uns zum Beispiel zu unserer Rechnungszeilentabelle zurückkehren Wir können jetzt eine SQL-Abfrage schreiben, in der wir zum Beispiel einfach nach der Rechnungs-ID gruppieren und dann einfach die Anzahl der Vorkommen zählen können. Wir können ein Ergebnis erhalten , das uns sagt, wie viele Käufe mit jeder Rechnung getätigt wurden Lassen Sie uns weitermachen und diese Abfrage einfach ganz schnell schreiben. Wir werden einfach zuerst unsere Skelett-SQL-Anweisung haben . Wir wählen aus der Rechnungstabelle aus und beschränken die Ergebnisse vorerst auf fünf, und beschränken die Ergebnisse bis wir uns mit unserer Abfrage sicher sind. Von hier aus wählen wir die Rechnungs-ID aus. Jetzt wollen wir auch eine Aggregation durchführen und nur die Anzahl der Artikel zählen, und nur die Anzahl der Artikel zählen die wir in der Rechnungs-ID haben Dazu benötigen wir auch eine Gruppierung nach Kontoauszug und wir müssen nach der Rechnungs-ID gruppieren Wenn wir das ausführen und dem Ganzen einen Alias als Anzahl der Artikel geben als Anzahl der Artikel Wenn Sie dabei sind, können wir hier sehen, erste Rechnungsnummer zum Beispiel zwei gekaufte Artikel enthält. Rechnungs-ID zwei hat vier Artikel. Rechnungs-ID drei hat sechs Artikel Sie können diese entfernen und einen Blick darauf werfen. Hier können wir sehen, dass unsere Daten so aussehen wie hier. Natürlich können wir es auch bestellen, zum Beispiel nach der Anzahl der Bestellungen nach der Anzahl der Artikel, vielleicht in einem Versandauftrag. Wir können hier all diese Rechnungen für den Kauf eines Artikels sehen , und wenn wir weiter unten nach unten gehen, haben wir jetzt die beiden Artikelspalten und so weiter. Wir haben jetzt diese Ergebnisse. Aber was ist, wenn wir jetzt wissen wollen, auf wie vielen Rechnungen zwei Artikel gekauft wurden? Im Grunde haben wir diese Aggregation ausgeführt, und jetzt wollen wir das Ergebnis dieser Aggregation verwenden , oder vielleicht haben wir eine andere Abfrage ausgeführt, und wir möchten das Ergebnis dieser Abfrage als Ausgangspunkt für die nächste Abfrage verwenden Abfrage als Ausgangspunkt für die nächste Problem ist, dass wir in diesem Fall nicht wirklich verwenden können, es gibt hier übrigens einen Tippfehler, wir können diese Spalte nicht wirklich verwenden, weil diese Spalte erst existiert, nachdem die Abfrage Wir können wirklich nichts anderes damit machen. Wir können keine zusätzliche Aggregation anhand der Anzahl der Elemente durchführen , da die Spalte selbst noch nicht existiert Sie existiert erst, nachdem wir diese Abfrage ausgeführt haben. Wie können wir dann die Ergebnisse verwenden und im Grunde weitermachen? Weil Abfragen manchmal komplizierter werden und Sie einen Teil der Verarbeitung ausführen und mit diesem Ergebnis dann mit etwas anderem fortfahren möchten. Vielleicht möchten Sie etwas verarbeiten. Mit dem Ergebnis möchten Sie dann eine gewisse Aggregation durchführen. Mit diesem Ergebnis möchten Sie dann zusätzliche Aggregation durchführen, jetzt jedoch auf einem anderen Referenzrahmen basiert , da Sie jetzt verschiedene Spalten haben , die möglicherweise aggregierte Ergebnisse darstellen Dazu können wir nun sogenannte Unterabfragen verwenden. Was eine Unterabfrage ist, ist im Grunde eine Möglichkeit für uns zu sagen, verwenden wir das Ergebnis einer Abfrage und nicht eine bestimmte Tabelle. Eine Unterabfrage sieht so aus , dass wir eine SELECT-Anweisung haben, und dann haben wir eine feste Aussage, genau wie zuvor, aber anstatt hier eine Tabelle zu haben, haben wir stattdessen eine Abfrage. Am Ende müssen wir dann auch einen Namen für eine Unterabfrage hinzufügen. Zum Beispiel können wir dieses Sub einfach für eine Unterabfrage aufrufen. Wir können dasselbe Format erkennen. Wir haben eine Select-Anweisung, dann haben wir das F. Aber anstatt hier einen Tabellennamen zu haben, haben wir stattdessen eine vollständige Abfrage. Was wir hier auswählen, ist das Ergebnis dieser ganzen Abfrage hier. Dann geben wir dem auch einen Alias und wir müssen unseren Unterabfragen tatsächlich einen Alias geben Andernfalls werden wir Probleme haben. Wir geben ihm einen Alias und nennen es Sub, damit wir später darauf verweisen können. Wenn wir das ausführen, erhalten wir dasselbe Ergebnis, weil wir im Moment nur aus den Ergebnissen auswählen alle Spalten aus dem Ergebnis von Unterabfragen auswählen aus dem Ergebnis von Unterabfragen Aber natürlich können wir jetzt zusätzliche Dinge tun. Jetzt können wir zum Beispiel auf die Anzahl der Artikel zugreifen. Wir können auch weiterhin auf die Rechnungs-ID zugreifen , da beide aus unserer Abfrage hier, aus unserer Unterabfrage, zurückgegeben wurden . Lassen Sie uns nun nach der Anzahl der Artikel gruppieren und zählen wie viele Rechnungen grundsätzlich in jede dieser Kategorien fallen. Wir zeigen jetzt also die Anzahl der Artikel an und müssen das nicht tun, wenn wir nur eine Unterabfrage haben, aber es empfiehlt sich, mit der Unterabfrage zu referenzieren , aus der wir das übernehmen denn wenn wir mehrere Unterabfragen haben, können wir doppelte Spaltennamen haben Genau wie wenn wir Joins machen oder so und wir auf die entsprechende Tabelle verweisen müssen, oder wir würden es vorziehen, auf die entsprechende Tabelle zu verweisen , um sicherzustellen, dass keine Verwirrung entsteht. Ähnlich ist es gut, wenn wir Unterabfragen verwenden oder generell Aliase haben, zum Beispiel generell Aliase haben, zum Beispiel auch nur für Tabellen, diese Namen zu verwenden, um sicherzustellen, dass wir auf die entsprechenden Werte verweisen Wir wählen die Anzahl der Zeilen aus unserer Unterabfrage aus. Jetzt wollen wir auch wieder eine Aggregation ausführen. Wir können einfach eins zählen, unten werden wir jetzt nach der Anzahl der Elemente gruppieren Und lassen Sie uns wieder hier bestellen. Und bis dahin wollen wir bestellen, und vielleicht sollten wir das zuerst mit Nägeln füllen Das hier können wir sagen, die Anzahl der Rechnungen. Ordnen wir nun nach der Anzahl der Rechnungen in einer Versandreihenfolge. Es macht nicht wirklich Sinn, die Reihenfolge nach Anweisung hier zu haben , weil wir in diesem Fall nicht das Ergebnis der Bestellung von verwenden. Nur um die Dinge effizienter zu gestalten, können wir die Reihenfolge für Anweisung einfach herausnehmen weil wir sie in keiner Weise verwenden, und wir ändern die Reihenfolge einfach später. Wir können es hier herausnehmen, weil wir es in einigen Fällen nicht verwenden Möglicherweise verwenden Sie die Bestellung tatsächlich. Falls, du kannst es in der Unterabfrage behalten. Aber in diesem Fall verwenden wir die Bestellung nicht , also nehmen wir sie raus Ich werde hier auch einige Einrückungen hinzufügen , nur um zu zeigen, dass das alles Teil derselben Unterabfrage ist, damit es leichter zu sehen ist, Wenn wir das jetzt ausführen und weitermachen und nach oben scrollen, sodass wir sehen können, haben wir 59 Rechnungen, auf denen jeweils neun Artikel gekauft wurden 59 Rechnungen, auf denen jeweils vier Artikel gekauft wurden. Tatsächlich haben wir eine Menge von 59 Fällen wahrscheinlich weil es sich um den Praxisdatensatz handelt. Dann haben wir 117 Rechnungen, denen jeweils zwei Artikel gekauft wurden. Wir können jetzt sehen, dass wir Unterabfragen verwenden können , um das Ergebnis einer Abfrage als Ausgangspunkt für die nächste Abfrage Unterabfragen sind wirklich nett, weil sie uns ermöglichen, diese Probleme zu umgehen Wo wir nur einige Ergebnisse haben und sie weiterhin verwenden wollen, aber wir können nicht auf die Spalten zugreifen, weil sie noch nicht existieren , weil sie erst erstellt werden, nachdem die Abfrage ausgeführt wurde. Daher wird es viele Fälle geben , in denen Sie eine Unterabfrage verwenden möchten, damit Sie die Ergebnisse der vorherigen Abfrage weiter verwenden können . In diesem Fall geben wir zwar die Rechnungsnummer in unserem Kontoauszug zurück, verwenden sie aber hier oben nicht. Nur um die Dinge sauber zu halten, können wir es sogar einfach entfernen, weil wir es eigentlich für nichts verwenden. In diesem Fall können wir einfach die Rechnungs-ID entfernen, um unsere Unterabfrage sauber zu halten, denn müssen wir sie nicht verwenden, also macht es keinen Sinn , sie zurückzugeben weil sie nicht viel Mehrwert bringt Weil wir nur die Anzahl der Artikel verwenden. Und jetzt, da wir die Anzahl der Elemente haben, die das Ergebnis einer Aggregation ist, können wir diese resultierende Spalte verwenden und zum Beispiel erneut eine Aggregation darauf ausführen, erneut eine Aggregation darauf ausführen jetzt stattdessen nach den Werten in dieser Spalte gruppieren 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.