Empiece a realizar un seguimiento de su progreso
Inicio de Trailhead
Inicio de Trailhead

Ejecutar consultas SOQL y SOSL

Objetivos de aprendizaje

Después de completar esta unidad, podrá:
  • Ejecutar una consulta SOQL mediante Query Editor o en el código Apex.
  • Ejecutar una búsqueda SOSL mediante Query Editor o en el código Apex.

Ejecutar consultas SOQL

¿Qué es una consulta SOQL?

SOQL es el lenguaje de consulta de objetos de Salesforce. Puede usar SOQL para leer la información almacenada en la base de datos de su organización. SOQL es similar desde el punto de vista sintáctico a SQL (lenguaje de consulta estructurado).

Puede escribir y ejecutar una consulta SOQL en el código Apex o en la ficha Query Editor (Editor de consultas) de Developer Console.

Ejecutar una consulta SOQL

Antes de empezar a escribir y ejecutar consultas, necesita tener algunos datos en su organización de Salesforce para poder hacer búsquedas. Vamos a agregar los detalles de contacto de tres ingenieros de control enviados por el mando de control de misiones para maniobrar la astronave con el fin de esquivar el asteroide 2014 QO441.
  1. Seleccione Debug | Open Execute Anonymous Window (Depurar | Abrir ventana de ejecución anónima).
  2. Copie, pegue y ejecute el siguiente código. Este código agrega los detalles de contacto de los tres ingenieros de control al objeto de contacto de la base de datos.
    // 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;

    Ahora, podemos usar Query Editor para escribir y ejecutar una consulta SOQL con el fin de buscar a estos ingenieros de control. Las consultas SOQL permiten buscar datos en objetos específicos. Puede agregar una condición opcional en la cláusula WHERE para limitar la búsqueda.

  3. Ingrese la siguiente consulta en la ficha Query Editor (Editor de consultas).
    SELECT Name, Phone, Email, Title FROM Contact
                                     WHERE (Department = 'Specialty Crisis Management')
  4. Haga clic en Execute (Ejecutar).

Los resultados muestran los detalles de los contactos que trabajan en el departamento especializado en el control de crisis.

Resultados de la consulta SOQL

Puede usar otra consulta SOQL para buscar contactos de otros departamentos o para ver si alguien más ha creado registros para otros ingenieros de control. Para volver a ejecutar una consulta, haga clic en Refresh Grid (Actualizar tabla) en el panel Query Results (Resultados de consulta).

Una consulta SOQL que se ejecuta mediante el código Apex se llama consulta SOQL en línea. Veamos cómo puede usar Developer Console para buscar contactos del departamento especializado en el control de crisis mediante una consulta SOQL en línea.

Esta vez, vamos a intentar ordenar los resultados alfabéticamente por nombre.
  1. Seleccione Debug | Open Execute Anonymous Window (Depurar | Abrir ventana de ejecución anónima).
  2. Ingrese el siguiente código.
    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. Una vez ejecutado el código, abra el registro.
  4. Para ver solamente los mensajes USER_DEBUG, seleccione Debug Only (Solo depurar). Los resultados muestran el número de cuentas devueltas y los detalles de contacto por orden alfabético.

Para profundizar en las consultas SOQL, consulte el módulo Fundamentos y base de datos de Apex.

Ejecutar búsquedas SOSL

¿Qué es una búsqueda SOSL?

SOSL es el lenguaje de búsqueda de objetos de Salesforce, el cual permite realizar búsquedas de texto en los registros. A diferencia de SOQL, SOSL permite consultar múltiples tipos de objetos al mismo tiempo. Además, en el caso SOSL, es posible usar una palabra coincidente para establecer la coincidencia con campos, mientras que SOQL requiere la frase exacta.

Cuando ejecuta una búsqueda SOSL de registros de contacto con la palabra “Crisis”, se busca en todos los campos de contacto y se devuelve cualquier registro que contenga esta palabra. Sin embargo, si intenta hacer lo mismo en una consulta SOQL, debe especificar los campos y la palabra o frase completas que se deben buscar. Tiene también la posibilidad de usar LIKE o comodines para limitar las búsquedas SOQL o SOSL.

Ejecutar una búsqueda SOSL

  1. En la ficha Query Editor (Editor de consultas), ingrese la siguiente consulta SOSL. Observe que en la consulta solo se incluye el nombre parcial del departamento especializado en el control de crisis.
    FIND {Crisis} IN ALL FIELDS RETURNING Contact(FirstName, LastName, Phone, Email, Title)
  2. Ejecute la consulta y observe los resultados en el panel Search Results (Resultados de búsqueda).
    Resultados de la consulta SOSL
Al igual que en el caso de las consultas SOQL, puede ejecutar búsquedas SOSL en el código Apex.
  1. Seleccione Debug | Open Execute Anonymous Window (Depurar | Abrir ventana de ejecución anónima).
  2. Ejecute el siguiente código.
    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. Abra el registro y seleccione la opción Debug Only (Solo depurar).

En Execution Log (Registro de ejecución) se incluyen los nombres de los ingenieros de control.

Para obtener más información sobre cómo funcionan las búsquedas SOSL, consulte el módulo Fundamentos y base de datos de Apex.

Mientras estaba realizando pruebas con SOQL y SOSL, los ingenieros de control cuyos registros ha buscado han logrado desviar la astronave de la trayectoria del asteroide. A fin de cuentas, puede que estar al mando de una astronave no sea tan difícil. ¡Solo necesita una buena consola y aprender a delegar!

Ahora que ha conseguido evitar la colisión con el asteroide 2014 QO441, decide aterrizar en la estación espacial de Neptuno para disfrutar de un merecido descanso. Con los conocimientos adquiridos sobre las distintas funciones y opciones de Developer Console, puede guiar su organización en muchas misiones con éxito.