Skip to main content

SOQL 쿼리 시작하기

학습 목표

이 유닛을 완료하면 다음을 수행할 수 있습니다.

  • 필수 절을 사용하여 유효한 SOQL 쿼리를 구성할 수 있습니다.
  • 여러 조건으로 쿼리 결과를 필터링할 수 있습니다.
  • 쿼리 결과를 정렬할 수 있습니다.

이번 모듈이 Apex 코딩 기술 쌓기 트레일의 첫 번째 과정이라면 너무 멀리 온 것입니다. 이번 모듈을 계속 진행하기에 앞서 전 단계로 돌아가 관리자를 위한 Apex 기초관리자를 위한 개체 지향 프로그래밍 뱃지를 획득하세요.

이미 해당 뱃지를 얻으셨나요? 잘 하셨습니다! 지금까지 클래스, 변수, sObject를 만드는 방법에 대한 기초를 파악했으니 이제 SOQL(sockle로 발음)이라고도 하는 Salesforce Object Query Language에 대해 알아보겠습니다.

SOQL이란?

SOQL이란 Salesforce 데이터베이스에서 레코드 데이터를 가져오는 언어입니다. 관리자를 위한 개체 지향 프로그래밍에서 Data Manipulation Language(DML) 문을 사용하여 레코드를 삽입, 업데이트, 삭제할 수 있다고 배웠습니다. 그런데 데이터베이스에 이미 존재하는 데이터를 가져오려면 어떻게 해야 할까요? SOQL이 데이터 검색을 쉽게 만들어줍니다.

SOQL 쿼리를 만드는 것은 보고서를 만드는 것과 유사합니다. 보고서를 만들 때는 다음과 같은 질문에 대한 답변을 구해야 합니다.

  1. 표시하고자 하는 필드가 무엇인가?
  2. 그러한 필드는 어디에 위치해 있는가?

SOQL 쿼리를 만들 때도 똑같은 질문이 필요합니다. 쿼리에서 이러한 질문에 대한 답변은 필드와 개체입니다.

SELECT Name, Email FROM Contact. SELECT 및 FROM은 SOQL 키워드입니다. Name 및 Email은 필드이며 Contact는 표준 Salesforce 개체입니다.

이 쿼리에는 SOQL 키워드(SELECTFROM), 레코드 필드(NameEmail), 개체(표준 Contact 개체)가 포함되어 있습니다.

이러한 쿼리가 하는 역할은 무엇일까요? 데이터베이스에서 연락처 레코드에 관한 특정 정보를 가져옵니다. 그럼 이러한 조각들을 조합하면 어떻게 되는지 살펴보고 몇 가지 쿼리 작성 연습을 해보겠습니다. 우선 SOQL 쿼리에서 필수적인 부분을 살펴보겠습니다.

필수 SOQL 절

SELECT

SOQL 쿼리의 토대는 두 가지 절, 즉 SELECT 절과 FROM 절입니다. 절을 퍼즐 조각이라고 생각하면 됩니다. 절은 전체 쿼리에서 일부를 차지하는 요소입니다.

SELECT Name, Email FROM Contact. SELECT Name, Email은 SELECT 절입니다.

모든 SOQL 쿼리에는 SELECT 키워드로 시작하는 SELECT 절이 있습니다. SELECT 절은 Salesforce 레코드에서 하나 이상의 필드를 지정합니다(쉼표로 구분됨). 이 쿼리 예시는 NameEmail이라는 두 가지 필드를 반환합니다.

필드 이름에 관한 참고 사항: 여러분은 관리자로서 다른 관리자에게 말할 때 필드를 필드 레이블이라고 부를 수 있습니다. 하지만 코드에서 개발자들은 API 이름을 대신 사용합니다. 따라서 SOQL 쿼리에서는 항상 필드 레이블이 아닌 필드 API 이름을 사용해야 합니다. 필드의 API 이름이 무엇인지 잘 모르는 경우 확인할 수 있는 방법이 있으니 걱정하지 않아도 됩니다. 자세한 내용은 이 모듈 뒷부분에서 다룹니다.

FROM

SOQL 쿼리를 만드는 데 필요한 두 번째 절은 FROM 절입니다.

SELECT Name, Email FROM Contact. FROM Contact는 FROM 절입니다.

FROM 키워드로 시작하는 FROM 절은 Salesforce 데이터베이스에 개체를 지정합니다. 이 경우 Contact 개체에서 가져온 데이터가 필요합니다. 쿼리를 실행하면 데이터가 어떻게 표시되는지 살펴보겠습니다.

Trail Together로 함께 따라하기

