Curso de MySQL
Consultas, lista de correo 'C++ Con Clase' 'MySQL Con Clase' página de entrada Tabla de contenido Contactar con Webmaster
Curso Sentencias Funciones API C

SQL

Sentencias

ALTER TABLE ANALYZE TABLE BACKUP TABLE BEGIN BEGIN WORK CHECK TABLE CHECKSUM TABLE COMMIT CREATE DATABASE CREATE TABLE CREATE USER DELETE DESCRIBE DO DROP DATABASE DROP INDEX DROP TABLE DROP USER FLUSH GRANT HANDLER INSERT INSERT ... SELECT INSERT DELAYED JOIN KILL LOAD DATA LOCK TABLES OPTIMIZE TABLE RENAME TABLE REPAIR TABLE REPLACE RESET REVOKE ROLLBACK SET SET TRANSACTION SHOW SHOW CHARACTER SET SHOW COLLATION SHOW COLUMNS SHOW CREATE DATABASE SHOW CREATE TABLE SHOW CREATE VIEW SHOW DATABASES SHOW ENGINES SHOW ERRORS SHOW GRANTS SHOW INDEX SHOW INNODB STATUS SHOW KEYS SHOW LOGS SHOW PRIVILEGES SHOW PROCESSLIST SHOW STATUS SHOW TABLE STATUS SHOW TABLES SHOW VARIABLES SHOW WARNINGS START TRANSACTION TRUNCATE UNION UNLOCK TABLES UPDATE USE

SELECT

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,...
   [INTO OUTFILE 'file_name' export_options]
    | INTO DUMPFILE 'file_name']
   [FROM table_references
      [WHERE where_definition]
      [GROUP BY {col_name | expr | position} 
        [ASC | DESC], ... [WITH ROLLUP]]
      [HAVING where_definition]
      [ORDER BY {col_name | expr | position} 
        [ASC | DESC] ,...]
      [LIMIT {[offset,] row_count | row_count OFFSET offset}]
      [PROCEDURE procedure_name(argument_list)]
      [FOR UPDATE | LOCK IN SHARE MODE]]

SELECT se usa para recuperar filas selecionadas de una o más tablas. El soporte para sentencias UNION y subconsultas está disponible a partir de MySQL 4.0 y 4.1, respectivamente.

SELECT puede usarse también para recuperar filas calculadas sin referencia a ninguna tabla. Por ejemplo:

mysql> SELECT 1 + 1;
         -> 2

Todas las claúsulas usadas deben darse en el mismo orden exacto que se muestra en la descripción de la sintaxis. Por ejemplo, la cláusula HAVING debe estar después de cualquier cláusula GROUP BY y antes de cualquier cláusula ORDER BY.

A continuación de la palabra clave SELECT, se pueden añadir determinadas opciones que afectan al funcionamiento de la sentencia.

Las opciones ALL, DISTINCT y DISTINCTROW especifican si las filas duplicadas deben ser devueltas. Si no se da ninguna de estas opciones, por defecto se usa ALL (se devuelven todas las filas coincidentes). DISTINCT y DISTINCTROW son sinónimos y especifican que las filas duplicadas en el conjunto de resultados deben ser eliminadas.

HIGH_PRIORITY, STRAIGHT_JOIN y las opciones que empiezan con SQL_ son extensiones MySQL al SQL estándar.

  • HIGH_PRIORITY dará a SELECT mayor prioridad que a sentencias que actualicen una tabla. Sólo se debe usar para consultas que sean muy rápidas y deban ser hechas inmediatamente. Una consulta SELECT HIGH_PRIORITY que se realice mientras la tabla esté bloqueada para lectura se realizará aunque exista una sentencia de actualización que esté esperando a que la table deje de estar bloqueada. HIGH_PRIORITY no se puede usar con sentecias SELECT que sean parte de una UNION.
  • STRAIGHT_JOIN fuerza el optimizador a unir tablas en el orden en que han sido listadas en la cláusula FROM. Se puede usar para mejorar la velocidad de una consulta si el optimizador une las tablas en un orden no óptimo. Consultar EXPLAIN. STRAIGHT_JOIN también puede ser usado en la lista de table_references. Ver JOIN

  • SQL_BIG_RESULT puede ser usada con GROUP BY o DISTINCT para informar al optimizador que el conjunto resultados puede contener muchas filas. En ese caso, MySQL podrá usar directametne tablas temporales en disco si es necesario. MySQL puede también, en este caso, optar por ordenar una tabla temporal con una clave dentro de los elementos GROUP BY.
  • SQL_BUFFER_RESULT fuerza que el resultado sea colocado en una tabla temporal. Esto ayuda a MySQL a librerar bloqueos en tablas más rápidamente y ayuda en casos donde toma mucho tiempo en enviar los datos al cliente.
  • SQL_SMALL_RESULT, puede usarse con GROUP BY o DISTINCT para informar al optimizador que el resultado será pequeño. En ese caso, MySQL usa tablas temporales rápidas para almecenar la tabla resultado en lugar de usar ordenamiento. A partir de MySQL 3.23 esto normalmente no es necesario.
  • SQL_CALC_FOUND_ROWS (versión 4.0.0 y siguientes) indica a MySQL que calcule cuántas filas contendrá el conjunto de resultados, ignorando cualquier cláusula LIMIT. El número de filas puede recuperarse con SELECT FOUND_ROWS(). Con versiones anteriores a la 4.1.0 esto no funcionará junto con LIMIT 0, ya que está optimizado de modo que regrese instantaneamente (resultando un número de filas igual a cero).
  • SQL_CACHE dice a MySQL que almacene el resultado de la consulta en un caché si se usa un valor 2 o DEMAND para QUERY_CACHE_TYPE. Para una consulta que use UNION o subconsultas, esta opción tendrá efecto al ser usada en cualquier SELECT de la consulta.
  • SQL_NO_CACHE indica a MySQL que no almacene el resultado de la consulta en el caché de consulta. Para una consulta que use UNION o subconsultas, esta opción tendrá efecto al ser usada en cualquier SELECT de la consulta.
  • (4.1.1)