jueves, 5 de mayo de 2016

Select en MySQL (Maria DB) Parte I

Buenas tardes queridos lectores, el día de hoy entraremos en materia con la sentencia SELECT, anteriormente, ya la habíamos tocado de manera básica, pero hoy la tocaremos de manera un poco más especializada, bueno, aun no entraremos a la parte de los JOIN, pero veremos algunas funciones básicas, que de desprenden del mismo SELECT, ya no los aburro más con tanto texto, mejor pasaremos a lo que nos gusta que es a hacer las cosas. Les pido restauren la base de datos que le proporcioné en el post anterior, se los comparto por si no lo tienen:



Les dejo el diagrama de la relación de las tablas de nuestra base de datos, desde donde haremos nuestras consultas




SELECT

Select se utiliza para recuperar los datos de una o varias tablas, la sentencia básica es la siguiente:
SELECT [campos]from[nombre_tabla] [WHERE] [condición]

Select se podría utilizar también para recuperar filas calculadas sin referencia a ninguna tabla, pero vamos poco a poco, como ejemplo, escribamos la siguiente sentencia:

select 1+1;


Como ven, la base de datos realiza la operación de manera correcta, también respetando la jerarquía de operaciones como en el siguiente ejemplo:

select 5+4*3 as Resultado;


Podemos apreciar como se sigue la jerarquía de operaciones, en este caso primero se realiza la operación 4*3 y después se realiza el +5, es importante prestar atención a la instrucción as, que nos sirve para personalizar el nombre de la columna, en la primera operación del 1+1 no empleamos alias, y nos aparece como nombre de columna la operación realizada y como registro, el resultado, en este caso el nombre de la columna será Resultado, porque, como pueden ver se lo pusimos como alias, este es uno de los múltiples usos del SELECT, pero el más importante de todos, es el de recuperar información de las tablas, como ya lo vimos anteriormente, el ejemplo más básico sería el siguiente:

Ejercicio 1:


Mostrar toda la información de la tabla PARTIDOS utilizando la sentencia SELECT

select * from partidos;

Y nos arrojará la siguiente información:


Como pueden ver, nos arrojará todas las columnas de la tabla PARTIDOS

Ejercicio 2:

Mostrar la información de la tabla PARTIDOS, únicamente nos interesan los partidos del torneo de CLAUSURA 2016

select * from torneos;



select * from partidos where idtorneo=11;

El ejercicio nos indica claramente que solo queremos los partidos del torneo de Clausura 2016, así que primero consulte la tabla TORNEOS y me di cuenta que el idtorneo del torneo de Clausura 2016 era el idtorneo = 11, así que en la clausula WHERE le indiqué que me mostrara, todas las columnas de la tabla PARTIDOS donde el idtorneo sea igual a 11, el resultado de la consulta se muestra en la siguiente imagen:




Ejercicio 3:

Mostrar únicamente Fecha y hora del partido, jornada, equipo local, goles del equipo local, goles del equipo visitante y nombre del equipo visitante, únicamente del torneo de Clausura 2016 y que sean de la jornada 1

select fecha, hora, jornada, equipolocal, goleslocal, equipovisitante, golesvisitante
from partidos
where idtorneo=11

and jornada ='1'

Anteriormente estábamos utilizando el * para mostrar todos los campos, en esta ocasión estamos indicándole al la sentencia SELECT los campos que va a mostrar, esto se realiza en la siguiente línea:

select fecha, hora, jornada, equipolocal, goleslocal, equipovisitante, 
golesvisitante

También mediante la cláusula WHERE le estamos indicando que solo del idtorneo=11 que es el torneo de Clausura 2016, pero también (and), que sea únicamente de la jornada 1, esto se realiza en la siguiente línea:

where idtorneo=11

and jornada ='1'

El resultado de la consulta, quedaría como se muestra en la siguiente imagen:












Ejercicio 4:

Mostrar únicamente Fecha y hora del partido, jornada, equipo local, goles del equipo local, goles del equipo visitante y nombre del equipo visitante del torneo de Clausura 2016 y el de Ascenso MX Clausura 2016 y que sean de la jornada 1

select fecha, hora, jornada, equipolocal, goleslocal, equipovisitante, golesvisitante
from partidos
where idtorneo in (11,12)
and jornada ='1'

Esta consulta podemos realizarla de dos maneras, la primera es con la sentencia IN, la cual sirve para indicar varias condiciones, que estén en el mismo campo, en el ejemplo, estamos diciendo que va a mostrar las columnas enlistadas de la tabla partidos donde el idtorneo este en 11 y 12, de esta manera se tomarán los dos valores y se mostrarán ambos torneos, en este ejemplo son dos, pero pueden ser una cantidad n de condiciones.

Vamos a verlo de otra manera:

select fecha, hora, jornada, equipolocal, goleslocal, equipovisitante, golesvisitante
from partidos
where idtorneo =11
or idtorneo =1
and jornada ='1';

En esta segunda forma, no utilizamos la sentencia IN, utilizamos la sentencia OR, funciona de manera casi igual a la sentencia IN, y para este ejemplo funciona exactamente igual.

Ejercicio 5:

Mostrar el nombre de los equipos mexicanos que están dados de alta en la base de datos, pero mostrarlos alfabéticamente utilizando la sentencia ORDER BY

select idequipo, nombre from equipos
where codigopais='MX'

Al ejecutar esta sentencia, nos mostrará el idequipo, y nombre del equipo mostrados en el órden que se dieron de alta, como se puede apreciar en el campo idequipo.


El ejercicio plantea la idea que se muestren en orden alfabético, por lo cual utilizaremos la sentencia ORDER BY.

La sentencia ORDER BY, nos servirá para ordenar de manera ascendente o descendente el valor de un campo en la base de datos, predeterminadamente la ordenación será ascendente, a menos que le indiquemos lo contrario, probemos con la siguiente sentencia:

select idequipo, nombre from equipos
where codigopais='MX'
order by nombre;


Como ven, se ordena alfabéticamente desde la A-Z, esto se logra en la siguiente línea:

order by nombre;

En esta instrucción solo le indicamos que lo ordenará por nombre, como les mencioné, si no se indica lo contrario, siempre ordenará de forma ascendente, ahora le daremos la instrucción que lo ordene de manera descendente, y para eso se lo indicaremos en el GROUP BY

select idequipo, nombre from equipos
where codigopais='MX'
order by nombre desc;



Como ven, en esta ocasión le indicamos a MySQL (MariaDB), que ordenara el campo NOMBRE de manera descendente, y esto se realizó en la siguiente instrucción:

order by nombre desc;

Hasta aquí la primera parte del tema SELECT, ya vimos la estructura básica, pero hay muchas más funciones que veremos en post posteriores.

Espero haya sido de su agrado y de su utilidad, espero también compartan, comenten, den +1 o algun clic en algún anuncio de su agrado si es que quieren agradecer de manera más lucrativa. En el proximo post veremos algunas funciones como por ejemplo la función COUNT

Banderas de Visitantes

Flag Counter