Primeros pasos con las consultas SOQL
Objetivos de aprendizaje
Después de completar esta unidad, podrá:
- Crear una consulta SOQL válida utilizando las cláusulas requeridas.
- Filtrar los resultados de la consulta con varias condiciones.
- Clasificar los resultados de la consulta.
Si esta es su primera parada en la ruta Construir habilidades de programación de Apex, se pasó de parada. Dé un paso atrás y primero obtenga las insignias de Fundamentos de Apex para administradores y Programación orientada a objetos para administradores antes de continuar con este módulo.
¿Ya obtuvo las insignias? ¡Buen trabajo! Ahora que tiene un conocimiento básico de cómo crear clases, variables y objetos sObject, es momento de aprender el lenguaje de consulta de objetos de Salesforce, también conocido como SOQL (Salesforce Object Query Language).
¿Qué es SOQL?
SOQL es un lenguaje que obtiene datos de registros de una base de datos de Salesforce. En Programación orientada a objetos para administradores, aprendió que puede utilizar declaraciones del lenguaje de manipulación de datos (DML, Data Manipulation Language) para insertar, actualizar y eliminar registros. ¿Pero qué hacer si desea obtener datos que ya existen en la base de datos? SOQL facilita la recuperación de datos.
Crear consultas SOQL es similar a crear un informe. Al crear un informe, se responden preguntas de este tipo:
- ¿Qué campos deseo mostrar?
- ¿Dónde se encuentran esos campos?
Puede hacerse las mismas preguntas para crear una consulta SOQL. En una consulta, las respuestas a estas preguntas son los campos y el objeto.
Esta consulta contiene las palabras clave de SOQL (SELECT
y FROM
), los campos del registro (Email
y Name
) y un objeto (el objeto estándar Contacto
).
¿Qué hace esta consulta? Recupera (obtiene) información específica sobre los registros de contactos en la base de datos. Veamos de qué modo encajan estas piezas y practiquemos la escritura de algunas consultas. Primero, vamos a ver las partes que requiere una consulta SOQL.
Cláusulas de SOQL requeridas
SELECT
La base de cualquier consulta SOQL son dos cláusulas: SELECT y FROM. Piense que una cláusula es como una pieza de un rompecabezas. Es tan solo una parte de una consulta completa.
Cada consulta SOQL tiene una cláusula SELECT que empieza con la palabra clave SELECT
. La cláusula SELECT especifica uno o varios campos (separados por comas) en un registro de Salesforce. Esta consulta de ejemplo devuelve dos campos: Name
, Email
.
Una nota sobre los nombres de los campos: cuando hable con otro administrador, como usted, probablemente se refiera a un campo por su etiqueta. En cambio, en programación, los desarrolladores usan nombre de API. Por lo tanto, en sus consultas SOQL, siempre use nombres de API para los campos, en lugar de etiquetas. No se preocupe si no sabe cuál es el nombre de API de un campo; hay formas de averiguarlo. Más adelante en este módulo veremos más información al respecto.
FROM
La segunda cláusula requerida para crear una consulta SOQL es la cláusula FROM.
Esta cláusula, que comienza con la palabra clave FROM
, especifica un objeto en la base de datos de Salesforce. En este caso, necesitamos los datos del objeto Contacto
. Veamos el aspecto de los datos al ejecutar la consulta.
Siga el proceso con Trail Together
¿Desea seguir el proceso con un experto a medida que realiza este paso? Eche un vistazo a este video, parte de la serie Trail Together en Trailhead Live. Encontrará un vínculo a la sesión completa en la sección Recursos.
¿Todo listo para pasar a la práctica con SOQL?
En esta unidad, vimos los pasos para crear una consulta SOQL en el Editor de consultas de Developer Console. No disponemos de un reto práctico en esta unidad, pero si desea seguir y probar los pasos, puede crear un nuevo Trailhead Playground. Consulte el módulo Gestión de Trailhead Playground para aprender cómo hacerlo. Crear un nuevo Trailhead Playground lleva a Salesforce normalmente entre 3 y 4 minutos. También puede utilizar Trailhead Playground cuando sea el momento de completar los retos prácticos más adelante en el módulo.
Crear una consulta mediante el Editor de consultas
- En su Trailhead Playground, haga clic en y seleccione Developer Console.
- Haga clic en Archivo | Abrir | Objetos | Contacto.
- Haga clic en Abrir.
El objeto Contacto se abre y muestra los nombres y tipos de todos los campos que tiene asociados. - En el panel inferior, seleccione la ficha Editor de consultas. (Si no ve ninguna ficha, haga clic en la flecha hacia arriba que se encuentra en la parte inferior de la ventana).
El Editor de consultas tiene tres secciones. La sección superior izquierda (1) muestra la consulta. Allí puede modificar la consulta. La sección inferior izquierda (2) muestra los errores. La sección derecha (3) guarda un historial de las consultas SOQL ejecutadas. - Con las teclas CTRL + clic (Windows) o CMD + clic (Mac), seleccione los campos Email, Name y Languages__c.
- Haga clic en Consulta.
La consulta SOQL, basada en el objeto y los campos que seleccionó, se muestra en el Editor de consultas. Tenga en cuenta que, al seleccionar un campo en Query Builder, automáticamente inserta el campo de nombre de API en la consulta SOQL. Con esta herramienta, no es necesario memorizar los nombres de API ni buscarlos. - Haga clic en Execute (Ejecutar).
Una vez ejecutada la consulta, los resultados muestran exactamente qué se solicitó. Además, al usar Editor de consultas, se devuelve el id. de forma adicional. ¡Magnífico!
Cláusulas de SOQL opcionales
Las cláusulas SELECT y FROM son obligatorias, pero SOQL también tiene cláusulas opcionales que permiten restringir la consulta.
Las consultas de ejemplo que crea en Trailhead Playground devuelven una cantidad bastante reducida de registros. La última consulta devolvió 20 registros. Ahora bien, ¿qué pasaría si hubiera miles de registros? La cantidad de potencia de computación necesaria para procesar los datos sería significativa. ¿No sería genial que SOQL tuviera una forma de devolver un subconjunto de todos los registros? Efectivamente.
WHERE
La cláusula WHERE establece las condiciones que debe cumplir un registro para poder seleccionarlo y devolverlo. Utilice esta cláusula de la misma manera que usaría los filtros para restringir los datos que se muestran en un informe o una vista de lista. Por ejemplo, si estamos buscando un contacto cuyo nombre es Stella, podemos agregar WHERE FirstName = 'Stella'
al final de la consulta, de este modo:
SELECT Name, Email FROM Contact WHERE FirstName = 'Stella'
También puede definir la cláusula WHERE para filtrar mediante más de una condición. Hay múltiples formas de hacerlo con tres operadores: AND, OR, IN. Consideremos algunos ejemplos.
Y |
Puede utilizar AND para devolver registros que cumplen dos condiciones. Esta consulta devuelve todos los registros con el nombre Stella y el apellido Pavlova.SELECT Name, Email FROM Contact WHERE FirstName = 'Stella' AND LastName = 'Pavlova' |
O BIEN |
Puede utilizar OR para devolver registros que cumplen una de dos condiciones. Esta consulta devuelve los registros con el apellido James o el apellido Barr.SELECT Name, Email FROM Contact WHERE LastName = 'James' OR LastName = 'Barr' |
IN |
Puede utilizar IN para devolver registros que cumplen al menos una de tres o más condiciones. La cláusula IN suele utilizarse para devolver los valores de una lista de selección, o bien los valores de LIST o SET. La cláusula IN simplifica una consulta que, de otro modo, tendría demasiadas condiciones OR. Esta consulta devuelve todos los registros con el apellido James, Barr, Nedaerk o Forbes.SELECT Name, Email FROM Contact WHERE LastName IN ('James', 'Barr', 'Nedaerk', 'Forbes') |
LIMIT
La palabra clave LIMIT
establece el número máximo de registros para devolver. LIMIT es útil cuando está realizando pruebas y no quiere esperar que una consulta procese un gran conjunto de datos. A medida que aprenda más sobre SOQL, descubrirá más formas relevantes de evitar devolver demasiados registros, pero hasta entonces, LIMIT es una solución sencilla. Probemos agregar un límite a la consulta.
- Vuelva al Editor de consultas en Developer Console.
- Al final de la consulta, escriba
LIMIT 5
de modo que se lea así:SELECT Email, Name FROM Contact LIMIT 5
- Haga clic en Execute (Ejecutar).
El panel Resultado de la consulta muestra cinco resultados.
ORDER BY
Ahora que comprende el funcionamiento de la cantidad de resultados, ¿cómo puede organizarlos? Use la cláusula ORDER BY
para ordenar los resultados por el valor de un campo específico. Opcionalmente, utilice un calificador en una cláusula ORDER BY para especificar el orden ascendente (predeterminado) o descendente, como haría en una hoja de cálculo. Por último, si tiene muchos valores de campo vacíos, use el calificador NULLS para agrupar a todos los valores NULL ya sea en primer lugar (predeterminado) o en último lugar.
Sintaxis |
Descripción |
Ejemplo |
ASC |
Devuelve los resultados en orden ascendente. |
SELECT Name, Email FROM Contact ORDER BY Name ASC LIMIT 5 |
DESC |
Devuelve los resultados en orden descendente. |
SELECT Name, Email FROM Contact ORDER BY Email DESC LIMIT 5 |
NULLS FIRST | LAST |
Devuelve los registros null al comienzo (NULLS FIRST) o al final (NULLS LAST). |
SELECT Name, Email FROM Contact ORDER BY Email NULLS LAST |
En el ejemplo ASC, SELECT Name, Email FROM Contact ORDER BY Name ASC LIMIT 5
devuelve el campo de nombre Name
y el campo Email
de cinco contactos, en orden ascendente por nombre.
En el ejemplo NULLS, SELECT Name, Email FROM Contact ORDER BY Email NULLS LAST
devuelve el email y nombre en orden ascendente (porque es la opción predeterminada) por email. Los registros sin una dirección de email se agrupan al final.
Gracias a esta presentación de la potencia de SOQL, ahora puede recuperar grandes conjuntos de datos, establecer límites para obtener resultados muy específicos y organizar los datos devueltos de modo que se adapten a sus necesidades. Muy útil, ¿no?