Skip to main content

SOQL 및 SOSL 쿼리 실행

학습 목표

이 유닛의 학습 목표는 다음과 같습니다.
  • SOQL 쿼리를 쿼리 편집기를 사용해 실행하거나 Apex 코드에서 실행합니다.
  • SOSL 검색을 쿼리 편집기를 사용해 실행하거나 Apex 코드에서 실행합니다.
참고

참고

한국어로 학습하시겠어요? 이 배지에서는 Trailhead 실습과제 검증이 영어로 진행됩니다. 참조용 번역이 괄호로 제공됩니다. Trailhead Playground에서 (1) 로캘을 미국으로 바꾸고 (2) 언어를 영어로 바꾼 후 (3) 영문으로 표시된 값을 복사해 붙여 넣으세요. 여기에 나와 있는 지침을 따르세요.

원하는 언어로 Trailhead 사용하기 배지를 확인해 현지화된 Trailhead 경험을 활용하는 방법에 대해 자세히 알아보세요.

SOQL 쿼리란?

SOQL은 Salesforce Object Query Language의 약자입니다. SOQL을 사용해 조직의 데이터베이스에 저장되어 있는 정보를 읽을 수 있습니다. SOQL의 구문은 SQL(Structured Query Language)과 유사합니다.

SOQL 쿼리를 Apex 코드 또는 개발자 콘솔의 쿼리 편집기에서 쓰고 실행할 수 있습니다.

SOQL 쿼리 실행

쿼리를 쓰고 실행하기 전에, Salesforce 조직에 검색할 수 있는 데이터가 있어야 합니다. 우주 비행 관제 센터에서 우주선이 2014 QO441 소행성과 충돌하지 않도록 하기 위해 보낸 조종 엔지니어 세 명의 상세 연락처를 추가해 보겠습니다.
  1. Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 선택합니다.
  2. 다음 코드를 복사하여 붙여 넣고 실행합니다. 이 코드는 조종 엔지니어 세 명의 상세 연락처를 데이터베이스의 연락처 개체에 추가합니다.
    // Add first contact and related details
    Contact contact1 = new Contact(
       Firstname='Quentin',
       Lastname='Foam',
       Phone='(415)555-1212',
       Department= 'Specialty Crisis Management',
       Title='Control Engineer - Specialty - Solar Arrays',
       Email='qfoam@trailhead.com');
    insert contact1;
    // Add second contact and related details
    Contact contact2 = new Contact(
       Firstname='Vega',
       Lastname='North',
       Phone='(416)556-1312',
       Department= 'Specialty Crisis Management',
       Title='Control Engineer - Specialty - Propulsion',
       Email='vnorth@trailhead.com');
    insert contact2;
    // Add third contact and related details
    Contact contact3 = new Contact(
       Firstname='Palma',
       Lastname='Sunrise',
       Phone='(554)623-1212',
       Department= 'Specialty Crisis Management',
       Title='Control Engineer - Specialty - Radiators',
       Email='psunrise@trailhead.com');
    insert contact3;
    이제 쿼리 편집기를 사용해 SOQL 쿼리를 쓰고 실행하여 이 조종 엔지니어들을 찾을 수 있습니다. SOQL 쿼리는 특정 개체에서 데이터를 검색합니다. 선택적인 조건을 WHERE 절에 추가하여 검색 범위를 좁힐 수 있습니다.
  3. 다음 쿼리를 쿼리 편집기 탭에 입력합니다.
    SELECT Name, Phone, Email, Title FROM Contact
                                     WHERE (Department = 'Specialty Crisis Management')
  4. Execute(실행)를 클릭합니다.

결과에 전문 위기 관리부에서 일하는 연락처의 세부 정보가 표시됩니다.

SOQL 쿼리 결과

다른 SOQL 쿼리를 하나 더 사용하여 연락처를 다른 부서에서 찾거나, 다른 사람이 더 많은 조종 엔지니어에 대한 레코드를 만들었는지 확인할 수 있습니다. 쿼리 결과 패널에서 Refresh Grid(그리드 새로 고침)를 클릭하여 쿼리를 다시 실행합니다.

Apex 코드를 사용하여 실행하는 SOQL 쿼리를 SOQL 쿼리라고 합니다. 개발자 콘솔을 사용해 전문 위기 관리부에서 일하는 연락처를 인라인 SOQL 쿼리를 사용하여 검색할 수 있는 방법에 대해 알아보겠습니다.

