クエリ言語リファレンス(バージョン 0.7)

Google Visualization API のクエリ言語を使用すると、データソースへのクエリを使用してさまざまなデータ操作を行うことができます。

目次

はじめに

一般的に、ビジュアリゼーションは特定の形式のデータを想定しています。たとえば、円グラフでは、テキストラベルと数値の 2 つの列にデータが存在すると想定できます。データソース内のデータが、この構造と完全には一致しない場合があります。たとえば、データソースに 3 つ以上の列が含まれている場合や、列の順序が円グラフの期待値と一致していない場合があります。

クエリ言語を使用すると、データ操作とフォーマットのリクエストをデータソースに送信し、返されるデータ構造とコンテンツが想定どおりのものであることを確認できます。

クエリ言語の構文は SQL に似ています。SQL を使い慣れているデベロッパーは、このクエリ言語をすばやく学習し、使用できます。ウェブ上に多数ある SQL チュートリアルをご覧ください。このクエリ言語と SQL にはいくつか違いがあります。詳しくは、構文のセクションをご覧ください。

データソースでクエリ言語を実装する必要はなく、存在する場合は言語のすべての機能を実装できます。特に理由がない限り、この言語のすべての機能を実装する際にデータソースに依存しないようにしてください。

クエリ言語の使用

クエリ文字列は、JavaScript コード内から、またはデータソース URL 内のパラメータとして設定することにより、2 つの方法でデータソース リクエストに追加できます。リクエストにクエリ文字列が含まれていない場合、データソースのデフォルトの動作では、デフォルトの行/列の順序と形式を使用して、すべての行と列が返されます。これを変更するには、データソースへのリクエストにクエリ文字列を含めます。

JavaScript からのクエリの設定

JavaScript コード内からクエリ文字列を設定するには、google.visualization.Query クラスの setQuery メソッドを呼び出します。

var query = new google.visualization.Query(DATA_SOURCE_URL);
query.setQuery('select dept, sum(salary) group by dept');
query.send(handleQueryResponse);

データソース URL でクエリを設定する

クエリ文字列は、tq パラメータを使用してデータソース URL に追加できます。JavaScript ではなく URL パラメータでクエリを設定すると、他のデベロッパーが作成したビジュアル表示を簡単に使用できるほか、クエリをカスタマイズすることもできます。

クエリ文字列は、URL パラメータとして適切にエンコードする必要があります。URL をエンコードするには、JavaScript の encodeURIComponent 関数を使用するか、このセクションの最後にあるエンコード ツールを使用して手動でエンコードします。

例:

Google スプレッドシートの次のクエリ文字列について考えてみましょう。(スプレッドシートの列 ID は常に文字になります。公開済みのスプレッドシートに表示される列見出しテキストは ID ではなくラベルです。クエリ文字列で、ラベルではなく ID を使用する必要があります)。

select A, sum(B) group by A

エンコードすると、このクエリは次のようになります。

select%20A%2C%20sum(B)%20group%20by%20A

スプレッドシートの URL が次のようになっているとします。

https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4

スプレッドシートの URL に /gviz/tq?tq=YOUR_QUERY_STRING を追加して、最終的なクエリ文字列を取得します。

https://docs.google.com/a/google.com/spreadsheets/d/1r8_mfnZAvTFmT02JHi1XgOwn_-sLCR9XgmR8wEQ4uW4/gviz/tq?tq=select%A%2C%20sum(B)%20group%20by%20A

以下のツールを使用して、クエリ文字列をエンコードまたはデコードします。

注: 非公開のスプレッドシート データにアクセスするには、OAuth を使用して明示的な認証認証情報を渡す必要があります。詳しくは、Google スプレッドシート: 承認をご覧ください。

言語の構文

概要

Google Visualization API のクエリ言語の構文は、SQL の構文に似ています。これは SQL のサブセットですが、学習が必要な独自の機能がいくつかあります。SQL に詳しくなれば、それほど難しくなることはありません。

データテーブル