이 단계를 진행하면서 전문가와 함께 따라하고 싶으세요? Trailhead Live의 Trail Together 시리즈에 포함된 이 비디오를 시청하세요. 전체 세션으로 연결되는 링크는 리소스 섹션에 있습니다.

SOQL을 실습할 준비가 되셨나요?

이 유닛에서는 Developer Console의 쿼리 편집기에서 SOQL 쿼리를 작성하는 단계를 보여 줍니다. 이 유닛에는 실습 과제가 없지만 절차를 따라하고 실습해보고 싶다면 Trailhead Playground를 새로 만들면 됩니다. 방법은 Trailhead Playground 관리 모듈을 참조하세요. Salesforce에서 Trailhead Playground를 만드는 데는 일반적으로 3~4분이 걸립니다. Playground는 이 모듈 뒷부분의 실습 과제를 완료하는 데에도 사용할 수 있습니다.

참고

새로운 Trailhead Playground가 필요합니다. 기존 조직이나 Playground를 사용하면 과제를 완료하는 데 문제가 발생할 수 있습니다.

쿼리 편집기를 사용하여 쿼리 작성하기

  1. Trailhead Playground에서 설정을 클릭하고 Developer Console을 선택합니다.
  2. File(파일) | Open(열기) | Objects(개체) | Contact(연락처)를 클릭합니다.
    Open(열기) 창에 엔티티 유형(Objects(개체) 하이라이트) 및 해당 엔티티(Contact(연락처) 하이라이트)가 나열되어 있습니다.
  3. Open(열기)을 클릭합니다.
    Contact(연락처) 개체가 관련된 모든 필드의 이름 및 유형 목록을 엽니다.
  4. 하단 패널에서 Query Editor(쿼리 편집기) 탭을 선택합니다. (탭이 보이지 않는 경우 창 하단에 있는 위쪽 화살표를 클릭합니다.)세 가지 창이 있는 Query Editor(쿼리 편집기) 탭.
    쿼리 편집기는 세 가지 섹션으로 구성됩니다. 왼쪽 상단 섹션(1)에는 쿼리가 표시됩니다. 여기에서 쿼리를 편집할 수 있습니다. 왼쪽 하단 섹션(2)에는 오류가 표시됩니다. 오른쪽 섹션(3)에는 실행된 SOQL 쿼리 내역이 저장됩니다.
  5. CTRL + 클릭(Windows) 또는 CMD + 클릭(Mac)을 사용하여 Email(이메일), Name(이름), Languages__c 필드를 선택합니다.
  6. Query(쿼리)를 클릭합니다.
    선택한 개체 및 필드를 기준으로 SOQL 쿼리가 쿼리 편집기에 표시됩니다. 쿼리 작성기에서 필드를 선택하면 쿼리 작성기가 자동으로 필드 API 이름을 SOQL 쿼리에 삽입합니다. 이 도구를 사용하면 API 이름을 외우거나 검색할 필요가 없습니다.
  7. Execute(실행)를 클릭합니다.
    쿼리가 Id, Email(이메일), Name(이름), Languages__c 필드를 반환합니다.

쿼리가 실행되면 결과에 요청된 항목이 정확히 표시됩니다. 또한 쿼리 편집기를 사용하면 Id가 부가적으로 반환됩니다. 아주 좋네요!

선택적 SOQL 절

SELECT 절과 FROM 절은 필수적이지만 SOQL에는 쿼리를 개선하기 위한 선택적 절도 있습니다.

Trailhead Playground에서 여러분이 만든 쿼리 예시는 상당히 적은 수의 레코드를 반환합니다. 마지막 쿼리는 20개 레코드를 반환했습니다. 레코드가 수 천개에 이른다면 어떻게 될까요? 그러한 데이터를 처리하려면 상당히 뛰어난 컴퓨팅 성능이 필요할 것입니다. SOQL이 모든 레코드의 일부를 반환할 수 있다면 좋지 않을까요? 실제로 가능합니다.

WHERE

WHERE 절은 레코드를 선택하고 반환하기 위해 일치해야 하는 조건을 설정합니다. 필터를 사용하는 것과 동일한 방식으로 WHERE 절을 사용하여 목록 보기 또는 보고서에 표시되는 데이터를 제한하세요. 예를 들어 이름이 Stella인 연락처를 찾는 경우 다음과 같이 쿼리 끝에 WHERE FirstName = 'Stella'를 추가하면 됩니다.

SELECT Name, Email FROM Contact WHERE FirstName = 'Stella'

두 개 이상의 조건을 사용하여 필터링할 WHERE 절을 정의할 수도 있습니다. AND, OR, IN의 세 가지 연산자를 사용하여 이를 수행하는 방법에는 몇 가지가 있습니다. 몇 가지 예시를 살펴보겠습니다.

