English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Clause WHERE PostgreSQL

In PostgreSQL, when we need to query data from a single table or multiple tables based on specific conditions, we can add the WHERE clause to the SELECT statement to filter out the data we do not need.

The WHERE clause can be used not only in SELECT statements, but also in UPDATE, DELETE, and other statements.

Syntax

The following is the general syntax for using the WHERE clause in SELECT statements to read data from the database:

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

We can use comparison operators or logical operators in the WHERE clause, such as >, <, =, LIKE, NOT, etc.

The content of COMPANY.SQL file is as follows:

-- This is the file to create COMPANY table and to populate it with 7 records.
-- Just copy and paste them on psql prompt.
DROP TABLE COMPANY;
CREATE TABLE COMPANY(
   ID INT PRIMARY KEY NOT NULL
   NAME TEXT NOT NULL
   AGE INT NOT NULL
   ADDRESS CHAR(50),
   SALARY REAL
);
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (1, 'Paul', 32, 'California', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (2, 'Allen', 25, 'Texas', 15000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (3, 'Teddy', 23, 'Norvège', 20000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (5, 'David', 27, 'Texas', 85000.00 );
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
VALUES (6, 'Kim', 22, 'South-Hall', 45000.00 );
INSERT INTO COMPANY VALUES (7, 'James', 24, 'Houston', 10000.00 );

Créer la table COMPANY, le contenu des données est le suivant :

w3codeboxdb# SELECT * FROM COMPANY;
 id | name | age | adresse | salaire
----+-------+-----+-----------+--------
  1 | Paul  |  32 | California|  20000
  2 | Allen |  25 | Texas |  15000
  3 | Teddy |  23 | Norvège |  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)

Dans les quelques exemples suivants, nous utilisons des opérateurs logiques pour lire les données du tableau.

AND

Trouver AGE(Âge) Le champ est supérieur ou égal à 25ET SALARY(Salaire) Le champ est supérieur ou égal à 65000 des données :

w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE >= 25 ET SALARY >= 65000;
 id | name | age | adresse | salaire
----+-------+-----+------------+--------
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
(2 rows)

OU

Trouver AGE(Âge) Le champ est supérieur ou égal à 25OU SALARY(Salaire) Le champ est supérieur ou égal à 65000 des données :

w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE >= 25 OU SALARY >= 65000;
id | name | age | adresse | salaire
----+-------+-----+-------------+--------
  1 | Paul  |  32 | California |  20000
  2 | Allen |  25 | Texas |  15000
  4 | Mark  |  25 | Rich-Mond |  65000
  5 | David |  27 | Texas |  85000
(4 rows)

NOT NULL

Trouver dans la table de l'entreprise : AGE(Âge) Les enregistrements de champ non vides :

w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE IS NOT NULL;
  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)

LIKE

Trouver dans la table COMPANY : NAME(名) Les données commençant par Pa dans le champ :

w3codeboxdb=# SELECT * FROM COMPANY WHERE NAME LIKE 'Pa%';
id | name | age |address    | salary
----+------+-----+-----------+--------
  1 | Paul |  32 | California|  20000

IN

La requête SELECT suivante énumère AGE(Âge) Champ est  25 ou 27 Données :

w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE IN ( 25, 27 );
 id | name  | age | address    | salary
----+-------+-----+------------+--------
  2 | Allen |  25 | Texas      |  15000
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
(3 rows)

NOT IN

La requête SELECT suivante énumère AGE(Âge) Champ n'est pas  25 ou 27 Données :

w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE NOT IN ( 25, 27 );
 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)

BETWEEN

La requête SELECT suivante énumère AGE(Âge) Champ dans  25 à 27 Données :

w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE BETWEEN 25 AND 27;
 id | name  | age | address    | salary
----+-------+-----+------------+--------
  2 | Allen |  25 | Texas      |  15000
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
(3 rows)

sous-requête

La requête SELECT suivante utilise également une sous-requête SQL, où la sous-requête lit SALARY(Salaire) Champ supérieur à 65000 des données, puis à travers EXISTS Opérateur de jugement pour déterminer s'il retourne des lignes, s'il y a des lignes retournées, il lit toutes les AGE(Âge) Champ.

w3codeboxdb=# SELECT AGE FROM COMPANY
        WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
 age
-----
  32
  25
  23
  25
  27
  22
  24
(7 rows)

La requête SELECT suivante utilise également une sous-requête SQL, où la sous-requête lit SALARY(Salaire) Champ supérieur à 65000 de AGE(Âge) Données de champ, puis utiliser > Requête opérateur supérieur à AGE(Âge) Données de champ :

w3codeboxdb=# SELECT * FROM COMPANY
        WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000);
 id | name | age | address    | salary
----+------+-----+------------+--------
  1 | Paul |  32 | California |  20000