このドキュメントでは、「データテーブル」という用語は、クエリの結果セットを指します。データテーブルは行と列で構成されます。データテーブルの各列には次のプロパティがあります。

  • ID(または列 ID)。クエリ内の列を参照するために使用されます。クエリでは、識別子のみでラベルごとに列を参照しないでください。ヒント: スペースを含む ID は使用しないでください。スペースは管理が難しく、コーディングでは小さなミスを見落とすこともあります。また、スペースを含む ID はバッククォートで囲む必要があります。
  • ラベルstring。通常はエンドユーザーに表示されます。たとえば、円グラフ内の凡例や、表内の列見出しなどがこれに該当します。
  • データ型。サポートされているデータ型は、stringnumberbooleandatedatetimetimeofday です。列のすべての値には、列の型と一致するデータ型、または null 値があります。これらの型は JavaScript 型に似ていますが、同じではありません。このページのリテラル セクションをご覧ください。
  • フォーマット パターン。データソースでは、一部またはすべての列の書式設定パターンを定義できます。このパターンをオーバーライドするには、format 句を含めます。

すべての例で使用されている表:

このセクション全体を通して、すべてのクエリの例を次の表に示します。列見出しは列識別子で、

名前
string
部門
string
ランチタイム
timeofday
給与
number
hireDate
date
年齢
number
シニア
boolean
年数開始日
datetime
Johnエンジニアリング12:00:00
1000
2005-03-1935true2007-12-02 15:56:00
Daveエンジニアリング12:00:00
500
2006-04-1927falsenull
サリーエンジニアリング13:00:00
600
2005-10-1030falsenull
Benセールス12:00:00
400
2002-10-1032true2005-03-09 12:30:00
ダナ語セールス12:00:00
350
2004-09-0825falsenull
Mikeマーケティング13:00:00
800
2005-01-1024true2007-12-30 14:40:00

言語句

クエリ言語の構文は、次の句で構成されます。各句は 1 つまたは 2 つのキーワードで始まります。すべての句は省略可能です。句はスペースで区切ります。句の順序は、次の順序で指定する必要があります。

使用状況
select 返される列とその順序を選択します。省略した場合は、テーブルのすべての列がデフォルトの順序で返されます。
where 条件に一致する行のみを返します。省略すると、すべての行が返されます。
group by 複数の行の値を集計します。
pivot 列内の個別の値を新しい列に変換します。
order by 行を列の値によって並べ替えます。
limit 返される行数を制限します。
offset 最初の数の指定された行をスキップします。
label 列のラベルを設定します。
format 特定の書式パターンを使用して、特定の列の値を書式設定します。
options その他のオプションを設定します。
from from 句は言語から削除されました。

 

選択

select 句は、返される列とその順序を指定するために使用されます。 この句を指定しない場合、または select * を使用した場合は、データソース テーブルのすべての列が元の順序で返されます。列は、ラベルではなく識別子によって参照されます。たとえば、Google スプレッドシートでは、列識別子は 1 ~ 2 文字の列文字(A、B、C、...)です。

select 句のアイテムは、列識別子、または集計関数スカラー関数演算子の出力です。

例:

select *
select dept, salary
select max(salary)

次の例では、スペースを含むメールアドレス(メールアドレス)や予約語(日付)を参照する場合、バッククォートを使用します。

select `email address`, name, `date`

サンプル テーブルに対して次のクエリを実行します。

select lunchTime, name

次のレスポンスを返します。

ランチタイム name
12:00:00John
12:00:00Dave
13:00:00サリー
12:00:00Ben
12:00:00ダナ語
13:00:00Mike

場所

where 句は、指定した条件に一致する行のみを返すために使用されます。

シンプルな比較演算子は <=, <, >, >=, =, !=, <> です。両方の比較演算子 != <> は等しくありません。文字列は辞書式値によって比較されます。等価性は、ほとんどのコンピュータ言語における == ではなく、= で示されます。 null との比較は is null または is not null を使用して行います。

