SELECT는 한 개 또는 여러 개의 테이블의 열을 검색할 수 있습니다. SELECT의 일반적인 형태는 다음과 같습니다.
SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] [ * | expression [ [ AS ] output_name ] [, ...] ] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING condition [, ...] ] [ WINDOW window_name AS ( window_definition ) [, ...] ] [ { UNION | INTERSECT | EXCEPT } [ ALL | DISTINCT ] select ] [ ORDER BY expression [ ASC | DESC | USING operator ] [ NULLS { FIRST | LAST } ] [, ...] [ LIMIT { count | ALL } ] [ OFFSET start [ ROW | ROWS ] ]
SELECT절에서 쓰일 수 있는 Option은 다음과 같습니다.
Option | 기능 |
---|---|
SELECT ALL | 중복되는 열까지 결과값으로 출력해 주는 역할 |
SELECT DISTINCT ON | 중복되는 열들을 결과값에서 제거하는 역할 |
AS | alias의 약자로 선택한 column의 이름을 AS를 사용하면 새로운 이름으로 지정하여 출력할 수 있습니다. |
FROM | 한 개 또는 그 이상의 테이블을 지정할 수 있습니다. |
WHERE | FROM절의 테이블 내에서 조건을 만족하는 행을 검사합니다. |
GROUP BY | 동일한 값을 가진 데이터를 집계해서 조회하고자 할 때 사용합니다. 예를 들어 각 부서의 평균연령, 부서의 인원이 몇 명인지를 집계해서 다른 부서와 비교할 수 있습니다. |
HAVING | 절은그룹을 가지고 조건을 비교할 때 사용합니다. GROUP BY와 함께 쓰입니다. 예를들어 주어진 조건을 만족하지 않은 그룹을 제거할수 있습니다. |
UNION | 열의 개수가 동일하고 타입이 동일한 2개의 집합들의 결과값을 결합하여 반환합니다. |
INTERSECT | 교집합과 같은 원리로 두 집합모두에 있는 열들을 반환합니다. |
EXCEPT | 차집합과 같은 원리로 두 집합모두에 있는 열들을 반환합니다. |
ORDER BY | 파일을 정렬하는데 ASC와 DESC를 사용하여 오름차순과 내림차순을 설정할 수 있습니다. |
LIMIT | 쿼리결과의 개수를 제한할 수 있습니다. |
OFFSET | 시작 행을 반환하기 전에 많은 행을 건너뛰는 역할을 합니다. |
Weather_reports 테이블에서 time, report, location컬럼을 추출합니다.
이때 location컬럼에서 중복되는 컬럼은 제거합니다. 마지막으로 행을 정렬할 때 location은 오름차순, time은 내림차순으로 정렬합니다.
SELECT DISTINCT ON (location) location, time, report FROM weather_reports ORDER BY location, time DESC;
Student 테이블에서 student_no가 5인 사람의 모든 정보를 출력합니다.
SELECT * FROM student WHERE student_no= 5;
films테이블에서 kind컬럼이 같은 것끼리 그룹을 짓습니다. 그리고 len컬럼의 총합을 total로 지정합니다. 그리고 sum(len)의 값이 5시간보다 작은 것들을 선택해서 출력합니다.
SELECT kind, sum(len) AS total FROM films GROUP BY kind HAVING sum(len) < interval '5 hours';
Distributors테이블에서 name이 W로 시작하는 사람을 추출하고 actors테이블에서 name이 W로 시작하는 사람을 추출하여 함께 출력합니다.
SELECT distributors.name FROM distributors WHERE distributors.name LIKE 'W%' UNION SELECT actors.name FROM actors WHERE actors.name LIKE 'W%';
- 강좌 URL : http://www.gurubee.net/lecture/2951
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.