SQLとSaleforceのSOQLは似てるけど書き方って違うの?
書き方のルールは色々違いがあります!
この記事を書いた人
- エンジニア歴4年のフリーランスデータエンジニア
- 高卒工場勤務からエンジニア転職
- 3年目でフリーランスになり年収1000万↑達成
- フルリモ歴2年、2児の育児中
今回は、データベースを扱うときに使う「SOQL」と「SQL」という2つの言語の違いについてお話しします。
名前が似てますが、実は書き方にはいくつか違いがあります。この記事では、なるべく簡単に、そしてわかりやすくこの2つの違いを解説します!
本記事で取り扱うデータベースについて
- Account(取引先):企業や組織の情報。
- Contact(取引先責任者):Accountに関連する人物の情報。
- Order__C(注文):取引先に関連する注文情報。
SQLとSOQLとは?
まず、SQL(エスキューエル)とSOQL(ソーキューエル)について簡単に説明します。
- SQL :データベースという大きなデータの集まりから情報を引き出したり、追加したりするためのエンジニアには必須な基本言語です。
- SOQL :Salesforce(セールスフォース)で使われる特別なSQLのバージョンみたいなものです。
この2つは似ている部分もありますが、使うときのルールが少し違います。では、具体的にどこが違うのか、いくつか例を交えて見ていきましょう。
SQLとSOQLの書き方の違いについて
1. SELECT *
は使えない
SQLでは、すべてのデータを取得するために SELECT * FROM
と書きますが、SOQLでは SELECT *
は使えません。代わりに、FIELDS() という特殊な記述を使います。
SQLの例
SELECT * FROM Account;
SOQLの例
SELECT FIELDS(ALL) FROM Account;
SOQLは他にも以下のような書き方もあります。
- FIELDS(CUSTOM) — オブジェクトのすべてのカスタム項目を選択します。
- FIELDS(STANDARD) — オブジェクトのすべての標準項目を選択します。
2. DISTINCT
と GROUP BY
の違い
SQLで重複しないデータを取得する時、DISTINCT
を使います。例えば、異なる業種の取引先を取得したい場合です。しかし、SOQLには DISTINCT
がないので、GROUP BY
を使って同じようなことを行います。
SQLの例
SELECT DISTINCT Industry FROM Account;
SOQLの例
SELECT Industry FROM Account GROUP BY Industry;
3. NULL
の扱い方の違い
SQLでは NULL
は「何も値がない」という意味ですが、SOQLでは少し違います。SOQLでは、NULL
が通常の値の一つとして扱われます。これは、データベースの動作の違いによるものです。
SQLの例
SELECT * FROM Account WHERE Phone IS NULL;
SOQLの例
SELECT Id, Name FROM Account WHERE Phone = NULL;
5. NOT LIKE
が使えない
SQLでは、文字列の部分一致検索で LIKE
演算子を使いますが、その反対として NOT LIKE
を使うこともあります。しかし、SOQLでは直接 NOT LIKE
は使えず、NOT(LIKE)
という形で記述します。
SQLの例
SELECT * FROM Account WHERE Name NOT LIKE 'A%';
SOQLの例
SELECT Id, Name FROM Account WHERE NOT(Name LIKE 'A%');
6. コメントが書けない
SQLでは、コードの中にコメントを残すことができますが、SOQLではコメント機能がありません。これは、コードのメンテナンス性に影響するので注意が必要です。
SQLの例
-- これはコメントです
SELECT * FROM Account;
SOQLの例
/* SOQLにはコメントがありません */
SELECT Id, Name FROM Account;
まとめ
SOQLとSQLは似ている部分もありますが、ここにあげたもの以外にも色々な違いがあります。Salesforceでデータを扱う場合は、SOQLのルールをしっかりと理解しておくことが重要です。
ここでは主に以下の違いについて解説しました。
- SELECT * が使えない:SOQLでは
FIELDS(ALL)
を使います。 - DISTINCT はない:代わりに
GROUP BY
を使用。 - NULL の扱いが違う:SQLでは
IS NULL
、SOQLでは= NULL
。 - NOT LIKE が使えない:
NOT(LIKE)
で表現。 - コメントがない:SOQLにはコメント機能がありません。
これらの違いを理解し、Salesforceで効率的にデータを操作できるように頑張りましょう!