複数の条件は、論理演算子 andornot を使用して結合できます。かっこを使用して明示的な優先度を定義できます。

where 句は、より複雑な文字列比較演算子もサポートしています。 これらの演算子は 2 つの文字列を引数として受け取ります。文字列以外の引数(日付や数字など)は、比較前に文字列に変換されます。文字列一致では大文字と小文字が区別されます(この問題に対処するには、upper() または lower()スカラー関数を使用できます)。

  • contains - 部分文字列の一致。contains全体partwhole 内のどこかにある場合は true です。例: where name contains 'John' は「John」、「John Adams」、「Long John Silver」に一致しますが、「john adams」は一致しません。
  • starts with - 接頭辞を一致させます。value starts with接頭辞は、接頭辞の先頭にある場合は true です。例: where dept starts with 'engineering' は「engineering」と「engineering manager」に一致します。where dept starts with 'e' は「engineering」、「eng」、「e」に一致します。
  • ends with - 接尾辞と一致します。value ends with 接尾辞value の末尾にある場合は true です。例: where role ends with 'y' は「cowboy」、「boy」、「y」に一致します。
  • matches - (正規表現の)正規表現に一致します。haystackneedle は、needlehaystack が一致する場合に true となります。例: where country matches '.*ia' はインドとナイジェリアを照合しますが、インディアナ州は一致しません。これはグローバル検索ではないため、where country matches 'an' は「カナダ」とは一致しません。
  • like - 2 つのワイルドカードをサポートするテキスト検索。0 以上の文字に一致する % と、任意の 1 文字に一致する _(アンダースコア)です。これは SQL の LIKE 演算子に似ています。例: where name like fre% は「fre」、「fred」、「freddy」に一致します。

例:

where salary >= 600
where dept != 'Eng' and date '2005-01-21' < hireDate
where (dept<>'Eng' and isSenior=true) or (dept='Sales') or seniorityStartTime is null

サンプル テーブルに対して次のクエリを実行します。

select name where salary > 700

次のレスポンスを返します。

name
John
Mike

グループ条件

group by 句は、行全体で値を集計するために使用されます。 group-by 句内の値の個別の組み合わせごとに、1 つの行が作成されます。order by 句で特に指定されていない限り、データはグループ列によって自動的に並べ替えられます。

注: group by 句を使用する場合は、select 句にリストされているすべての列が group by 句にリストされているか、または集計関数でラップされている必要があります。

例:

select dept, max(salary) group by dept

サンプル テーブルに対して次のクエリを実行します。

select lunchTime, avg(salary), count(age) group by isSenior,lunchTime

次のレスポンスを返します。

ランチタイム 平均給与 年齢制限
12:00:00 425 2
13:00:00 600 1
12:00:00 700 2
13:00:00 800 1

ピボット

pivot 句は、列内の個別の値を新しい列に変換するために使用されます。たとえば、「year」列でピボットすると、元のテーブルに表示される一意の年ごとに列を持つテーブルが生成されます。これは、たとえば折れ線グラフで可視化する際に、各列を別々の線として描画する場合に便利です。年ごとに別々の線を引く場合や、「year」が元のテーブルの列の 1 つである場合、必要なデータ変換にはピボット オペレーションを使用すると便利です。

注: pivot 句を使用する場合は、select 句にリストされているすべての列が group by 句にリストされているか、または集計関数でラップされている必要があります。

複数の列にピボット列の値が同じである場合があるため、ピボットは集計を意味します。group by を使用せずに pivot を使用すると、結果テーブルには行が 1 つだけ含まれます。たとえば、サンプル テーブルで次のクエリを実行します。

select sum(salary) pivot dept

次のレスポンスを返します。

エンジニアの給与合計 マーケティング合計給与 売上合計給与
2100 800 750

これは、2100 は Eng 部門の給与を合計し、800 はマーケティング部門の給与を合計したものです。

pivotgroup by と一緒に使用すると、さらに便利な場合があります。これは、各セルに関連する行と関連する列の集計結果が含まれるテーブルを作成するためです。たとえば、サンプル テーブルで次のクエリを実行します。

