PostgreSQL 기본강좌
SELECT 0 3 66,932

by PostgreSQL PostgreSQL SELECT PostgreSQL 기본 [2015.12.03]


SELECT 문법

SELECT는 한 개 또는 여러 개의 테이블의 열을 검색할 수 있습니다. SELECT의 일반적인 형태는 다음과 같습니다.

  • SELECT Syntax
  • 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 시작 행을 반환하기 전에 많은 행을 건너뛰는 역할을 합니다.

SELECT 예제

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

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by 지현명 [2015.12.15 12:38:19]

EXCEPT는 차집합 ㅎㅎ


by 김정식 [2016.11.22 15:59:20]

수정 하였습니다. ^^


by 우랭이 [2017.03.28 14:40:35]

except의 설명이 교집합과 같습니다. ㅎㅎ 두 집합 모두에 없는이 되야 할듯요 ^^;;

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입