Query 101

このガイドでは、DataDeck Builder で使用できる GoogleSQL ライクなクエリの書き方を、初心者向けに丁寧に説明します。

目次

  1. クエリの基本概念
  2. SELECT - 表示する列を選ぶ
  3. WHERE - データを絞り込む
  4. ORDER BY - 並び順を変える
  5. LIMIT - 表示件数を制限する
  6. クエリ組み立ての流れ
  7. よくある質問

クエリの基本概念

クエリってなに?

クエリは「データベースへの質問」です。SQL という言語でデータベースに質問すると、その答えが返ってきます。

MitaMatch では以下のシーンでクエリが使えます:

  • Memoria タブ:メモリアカード一覧から条件に合うカードを検索
  • Costume タブ:衣装カード一覧から条件に合う衣装を検索

クエリの大きな流れ

SELECT (どの列を表示するか)
  FROM (どのテーブルから取得するか)
  WHERE (どの条件で絞り込むか)
  ORDER BY (どの順で並べるか)
  LIMIT (何件まで表示するか);

難しそうに見えますが、1つずつ学べば大丈夫です!

Warning

クエリは必ずセミコロン(;)で終わる

クエリの最後には**必ずセミコロン(;)**を付けてください。これはクエリの終わりを示す合図です。

❌ 間違い:SELECT * FROM memoria ✅ 正しい:SELECT * FROM memoria;

セミコロンを忘れるとエラーになります!

SELECT - 表示する列を選ぶ

どのカラム(列)を画面に表示するかを決めます。

基本:全てのカラムを表示

SELECT * FROM memoria;
  • SELECT * → 「全てのカラムを表示してください」という意味
  • * は「全て」という特別な記号
  • 全てのメモリアが表示されます

指定:特定のカラムだけ表示

表示するカラム名を カンマ(,)で区切って 並べます:

SELECT `name`, `type`, `released_at` FROM memoria;

結果は以下のような表になります:

nametypereleased_at
アナ通常2024-01-15
ユーリ特殊2024-02-20