select dept, sum(salary)
  group by dept
  pivot lunchTime

次のレスポンスを返します。

dept 12:00:00 給与合計 13:00:00 給与
エンジニアリング 1500 600
マーケティング null 800
セールス 750 null

このテーブルを「反転」するには、列と行を切り替えて、pivot 列と group by 列を切り替えます。サンプル テーブルに対して次のクエリを実行します。

select lunchTime, sum(salary)
  group by lunchTime
  pivot dept

次のレスポンスを返します。

ランチタイム エンジニアの給与合計 マーケティング合計給与 売上合計給与
12:00:00 1500 null 750
13:00:00 600 800 null

pivot 句で複数の列を使用することもできます。この場合、レスポンス テーブルの列は、元のテーブルに存在する列の値の一意の組み合わせをすべて構成します。たとえば、サンプル テーブルで次のクエリを実行します。

select sum(salary)
  pivot dept, lunchTime

次のレスポンスを返します。

Eng:12:00:00 sum-salary Eng:13:00:00 給与合計 マーケティング,13:00:00 給与 売上、12:00:00 給与
1500 600 800 750

元のテーブルに表示されている組み合わせだけが、レスポンス テーブル内の列に表示されます。そのため、マーケティング、12:00:00、または販売: 13:00:00 の列はありません。

複数の集計を使用することもできます。たとえば、サンプル テーブルで次のクエリを実行します。

select sum(salary), max(lunchTime)
  pivot dept

次のレスポンスを返します。

エンジニアの給与合計 マーケティング合計給与 売上合計給与 Eng の max-lunchTime マーケティング max-lunchTime 売上最大ランチ時間
2100 800 750 13:00:00 13:00:00 12:00:00

select 句では複数の集計を、group by 句では複数の列、pivot 句では複数の列を組み合わせることができます。内部的には、集計はグループ内の列を連結し、ピボット句で列を連結して行われます。

pivot 句で指定された列は、selectgroup byorder by 句で指定することはできません。pivot を使用する場合、order by 句に集計列を含めることはできません。これは、select 句で指定された集計ごとに、結果テーブルに多くの列が生成されるためです。ただし、pivot が使用されている場合は集計列を書式設定できます。このような形式の結果、ピボット オペレーションによって生成された、特定の集計に関連する新しい列はすべて、指定されたパターンでフォーマットされます。上記の例では、format sum(salary) "some_format_string" を追加すると、Eng の salary 列、Marketing salal-salary、Sales salal-salary 列に影響します。

集計列にラベルを付けることができます。label 句でラベルが指定されていない場合、ピボットの結果として生成される列のラベルは、ピボット列の値のリスト、集計タイプ(min、max、sum、...)と、集計された列のラベルで構成されます。例: 「Eng,12:00:00 sum Salary」select 句で 1 つの集計のみを指定した場合は、集計部分がラベルから削除され、ピボット列の値のリストのみが保持されます。例: 「Eng,12:00:00」label 句で集計列にラベルを指定すると、select 句に集計が 1 つしかない場合と、複数の集計がある場合の両方で、リクエストされたラベルが値のリストに追加されます。たとえば、label sum(salary) "sumsal" の場合、列ラベルは「Eng, 12:00:00 sumsal」、「Eng, 13:00:00 sumsal」などになります。

並べ替え条件

order by 句は、指定された列の値によって行を並べ替えるために使用されます。

order by 句内の項目は、列識別子、または集計関数スカラー関数演算子の出力です。

例:

order by dept, salary desc
select dept, max(salary) group by dept order by max(salary)

上限

limit 句は、返される行数を制限するために使用されます。

例:

limit 100

オフセット

offset 句は、指定した数の先頭行をスキップするために使用します。 limit 句を使用する場合、offset が最初に適用されます。たとえば、limit 15 offset 30 は 31 行目から 45 行目までを返します。

例:

offset 10
limit 30 offset 210

ラベル

