SENTENCIA SELECT EN MYSQL

La sentencia select en my SQL, se usa para recuperar filas seleccionadas de una o mas tablas.
SELECT tambien puede utilizarse para recuperar filas calculadas, sin referencia a alguna tabla.
 Esta sentencia tambien nos permite consultar los datos almacenados en una o mas tablas de la base de datos.

Su estructura es de la siguiente manera:

SELECT [ALL | DISTINCT ]
<nombre_campo> [{,<nombre_campo>}]
FROM <nombre_tabla>|<nombre_vista>
[{,<nombre_tabla>|<nombre_vista>}]
[WHERE <condicion> [{ AND|OR <condicion>}]]
[GROUP BY <nombre_campo> [{,<nombre_campo >}]]
[HAVING <condicion>[{ AND|OR <condicion>}]]
[ORDER BY <nombre_campo>|<indice_campo> [ASC | DESC]
[{,<nombre_campo>|<indice_campo> [ASC | DESC ]}]]
  

La sentencia SELECT contiene asi mismo varios formatos como lo son:

SELECT: Esta palabra clave nos indica que la consulta que vamos a realizar es de seleccion.

ALL:  Este nos indica que seleccionaremos todos los valores, generalmente no se especifica, ya que viene por default.

DISTINCT: Nos indica que queremos seleccionar solo valores distintos. 

FROM:  Indicamos la o las tablñas desde donde queremos recuperar los datos, cuando existe mas de una tabla a la consulta se le denomina "consulta combinada" o "join", en este tipo de consultas es necesario aplicar una condicion de combinacion, a traves de la consulta WHERE.

WHERE:  Nos especifica una condicion que debe cumplirse para que los datos sean devueltos por la consulta; a su vez, este admite operadores logicos como AND y OR.

GROUP BY:  Este nos especifica la agrupacion que le vamos a dar  a los datos, se usa siempre en combinacion de funciones agregadas.

HAVING: Nos da una condicion que se debe cumplir para los datos, y especifica una condicion que debe cumplirse para que los datos sean devueltos por la consulta, su funcionamiento es similar al del WHERE, pero aplicado a un conjunto de resultados devueltos por la consulta. Este deba aplicarse siemore junto a GROUP BY, y los contenidos deben ser referidos a los contenidos en ella. 
La cláusula HAVING se aplica cerca del final, justo antes de que los resultados se envíen al cliente, sin optimizaciones. (LIMIT se aplica después de HAVING). Antes de MySQL 5.0.2, una cláusula HAVING se puede referir a cualquier columna o alias en la select_expr de lista SELECT o en las subconsultas exteriores, y a las funciones agregadas. SQL estándar requiere que HAVING debe hacer deferencia sólo a columnas en la cláusula GROUP BY o columnas usadas en funciones agregadas. Para permitir ambos comportamientos, el de SQL estándar y el específico de MySQL, que permite referirse a columnas en la lista SELECT, a partir de MySQL 5.0.2 se permite que HAVING se refiera a columnas en la lista SELECT, columnas en la cláusula GROUP BY, columnas en subconsultas exteriores, y a funciones agregadas. 

ORDER BY: Presenta el resultado ordenado de las columnas indicadas, el orden se puede presentar de forma ascendente (ASC), el cual generalmente se presenta por default o de manera predeterminada; y en forma descendente (DESC).

EJEMPLO: 

ORDER BY modelo DESC (ordena de manera descendente con el campo modelo, cuando es   de  manera ascendente lo hace por defecto)

REALIZAR UNA CONSULTA QUE ORDENE EN ORDEN ALFABETICO POR COLOR, Y A LA VEZ EN ORDEN
DESCENDENTE POR MATRICULA.

SELECT matricula,
marca,            
modelo, color,
num_kilometros

FROM automoviles

ORDER BY color,matricula DESC


SELECT matricula,
marca,
modelo,
color,
num_kilometros

FROM automoviles WHERE matricula= 'GYU789';
FROM automoviles WHERE color= 'AZUL';