2.5. 자료 조회
입력한 자료를 찾아보려면, 테이블을 질의해보아야하는데, 이것을 데이터베이스 용어로 쿼리라고 합니다. (주, 질의, 쿼리 같은 낯선 용어들이 쓰이지만, 여기서는 그냥 자료 조회라고 생각하고 넘어가면 됩니다) 이런 자료 조회를 할 때 사용하는 SQL 구문이 SELECT 구문입니다. 이 구문은 크게 세 부분으로 구성되는데, 첫번째는 원하는 자료의 칼럼들을 지정하고, 두번째는 그 칼럼들이 있는 테이블들 - from 절이라고 하고, 그 다음은 원하는 부분을 지정하는 조건절 - where 절이라고 합니다. 이 where 절은 선택적으로 사용됩니다. where 절이 생략되면 지정한 테이블의 모든 자료를 보여줍니다.
SELECT * FROM weather;
(여기서 * 문자는 "모든 칼럼"을 의미합니다.) 윗 쿼리의 결과는 다음과 같이 나오겠지요:
city | temp_lo | temp_hi | prcp | date
---------------+---------+---------+------+------------
San Francisco | 46 | 50 | 0.25 | 1994-11-27
San Francisco | 43 | 57 | 0 | 1994-11-29
Hayward | 37 | 54 | | 1994-11-29
(3 rows)
물론 사용자가 직접 입력한 그 내용으로 말입니다. 그럼 다음 다른 예로:
SELECT city, (temp_hi+temp_lo)/2 AS temp_avg, date FROM weather;
결과는:
city | temp_avg | date
---------------+----------+------------
San Francisco | 48 | 1994-11-27
San Francisco | 50 | 1994-11-29
Hayward | 45 | 1994-11-29
(3 rows)
각 도시의 일평균 기온을 구하는 방법입니다. 여기서 AS 예약어는 생략되어도 되고, 이것은 그 칼럼의 새로운 이름을 지정할 때 사용합니다.
where 절(조건절)에는 각종 불린연산자(boolean operator)들을 사용해서 조건을 지정할 수 있습니다. 다음은 San Francisco에서 비가 온 날을 찾는 쿼리입니다.
SELECT * FROM weather
WHERE city = 'San Francisco'
AND prcp > 0.0;
출력결과:
city | temp_lo | temp_hi | prcp | date
---------------+---------+---------+------+------------
San Francisco | 46 | 50 | 0.25 | 1994-11-27
(1 row)
마지막으로, 출력되는 그 결과의 정렬 방식을 지정하거나 똑 같은 값에 대해서는 하나만 보이도록 할 수도 있습니다:
SELECT DISTINCT city
FROM weather
ORDER BY city;
city
---------------
Hayward
San Francisco
(2 rows)
물론 DISTINCT , ORDER BY 구문이 각각 따로 사용되어도 됩니다.