label 句は、1 つ以上の列にラベルを設定するために使用されます。 クエリ内の ID の代わりにラベル値を使用することはできません。

label 句内の項目は、列識別子、または集計関数スカラー関数演算子の出力です。

構文:

label column_id label_string [,column_id label_string]
column_id
ラベルが割り当てられる列の識別子
label_string
その列に割り当てるラベル。多くのビジュアル表示では、エンドユーザーに表示されるテキストとして列ラベルが使用されます(円グラフの凡例ラベルなど)。ラベルは文字列リテラルであり、その構文ルールに従います。

例:

次の例では、dept 列のラベルを「Department」に、名前列のラベルを「Employee Name」に、ロケーション列のラベルを「Employee Location」に設定しています。

label dept 'Department', name "Employee Name", location 'Employee Location'

形式

format 句は、1 つ以上の列のセルに書式設定された値を指定するために使用されます。返されるデータには、実際の値と、セルごとに書式設定された値の両方を書式設定された列に含める必要があります。多くのビジュアリゼーションでは、書式設定に値が使用されますが、書式設定された値も表示されます。この句で指定するパターンは通常、対応する列の pattern プロパティで返されます。

パターン構文:

numberdatetimeofdaydatetime
ICU で定義された日付パターンと番号パターン。
boolean
パターンは、「value-if-true:value-if-false」形式の string です。

例:

format salary '#,##0.00', hireDate 'dd-MMM-yyyy', isSenior 'Yes!:Not yet'

 

オプション

options 句は、クエリ実行の追加オプションを制御するために使用されます。options 句に続く可能なキーワードは次のとおりです。

  • no_format: 結果から書式付き値を削除し、元の値のみを残します。特定のビジュアリゼーションで書式設定された値を使用していない場合に、レスポンスのサイズを小さくできます。
  • no_values: 結果から基盤となる値を削除し、フォーマットされた値のみを残します。特定のビジュアリゼーションで書式設定された値のみを使用して、レスポンスのサイズを削減する場合に使用できます。

データ操作関数

1 つの列のデータを操作または集計したり、列間でデータを比較または組み合わせたりできる演算子と関数にはいくつかあります。例には、sum()(列にすべての値を追加する)、max(列に最大値を表示する)、+(2 つの列の値を同じ行に追加する)などがあります。

関数には、どの句でも指定できます。また、一部の句のサブセットに出現する関数もあります。これについては以下で説明します。

例:

表の内容 このクエリを適用すると次のようになります。 このような結果が得られます。
名前 給与 税金 StartDate
Sharon 1000 100 2009/1/1
アビタル 2000 200 2008/1/21
Moran 3000 300 2008/2/12
select upper(name), year(startDate)
名前 年(StartDate)
平均 2008
Moran 氏 2008
SHARON 2009

 

次のデータ操作関数は、Google Visualization API のクエリ言語によって定義されています。

 

集計関数

集計関数には単一の列識別子が渡され、各グループのすべての値に対して処理が実行されます(これらの句を使用しない場合は、group by または pivot 句で指定するか、すべての行を指定します)。

例:

select max(salary)               // Returns a table with one column and one row.
select max(salary) group by dept // Returns a table with the max salary for each dept column value.
select max(salary) pivot dept    // Returns a one-row table with a column for each dept,
                                 //   and the max salary for that department.

集計関数は、selectorder bylabelformat 句で使用できます。wheregroup bypivotlimitoffsetoptions 句では使用できません

サポートされている集計関数は次のとおりです。

名前 説明 サポートされている列のタイプ 戻り値の型
avg() グループの列内のすべての値の平均値を返します。 number number
count() グループの指定された列に含まれる要素の数を返します。null セルはカウントされません。 すべての種類 number
max() グループの列の最大値を返します。日付は小さい方と比較され、string はアルファベットの大文字と小文字を区別して比較されます。 すべての種類 列と同じ型
min() グループの列の最小値を返します。日付は以前よりも小さいものと比較され、string はアルファベットの大文字と小文字を区別して比較されます。 すべての種類 列と同じ型
sum() グループの列のすべての値の合計を返します。 number number

