IT人材をお探しの方は、まずはお電話ください。担当営業がすぐにご要望にマッチした人材をご提案いたします。
tel:03-6409-6766 お急ぎの方はお電話ください

ブログTOP > IT・技術関連 > SalesforceにおけるSQLとは?詳細や注意点についてご紹介

SalesforceにおけるSQLとは?詳細や注意点についてご紹介

IT・技術関連 更新日:2024.09.05
エンジニア採用
SalesforceにおけるSQLとは?詳細や注意点についてご紹介

SalesforceにおけるSQLとは?

Salesforceからレコードを読み込むためには、クエリを作成しなければなりません。 Salesforceでは、保存したレコードの読み込みために使える「Salesforce Object Query Language (SOQL) 」を提供しています。SOQLとは、標準のSQL言語を「Lightning Platform」用にカスタマイズしているものです。 Apexはデータベース上のSalesforceレコードに直接アクセスできます。そのため、SOQLクエリをApexコードに埋め込み、結果を取得できます。 例)
Account[] accts = [SELECT Name,Phone FROM Account];

SQL SELECT構文

SQL構文はSELECTステートメントとそれに続く1つ以上の省略可能な「TYPEOF」、「WHERE」、「WITH」、「GROUP BY」、「ORDER BY」などによって構成されます。 ステートメントには文字数制限があります。デフォルトでは、SOQLステートメントの長さは10万文字までです。10万文字を超えるSOQLステートメントでは、APIは「MALFORMED_QUERY」の例外コードを返します。結果行は返しません。 長く複雑なSOQLステートメントだと、「QUERY_TOO_COMPLICATEDエラー」が発生することがあります。Salesforceによって処理される際にステートメントが内部展開されるため発生しますが、SOQLステートメントの複雑さを軽減すると、エラーを避けることができます。

ステートメントが多数の結果を返す場合

レコードごとにSELECT文が大量のデータを返す際、SOQLで自動的に結果の数が減らされます。 リストビューを検索する場合、検索結果に表示されるのはリストの最初の2,000 件のレコードだけです。オブジェクトに「数式項目」、「派生項目」、「CLOB項目」、「BLOB項目」が含まれる場合、大量のデータが返されることがあります。 Bulk API 2.0は、ジョブの結果から返される「Sforce-Locatorresponseヘッダー」を使います。 REST APIでは、「/queryand/queryAll」で返される「nextRecordsUrl」を使います。 SOAP APIでは、「queryMore()」を使います。 SOQLでは、SOQL クエリで「OFFSET」と「LIMIT」を使う際は、返されるレコード数がLIMITよりも少なくなる場合があります。

その他の注意点

SQL構文のその他の注意点について説明します。 SELECTステートメントには、ローカライズされた項目をサポートする、返されたSOQL結果の翻訳および「convertCurrency()」、「FORMAT() 関数」を含められます。 Apexでは、使っているステートメントで「SOQL」「SOSLステートメント」を使用するには、角括弧で囲まなければなりません。前にコロンがある場合は、Apexスクリプト変数および式が使えます。 クエリでは「ORDER BY句」を使わない限り、結果の順序が保証されません。 APIバージョン39.0以降において、値のAPI参照名で選択リスト値を照会するので、実際の値と違う可能性があります。

SQLの使用

SQLを使うことで、組織のSalesforceデータから特定の情報を検索することができます。 SQLを使うと、「query() コールの queryString パラメータ」、「Apex ステートメント」、「Visualforce コントローラおよび getter メソッド」、「Salesforce CLI、または Visual Studio Code 向け Salesforce 拡張機能」で、シンプルかつ強力なクエリ文字列を作ることができます。 SOQLでは、取得する項目のリスト、ソースオブジェクトなどから行を選択するための条件指定が可能です。ただし、SQLのSELECT コマンドの高度な機能がすべてサポートされているわけではありません。 例)
SELECT one or more fields
FROM an object
WHERE filter statements and, optionally, results are ordered 

