SELECT

Sintaxis

SELECT [ALL | DISTINCT | DISTINCTROW] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [, select_expr ...] [ FROM table_references [WHERE where_condition] [GROUP BY {col_name | expr | position} [ASC | DESC], ... [WITH ROLLUP]] [HAVING where_condition] [ORDER BY {col_name | expr | position} [ASC | DESC], ...] [LIMIT {[offset,] row_count | row_count OFFSET offset [ROWS EXAMINED rows_limit] } | [OFFSET start { ROW | ROWS }] [FETCH { FIRST | NEXT } [ count ] { ROW | ROWS } { ONLY | WITH TIES }] ] procedure|[PROCEDURE procedure_name(argument_list)] [INTO OUTFILE 'file_name' [CHARACTER SET charset_name] [export_options] | INTO DUMPFILE 'file_name' | INTO var_name [, var_name] ] [FOR UPDATE lock_option | LOCK IN SHARE MODE lock_option]

export_options: [{FIELDS | COLUMNS} [TERMINATED BY 'string'] [[OPTIONALLY] ENCLOSED BY 'char'] [ESCAPED BY 'char'] ] [LINES [STARTING BY 'string'] [TERMINATED BY 'string'] ]

lock_option: [WAIT n | NOWAIT | SKIP LOCKED]

Descripción

SELECT se utiliza para recuperar filas de una o más tablas. Puede incluir sentencias UNION y subqueries.

  • Cada select_expr expresión indica la columna o dato que se desea recuperar. Debe indicar al menos una expresión. Para más detalles, consulte Expresiones más abajo.
  • La cláusula FROM indica la/s tabla/s desde las que recuperar filas. Utilice un nombre de tabla o una expresión JOIN para relacionar varias tablas. Ver los detalles de JOIN. Si no se utiliza ninguna tabla, se puede indicar FROM DUAL. Esto no es obligatorio, pero se puede utilizar por compatibilidad.
  • Cada tabla también se puede indicar como db_name.tabl_name. Así mismo, cada columna se puede indicar como tbl_name.col_name e incluso como db_name.tbl_name.col_name. Esto permite escribir consultas que involucren vaias bases de datos. Para consultar los detalles de la sintaxis, vea Cualificadores.
  • Si se incluye la cláusula WHERE, esta muestra la condición que deben cumplir las filas para ser seleccionadas. where_condition debe ser cierta (TRUE) para que la fila sea devuelta. Si no se incluye una cláusua WHERE, la consulta devuelve todas las filas.

En la cláusula WHERE puede utilizar cualquier función y operador soportado por MariaDB, excepto en las funciones de agregado. Ver Funciones y Operadores and Funciones y modificadores para utilizar con GROUP BY (agregado).

  • Para ordenar los resultados, utilice la cláusula ORDER BY.
  • Para restringir los resultados a un determinado número de filas, utilice la cláusula LIMIT. Si desea empezar en una determinada fila, puede indicar esta como un offset.
  • Utilice las cláusulas GROUP BY y HAVING para agrupar las filas cuando tienen campos (GROUP BY) o valores calculados (HAVING) en común.

SELECT también se puede utilizar para devolver valores calculados sin necesidad de hacer referencia a una tabla.

Expresiones

Una sentencia SELECT debe contener una o más expresiones separadas por comas. Cada expresión puede ser una de las siguientes:

  • El nombre de una columna de la tabla.
  • Cualquier expresión que utilice functions and operators.
  • * para seleccionar todas las columnas de todas las tablase en la cláusula FROM.
  • tbl_name.* para seleccionar todas las columnas de la tabla tbl_name.

Cuando indique una columna, puede especificar únicamente el nombre de la columna, o cualificarla precediéndo el nombre de la columna con tbl_name.. La forma cualificada (tbl_name.col_name) es útil si se están relacionando varias tablas en la cláusula FROM. Si no utiliza la forma cualificada, MariaDB trata de encontrar el nombre de la columna en cada tabla. Si se encuentra el mismo nombre de columna en varias tablas, se producirá un error.

Se puede utilizar comilla simple <``> con los nombres de columna. Si se utiliza la forma cualificada, debera poner tanto el nombre de la tabla, como el de la columna con comillas simples: `tbl_name`.`col_name`.

Si utiliza cualquier función de agregado en una expresión, todas las filas del resultado serán agrupadas de forma implícita como si hubiera utilizado una cláusula GROUP BY NULL.

DISTINCT

Una consulta puede devolver varias filas idénticas. Por defecto, se devuleven todas las filas incluso aunque sus valores sean iguales. Para indicar explícitamente que desea obtener las filas duplicadas, incluya la opción ALL. Si desea no mostrar las filas duplicadas, inluya la opción DISTINCT.

DISTINCTROW es un sinónimo de DISTINCT. Consulte también COUNT DISTINCT y SELECT UNIQUE en modo Oracle.

INTO

Si necesita escribir los resultados en un fichero o en una variable, utilice la cláusula INTO.

La operación inversa de SELECT INTO OUTFILE es LOAD DATA.

LIMIT

Restringe las filas devueltas a la cantidad expresada. Para más detalles, consulte LIMIT y LIMIT ROWS EXAMINED.

LOCK IN SHARE MODE/FOR UPDATE

Para más detalles de las cláusulas de bloqueo, conulte BLOQUEO EN MODO COMPARTIDO y PARA ACTUALIZACIÓN/MODIFICACIÓN.

OFFSET ... FETCH

MariaDB starting with 10.6

Consultar SELECT ... OFFSET ... FETCH.

ORDER BY

Ordena el conjunto de filas devuelto. Para más detalles, consulte ORDER BY.

PARTICIÓN

Indica al optimizador qué particiones son relevantes para la consulta. El resto de las particiones no se tendrán en cuenta y no se leerán. Para más información, consulte Selección y eliminación de Particiones.

PROCEDURE

Pasa el conjunto completo de resultados a un Procedimiento en C. Consulte PROCEDURE y PROCEDURE ANALYSE (el único procedimiento incluido que no requiere recompilar el servidor).

SKIP LOCKED

MariaDB starting with 10.6

La cláusula SKIP LOCKED se añadió en MariaDB 10.6.0.

Provoca que las filas que no se han podido bloquear (LOCK IN SHARE MODE o FOR UPDATE) sean excluidas del resultado. Se asume un NOWAIT implícito. Este comportamiento sólo está implementado en tablas InnoDB. En el resto se ignora.

SQL_CALC_FOUND_ROWS

Cuando se utiliza SQL_CALC_FOUND_ROWS MariaDB calculará cuantas filas habría en el resultado si no existiera la cláusula LIMIT. Este resultado se puede obtener llamando a la función FOUND_ROWS() en la siguiente sentencia sql.

Cláusula max_statement_time

Se puede fijar el tiempo máximo permitido para ejecutar consultas individuales utilizando max_statement_time junto con SET STATEMENT. Por ejemplo:

SET STATEMENT max_statement_time=100 FOR 
  SELECT field1 FROM table_name ORDER BY field1;

WAIT/NOWAIT

Fija el tiempo máximo de bloqueo antes de devolver un error. Consulte WAIT y NOWAIT para más detalles.

Ejemplo

SELECT f1,f2 FROM t1 WHERE (f3<=10) AND (f4='y');

Si desea ver más ejemplos, consulte Getting Data from MariaDB (Tutorial para principiantes), o los subartículos siguientes.

Contenidos relacionados

13/12/2022 - Traducido por Carlos Ponce de León

Comments

Comments loading...
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.