Instrucción SELECT (SQL Server Compact)

Recupera filas de la base de datos y permite seleccionar una o varias filas o columnas de una o varias tablas. Ésta es la construcción principal de SQL usada para expresar consultas. SELECT no modifica, inserta ni elimina ningún dato.

Sintaxis

SELECT select_list 
[ FROM table_source ]
[ WHERE search_condition ] 
[ GROUP BY group_by_expression ] 
[ HAVING search_condition ] 
[ ORDER BY order_expression [ ASC | DESC ] ] 

Comentarios

Una instrucción SELECT describe una consulta al sistema. Al ejecutar la consulta no se actualiza ningún dato. El resultado de la consulta es una tabla con filas estructuradas de forma idéntica, cada una de las cuales tiene el mismo conjunto de columnas. La instrucción SELECT define exactamente las columnas de la tabla de resultados y las filas que rellenarán la tabla. La instrucción SELECT no le especifica al sistema cómo ejecutar la consulta. En su lugar, el sistema ejecuta la consulta de la forma que se considere óptima mediante el uso de un módulo de optimización interno basado en costos. Se garantiza que el resultado será equivalente a la siguiente estrategia de ejecución canónica. La única diferencia podría estar en el orden de las filas de la tabla, aunque sería coherente con cualquier orden especificado por una cláusula ORDER BY.

Estrategia de ejecución

  1. Genere la combinación de tablas en la cláusula FROM. Si se usa la sintaxis de JOIN explícita, el resultado de JOIN es obvio. Si la cláusula FROM tiene una lista de nombres de tabla separados por comas, es una combinación implícita de las distintas tablas.

  2. Si existe una cláusula WHERE, aplique la condición de búsqueda a las filas resultantes del paso 1 y conserve solo aquellas filas que cumplan la condición.

  3. Si no hay agregados en la cláusula SELECT y no hay ninguna cláusula GROUP BY, vaya al paso 7.

  4. Si hay una cláusula GROUP BY, divida las filas resultantes del paso 2 en varios grupos, de modo que todas las filas de cada grupo tengan el mismo valor en todas las columnas de agrupamiento. Si no hay ninguna cláusula GROUP BY, coloque todas las filas en un solo grupo.

  5. Para cada grupo resultante del paso 4, aplique la cláusula HAVING, si se ha especificado. Solo se conservarán aquellos grupos que cumplan la cláusula HAVING.

  6. Para cada grupo resultante del paso 5, genere exactamente una fila de resultados evaluando la lista de selección de la cláusula SELECT en dicho grupo.

  7. Si la cláusula SELECT contiene la palabra clave DISTINT, elimine las filas duplicadas en el resultado del paso 6.

  8. Si hay una cláusula ORDER BY, ordene el resultado del paso 7 tal y como se especifique en la expresión de ordenación.