SalesforceにおけるSQLの注意点

SalesforceにおけるSQLの注意点について説明します。 注意点は「*で全カラム抽出が出来ない」、「join全般が使えない」、「salesforce内設定に依存する」ことです。 通常のRDBでOSSのRDBなら、「select * from table_name」で容易に全体のカラム確認が行えます。しかしSalesforceでは、全カラムを記述しない限り、出力することができません。 また、用意にオブジェクトをjoinしてのデータの取得ができません。joinが全てできないわけではなく、Salesforce内で定義した親・子が存在し、そのつながりを用いて取得する方法があります。 さらに、Salesforceからデータを取得するために、Salesforceの設計にかなり多く依存してしまうことも注意点しておきましょう。

SQL使用の具体例

関数を用いたSQL構文の具体的な使い方について説明します。 Where句を使用して取得するレコードの制限の具体例です。 これを使うと、Name項目がTestレコードの全てを取得できます。 例)
SELECT Id,Name FROM Account WHERE Name = 'Test'
親から子を参照する場合は、下記例を使うことができます。 サブクエリ内においてコールされるクエリのFROMの後ろは「子リレーション名」です。 例)
SELECT Id,(SELECT Id,Name FROM Contacts) FROM Account
SOQLで項目に値が入っていないものを検索するときは、Nullを使います。 例)
SELECT Id,Name,MobilePhone FROM Account WHERE MobilePhone = Null

SQLの基礎

SQLの基礎について説明します。 Apexにおいては[ ]句で静的なSOQLを記載できます。[ ]句の中では、 バインド変数を使うことで条件を指定できます。 例)
String searchfor = 'SalesforceKid' ;
Contact[] Contacts = [SELECT xyz__c, Firstname, Lastname FROM Contact WHERE Lastname = :searchfor]; 
Apexの処理では、実行するSOQLを動的に編集することが可能です。実行するSOQL文を「String」で「Database.query」に渡せます。 例)
String myTestString = 'TestName';
List sobjList = Database.query('SELECT Id FROM MyCustomObject__c WHERE Name = :myTestString');

SalesforceでSQLを活用しよう!

今回はSalesforceの機能の1つである「SQL」について紹介しました。 SQLの使い方を理解することは、Salesforceで仕事をしていく上で欠かせません。SQLといっても使用範囲は非常に幅広いです。今回は初級の内容について説明してきましたが、中級レベル、上級レベルと、SQLをより幅広く使えるようになればなるほど、Salesforceでできることが大きく増えていきます。 SQLの使い方をイメージ、理解して、転職活動につなげていきましょう。]]>

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニアAWSパートナー/Salesforce認定コンサルティングパートナー 認定企業
ITエンジニア派遣サービス事業を行っています。AWSやSalesforceなど専門領域に特化したITエンジニアが4,715名在籍し、常時100名以上のITエンジニアの即日派遣が可能です。

・2021年:AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
・2022年3月:人材サービス型 AWSパートナー認定
・AWS認定資格保有者数1,154名(2024年6月現在)
・Salesforce認定コンサルティングパートナー
・Salesforce認定資格者276名在籍(2024年5月現在)
・LPIC+CCNA 認定資格者:472 名(2024年6月時点)
ITエンジニアの派遣を利用したい企業様へ
ITエンジニアを派遣で採用したい企業様へ
  • 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
  • すぐに採用したいが、応募がぜんぜん集まらない
こんな悩みをお持ちの採用・人事担当者の方は、
オープンアップITエンジニアをご検討ください!

当社のITエンジニア派遣サービスは

  • 派遣スピードが速い!(最短即日)
  • 4,500名のエンジニアから貴社にマッチした人材を派遣
  • 正社員雇用も可能

こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。

無料相談のお申し込みはこちら
IT・技術関連の記事一覧へ

カテゴリから記事を探す

すべての記事一覧へ