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