SOQLとSQLの違い

SQLに慣れた開発者にとって、SOQL(Salesforce Object Query Language)は一見よく似た構文を持っていますが、実際にはルールや使用目的が異なります。そのため、初めてSOQLに触れたときには少し戸惑うかもしれません。
このページでは、SQLとの違いを整理しながら、SOQLの特徴や注意点を解説していきます。


目次

🆚 SOQLとSQLの違い

❓ SOQLとは?

SOQL(Salesforce Object Query Language)は、Salesforce内のデータを検索するための専用言語です。
データの「取得」に特化しており、SQLのように「追加」「更新」「削除」はできません。

📊 SQLとSOQLの機能比較

項目🌐 SQL🌐 SOQL
データ取得SELECTSELECT(*は使用不可)
データ追加INSERT❌(SOQLでは不可、DMLを使用)
データ更新UPDATE❌(SOQLでは不可、DMLを使用)
データ削除DELETE❌(SOQLでは不可、DMLを使用)
対象テーブルオブジェクト
全カラム取得SELECT *❌(フィールドを明示)
JOIN可能❌(サブクエリや参照で代用)
WHERE句使用可能使用可能
ORDER BY, LIMIT使用可能使用可能
GROUP BY使用可能使用可能(制限あり)

❗ INSERT・UPDATEなどが使えない!

SOQLはデータの取得専用です。SQLでよく使われる以下のような構文は、SOQLでは使用できません。

-- SQLの例
INSERT INTO customers (name, email) VALUES ('Taro', 'taro@example.com');
UPDATE customers SET email = 'new@example.com' WHERE id = 123;
DELETE FROM customers WHERE id = 123;

Salesforceでこれらの操作を行いたい場合は、ApexのDML文や、データローダー/フローなどの機能を使用します。

❓ JOINはできないの?

SOQLではSQLのようなテーブルJOINは使えません。
その代わりに、親子関係や参照関係を使ってデータを取得します。

👪 親→子のサブクエリ例:

SELECT Name, (SELECT LastName FROM Contacts) FROM Account

👪 子→親のドット記法例:

SELECT FirstName, Account.Name FROM Contact

🧪 サンプル比較(SQLとSOQL)

SQLの例:

SELECT name, email FROM customers WHERE country = 'Japan';

SOQLの例:

SELECT Name, Email FROM Contact WHERE MailingCountry = 'Japan';

構文は似ていますね。「Contact」はオブジェクト名、「MailingCountry」は項目名です。

🎯 まとめ

  • SOQLは検索専用。INSERTやUPDATEは使えません。
  • SELECT *は使えず、フィールド名を明示的に指定する必要があります。
  • JOINは使えない代わりに、リレーション構造によるサブクエリや参照記法で対応します。
  • Salesforceの構造に合った形でデータを扱うための言語として、SOQLは非常に効率的です。

では、また次回の 異星人Salesforce講座 でお会いしましょう!👽✨

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次