PostgreSQL - WHERE-Klausel

Die PostgreSQL WHERE-Klausel wird verwendet, um eine Bedingung anzugeben, während die Daten aus einer einzelnen Tabelle abgerufen oder mit mehreren Tabellen verknüpft werden.

Wenn die angegebene Bedingung erfüllt ist, wird nur dann ein bestimmter Wert aus der Tabelle zurückgegeben. Mit der WHERE-Klausel können Sie Zeilen herausfiltern, die nicht in die Ergebnismenge aufgenommen werden sollen.

Die WHERE-Klausel wird nicht nur in der SELECT-Anweisung verwendet, sondern auch in der UPDATE-, DELETE-Anweisung usw., die wir in den folgenden Kapiteln untersuchen würden.

Syntax

Die grundlegende Syntax der SELECT-Anweisung mit der WHERE-Klausel lautet wie folgt:

SELECT column1, column2, columnN
FROM table_name
WHERE [search_condition]

Sie können eine Suchbedingung mithilfe von Vergleichs- oder logischen Operatoren angeben . wie>, <, =, LIKE, NOT usw. Die folgenden Beispiele würden dieses Konzept verdeutlichen.

Beispiel

Betrachten Sie die Tabelle UNTERNEHMEN mit Aufzeichnungen wie folgt:

testdb# select * from COMPANY;
 id | name  | age | address   | salary
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas     |  15000
  3 | Teddy |  23 | Norway    |  20000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas     |  85000
  6 | Kim   |  22 | South-Hall|  45000
  7 | James |  24 | Houston   |  10000
(7 rows)

Hier sind einfache Beispiele für die Verwendung von PostgreSQL Logical Operators. Die folgende SELECT-Anweisung listet alle Datensätze auf, bei denen AGE größer oder gleich 25 istAND Gehalt ist größer oder gleich 65000.00 -

testdb=# SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000;

Die oben angegebene PostgreSQL-Anweisung führt zu folgendem Ergebnis:

id | name  | age |  address   | salary
----+-------+-----+------------+--------
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
(2 rows)

Die folgende SELECT-Anweisung listet alle Datensätze auf, bei denen AGE größer oder gleich 25 ist OR Gehalt ist größer oder gleich 65000.00 -

testdb=# SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000;

Die oben angegebene PostgreSQL-Anweisung führt zu folgendem Ergebnis:

id | name  | age | address     | salary
----+-------+-----+-------------+--------
  1 | Paul  |  32 | California  |  20000
  2 | Allen |  25 | Texas       |  15000
  4 | Mark  |  25 | Rich-Mond   |  65000
  5 | David |  27 | Texas       |  85000
(4 rows)

Die folgende SELECT-Anweisung listet alle Datensätze auf, bei denen AGE nicht NULL ist. Dies bedeutet, dass alle Datensätze vorhanden sind, da keiner der Datensätze AGE gleich NULL hat.

testdb=#  SELECT * FROM COMPANY WHERE AGE IS NOT NULL;

Die oben angegebene PostgreSQL-Anweisung führt zu folgendem Ergebnis:

id | name  | age | address    | salary
 ----+-------+-----+------------+--------
   1 | Paul  |  32 | California |  20000
   2 | Allen |  25 | Texas      |  15000
   3 | Teddy |  23 | Norway     |  20000
   4 | Mark  |  25 | Rich-Mond  |  65000
   5 | David |  27 | Texas      |  85000
   6 | Kim   |  22 | South-Hall |  45000
   7 | James |  24 | Houston    |  10000
(7 rows)

Die folgende SELECT-Anweisung listet alle Datensätze auf, bei denen NAME mit 'Pa' beginnt, unabhängig davon, was nach 'Pa' steht.

testdb=# SELECT * FROM COMPANY WHERE NAME LIKE 'Pa%';

Die oben angegebene PostgreSQL-Anweisung führt zu folgendem Ergebnis:

id | name | age |address    | salary
----+------+-----+-----------+--------
  1 | Paul |  32 | California|  20000

Die folgende SELECT-Anweisung listet alle Datensätze auf, bei denen der AGE-Wert entweder 25 oder 27 beträgt.

testdb=# SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );

Die oben angegebene PostgreSQL-Anweisung führt zu folgendem Ergebnis:

id | name  | age | address    | salary
----+-------+-----+------------+--------
  2 | Allen |  25 | Texas      |  15000
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
(3 rows)

Die folgende SELECT-Anweisung listet alle Datensätze auf, bei denen der AGE-Wert weder 25 noch 27 beträgt.

testdb=# SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );

Die oben angegebene PostgreSQL-Anweisung führt zu folgendem Ergebnis:

id | name  | age | address    | salary
----+-------+-----+------------+--------
  1 | Paul  |  32 | California |  20000
  3 | Teddy |  23 | Norway     |  20000
  6 | Kim   |  22 | South-Hall |  45000
  7 | James |  24 | Houston    |  10000
(4 rows)

Die folgende SELECT-Anweisung listet alle Datensätze auf, in denen der AGE-Wert zwischen 25 und 27 liegt.

testdb=# SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;

Die oben angegebene PostgreSQL-Anweisung führt zu folgendem Ergebnis:

id | name  | age | address    | salary
----+-------+-----+------------+--------
  2 | Allen |  25 | Texas      |  15000
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
(3 rows)

Die folgende SELECT-Anweisung verwendet die SQL-Unterabfrage, bei der die Unterabfrage alle Datensätze mit dem AGE-Feld mit SALARY> 65000 und höher findet. Die WHERE-Klausel wird zusammen mit dem EXISTS-Operator verwendet, um alle Datensätze aufzulisten, bei denen AGE aus der externen Abfrage im zurückgegebenen Ergebnis vorhanden ist durch Unterabfrage -

testdb=# SELECT AGE FROM COMPANY
        WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

Die oben angegebene PostgreSQL-Anweisung führt zu folgendem Ergebnis:

age
-----
  32
  25
  23
  25
  27
  22
  24
(7 rows)

Die folgende SELECT-Anweisung verwendet eine SQL-Unterabfrage, bei der die Unterabfrage alle Datensätze mit dem AGE-Feld mit SALARY> 65000 und höher findet. Die WHERE-Klausel wird zusammen mit dem Operator> verwendet, um alle Datensätze aufzulisten, bei denen AGE von einer externen Abfrage größer als das Alter in ist das von der Unterabfrage zurückgegebene Ergebnis -

testdb=# SELECT * FROM COMPANY
        WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);

Die oben angegebene PostgreSQL-Anweisung führt zu folgendem Ergebnis:

id | name | age | address    | salary
----+------+-----+------------+--------
  1 | Paul |  32 | California |  20000