이번에는 결과를 이름의 알파벳순으로 정렬해 보기도 하겠습니다.
  1. Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 선택합니다.
  2. 다음 코드를 입력합니다.
    Contact[] theseContacts = [SELECT Name, Phone, Email, Description FROM Contact
                               WHERE (Department='Specialty Crisis Management')
                               ORDER BY Name];
    // Log a count of how many contacts were found
    System.debug(theseContacts.size() + ' contact(s) returned.');
    // Log all values in the array of contacts
    System.debug(theseContacts);
  3. 코드가 실행된 후에 로그를 엽니다.
  4. USER_DEBUG 메시지만 보려면 Debug Only(디버그만)를 선택합니다. 결과에 반환된 계정 수와 상세 연락처가 알파벳순으로 표시됩니다.

SOQL 쿼리에 대해 자세히 알아보려면 Apex 기초와 데이터베이스 모듈을 참조하세요.

SOSL(Salesforce Object Search Language)은 레코드에서 텍스트 검색을 수행하는 언어입니다. SOQL과 달리, SOSL은 여러 가지 유형의 개체를 동시에 쿼리할 수 있습니다. SOSL은 단어 일치를 사용하여 일치하는 필드를 찾을 수도 있지만, SOQL에는 정확한 구를 사용해야 합니다.

"위기"라는 단어를 사용해 연락처 레코드를 찾는 SOSL 검색을 실행하면 모든 연락처 필드에서 이 단어가 포함된 레코드를 찾아 반환합니다. 하지만 SOQL 쿼리에서 이렇게 하려면 검색할 필드와 검색할 전체 단어 또는 구를 지정해야 합니다. LIKE 또는 와일드카드를 사용해 SOQL 또는 SOSL 검색의 범위를 좁힐 수도 있습니다.

  1. 쿼리 편집기 탭에서 다음 SOSL 쿼리를 입력합니다. 쿼리에 전문 위기 관리부의 이름이 일부만 포함되어 있습니다.
    FIND {Crisis} IN ALL FIELDS RETURNING Contact(FirstName, LastName, Phone, Email, Title)
  2. 쿼리를 실행한 다음 결과를 검색 결과 창에서 관찰합니다. SOSL 쿼리 결과
SOQL 쿼리와 마찬가지로, SOSL 검색을 Apex 코드 안에서 실행할 수 있습니다.
  1. Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 선택합니다.
  2. 다음 코드를 실행합니다.
    List<List<sObject>> searchList = [FIND 'Crisis' IN ALL FIELDS 
                                      RETURNING Contact(FirstName, LastName,
                                      Phone, Email, Description)];
    Contact[] searchContacts = (Contact[])searchList[0];
    System.debug('Found the following contacts:');
    for (Contact c : searchContacts) {
       System.debug(c.LastName + ', ' + c.FirstName);
    }
  3. 로그를 열고 Debug Only(디버그만) 옵션을 선택합니다.

실행 로그에 조종 엔지니어의 이름이 나열됩니다.

SOSL 검색에 대한 자세한 내용은 Apex 기초와 데이터베이스 모듈을 참조하세요.

SOQL과 SOSL을 사용해 보는 동안, 쿼리를 사용해 찾아봤던 조종 엔지니어들이 우주선을 조종하여 소행성의 경로에서 벗어났습니다. 우주선을 지휘해 보니 생각보다 어렵지 않았습니다. 좋은 콘솔이 있고 위임하는 방법만 배우면 되니까요!

2014 QO441 소행성과 충돌을 피한 후, 이제 수고한 승무원들의 사기를 북돋기 위해 해왕성 우주 정거장에 정박하여 휴식을 취하기로 결정합니다. 개발자 콘솔의 다양한 기능과 특징에 대한 지식으로 조직의 여러 임무를 성공적으로 이끌 수 있게 되었습니다.

계속해서 무료로 학습하세요!
계속 진행하려면 계정을 가입하세요.
얻을 수 있는 이점
  • 커리어 목표에 대한 개인화된 권장 사항 제공받기
  • 실습 과제 및 퀴즈를 통해 스킬 연습
  • 진행 상황을 추적하고 고용주에게 공유
  • 멘토십과 커리어 기회에 연결