Open Source RDBMS - Seamless, Scalable, Stable and Free

한국어 | Login |Register

Versions available for this page: CUBRID 8.2.1 |  CUBRID 8.3.0 |  CUBRID 8.3.1 |  CUBRID 8.4.0 |  CUBRID 8.4.1 |  CUBRID 8.4.3 |  CUBRID 9.0.0 | 



개요

설명

SELECT 문은 지정된 테이블에서 원하는 컬럼을 조회한다.

구문

SELECT [ <qualifier> ] <select_expressions>

    [ { TO | INTO } <variable_comma_list> ]

    [ FROM <extended_table_specification_comma_list> ]

    [ WHERE <search_condition> ]

    [ GROUP BY {col_name | expr} [ ASC | DESC ],...[ WITH ROLLUP ] ]

    [ HAVING  <search_condition> ]

    [ ORDER BY {col_name | expr} [ ASC | DESC ],... [ FOR <orderby_for_condition> ] ]

    [ LIMIT [offset,] row_count ]

    [ USING INDEX { index name [,index_name,...] | NONE }]

 

<qualifier> ::= ALL | DISTINCT | DISTINCTROW | UNIQUE

 

<select_expressions> ::= * | <expression_comma_list> | *, <expression_comma_list>

 

<extended_table_specification_comma_list> ::=

<table specification> [ {, <table specification> | <join table specification> }... ]

 

<table_specification> ::=

 <single_table_spec> [ <correlation> ] [ WITH (lock_hint) ]|

 <metaclass_specification> [ <correlation> ] |

 <subquery> <correlation> |

 TABLE ( <expression> ) <correlation>

 

<correlation> ::= [ AS ] <identifier> [ ( <identifier_comma_list> ) ]

 

<single_table_spec> ::= [ ONLY ] <table_name> |

                      ALL <table_name> [ EXCEPT <table_name> ]

 

<metaclass_specification> ::= CLASS <class_name>

 

<join_table_specification> ::=

[ INNER | [ LEFT | RIGHT [ OUTER ] ] JOIN <table specification> ON <search condition>

 

lock_hint :

READ UNCOMMITTED

 

<orderby_for_condition> ::=

ORDERBY_NUM() { BETWEEN int AND int } |

    { { = | =< | < | > | >= } int } |

    IN ( int, ...)

  • qualifier : 한정어. 생략이 가능하며 지정하지 않을 경우에는 ALL로 지정된다.
    • ALL : 테이블의 모든 레코드를 조회한다.
    • DISTINCT : 중복을 허용하지 않고 유일한 값을 갖는 레코드에 대해서만 조회한다. DISTINCTROW와 동일하다.
    • UNIQUE : DISTINCT와 동일하게 중복을 허용하지 않고 유일한 값을 갖는 레코드에 대해서만 조회한다.
  • select_expression :
    • * : SELECT * 구문을 사용하면 FROM 절에서 명시한 테이블에 대한 모든 컬럼을 조회할 수 있다.
    • expression_comma_list : expression은 컬럼 이름이나 경로 표현식, 변수, 테이블 이름이 될 수 있으며 산술 연산을 포함하는 일반적인 표현식도 모두 사용될 수 있다. 쉼표(,)는 리스트에서 개별 표현식을 구분하는데 사용된다. 조회하고자 하는 컬럼 또는 연산식에 대해 AS 키워드를 사용하여 별칭(alias)를 지정할 수 있으며, 지정된 별칭은 컬럼 이름으로 사용되어 GROUP BY, HAVING, ORDER BY, FOR 절 내에서 사용될 수 있다. 컬럼의 위치 인덱스(position)는 컬럼이 명시된 순서대로 부여되며, 시작 값은 1이다.
    • expression에는 AVG, COUNT, MAX, MIN, SUM과 같이 조회된 데이터를 조작하는 집계 함수가 사용될 수 있다. 만약 expression으로 집계 함수가 사용되는 경우, 집계 함수는 하나의 결과만 반환하기 때문에 SELECT 컬럼 리스트에 집계 함수로 그룹되지 않은 일반 컬럼이 명시될 수 없다.
  • table_name. * : 테이블 이름을 지정한다. *을 사용하면 명시한 테이블에 대한 모든 컬럼을 지정하는 것과 같다.
  • variable : select_expression이 조회하는 데이터는 하나 이상의 변수에 저장될 수 있다.
  • [:]identifier : TO(또는 INTO) 다음에 :식별자를 쓰면 조회하는 데이터를 ':identifier'의 변수에 저장할 수 있다.
예제 1

다음은 역대 올림픽이 개최된 국가를 중복 없이 조회한 예제이다. 이 예제는 demodb의 olympic 테이블을 대상으로 수행하였다. DISTINCT 또는 UNIQUE 키워드는 질의 결과가 유일한 값만을 갖도록 만든다. 예를 들어 host_nation 값이 'Greece'인 olympic 인스턴스가 여러 개일 때 질의 결과에는 하나의 값만 나타나도록 할 경우에 사용된다.

SELECT DISTINCT host_nation FROM olympic;

  host_nation

======================

  'Australia'

  'Belgium'

  'Canada'

  'Finland'

  'France'

...

예제 2

다음은 조회하고자 하는 컬럼에 컬럼 별칭을 부여하고, ORDER BY 절에서 컬럼 별칭을 이용하여 결과 레코드를 정렬하는 예제이다. 이때, LIMIT 절 및 FOR ORDERBY_NUM 함수를 사용하여 결과 레코드 수를 5개로 제한한다.

SELECT host_year as col1, host_nation as col2 FROM olympic ORDER BY col2 LIMIT 5;

         col1  col2

===================================

         2000  'Australia'

         1956  'Australia'

         1920  'Belgium'

         1976  'Canada'

         1948  'England'

 

SELECT CONCAT(host_nation, ', ', host_city) AS host_place FROM olympic

ORDER BY host_place FOR ORDERBY_NUM() BETWEEN 1 AND 5;

  host_place

======================

  'Australia,  Melbourne'

  'Australia,  Sydney'

  'Belgium,  Antwerp'

  'Canada,  Montreal'

  'England,  London'