PostgreSQL-WHERE 절

PostgreSQL WHERE 절은 단일 테이블에서 데이터를 가져 오거나 여러 테이블과 결합하는 동안 조건을 지정하는 데 사용됩니다.

주어진 조건이 충족되면 테이블에서 특정 값을 반환합니다. WHERE 절을 사용하여 결과 집합에 포함하지 않으려는 행을 필터링 할 수 있습니다.

WHERE 절은 SELECT 문에서만 사용되는 것이 아니라 UPDATE, DELETE 문 등에서도 사용되며 다음 장에서 살펴볼 것입니다.

통사론

WHERE 절이있는 SELECT 문의 기본 구문은 다음과 같습니다.

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

비교 또는 논리 연산자를 사용하여 search_condition 을 지정할 수 있습니다 . >, <, =, LIKE, NOT 등. 다음 예제는이 개념을 명확하게합니다.

다음과 같은 레코드가 있는 테이블 COMPANY 를 고려하십시오.

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)

다음은 PostgreSQL 논리 연산자의 사용법을 보여주는 간단한 예입니다. 다음 SELECT 문은 AGE가 25보다 크거나 같은 모든 레코드를 나열합니다.AND 급여가 65000.00 이상-

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

위에 주어진 PostgreSQL 문은 다음 결과를 생성합니다-

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

다음 SELECT 문은 AGE가 25보다 크거나 같은 모든 레코드를 나열합니다. OR 급여가 65000.00 이상-

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

위에 주어진 PostgreSQL 문은 다음 결과를 생성합니다-

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)

다음 SELECT 문은 AGE가 NULL이 아닌 모든 레코드를 나열하여 모든 레코드를 의미합니다.

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

위에 주어진 PostgreSQL 문은 다음 결과를 생성합니다-

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)

다음 SELECT 문은 NAME이 'Pa'로 시작하는 모든 레코드를 나열하며 'Pa'뒤에 오는 것은 중요하지 않습니다.

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

위에 주어진 PostgreSQL 문은 다음 결과를 생성합니다-

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

다음 SELECT 문은 AGE 값이 25 또는 27 인 모든 레코드를 나열합니다.

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

위에 주어진 PostgreSQL 문은 다음 결과를 생성합니다-

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도 아닌 모든 레코드를 나열합니다.

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

위에 주어진 PostgreSQL 문은 다음 결과를 생성합니다-

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 값이 BETWEEN 25 AND 27에있는 모든 레코드를 나열합니다.

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

위에 주어진 PostgreSQL 문은 다음 결과를 생성합니다-

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

다음 SELECT 문은 SALARY> 65000 이상을 갖는 AGE 필드가있는 모든 레코드를 subquery가 찾는 SQL 하위 쿼리를 사용하며, 이후 WHERE 절이 EXISTS 연산자와 함께 사용되어 반환 된 결과에 외부 쿼리의 AGE가있는 모든 레코드를 나열합니다. 하위 쿼리-

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

위에 주어진 PostgreSQL 문은 다음 결과를 생성합니다-

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

다음 SELECT 문은 하위 쿼리가 SALARY> 65000 이상을 갖는 AGE 필드가있는 모든 레코드를 찾고> 연산자와 함께 사용되는 모든 레코드를 찾는 SQL 하위 쿼리를 사용하여 외부 쿼리의 AGE가 나이보다 큰 모든 레코드를 나열합니다. 하위 쿼리에 의해 반환 된 결과-

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

위에 주어진 PostgreSQL 문은 다음 결과를 생성합니다-

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