AND
AND를 사용하여 두 가지 조건을 충족하는 레코드를 반환합니다. 이 쿼리는 이름이 Stella이고 성이 Pavlova인 모든 레코드를 반환합니다.


SELECT Name, Email
FROM Contact
WHERE FirstName = 'Stella' AND LastName = 'Pavlova'

OR
OR을 사용하여 두 가지 조건 중 한 가지를 충족하는 레코드를 반환합니다. 이 쿼리는 이름이 James이거나 성이 Barr인 레코드를 반환합니다.


SELECT Name, Email
FROM Contact
WHERE LastName = 'James' OR LastName = 'Barr'

IN
IN을 사용하여 세 가지 이상의 조건 중 최소 한 가지를 충족하는 레코드를 반환합니다. IN 절은 일반적으로 선택 목록의 값이나 LIST 또는 SET의 값을 반환하는 데 사용됩니다. IN은 OR 조건이 많아질 수 있는 쿼리를 간소화합니다. 이 쿼리는 성이 James, Barr, Nedaerk 또는 Forbes인 모든 레코드를 반환합니다.

SELECT Name, Email FROM Contact
WHERE LastName IN ('James', 'Barr', 'Nedaerk', 'Forbes')

LIMIT

LIMIT 키워드는 반환할 레코드의 최대 개수를 설정합니다. LIMIT는 테스트 중인 상황에서 대량의 데이터 집합을 처리하기 위해 쿼리를 기다리는 것을 원하지 않는 경우 유용합니다. SOQL에 대해 더 자세히 알게 될수록 너무 많은 레코드가 반환되지 않는 보다 적절한 방법을 찾을 수 있을 것입니다. 하지만 그때까지는 LIMIT를 사용하면 간편합니다. 쿼리에 제한을 추가해 보겠습니다.

  1. Developer Console의 쿼리 편집기로 돌아갑니다.
  2. 쿼리 끝에 다음과 같이 LIMIT 5를 입력합니다.
    SELECT Email, Name FROM Contact LIMIT 5
  3. Execute(실행)를 클릭합니다.

Query Results(쿼리 결과) 창에 5개 결과가 표시됩니다.

ORDER BY

결과의 양을 관리하는 방법을 알아봤습니다. 그렇다면 이러한 결과를 정리하려면 어떻게 해야 할까요? ORDER BY 절을 사용하여 특정 필드의 값을 기준으로 결과를 정렬하세요. 선택적으로 ORDER BY 절의 한정자를 사용하여 스프레드시트에서와 같이 오름차순(기본값) 또는 내림차순을 지정합니다. 마지막으로 비어 있는 필드 값이 많은 경우 NULLS 한정자를 사용하여 모든 NULL 값을 처음으로(기본값) 또는 마지막으로 그룹화합니다.


구문
설명

ASC
결과를 오름차순으로 반환합니다.
SELECT Name, Email FROM Contact
ORDER BY Name ASC
LIMIT 5

DESC
결과를 내림차순으로 반환합니다.

SELECT Name, Email FROM Contact
ORDER BY Email DESC
LIMIT 5

NULLS
FIRST | LAST
null 레코드를 처음(NULLS FIRST) 또는 끝(NULLS LAST)에 반환합니다
SELECT Name, Email FROM Contact
ORDER BY Email
NULLS LAST

ASC 예시에서 SELECT Name, Email FROM Contact ORDER BY Name ASC LIMIT 5는 5개 연락처에서 NameEmail 필드를 반환하여 이름의 오름차순으로 정렬합니다.

Contact(연락처) 개체의 이름(오름차순) 및 이메일 필드가 나열된 Query Results(쿼리 결과).

NULLS 예시에서는 SELECT Name, Email FROM Contact ORDER BY Email NULLS LAST가 (오름차순이 정렬 순서의 기본값이므로) 이름 및 이메일을 이메일의 오름차순으로 반환합니다. 이메일 주소가 없는 레코드는 끝에 그룹화됩니다.

이름 및 이메일 필드가 나열된 Query Results(쿼리 결과).

SOQL의 강력한 기능을 도입하면 방대한 데이터 집합을 검색하고, 제한을 설정하여 매우 구체적인 결과를 얻고, 반환된 데이터를 자신의 요구 사항에 맞게 정리할 수 있습니다. 꽤 유용하죠.

리소스

Salesforce 도움말에서 Trailhead 피드백을 공유하세요.

Trailhead에 관한 여러분의 의견에 귀 기울이겠습니다. 이제 Salesforce 도움말 사이트에서 언제든지 새로운 피드백 양식을 작성할 수 있습니다.

자세히 알아보기 의견 공유하기