SOQL 및 SOSL 쿼리 실행
학습 목표
- SOQL 쿼리를 쿼리 편집기를 사용해 실행하거나 Apex 코드에서 실행합니다.
- SOSL 검색을 쿼리 편집기를 사용해 실행하거나 Apex 코드에서 실행합니다.
SOQL 쿼리란?
SOQL은 Salesforce Object Query Language의 약자입니다. SOQL을 사용해 조직의 데이터베이스에 저장되어 있는 정보를 읽을 수 있습니다. SOQL의 구문은 SQL(Structured Query Language)과 유사합니다.
SOQL 쿼리를 Apex 코드 또는 개발자 콘솔의 쿼리 편집기에서 쓰고 실행할 수 있습니다.
SOQL 쿼리 실행
- Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 선택합니다.
- 다음 코드를 복사하여 붙여 넣고 실행합니다. 이 코드는 조종 엔지니어 세 명의 상세 연락처를 데이터베이스의 연락처 개체에 추가합니다.
// 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 절에 추가하여 검색 범위를 좁힐 수 있습니다. - 다음 쿼리를 쿼리 편집기 탭에 입력합니다.
SELECT Name, Phone, Email, Title FROM Contact WHERE (Department = 'Specialty Crisis Management')
- Execute(실행)를 클릭합니다.
결과에 전문 위기 관리부에서 일하는 연락처의 세부 정보가 표시됩니다.
다른 SOQL 쿼리를 하나 더 사용하여 연락처를 다른 부서에서 찾거나, 다른 사람이 더 많은 조종 엔지니어에 대한 레코드를 만들었는지 확인할 수 있습니다. 쿼리 결과 패널에서 Refresh Grid(그리드 새로 고침)를 클릭하여 쿼리를 다시 실행합니다.
Apex 코드를 사용하여 실행하는 SOQL 쿼리를 SOQL 쿼리라고 합니다. 개발자 콘솔을 사용해 전문 위기 관리부에서 일하는 연락처를 인라인 SOQL 쿼리를 사용하여 검색할 수 있는 방법에 대해 알아보겠습니다.
- Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 선택합니다.
- 다음 코드를 입력합니다.
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);
- 코드가 실행된 후에 로그를 엽니다.
- USER_DEBUG 메시지만 보려면 Debug Only(디버그만)를 선택합니다. 결과에 반환된 계정 수와 상세 연락처가 알파벳순으로 표시됩니다.
SOQL 쿼리에 대해 자세히 알아보려면 Apex 기초와 데이터베이스 모듈을 참조하세요.
SOSL 검색이란?
SOSL(Salesforce Object Search Language)은 레코드에서 텍스트 검색을 수행하는 언어입니다. SOQL과 달리, SOSL은 여러 가지 유형의 개체를 동시에 쿼리할 수 있습니다. SOSL은 단어 일치를 사용하여 일치하는 필드를 찾을 수도 있지만, SOQL에는 정확한 구를 사용해야 합니다.
"위기"라는 단어를 사용해 연락처 레코드를 찾는 SOSL 검색을 실행하면 모든 연락처 필드에서 이 단어가 포함된 레코드를 찾아 반환합니다. 하지만 SOQL 쿼리에서 이렇게 하려면 검색할 필드와 검색할 전체 단어 또는 구를 지정해야 합니다. LIKE
또는 와일드카드를 사용해 SOQL 또는 SOSL 검색의 범위를 좁힐 수도 있습니다.
SOSL 검색 실행
- 쿼리 편집기 탭에서 다음 SOSL 쿼리를 입력합니다. 쿼리에 전문 위기 관리부의 이름이 일부만 포함되어 있습니다.
FIND {Crisis} IN ALL FIELDS RETURNING Contact(FirstName, LastName, Phone, Email, Title)
- 쿼리를 실행한 다음 결과를 검색 결과 창에서 관찰합니다.
- Debug(디버그) | Open Execute Anonymous Window(익명 실행 창 열기)를 선택합니다.
- 다음 코드를 실행합니다.
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); }
- 로그를 열고 Debug Only(디버그만) 옵션을 선택합니다.
실행 로그에 조종 엔지니어의 이름이 나열됩니다.
SOSL 검색에 대한 자세한 내용은 Apex 기초와 데이터베이스 모듈을 참조하세요.
SOQL과 SOSL을 사용해 보는 동안, 쿼리를 사용해 찾아봤던 조종 엔지니어들이 우주선을 조종하여 소행성의 경로에서 벗어났습니다. 우주선을 지휘해 보니 생각보다 어렵지 않았습니다. 좋은 콘솔이 있고 위임하는 방법만 배우면 되니까요!
2014 QO441 소행성과 충돌을 피한 후, 이제 수고한 승무원들의 사기를 북돋기 위해 해왕성 우주 정거장에 정박하여 휴식을 취하기로 결정합니다. 개발자 콘솔의 다양한 기능과 특징에 대한 지식으로 조직의 여러 임무를 성공적으로 이끌 수 있게 되었습니다.