ITナレッジ Salesforce

【Salesforce】データベース初学者必見!SOQLとSQLの書き方の違いとは?

【Salesforce】データベース初学者必見!SOQLとSQLの書き方の違いとは?
悩む人
悩む人

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. DISTINCTGROUP 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で効率的にデータを操作できるように頑張りましょう!

    きい(@kii_sfpy)

きい

エンジニア4年目のフリーランスデータエンジニア。

INTJ-A/5w4、独立的で戦略的な探求者らしい。

Python, Typescript, Salesforce, GCP, AWS, Tableau …etc

開発に関するご相談も、お気軽にご連絡ください! 

お問い合わせはコチラ

-ITナレッジ, Salesforce
-, , ,