본문 바로가기

개발일상/BigQuery

[BigQuery] 빅쿼리/Google SQL 기본 문법 (Query syntax)

Google SQL? SQL도 종류가 많다.

Google Standard SQL 이름이 Google SQL로 바뀌었다고 한다. 오늘은 BigQuery에서 사용하는 기본적인 SQL 문법을 알아보자.
사실 SQL은 정말 오랜만에 써본다. 학부 때 기억중 유일한 기억은 `select * from table` 정도. 하지만 이 쿼리는 바로...

스스로 불러온 재앙에 짓눌릴 수 있으니, 상황에 맞게 select 문을 잘 짜보자!
SQL은 ANSI/ISO 표준이지만 SQL 언어에는 다양한 버전이 있다. (예: MySQL, MS SQL Server, Oracle 등) 그러나 ANSI 표준을 준수하기 위해 모두 유사한 방식으로 최소한 주요 명령(예: SELECT, UPDATE, DELETE, INSERT, WHERE)을 지원한다. 하지만 각 DB마다 미묘하게 함수나 type들이 조금씩 달라서 잘 동작하지 않을 때가 있다. 오늘은 그래서 가장 기본인 Google SQL 의 기본 문법을 정리해보자. 위 문법의 우선순위만 알아도 훨씬 수월하다.

query_statement:
  query_expr

query_expr:
  [ WITH [ RECURSIVE ] { non_recursive_cte | recursive_cte }[, ...] ]
  { select | ( query_expr ) | set_operation }
  [ ORDER BY expression [{ ASC | DESC }] [, ...] ]
  [ LIMIT count [ OFFSET skip_rows ] ]

select:
  SELECT
    [ WITH differential_privacy_clause ]
    [ { ALL | DISTINCT } ]
    [ AS { STRUCT | VALUE } ]
    select_list
  [ FROM from_clause[, ...] ]
  [ WHERE bool_expression ]
  [ GROUP BY group_by_specification ]
  [ HAVING bool_expression ]
  [ QUALIFY bool_expression ]
  [ WINDOW window_clause ]

위 문법 중 괄호는 이런 의미를 가진다.

  • Square brackets [ ]: 대괄호는 옵션 (Optional clause).생략가능하다.
  • Curly braces with vertical bars { a | b | c }: 중괄호는 OR(Logical OR).하나의 옵션을 선택한다.
  • Ellipsis ...: 이전 항목이 반복될 수 있음
  • Double quotes ": 큰따옴표("")로 묶인 구문이 필요

SELECT 문

SELECT
  [ WITH differential_privacy_clause ]
  [ { ALL | DISTINCT } ]
  [ AS { STRUCT | VALUE } ]
  select_list

select_list:
  { select_all | select_expression } [, ...]

select_all:
  [ expression. ]*
  [ EXCEPT ( column_name [, ...] ) ]
  [ REPLACE ( expression [ AS ] column_name [, ...] ) ]

select_expression:
  expression [ [ AS ] alias ]

각각의 구문에 관련된 문법은 필요시마다 알아보기로 하자. 예를 들어 join의 기본은 요렇게. 필요할 때마다 하나씩 알아보자!

출처 : w3 schools
반응형