ポイント:

  • カラム名は バッククォート(`)で囲む ことが多いです
  • 複数指定する時は カンマで区切る
  • 順序は自由に変更できます

複雑なカラム名の場合

ドット(.)を使ったカラム名は、バッククォートで囲みます:

SELECT `gvgSkill.name`, `gvgSkill.type` FROM memoria;

読み方:「gvgSkill という情報の中の name と type を表示」

EXCEPT:特定のカラムを除外

全てのカラムから特定のものだけ 除外 したい場合:

SELECT * EXCEPT (`unusedColumn1`, `unusedColumn2`) FROM memoria;

読み方:「全てのカラムを表示。ただし unusedColumn1 と unusedColumn2 は除外」

WHERE - データを絞り込む

全てのデータの中から、特定の条件に合うものだけを表示します。

基本:1つの条件で絞り込む

SELECT * FROM memoria WHERE `type` = '通常';

読み方:「type が『通常』のメモリアだけ表示」

記法:

  • カラム名をバッククォートで囲む:`type`
  • 等号(=)で比較
  • 文字列の値をシングルクォートで囲む:'通常'

比較演算子の種類

記号意味
=等しい`type` = '通常'
!=等しくない`rarity` != 'レア'
>より大きい`cost` > 10
<より小さい`cost` < 5
>=以上`cost` >= 3
<=以下`cost` <= 20

例:コストが 10 以上のメモリアを表示

SELECT * FROM memoria WHERE `cost` >= 10;

LIKE:文字列を部分一致で検索

完全一致ではなく、文字が「含まれている」かで検索します。

SELECT * FROM memoria WHERE `name` LIKE '%アナ%';

読み方:「name に『アナ』が含まれるメモリア」

  • % は「任意の文字列」を表すワイルドカード
  • %アナ% → 「どの文字の後に『アナ』がきて、その後ろに何かあってもいい」

使い方の例:

パターン意味
LIKE '%猫%'『猫』を含む(前後は何でもいい)
LIKE '猫%'『猫』で始まる
LIKE '%猫'『猫』で終わる

複数の条件を組み合わせる:AND

両方の条件を満たす場合だけフィルタ:

SELECT * FROM memoria
WHERE `type` = '特殊' AND `cost` > 5;

読み方:「type が『特殊』かつ cost が 5 より大きい」

結果:両方を満たすものだけ表示される

複数の条件を組み合わせる:OR

どちらかの条件を満たす場合:

SELECT * FROM memoria
WHERE `type` = '通常' OR `type` = '特殊';

読み方:「type が『通常』または type が『特殊』」

結果:どちらかに当てはまるもの全て表示される

括弧で条件を整理

複雑な条件は括弧で明確にします:

SELECT * FROM memoria
WHERE (`type` = '通常' OR `type` = '特殊')
  AND `cost` <= 10;

読み方:「(type が通常 OR 特殊) かつ cost が 10 以下」

MitaMatch 特有:スキル条件で検索

LIKE を使ったスキル検索はこんな感じ:

SELECT * FROM memoria
WHERE `gvgSkill.name` LIKE '%エンハ%D%';

読み方:「gvgSkill.name に『エンハ』と『D』が両方含まれる」

複数の値をカンマで繋いだ場合も LIKE で検索できます:

SELECT * FROM costume
WHERE `specialSkill` LIKE 'ADX,覚醒';

読み方:「specialSkill に『ADX』と『覚醒』が含まれる」

ORDER BY - 並び順を変える

検索結果の並び方を変えます。

基本:昇順(古い順)

SELECT * FROM memoria
WHERE `type` = '通常'
ORDER BY `released_at`;

読み方:「released_at を昇順で並べる」(小さい順 → 日付なら古い順)

降順(新しい順)

DESC を追加:

SELECT * FROM memoria
WHERE `type` = '通常'
ORDER BY `released_at` DESC;

読み方:「released_at を降順で並べる」(大きい順 → 日付なら新しい順)

複数カラムで並べる

複数のカラムで優先順位をつけて並べられます:

SELECT * FROM memoria
ORDER BY `type`, `cost` DESC;

読み方:「type で並べて、同じ type 内では cost の降順」

LIMIT - 表示件数を制限する

クエリ結果を何件まで表示するかを制限します。

基本:最初の N 件を表示

SELECT * FROM memoria
ORDER BY `released_at` DESC
LIMIT 10;

読み方:「最初の 10 件だけ表示」

よくある使い方:

  • LIMIT 1 → 最初の 1 件だけ(最新のカード)
  • LIMIT 5 → 最初の 5 件
  • LIMIT 20 → 最初の 20 件

クエリ組み立ての流れ

実際にクエリを書く時の順番を学びましょう。

ステップ 1:何を見たいか決める

「cost が 5 以上 10 以下で、type が特殊のメモリアが見たい」

ステップ 2:テーブルを選ぶ

メモリアだから FROM memoria

ステップ 3:条件を決める

  • `type` = '特殊'
  • `cost` >= 5
  • `cost` <= 10

ステップ 4:表示するカラムを決める

全て見たいので SELECT *(または特定カラムを指定)

ステップ 5:並び順を決める

リリース日の新しい順が見たいので ORDER BY released_at DESC

完成!

SELECT * FROM memoria
WHERE `type` = '特殊'
  AND `cost` >= 5
  AND `cost` <= 10
ORDER BY `released_at` DESC;

実践例

Memoria の例

要件:エンハンスを持つ特殊メモリアを、リリース日の新しい順で 20 件表示したい

SELECT `name`, `type`, `gvgSkill.name`, `released_at` FROM memoria
WHERE `type` LIKE '特殊'
  AND `gvgSkill.name` LIKE '%エンハ%'
ORDER BY `released_at` DESC
LIMIT 20;

説明:

  • SELECT で必要なカラムだけ表示
  • WHERE で型と スキル条件で絞り込み
  • ORDER BY DESC で新しい順に
  • LIMIT 20 で上位 20 件

Costume の例

要件:ADX スキルで覚醒可能な衣装を新しい順で表示

SELECT `name`, `type`, `specialSkill`, `released_at` FROM costume
WHERE `specialSkill` LIKE 'ADX,覚醒'
ORDER BY `released_at` DESC;

よくある質問

Q1: WHERE 条件を書く時、=LIKE はどう違う?

  • =:完全に等しい場合だけ
    • `type` = '特殊' → 『特殊』とぴったり同じ
  • LIKE:部分一致
    • `type` LIKE '特殊%' → 『特殊』で始まる何か

使い分け:

  • 正確な値が分かっている → =
  • 文字の一部を含んでるかで探したい → LIKE

Q2: シングルクォートで囲んでいいのはどんな時?

(データそのもの)がテキストの時:

WHERE `type` = '特殊'  -- 値がテキストだからシングルクォート
WHERE `cost` > 5       -- 値が数字だから囲まない

Q3: バッククォートは絶対必要?

カラム名に特殊な文字やスペースを含む場合は必須です。

`gvgSkill.name`  -- ドットを含むので必須
`specialSkill`   -- 通常つけるのが安全

Q4: エラーが出ました、どうしたら?

よくあるエラーと対処法:

エラー内容原因対処
Syntax error文法ミスクエリの文法を確認
Unknown columnカラム名が違うヘルプモーダルで正確な列名を確認
Unexpected EOFクエリが不完全セミコロン(;)で終わってるか確認

Q5: 複雑な条件を書きたいです

括弧 () を使って優先順位を明確にしましょう:

WHERE (`type` = '通常' OR `type` = '特殊')
  AND (`cost` > 5 AND `cost` <= 10)

Q6: ヘルプモーダルで使える列を確認できる?

はい!各タブの右上ヘルプボタンを押すと、使えるカラムの一覧が見れます。

まとめ

役割
SELECT表示する列SELECT name, type``
FROMテーブルFROM memoria
WHERE絞り込み条件WHERE cost > 5
ORDER BY並び順ORDER BY released_at DESC
LIMIT表示件数LIMIT 20

クエリ作成のコツ:

  1. 小さく始める:簡単な条件から始めて、必要に応じて追加する
  2. 段階的にテストする:各句を追加する度に実行してみる
  3. ヘルプを活用:カラム名が分からない時はヘルプモーダルで確認
  4. 複雑な時は括弧を使う:優先順位を明確にする

楽しいクエリライフを!🎉

次のステップ: より詳しく知りたい場合は、クエリ一覧の使い方 をご覧ください。