JDBC Driver for Google BigQuery

Build 24.0.9062

SELECT ステートメント

Google BigQuery API シンタックス

Google BigQuery API は、追加のSQL 演算子および関数を提供します。利用可能なシンタックスの完全なリストはこちらです。https://cloud.google.com/bigquery/query-reference

SELECT ステートメントは次の基本的な句で構成できます。

  • SELECT
  • INTO
  • FROM
  • JOIN
  • WHERE
  • GROUP BY
  • HAVING
  • UNION
  • ORDER BY
  • LIMIT

SELECT 構文

次の構文ダイアグラムは、本製品 のSQL エンジンでサポートされている構文の概要を示します。

SELECT {
  [ TOP <numeric_literal> | DISTINCT ]
  { 
    * 
    | { 
        <expression> [ [ AS ] <column_reference> ] 
        | { <table_name> | <correlation_name> } .* 
      } [ , ... ] 
  }
  { 
    FROM <table_reference> [ [ AS ] <identifier> ] 
  } [ , ... ]
  [ [  
      INNER | { { LEFT | RIGHT | FULL } [ OUTER ] } 
    ] JOIN <table_reference> [ ON <search_condition> ] [ [ AS ] <identifier> ] 
  ] [ ... ] 
  [ WHERE <search_condition> ]
  [ GROUP BY <column_reference> [ , ... ]
  [ HAVING <search_condition> ]
  [ UNION [ ALL ] <select_statement> ]
  [ 
    ORDER BY 
    <column_reference> [ ASC | DESC ] [ NULLS FIRST | NULLS LAST ]
  ]
  [ 
    LIMIT <expression>
    [ 
      { OFFSET | , }
      <expression> 
    ]
  ] 
} | SCOPE_IDENTITY() 

<expression> ::=
  | <column_reference>
  | @ <parameter> 
  | ?
  | COUNT( * | { [ DISTINCT ] <expression> } )
  | { AVG | MAX | MIN | SUM | COUNT } ( <expression> ) 
  | NULLIF ( <expression> , <expression> ) 
  | COALESCE ( <expression> , ... ) 
  | CASE <expression>
      WHEN { <expression> | <search_condition> } THEN { <expression> | NULL } [ ... ]
    [ ELSE { <expression> | NULL } ]
    END 
  | {RANK() | DENSE_RANK()} OVER ([PARTITION BY <column_reference>] {ORDER BY <column_reference>})
  | <literal>
  | <sql_function> 

<search_condition> ::= 
  {
    <expression> { = | > | < | >= | <= | <> | != | LIKE | NOT LIKE | IN | NOT IN | IS NULL | IS NOT NULL | AND | OR | CONTAINS | BETWEEN } [ <expression> ]
  } [ { AND | OR } ... ] 

サンプル

  1. すべてのカラムを返す:
    SELECT * FROM [publicdata].[samples].github_nested
  2. カラムをリネームする:
    SELECT [repository.name] AS MY_repository.name FROM [publicdata].[samples].github_nested
  3. カラムのデータを別のデータ型としてキャストする:
    SELECT CAST(repository.watchers AS VARCHAR) AS Str_repository.watchers FROM [publicdata].[samples].github_nested
  4. データを検索する:
    SELECT * FROM [publicdata].[samples].github_nested WHERE repository.name = 'EntityFramework'
  5. Google BigQuery API は、WHERE 句で次の処理をサポートしています:=, >, <, >=, <=, <>, !=, LIKE, NOT LIKE, IN, NOT IN, IS NULL, IS NOT NULL, AND, OR, +, -, *, /, %, ||。
    SELECT * FROM [publicdata].[samples].github_nested WHERE repository.name = 'EntityFramework';
  6. クエリ条件に一致するアイテムの数を返す:
    SELECT COUNT(*) AS MyCount FROM [publicdata].[samples].github_nested 
  7. クエリ条件に一致する一意のアイテムの数を返す:
    SELECT COUNT(DISTINCT repository.name) FROM [publicdata].[samples].github_nested 
  8. クエリ条件に一致する一意のアイテムを返す:
    SELECT DISTINCT repository.name FROM [publicdata].[samples].github_nested 
  9. 昇順で結果をソートする:
    SELECT actor.attributes.email, repository.name FROM [publicdata].[samples].github_nested  ORDER BY repository.name ASC
  10. 指定した行数に結果を制限する:
    SELECT actor.attributes.email, repository.name FROM [publicdata].[samples].github_nested LIMIT 10 
  11. 実行時にインプットに渡すためクエリをパラメータ化する。これにより、prepared statement を作成しSQL インジェクション攻撃を鎮めることができます:
    SELECT * FROM [publicdata].[samples].github_nested WHERE repository.name = @param
オフラインモードでSELECT ステートメントを使う方法については、明示的なデータのキャッシュ を参照してください。

疑似カラム

SELECT ステートメントで入力専用フィールドを使用できます。これらのフィールド(疑似カラム)は、結果には 通常のカラムとして表示されることはありませんが、WHERE 句の一部として指定できます。疑似カラムを使用して、Google BigQuery から追加機能にアクセスできます。

    SELECT * FROM [publicdata].[samples].github_nested WHERE Pseudo = '@Pseudo'
    

集計関数

集計関数を使用したSELECT の例については集計関数 を参照してください。

JOIN クエリ

JOIN を使用したSELECT クエリの例についてはJOIN クエリ を参照してください。

射影関数

射影関数を使用したSELECT 例については、射影関数 を参照してください。

叙述関数

叙述関数を使用したSELECT 例については、叙述関数 を参照してください。

Copyright (c) 2024 CData Software, Inc. - All rights reserved.
Build 24.0.9062