注: 集計関数は、列 ID のみを引数として使用できます。

max(startDate)                      // OK
min(firstScore) + min(secondScore)  // OK
max(year(startDate))                // INVALID. max requires column ID
sum(salary + perks)                 // INVALID. sum requires column ID.

スカラー関数

スカラー関数は、0 個以上のパラメータを介して作用し、別の値を生成します。スカラー関数には、適切な型のパラメータに評価される式を渡すことができます。これらの型は、このドキュメントのリテラル セクションで定義されている型です。この名前は、同様の名前の JavaScript オブジェクトとは若干異なる場合があります。

列名は、スカラー関数でラップすることで変更されます。

スカラー関数は、単一の値に評価されるものをパラメータとして受け取ることができます。

year(max(startDate))
datediff(now(), todate(1234567890000))

スカラー関数は、selectwheregroup bypivotorder bylabel, format のいずれかの句で使用できます。

名前
year()

日付または日時の値から年の値を返します。たとえば、 year(date "2009-02-05") は 2009 を返します。

パラメータ: date または datetime タイプの 1 つのパラメータ
戻り値の型: number
month()

日付または日時の値から、ゼロから始まる月値を返します。たとえば、month(date "2009-02-05") は 1 を返します。注: 月は 0 ベースであるため、この関数は 1 月の場合は 0、2 月の場合は 1 の値を返します。

パラメータ: date または datetime タイプの 1 つのパラメータ
戻り値の型: number
day()

date または datetime の値から日を返します。たとえば、day(date "2009-02-05") は 5 を返します。

パラメータ: date または datetime タイプの 1 つのパラメータ
戻り値の型: number
hour()

日時または timeofday 値から時間値を返します。たとえば、hour(timeofday "12:03:17") は 12 を返します。

パラメータ: datetime または timeofday タイプの 1 つのパラメータ
戻り値の型: number
minute()

datetime または timeofday の値から分を返します。たとえば、minute(timeofday "12:03:17") は 3 を返します。

パラメータ: datetime または timeofday タイプの 1 つのパラメータ
戻り値の型: number
second()

datetime または timeofday の値から 2 番目の値を返します。たとえば、second(timeofday "12:03:17") は 17 を返します。

パラメータ: datetime または timeofday タイプの 1 つのパラメータ
戻り値の型: number
millisecond()

datetime または timeofday 値のミリ秒部分を返します。たとえば、millisecond(timeofday "12:03:17.123") は 123 を返します。

パラメータ: datetime または timeofday タイプの 1 つのパラメータ
戻り値の型: number
quarter()

date または datetime の値から四半期を返します。たとえば、quarter(date "2009-02-05") は 1 を返します。四半期は 1 から始まるので、1 番目の四半期には 1、2 番目の四半期には 2 が返されます。

パラメータ: date または datetime タイプの 1 つのパラメータ
戻り値の型: number
dayOfWeek()

date または datetime 値から曜日を返します。たとえば、dayOfWeek(date "2009-02-26") は 5 を返します。日付は 1 ベースであるため、日曜日に 1 日、月曜日に 2 日などが返されます。

パラメータ: date または datetime タイプの 1 つのパラメータ
戻り値の型: number
now()

GMT タイムゾーンでの現在の datetime を表す日時値を返します。

パラメータ: なし
戻り値の型: datetime
dateDiff()

2 つの date または datetime 値の差を返します。注: 計算では値の date 部分のみが使用されるため、関数は常に整数値を返します。たとえば、dateDiff(date "2008-03-13", date "2008-02-12") は 29 を返し、dateDiff(date "2009-02-13", date "2009-03-13") は -29 を返します。時間の値は比較前に切り捨てられます。

パラメータ: date または datetime タイプの 2 つのパラメータ(いずれか 1 つを指定できます)
戻り値の型: number
toDate()

