SQL es declarativoEn SQL declaramos la naturaleza de los resultados que queremos obtener, en vez de decirle a la máquina cómo debe computar los datos. Esto puede ser un problema en la mente de los programadores ya que estamos acostumbrados a la programación imperativa:

  • pc crea una variable
  • ponle este valor
  • opera contra esta otra variable
  • muestra el resultado por pantalla

Al trabajar con SQL hay que tratar de olvidar esta forma de programación, en su lugar tenemos que declarar cosas.
Los más importante son las tablas

Al principio uno suele pensar que lo más importante en SQL son los campos o columnas de las tablas, sin embargo la parte más importante de SQL son las tablas y sus relaciones. SQL se basa en el álgebra relacional y la teoría de conjuntos, gracias a esto podemos buscar valores que estén en una tabla y en otra o teniendo datos de una tabla podemos llegar a los datos de la otra.
Los JOINS son poderosos

La forma de unir tablas unas con otras es a través de la sentencia JOIN. Las tablas son la parte fundamental de SQL y las uniones que podemos hacer entre ellas nos permiten acceder a toda la información que tengamos almacenada.
La ejecución no se realiza en la forma en que se escribe la consulta

Una consulta que utilice varias sentencias se vería así:

Sin embargo, el orden de ejecución es el siguiente:

Lo primero que ocurre es la carga de datos del disco a memoria ya que se utilizarán esos datos para hacer las operaciones. Es por eso que la primer sentencia es la cláusula FROM. La cláusula SELECT no se ejecuta hasta después de la cláusula HAVING (si existiese). Esto es muy importante, ya que si creamos algún alias en el SELECT no podremos utilizarlo en ninguna cláusula que se ejecute antes de él. Por ejemplo, el siguiente ejemplo está mal:

La forma de solucionarlo es repitiendo la expresión en el WHERE.

Es posible crear tablas derivadas
Las tablas derivadas son subconsultas dentro de paréntesis, las mismas son muy útiles para evitar los problemas que nos puede causar el orden de ejecución de las cláusulas. El ejemplo anterior lo podríamos reescribir de la siguiente manera:

GROUP BY transforma las tablas
Aplicar la cláusula GROUP BY a una consulta transforma las tablas en una referencia con sólo las columnas indicadas. Es por esta razón que en la cláusula SELECT sólo es posible utilizar las columnas listadas en GROUP BY. Sin embargo, el resto de las columnas existen y las podemos usar siempre y cuando las incluyamos dentro de una función de agregación.

Son simples consejos que pueden mejorar tu código, pero hay que tener en cuenta que es necesario tiempo y mucha práctica para dominar el uso de SQL.