DB/PostgreSQL

[ PostgreSQL ] SELECT - 데이터 조회하기

Soso Dev 2024. 10. 7. 13:31
반응형

PostgreSQL에서 데이터를 조회하는 방법은 SELECT 문을 사용합니다. SELECT 문을 통해 데이터베이스에서 원하는 데이터를 조회할 수 있으며, 다양한 조건을 사용하여 데이터를 필터링하거나 정렬할 수 있습니다. 아래에서 기본적인 SELECT 문법과 다양한 예제를 소개하겠습니다.

1. 기본 SELECT 문법

기본적인 SELECT 문법은 다음과 같습니다:

SELECT 열1, 열2, ... FROM 테이블이름;
  • 열1, 열2, ...: 조회할 열(컬럼) 이름을 지정합니다. 여러 열을 쉼표로 구분해서 나열합니다.
  • 테이블이름: 데이터를 조회할 테이블 이름을 지정합니다.

모든 열을 조회할 경우 *를 사용할 수 있습니다.

SELECT * FROM 테이블이름;

2. 예제 테이블 생성

예시를 위해 사용자 정보를 담고 있는 users 테이블을 만들고, 데이터를 삽입해보겠습니다.

CREATE TABLE users (
    id SERIAL PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(100),
    age INTEGER
);

이후 몇 개의 데이터를 삽입합니다:

INSERT INTO users (name, email, age) VALUES
('Alice Smith', 'alice@example.com', 25),
('Bob Brown', 'bob@example.com', 30),
('Charlie Johnson', 'charlie@example.com', 35),
('David Green', 'david@example.com', 40);

3. 데이터 조회 예제

3.1 모든 데이터 조회

가장 기본적인 조회는 테이블의 모든 데이터를 조회하는 것입니다.

SELECT * FROM users;

결과:

 id |      name      |        email        | age
----+----------------+---------------------+-----
  1 | Alice Smith    | alice@example.com    |  25
  2 | Bob Brown      | bob@example.com      |  30
  3 | Charlie Johnson| charlie@example.com  |  35
  4 | David Green    | david@example.com    |  40

3.2 특정 열만 조회

테이블의 특정 열만 선택하여 조회할 수 있습니다. 예를 들어, 이름과 이메일만 조회하려면:

SELECT name, email FROM users;

결과:

      name      |        email
----------------+---------------------
 Alice Smith    | alice@example.com
 Bob Brown      | bob@example.com
 Charlie Johnson| charlie@example.com
 David Green    | david@example.com

3.3 조건을 사용한 조회 (WHERE)

WHERE 절을 사용하여 조건을 추가해 특정 데이터를 조회할 수 있습니다. 예를 들어, 나이가 30 이상인 사용자를 조회하려면:

SELECT * FROM users WHERE age >= 30;

결과:

 id |      name       |        email        | age
----+-----------------+---------------------+-----
  2 | Bob Brown       | bob@example.com      |  30
  3 | Charlie Johnson | charlie@example.com  |  35
  4 | David Green     | david@example.com    |  40

3.4 데이터 정렬 (ORDER BY)

ORDER BY 절을 사용하여 결과를 정렬할 수 있습니다. 예를 들어, 나이 순으로 오름차순으로 정렬하려면:

SELECT * FROM users ORDER BY age ASC;

결과:

 id |      name      |        email        | age
----+----------------+---------------------+-----
  1 | Alice Smith    | alice@example.com    |  25
  2 | Bob Brown      | bob@example.com      |  30
  3 | Charlie Johnson| charlie@example.com  |  35
  4 | David Green    | david@example.com    |  40

내림차순으로 정렬하려면 DESC를 사용합니다.

SELECT * FROM users ORDER BY age DESC;

3.5 중복된 값 제거 (DISTINCT)

특정 열에서 중복된 값을 제거하여 조회할 수 있습니다. 예를 들어, 여러 행에서 동일한 나이를 가진 사용자가 있을 때 나이 값만 고유하게 출력하려면:

SELECT DISTINCT age FROM users;

결과:

 age
-----
  25
  30
  35
  40

3.6 제한된 개수의 행만 조회 (LIMIT)

LIMIT 절을 사용하여 출력되는 행의 수를 제한할 수 있습니다. 예를 들어, 상위 2명의 사용자만 조회하려면:

SELECT * FROM users LIMIT 2;

결과:

 id |      name      |        email        | age
----+----------------+---------------------+-----
  1 | Alice Smith    | alice@example.com    |  25
  2 | Bob Brown      | bob@example.com      |  30

3.7 특정 범위의 데이터 조회 (OFFSET)

OFFSET을 사용하여 조회된 결과에서 몇 개의 행을 건너뛸 수 있습니다. 예를 들어, 첫 번째 행을 건너뛰고 두 번째 행부터 조회하려면:

SELECT * FROM users LIMIT 2 OFFSET 1;

결과:

 id |      name      |        email        | age
----+----------------+---------------------+-----
  2 | Bob Brown      | bob@example.com      |  30
  3 | Charlie Johnson| charlie@example.com  |  35

4. 복합 조회 (조건, 정렬, 제한 등을 조합)

위의 여러 기능을 조합하여 보다 복잡한 조회도 가능합니다. 예를 들어, 나이가 30 이상인 사용자 중 상위 2명만 나이 내림차순으로 조회하려면:

SELECT * FROM users WHERE age >= 30 ORDER BY age DESC LIMIT 2;

결과:

 id |      name      |        email        | age
----+----------------+---------------------+-----
  4 | David Green    | david@example.com    |  40
  3 | Charlie Johnson| charlie@example.com  |  35

5. 함수와 집계 함수 사용

PostgreSQL은 다양한 집계 함수를 제공하여 데이터를 요약할 수 있습니다.

5.1 총 행 개수 구하기 (COUNT)

테이블에 있는 총 행 수를 조회하려면 COUNT 함수를 사용합니다.

SELECT COUNT(*) FROM users;

결과:

 count
-------
     4

5.2 평균값 구하기 (AVG)

나이의 평균값을 구하려면:

SELECT AVG(age) FROM users;

결과:

        avg
-------------------
 32.5000000000000000

5.3 최대값 (MAX), 최소값 (MIN)

나이의 최대값과 최소값을 구하려면:

SELECT MAX(age), MIN(age) FROM users;

결과:

 max | min
-----+-----
  40 |  25

6. 데이터 조회 요약

  1. 기본적인 데이터 조회는 SELECT 문을 사용하여 이루어집니다.
  2. WHERE 절을 통해 조건을 추가할 수 있으며, ORDER BY로 정렬할 수 있습니다.
  3. LIMITOFFSET을 사용하여 결과의 개수를 제한하거나 건너뛸 수 있습니다.
  4. 함수(COUNT, AVG, MAX, MIN 등)를 사용하여 집계 데이터를 얻을 수 있습니다.

이 예제들을 통해 PostgreSQL에서 다양한 방식으로 데이터를 조회하고 분석할 수 있습니다.

반응형