Postgres schneiden den Befehl

Postgres schneiden den Befehl
PostgreSQL Crossects -Funktion kombiniert die resultierenden Werte von zwei oder mehr ausgewählten Aussagen. Diese Option wird verwendet, um die gemeinsamen Wesen in zwei oder mehr Tabellen zu holen. Dann wird ein einzelner resultierender Wert erhalten. Eine Reihe von Zeilen wird erhalten, die in beiden Tabellen vorhanden sind. Diese Funktion ist sehr hilfreich, um alle gemeinsamen Datensätze in einer einzelnen Abfrage durch mehr zu verwenden.

Syntax

Wählen Sie column_name1, column_name2 aus Tabelle1
SCHNEIDEN
Wählen Sie column_name1, column_name2 aus Tabelle2

Dies ist eine grundlegende Syntax der Kreuzungsfunktion. Dies kann geändert werden, indem ein Sternchen für alle Daten hinzugefügt wird, indem die Spaltennamen nicht angegeben werden. Der Befehl funktioniert so, dass beide ausgewählten Anweisungen funktionieren und den Datensatz abrufen. Anschließend wählt die Kreuzungsfunktion die gemeinsamen Daten aus und entfernen die ungewöhnliche.

Arbeiten der Kreuzungsfunktion in PostgreSQL

  • Diese Funktion wird nur verwendet, wenn wir in beiden angegebenen Spalten gemeinsame Daten oder doppelte Daten haben.
  • Es hilft, mit mehr als einem Tisch umzugehen, der dieselben Wesen aus den Tischen abholt.

Um den Befehl intersect zu implementieren, müssen wir hier drei Tabellen erstellen. Wir können beispielsweise jede Tabelle verwenden, aber um das Konzept der Kreuzung zu verstehen, müssen wir einige Attribute erben und ein Gelenk erstellen. Der erste enthält die gesamten Informationen über den Schüler. Während der zweite und der dritte Tabellen einen Teil der in der ersten hinzugefügten Informationen enthalten. Wir werden also den ersten Tisch namens Student erstellen.

>> Tabelle Student erstellen (
serieller Primärschlüssel student_id,
student_name varchar (255) nicht null
);

Die Tabelle enthält zwei Spalten, Studenten -ID und den Namen des Schülers. Jetzt werden wir weiter zwei Tabellen namens Subjekt und praktisch erstellen. Beide Tabellen stammen aus dem Student der Elterntabelle. Um sie zu verbinden, enthalten beide Tabellen den Hauptschlüssel der Schülertabelle als Fremdschlüsselbeschränkung, um eine Verbindung zwischen allen Tabellen zu erstellen. Beide unten genannten Tabellen haben ein eigenes Attribut und ein Attribut als Hauptschlüssel, das aus der Schülertabelle exportiert wurde.

Tabellen Betreff erstellen (
student_id int primärschlüssel,
Join_date Datum nicht null,
Fremd Key (student_id) referenzstudent (student_id)
);
Tabelle erstellen praktisch (
student_id int primärschlüssel,
Join_date Datum nicht null,
Fremd Key (student_id) referenzstudent (student_id)
);

Nach der Erstellung aller Tabellen verwenden wir eine Insert -Anweisung, um Daten darin einzugeben. Jede Tabelle wird nach der Ausführung des Befehls Daten erhalten.

