[ PostgreSQL ] SELECT - 데이터 조회하기
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. 데이터 조회 요약
- 기본적인 데이터 조회는
SELECT
문을 사용하여 이루어집니다. WHERE
절을 통해 조건을 추가할 수 있으며,ORDER BY
로 정렬할 수 있습니다.LIMIT
와OFFSET
을 사용하여 결과의 개수를 제한하거나 건너뛸 수 있습니다.- 함수(
COUNT
,AVG
,MAX
,MIN
등)를 사용하여 집계 데이터를 얻을 수 있습니다.
이 예제들을 통해 PostgreSQL에서 다양한 방식으로 데이터를 조회하고 분석할 수 있습니다.