martes, 11 de octubre de 2016

Consultas SQL: Sentencia SELECT



Consultas SQL
Para construir una consulta SQL debemos hacernos como mínimo tres preguntas:
Primero, ¿Qué datos nos solicitan?
El nombre de los campos de la tabla.
Segundo, ¿Dónde están los datos?
El nombre de la(s) tabla(s)
Tercero, ¿Qué criterios deben cumplir los registros?
Criterio donde se especifica el filtro para seleccionar los registros


Cláusulas básicas utilizadas en una consulta:
Para realizar una consulta a una o varias tablas básicamente se utilizan tres (3) cláusulas:
Cláusula SELECT: Donde indicamos los campos de la tabla que queremos obtener, separados por comas. Responde a la pregunta: ¿Qué datos nos piden?
Cláusula FROM: Donde indicamos en qué tabla se encuentran estos campos. Responde a la pregunta: ¿Dónde están los datos?
Cláusula WHERE: Donde se establece la condición que ha de cumplir los registros de la tabla que serán seleccionados. Responde a la pregunta: ¿Qué requisitos deben cumplir lo registros?


Tipos de Consultas SQL:
Se pueden diferenciar dos tipos de consultas SQL:  
  1. Las consultas para visualizar registros: Son consultas donde se desean ver los registros una tabla.
  2. Las consultas de cálculo o totalización: Son consultas donde se desea realizar un cálculo de totalización sobre los registros de una tabla  mediante las funciones: COUNT, SUM, AVG, MAX y MIN. Estos totales pueden a su vez agruparse por campos indicados en la cláusula GROUP BY, y estos totales pueden ser filtrados por la cláusula HAVING.


SELECT:
La sentencia SELECT permite consultar los registros de determinados campos de una o varias tablas.


Sintaxis:
SELECT [ALL | DISTINCT ]
  Campo_de_tabla  [AS alias],...
  FROM tablas
  WHERE condiciones
  [GROUP BY [ASC | DESC]]
  [HAVING condiciones]
  [ORDER BY [ASC | DESC]]
  [LIMIT ]


Observación:
La sentencia SELECT no se limita a nombres de campos de tablas, pueden ser utilizadas para expresiones que no corresponden a ninguna tabla:
Ejemplo:
mysql>SELECT  2+5=7;
Ejemplo:
Mostrar la cédula, nombre, apellidos, tipo y sueldo de empleados que sean fijos y su sueldo mayor a 30.000
mysql>SELECT cedula,nombre, apellidos,tipo,sueldo FROM empleado WHERE tipo=”Fijo” AND sueldo>30000;


AS
La cláusula AS permite renombrar la cabecera de una columna de resultado con un alias o sobrenombre o renombrar el nombre de una tabla.
Ejemplo:
Ver los nombre de los empleados y fechas de nacimiento, renombrando el campo “fec_ing” con el alias “Ingreso” y renombrar la tabla “empleado” como “a”.
mysql> SELECT a.nombre,a.fec_ing AS Ingreso FROM empleado AS a;


DISTINCT
La cláusula DISTINCT devuelve valores únicos. En una tabla, un campo puede contener valores duplicados; y algunas veces sólo se requiere un listado de los valores diferentes.
Ejemplo:
Se desea saber los distintos valores que existen en el campo “tipo” de la tabla empleado.
mysql>SELECT DISTINCT tipo FROM empleado;
El campo del cual se requiere los valores únicos debe estar inmediatamente luego del DISTINCT.


GROUP BY
La cláusula GROUP BY permite obtener totales, mediante las funciones de totalización SUM, COUNT, AVG, etc por grupos. Los grupos resultantes depende de los diferentes valores que existan en los registros seleccionados.
Las funciones SUM (suma), COUNT (contar), AVG (promedio), MAX (máximo) y MIN (mínimo), devuelven en una sola fila el cálculo sobre un campo aplicado a un grupo de registros. Los registros a tomar en cuenta serán los establecidos en la cláusula WHERE. Si no se define esta cláusula se toman todos los registros de la tabla.
Ejemplo:
Sumar todos los sueldos por cada tipo de empleado.
mysql>SELECT SUM(sueldo),tipo FROM empleados GROUP BY tipo;


HAVING
La clásula HAVING es como una cláusula WHERE pero para los cálculos de totalización.
Diferencia entre WHERE y HAVING
Cuando el motor SQL recorre la tabla para obtener el resultado, ignora los registros que no satisfacen la cláusula WHERE y una vez el motor SQL a recorrido toda la tabla y ha finalizado el cálculo, es cuando la cláusula HAVING entra en acción ocultando los resultados que no satisfacen la cláusula por lo tanto se aplica en la fase final del proceso que ejecuta el motor SQL, y siempre sobre las filas de resultados totalizados con (COUNT, SUM, AVG, etc.).


ORDER BY
La cláusula LIMIT ordena los resultados de la consulta por el campo especificado. Puede ser ordenado de forma ascendente o descendente.
Ejemplo:
Muestra todos los registros de la tabla empleado ordenados por el apellido.
mysql>SELECT * FROM empleado ORDER BY apellido;
Muestra todos los registros de la tabla empleado ordenados por el sueldo de mayor a menor.
mysql>SELECT * FROM empleado ORDER BY sueldo DESC;


LIMIT
La cláusula LIMIT permite limitar el número de registros consultados;
Ejemplo:
Muestra los dos primeros registros de la tabla empleado.
mysql> SELECT * FROM empleado LIMIT 0,2;
Muestra tres registros de la tabla empleado saltando los dos primeros. .
mysql> SELECT * FROM empleado LIMIT 2,3;


LIKE
El operador LIKE se aplica a datos de tipo cadena y se utiliza para buscar registros en la cual una cadena coincida con un patrón dado.
Ejemplos:
Devuelve CIERTO porque la cadena a buscar coincide con el inicio.
mysql> SELECT “hola mundo” LIKE “hola%”;
Devuelve FALSO porque la cadena a buscar no coincide con el inicio.
mysql> SELECT “hola mundo” LIKE “mundo%”; 
Devuelve FALSO porque la cadena a buscar no coincide con el final.
mysql> SELECT “hola mundo” LIKE “%hola”;
Devuelve CIERTO porque la cadena a buscar coincide con el final.
mysql> SELECT “hola mundo” LIKE “%mundo”;
Devuelve CIERTO porque la cadena a buscar está contenida en la cadena buscada
mysql> SELECT “hola mundo” LIKE “%mun%”; 

1 comentario:

  1. estaba refrescando algunas cosas y note que en ORDER BY

    el concepto creo que tiene un pequeño error al inicio que dice "La cláusula LIMIT" y deberia ser "La cláusula ORDER BY ..."

    de resto Excelente información!

    ResponderEliminar