指定された値を date 値に変換します。

  • date を指定すると、同じ値が返されます。
  • datetime を指定すると、date の部分が返されます。たとえば、toDate(dateTime "2009-01-01 12:00:00") は「2009-01-01」を返します。
  • number N を指定すると、エポックの後に date N ミリ秒を返します。エポックは 1970 年 1 月 1 日 00:00:00 GMT と定義されています。たとえば、toDate(1234567890000) は "2009-02-13" を返します。
パラメータ: datedatetimenumber のいずれかのタイプのパラメータ
戻り値の型: date
upper()

指定された string を大文字で返します。たとえば、upper("foo") は「FOO」を返します。

パラメータ: string タイプの 1 つのパラメータ
戻り値の型: string
lower()

指定した string を小文字で返します。たとえば、lower("Bar") は「bar」を返します。

パラメータ: string タイプの 1 つのパラメータ
戻り値の型: string

算術演算子

算術演算子を使用して、1 つの数値(適切な集計関数、演算子、定数の出力)で評価されるものに対して数学演算を実行できます。

例:

select empSalary - empTax
select 2 * (max(empSalary) / max(empTax))

定義されている演算子は次のとおりです。

名前 説明 パラメータ 戻り値の型
+ 2 つの number 値の合計を返します。 2 つの number number
- 2 つの number 値の差を返します。 2 つの number number
* 2 つの number の積を返します。 2 つの number number
/ 2 つの number の商を返します。ゼロ除算は null を返します。 2 つの number number

言語要素

リテラル

リテラルは比較や割り当てに使用される値です。リテラルには、string、数値、ブール値、さまざまな日時型を指定できます。クエリ構文で使用されるリテラルの例を次に示します。

where startDate < date "2008-03-18"  // date "2008-03-18" is a date literal
limit 30                             // 30 is a numeric literal
format salary '#,##0.00', isSenior 'not yet:of course!'  // '#,##0.00' and 'not yet:of course!' are both string literals

各リテラルの形式は次のとおりです。

string
string のリテラルは、単一引用符または二重引用符で囲みます。例: "fourteen" 'hello world' "It's raining"
number
数値リテラルは 10 進数で指定されます。例: 3  3.0  3.14  -71  -7.2  .6
boolean
ブール値のリテラルは、true または false です。
date
キーワード date に続けて、yyyy-MM-dd 形式の string リテラルを使用します。例: date "2008-03-18"
timeofday
キーワード timeofday に続けて、HH:mm:ss[.SSS] 形式の string リテラルを使用します。例: timeofday "12:30:45"
datetime
日付と時刻。キーワード datetime またはキーワード timestamp に続けて、yyyy-MM-dd HH:mm:ss[.sss] 形式の string リテラルを使用します。例: datetime '2008-03-18 12:30:34.123'

識別子

識別子(または ID)は、列を識別するテキスト string である。

重要: 識別子が

  • スペースあり。
  • 予約語
  • 英数字またはアンダースコア以外([a-zA-Z0-9_])
  • 先頭が数字

一重引用符ではなく、二重引用符で囲む必要があります

それ以外の場合は、引用符で囲む必要はありません。(構文によって定義されたすべてのキーワードが予約済みの単語ではないため、たとえば、「max」をバッククォートで囲まなくても識別子として使用できます)。

例: col1   employee_table   `start date`   `7 days traffic`   `select`

バッククォートを必要とする識別子を選択することはおすすめしません。バッククォートを使用することを忘れがちな場合や、バッククォートではなく誤って「単一クォート」を使用する可能性があるからです。このようなミスはよくある間違いで、多くの場合、デバッグは困難です。

大文字と小文字の区別

識別子と文字列リテラルは、大文字と小文字が区別されます。他の言語要素はすべて、大文字と小文字が区別されません。

予約語

次の予約済みの単語を識別子として使用する場合は、バッククォートで囲む必要があります。

and
asc
by
date
datetime
desc
false
format
group
label
limit
not
offset
options
or
order
pivot
select
timeofday
timestamp
true
where