Sobes.tech
Middle

Habla sobre la sintaxis completa del operador SELECT en una base de datos relacional.

sobes.tech AI

Respuesta de la IA

El operador SQL SELECT se utiliza para seleccionar datos de una o varias tablas. Su sintaxis completa incluye muchas partes opcionales:

SELECT [ALL | DISTINCT]
    select_expr, select_expr, ...
FROM
    table_references
[WHERE
    where_condition]
[GROUP BY
    {col_name | expr | position}
    [ASC | DESC], ... [WITH ROLLUP]]
[HAVING
    having_condition]
[ORDER BY
    {col_name | expr | position}
    [ASC | DESC], ...]
[LIMIT
    [offset,] row_count | row_count OFFSET offset]
    [FOR UPDATE | LOCK IN SHARE MODE];

Analicemos las partes principales:

  • SELECT [ALL | DISTINCT] select_expr, ...:

    • SELECT: Palabra clave que indica la selección de datos.
    • ALL: (Por defecto) Incluye todas las filas encontradas, incluyendo duplicados.
    • DISTINCT: Elimina filas duplicadas del resultado.
    • select_expr: Expresión que define las columnas seleccionadas o valores calculados (por ejemplo, column_name, function(column), column1 + column2, * para seleccionar todas las columnas). Se pueden usar alias con la palabra AS.
  • FROM table_references:

    • FROM: Palabra clave que indica la fuente de datos.
    • table_references: Lista de tablas, vistas o resultados de joins (JOIN). Tipos de joins: INNER JOIN, LEFT [OUTER] JOIN, RIGHT [OUTER] JOIN, FULL [OUTER] JOIN, CROSS JOIN.
  • [WHERE where_condition]:

    • WHERE: Palabra clave para filtrar filas según una condición.
    • where_condition: Expresión lógica con operadores de comparación (=, !=, >, <, >=, <=), operadores lógicos (AND, OR, NOT), operadores para rangos (BETWEEN), listas (IN), patrones (LIKE) y chequeo de NULL (IS NULL, IS NOT NULL).
  • [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]]:

    • GROUP BY: Agrupa filas con valores iguales en columnas para funciones agregadas (COUNT, SUM, AVG, MIN, MAX).
    • col_name | expr | position: Columna, expresión o posición para agrupar.
    • ASC | DESC: Orden dentro del grupo (usualmente con ORDER BY).
    • WITH ROLLUP: Añade filas con totales (en MySQL).
  • [HAVING having_condition]:

    • HAVING: Filtra grupos creados por GROUP BY usando condiciones que pueden incluir funciones agregadas.
  • [ORDER BY {col_name | expr | position} [ASC | DESC], ...]:

    • ORDER BY: Ordena las filas resultantes.
    • col_name | expr | position: Columna, expresión o posición para ordenar.
    • ASC: Ascendente (por defecto).
    • DESC: Descendente.
  • [LIMIT [offset,] row_count | row_count OFFSET offset]:

    • LIMIT: Limita el número de filas devueltas.
    • offset: Desplazamiento desde el inicio.
    • row_count: Número máximo de filas.
  • [FOR UPDATE | LOCK IN SHARE MODE]:

    • Bloqueos opcionales en transacciones.
    • FOR UPDATE: Bloqueo exclusivo.
    • LOCK IN SHARE MODE: Bloqueo compartido (MySQL).

El orden de aplicación en una consulta SQL suele ser:

  1. FROM
  2. JOIN
  3. WHERE
  4. GROUP BY
  5. HAVING
  6. SELECT
  7. DISTINCT
  8. ORDER BY
  9. LIMIT
  10. FOR UPDATE / LOCK IN SHARE MODE