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 specified 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, etc. 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.
COMPANY.SQL file content 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, 'Norway', 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 );
COMPANY 테이블을 생성하면 데이터 내용이 다음과 같습니다:
w3codeboxdb# 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)
다음 몇 가지 예제에서는 로직 연산자를 사용하여 테이블 데이터를 읽습니다.
찾아내 AGE(연령) 필드가 크게等于 25및 SALARY(급여) 필드가 크게等于 65000 데이터:
w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE >= 25 AND SALARY >= 65000; id | name | age | address | salary ----+-------+-----+------------+-------- 4 | Mark | 25 | Rich-Mond | 65000 5 | David | 27 | Texas | 85000 (2 rows)
찾아내 AGE(연령) 필드가 크게等于 25또는 SALARY(급여) 필드가 크게等于 65000 데이터:
w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE >= 25 OR SALARY >= 65000; 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)
회사 테이블에서 찾아내 AGE(연령) 필드가 비어있지 않은 기록:
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)
COMPANY 테이블에서 찾아내 NAME(이름) 파일드에서 Pa로 시작하는 데이터:
w3codeboxdb=# SELECT * FROM COMPANY WHERE NAME LIKE 'Pa%'; id | name | age |address | salary ----+------+-----+-----------+-------- 1 | Paul | 32 | California| 20000
아래의 SELECT 문은 다음과 같은 필드를 나열합니다 AGE(연령) 필드가 25 또는 27 데이터:
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)
아래의 SELECT 문은 다음과 같은 필드를 나열합니다 AGE(연령) 필드가 25 또는 27 데이터:
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)
아래의 SELECT 문은 다음과 같은 필드를 나열합니다 AGE(연령) 필드가 25 에서 27 데이터:
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)
아래의 SELECT 문은 SQL의 서브 쿼리를 사용하며, 서브 쿼리 문장에서 SALARY(급여) 필드가 크다 65000의 데이터를 사용하여 EXISTS 데이터가 있는지 확인하는 연산자를 사용하여, 데이터가 있으면 모든 데이터를 읽습니다. AGE(연령) 필드.
w3codeboxdb=# SELECT AGE FROM COMPANY WHERE EXISTS (SELECT AGE FROM COMPANY WHERE SALARY > 65000); age ----- 32 25 23 25 27 22 24 (7 rows)
아래의 SELECT 문은 SQL의 서브 쿼리를 사용하며, 서브 쿼리 문장에서 SALARY(급여) 필드가 크다 65000의 AGE(연령) 필드 데이터를 사용하여 > 데이터가 큰 AGE(연령) 필드 데이터:
w3codeboxdb=# SELECT * FROM COMPANY WHERE AGE > (SELECT AGE FROM COMPANY WHERE SALARY > 65000); id | name | age | address | salary ----+------+-----+------------+-------- 1 | Paul | 32 | California | 20000