>> In den Studenten (Student_Name) Werte ('Thomas'), ('Bay Hikel'), ('Jason Sily'), ('Robert Hunt'), ('Arjit Suba), (' Micky Angel '), einfügen (' Bay Hikel '), (' Jason Sily '). ('Shweta Singh'), ('Tom Ridle'), ('Sabana'), ('Timmy Honad');

Sie können sehen, dass die Daten nur in der Spalte Name eingefügt werden. Die Spalte ID wird automatisch wie die Seriennummer gefüllt. Und die Werte in der ID -Spalte des Subjekts und der praktischen Tabellen werden aus der Betreff Tabelle ausgefüllt. Das Einfügen in das Thema und die praktische Tabelle wird jedoch so sein, dass einige IDs in beiden Tabellen der Situation ähnlich sein sollten, die wir angewendet hatten.

In ähnlicher Weise werden das Thema und die praktischen Tabellen mit Daten eingefügt.

Einfügen in die Betreffwerte (1, '2000-02-01'), (2, '2001-06-01'), (5, '2002-01-01'), (7, '2005-06-01' ' );
>> in praktische Werte einfügen (9, '2000-01-01'), (2, '2002-06-01'), (5, '2006-06-01'), (10, 2005-06-06- 01 ');

Betreff Tabelle:

Praktische Tabelle:

Jetzt werden wir eine Auswahlanweisung verwenden, um die eingefügten Daten in der Studententabelle anzuzeigen.

>> aus dem Schüler auswählen;

Beispiel 1

In diesem Beispiel wird die Aufzeichnung derjenigen Studenten angezeigt, die sich sowohl den Fächern als auch den Praktikum aus der Studententabelle angeschlossen haben. Dies erfolgt mit einer Schnittanweisung, die sowohl auf Subjekt als auch für die praktische Tabelle angewendet wird. Dieser Befehl funktioniert so, dass er die Schüler -IDs sowohl im Fach als auch in der praktischen Klasse berücksichtigt. Die in beiden Tabellen üblichen IDs werden separat abgerufen.

>> Wählen Sie student_id aus dem Thema intersect scuding_id aus praktisch aus

Dies holt zwei Zeilen ab, da sich nur zwei Studenten sowohl für die Themen als auch für die Praktikum eingeschrieben haben. Beide IDs haben separate Verbindungsdaten, deshalb haben wir diese Spalte nicht abgerufen.

Betrachten Sie nun ein Szenario, in dem wir den Datensatz aus der Spalte ID und der Spalte join_date aus einer Tabelle abrufen möchten, in der die Daten in der ID -Spalte der praktischen Tabelle schneidet, und erraten Sie, was passieren wird?

>> SELECT STUDENT_ID, JOIN_DATE aus dem Thema Schnittpunkt wählen Sie student_id aus praktisch;

Ein Fehler tritt auf, da wir die gleiche Anzahl von Spalten in beiden Tabellen erwähnt haben müssen. Andernfalls funktioniert die Abfrage nicht.

Um diesen Fehler zu überwinden, werden wir nun beide Spalten für beide Tabellen aufnehmen, um sich für Kreuzung zu bewerben, aber leider gibt es keine einzige Zeile, die mit dem Join_date übereinstimmt. Wenn ein Datum des Verbindungsdatums in beiden Tabellen gleich ist, muss der resultierende Wert zwei Spalten mit einer gemeinsamen Zeile beider betroffenen Tabellen haben.

>> Wählen Sie student_id, join_date aus dem Thema intersect SELECT STUDENT_ID, join_date von praktisch;

Beispiel 2

Dieses Beispiel enthält denselben Kreuzungsbefehl, aber jetzt werden einige zusätzliche Funktionen in dem Befehl hinzugefügt. Diese Funktion wird verwendet, um das abgerufene Ergebnis anzuordnen. Aber wie wir mit dieser Klausel "Desc" erwähnen, ist das Ergebnis in absteigender Reihenfolge angeordnet.

>> Wählen Sie student_id aus dem Fachübergreifenden ERTECT SELECT STUDENT_ID Aus praktischer Reihenfolge von student_id desc;

Aus der Ausgabe können Sie erkennen, dass die Werte zuerst in aufsteigender Reihenfolge angeordnet wurden, der Desc, aber umgekehrt umgewandelt wurde.

Beispiel 3

In diesem Beispiel werden wir den Befehl Schnittpunkt in der Spalte student_id des Faches und in der Schülertabelle anwenden. Dann werden diese IDs, die wir nur in die Betreff Tabelle eingegeben haben.

>> Wählen Sie student_id aus dem Fachübergreifenden ERTECT SELECT STUDENT_ID VON STUDENT;

Beispiel 4

Wenn Sie eine Überschneidungsfunktion auf die gleiche Tabelle anwenden, die Sie ausgewählt haben. Sie können sehen, dass wir den Befehl Schnittpunkt in der praktischen Tabelle angewendet haben, ohne die Spalte anzugeben, sodass alle Daten zusammen mit dem Join -Datum abgerufen werden.

>> aus praktischer Schnittpunkt auswählen aus praktisch ausgewählt;

Postgres schneiden den Befehl über pgadmin

Jetzt werden wir den Befehl Kreuzung im Pgadmin -Dashboard genau wie PSQL überprüfen. Gehen Sie nach dem Öffnen der Schnittstelle zu den Tabellen in der Postgres -Datenbank- und Sequenzoptionen. Erweitern Sie weiter, bis Sie die Option Tabellen erhalten.

>> Wählen Sie student_id aus Practical Crossect Select Student_id vom Schüler aus;

Wir haben die obige Abfrage geändert, in der die Überschneidungsfunktion auf praktische und Schülertabelle angewendet wird.

Führen Sie nach der Anwendung der Abfrage sie aus, indem Sie die Option auswählen. Sie werden sehen, dass alle gemeinsamen IDs aus beiden angegebenen Tabellen im Befehl abgerufen werden.

Abschluss

Der Artikel "Postgres Crossect -Befehl" beschreibt die Arbeit dieses Operators im PostGRESQL -Datenbanksystem. Einige elementare Beispiele werden hier verwendet, um ihre Arbeit im Detail zu beschreiben. Jede gemeinsame Daten können einfach durch die Verwendung dieser Schnittfunktion in den Befehlen abgerufen werden, um eine Redundanz und Kopplung von Daten in einer Datenbank zu vermeiden.