Führen Sie PostgreSQL-Abfragen in PSQL aus
- Die grundlegende Methodik der Verwendung von PSQL
- Abfragen für jede Datenbank separat ausführen
-
Verwendung der
SINGLE LINE
-Syntax anstelle von Semikolon - Verwenden Sie die Datei zum Lesen von SQL-Abfragen in PSQL
PostgreSQL wird mit zwei Optionen geliefert, die erste Option ist PGADMIN4
oder eine andere Versionsnummer, die Sie verwenden werden, und die zweite Option ist PSQL. PSQL ist die Befehlszeilenschnittstelle, die mit unserer PostgreSQL-Sitzung interagieren und Abfragen von der Benutzeroberfläche ausführen kann.
Denken Sie daran, dass PSQL ein Terminal-basiertes Front-End ist und auch Argumente und Abfragen aus einer Datei und ihrer Befehlszeile entgegennehmen kann. Lassen Sie uns jetzt fortfahren und verstehen, wie unsere Abfragen in PSQL, der PostgreSQL-Befehlszeile, funktionieren.
Die grundlegende Methodik der Verwendung von PSQL
Nachdem Sie PSQL mit Ihrem Postgres-Benutzernamen und -Kennwort gestartet und sich erfolgreich angemeldet haben, ist es an der Zeit zu verstehen, wie Sie die Abfragen ausführen, die Sie in der PostgreSQL-Benutzeroberfläche in einer Befehlszeile ausführen würden.
Achten Sie bei Abfragen mit Schlüsselwörtern wie SELECT
, INSERT
, UPDATE
etc. auf die korrekte Syntax, um ungewollte Fehler zu vermeiden. Viele Leute neigen dazu, ein Semikolon ;
zu übersehen.
Das Fehlen eines Semikolons führt dazu, dass PSQL denkt, dass die Abfrage noch nicht beendet wurde, und das Drücken von ENTER wird dies nicht sicherstellen. Nehmen wir also an, Sie befinden sich wie folgt in Ihrer PSQL-Instanz:
INSERT
nun eine Tabelle in die Datenbank. Wir wollen eine Tabelle BAG
mit zwei Spalten ID
und MODEL
EINFÜGEN
.
Anfrage:
CREATE table BAG (id INT, model TEXT);
Ausgang:
Wenn Sie vergessen haben, ein Semikolon zu setzen und ENTER zu drücken, erhalten Sie keine Ausgabe auf dem Bildschirm und bleiben leer.
Ausgang:
Auf die gleiche Weise können Sie eine INSERT
-Abfrage ausführen, um nun einige Werte wie folgt einzugeben. Wir INSERT
die Datensätze ‘(1, Adidas)
’, ‘(2, Jale)
’ und ‘(3, Niky)
’.
Anfrage:
insert into BAG values (1, 'Adidas'), (2, 'Jale'), (3, 'Niky');
Ausgang:
Führen Sie die Abfrage SELECT
aus und geben Sie eine TABLE
zurück.
Ausgang:
Das Ausführen von Abfragen mit PSQL ist einfach. Es gibt jedoch eine Bedingung.
Wenn Sie dazu neigen, eine Abfrage vor einer Abfrage ohne Semikolon-Notation auszuführen, funktioniert die letztere Abfrage überhaupt nicht. Wenn ich also SELECT BAG
ohne Semikolon aufrufe und dann die INSERT
-Operation ausführe, würde PSQL einen Fehler anzeigen.
Ausgang:
Wenn Sie kein Semikolon nach SELECT
setzen, wurde die Abfrage nie beendet. Die nächste INSERT
-Abfrage wurde zufällig an diese SELECT
-Abfrage angehängt, und wenn sie ausgeführt werden sollte, würde sie einen Fehler verursachen.
Es ist also besser, immer auf Semikolons am Ende jeder Anweisung zu achten.
Abfragen für jede Datenbank separat ausführen
Wir können mehr als eine Datenbank haben. Das Ausführen einer Abfrage ohne Auflistung oder Angabe der Datenbank kann zu noch mehr Verwirrung führen.
Sehen wir uns zuerst alle unsere Datenbanken an. Um Datenbanken in PSQL anzuzeigen, können Sie unten eine Abfrage ausführen.
Anfrage:
\l or \l+
\l+
ist eine aussagekräftigere Version von \l
, mit einem angehängten +
. Ich habe meine Datenbanken im Folgenden aufgelistet.
Ausgang:
Im Fall von \l+
lautet das Ergebnis:
Ausgang:
Wir haben derzeit drei Datenbanken, POSTGRES
, TEMPLATE0
und TEMPLATE1
. Außerdem können wir die Anweisung SELECT
verwenden, um sie anzuzeigen.
Anfrage:
SELECT datname from PG_DATABASE:
Ausgang:
datname
-----------
postgres
template1
template0
(3 rows)
PG_DATABASE
ist ein Katalog, der alle Datenbankinformationen speichert, und DATNAME
ist eine Spalte innerhalb dieser Tabelle, die die Datenbanken speichert. Um eine Verbindung zur Datenbank Postgres herzustellen, verwenden wir den Befehl \c
.
Befehl:
\c postgres
Sie können dann die Abfrage ausführen, um die Tabellen als \dt
zu erhalten.
Anfrage:
\dt
Ausgang:
List of relations
Schema | Name | Type | Owner
--------+-----------------+-------+----------
public | animal | table | postgres
public | bag | table | postgres
public | bus | table | postgres
public | car | table | postgres
public | cat | table | postgres
public | dog | table | postgres
public | horse | table | postgres
public | identity_number | table | postgres
public | mytable | table | postgres
public | person | table | postgres
public | person_details | table | postgres
public | rider | table | postgres
public | strings | table | postgres
public | student | table | postgres
public | tab | table | postgres
public | vehicle | table | postgres
(16 rows)
Sie können sich jetzt mit der Datenbank TEMPLATE0
oder TEMPLATE1
verbinden, um ihre Tabellen anzuzeigen, aber sie zeigen einen Fehler, weil sie aufgrund der Standardeinstellungen keine eingehenden Benutzerverbindungen akzeptieren.
Ausgang:
Um eine Abfrage für eine bestimmte Datenbank auszuführen, verwenden Sie den Befehl \c
, um eine Verbindung herzustellen, und dann die Abfrage.
Anfrage:
psql -U postgres -d postgres -c "SELECT * from BAG;"
Stellen Sie nach dem Schlüsselwort -d
eine Verbindung zur Postgres-Datenbank her und führen Sie die Abfrage aus. Ich habe den Datenbanknamen geschrieben, zu dem eine Verbindung hergestellt werden soll, und dann den Befehl ausgegeben.
Achten Sie darauf, die Abfrage nach -c
nicht in einfache Kommas zu schreiben, was zu einem Fehler führt. Verwenden Sie doppelte Kommas, um daraus einen gültigen String zu machen, und schreiben Sie am Ende sicherheitshalber ein Semikolon.
Wenn Sie die doppelten Kommas nicht verwenden, führt dies zu einem Fehler wie im folgenden Beispiel.
Anfrage:
psql -U postgres -d postgres -c 'SELECT * FROM BAG;'
Ausgang:
psql: warning: extra command-line argument "*" ignored
psql: warning: extra command-line argument "FROM" ignored
psql: warning: extra command-line argument "BAG'" ignored
Verwendung der SINGLE LINE
-Syntax anstelle von Semikolon
Sie können den Befehl -S
oder --SINGLE-LINE
verwenden, um einzeilige Abfragen automatisch zu beenden, ohne dass ein Semikolon erforderlich ist. Führen Sie beim Initialisieren der PostgreSQL-Sitzung die folgenden Befehle aus.
Befehl:
psql -U postgres -S
oder
psql -U postgres --single-line
Wenn Sie Ihre PSQL-Sitzung ausführen, werden Sie Folgendes bemerken:
postgres^# __
Das bedeutet, dass sich postgres#
in postgres^#
geändert hat, was auf die Verwendung einer SINGLE LINE
-Anweisung hinweist.
Anfrage:
select * from BAG
Wenn Sie die obige Abfrage ausführen, funktioniert sie einwandfrei, und am Ende wird kein Semikolon (;
) angehängt. Wenn Sie Ihre Datenbank mit einem Passwort schützen, das bei jeder Sitzung erforderlich ist, können Sie beim Initialisieren einer Sitzung in PSQL das Schlüsselwort PGPASSWORD
verwenden.
Verwenden Sie die Datei zum Lesen von SQL-Abfragen in PSQL
Eine weitere nützliche Implementierung zum Lesen größerer SQL-Abfragen besteht darin, manchmal eine .sql
-Erweiterungsdatei mit geschriebenen SQL-Abfragen zu verwenden und sie über die PSQL-Befehlszeile auszuführen. Lassen Sie uns zum Beispiel eine Datei mit der Erweiterung .sql
mit der folgenden Abfrage erstellen.
Anfrage:
SELECT * from BAG;
Speichern wir es als QUERY1.SQL
auf unserem Desktop.
Um dies auszuführen, während unsere PSQL-Sitzung initialisiert wird. Verwenden Sie den folgenden Befehl.
Befehl:
psql -U postgres -f "C:\Users\Bilal Shahid\Desktop\query1.sql"
Ausgang:
id | mode
----+--------
1 | Adidas
2 | Jale
3 | Nikey
1 | Adidas
2 | Jale
3 | Nikey
1 | Adidas
2 | Jale
3 | Nikey
4 | John
5 | mike
(11 rows)
Es gibt ein weiteres Äquivalent für den Befehl -f
. Der Befehl \i
, wenn Sie sich bereits in der PSQL-Sitzung befinden und die Abfrage aus der Datei ausführen möchten.
Anfrage:
postgres=# \i 'C:/Users/Bilal Shahid/Desktop/query1.sql'
Verwenden Sie Backslashes (/
) und einzelne Kommas ('
), da andernfalls Fehler zurückgegeben werden.
Wir hoffen, dass Sie gelernt haben, PSQL effizient zu verwenden, und die verschiedenen Möglichkeiten verstanden haben, auf die Fehler auftreten können, und wie Sie diese umgehen können. Lesen Sie unsere Tutorials immer gründlich durch, um ein sorgfältiges und tiefes Verständnis zu erlangen.
Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!
GitHub