SQL Básico. Descargar base de datos Chinook.

En la sección anterior vimos como agrupar datos y ordenar resultados . Hemos hablado de que SQLite es una base de datos relacional. Hasta ahorita sólo hemos trabajado con una sola tabla, sin embargo en la práctica, las bases de datos cuentan con más de una tabla y a veces hasta decenas o cientos de ellas y que se “relacionan” entre sí. Para la prácticas siguientes del curso usaremos la base de datos Chinook que es gratuita.

La base de datos Chinook, es una base de datos de ejemplo que puede ser usada para demostraciones. Se creo como alternativa a la base de datos de ejemplo llamada Northwind que viene con la instalación de motor de base de datos SQL Server. La base de datos puede ser cargada en distintos motores de bases de datos entre los que se encuentran SQL Server, Oracle, MySQL, PostgreSQL, DB2 y por supuesto SQLite que es el el motor de base de datos que usamos en este curso.

La base de datos Chinook puede ser usada libremente y fue creada por desarrolladores y puesta en le sitio de GitHub. Si quieres visitar el sitio Github de desarrollo de esta base de datos, visita esta liga. Ahí podrás encontrar más información y/o puedes descargar el archivo de la base de datos Chinook en formato SQLite que se encuentra en ese mismo sitio. También puedes descargar la base de datos Chinook en formato SQLite comprimido en un archivo zip en este mismo blog.

Imagen del sitio GitHub de la base de datos Chinook.

Si lo descargas desde la liga del sitio de GitHub, el archivo descargado se llama “Shinook_Sqlite.sqlite” y es la base de datos en formato SQLite. En el caso de que descargues el archivo que se encuentra en este blog, entonces el archivo que descargarás será un archivo comprimido en formato zip llamado “Chinook_Sqlite.zip”. Dentro de este archivo encontrarás la misma base de datos SQLite “Shinook_Sqlite.sqlite”. Descompacta el archivo zip y coloca el archivo de base de datos SQLite en una carpeta de tu preferencia, se recomienda en la carpeta que hemos estado usando en este curso.

Abre la base de datos con el software “DB Browser for SQLite” cómo lo vimos en la sección SQL básico. Agregar datos a una tabla con SQL en la parte titulada “Abriendo una base de datos con DB4S”.

Si observamos la estructura de la base de datos como hemos hecho antes en este curso veras las 11 tablas siguientes:

Tablas de la base de datos Chinook.

Descripción de la la tabla de la base de datos Chinook.

La base de datos simula una tienda de música digital, enseguida se describe el contenido de cada una de ellas.

TABLADESCRIPCION O CONTENIDO
AlbumLos álbumes de música. Su identificador (AlbumId), su título (Title) y el identificador del artista (ArtisiId).
ArtistLos artistas. Su identificador (ArtistId) y su nombre (Name).
CustomerLos clientes que han adquirido tracks. Su identificador (CustomerId), sus datos personales y el empleado que lo atendió ( SupportRepId).
EmployeeLos empleados de la tienda. Su identificador (EmployeeId) y sus datos personales.
GenreLos géneros de música. Su identificador (GenreId) y el nombre del género musical (Name).
InvoiceLas facturas. El identificador de la factura (InvoiceId) , el identificador del cliente que hizo la compra (CustomerId) y los datos de la factura.
InvoiceLineEl detalle de la factura, cada artículo comprado. Su identificador (InvoiceLineId), el identificador de la factura ala que pertenece (InvoiceId), el identificador del track de música adquirido (TrackId), el precio unitario (UnitPrice) y la cantidad (Quantity).
MediaTypeEl tipo de archivo de música. Su identificador (MediaTypeId) y su nombre (Name).
PlaylistListas de reproducción. Su identificador (PlaylistId) y el nombre de la lista (Name).
PlaylistTrackLas pistas de música dentro de cada lista de reproducción. El identificador de la lista de reproducción (PlaylistId) y el identificador de la pista de música (TrackId).
TrackLas pistas de música. El identificador de la pista (TrackId) y los datos de la pista.
Descripción de las tabla de la base de datos Chinook.

En la siguiente sección veremos como consultar varias tablas usando esta base de datos y veremos en la práctica como se relacionan entre sí.

¡Hasta la próxima!

IR A LA PAGINA DEL CURSO.

SQL básico. Agrupando datos y ordenando resultados.

En la sección anterior vimos como agrupar datos. En esta sección veremos cómo mostrar esos mismos resultados pero en orden.

Combinando las cláusulas GROUP BY y ORDER BY en una sentencia SELECT.

En una sentencia SELECT la cláusula ORDER BY debe aparecer siempre después de la cláusula GROUP BY, recuerde que la primera sirve para mostrar los resultados ordenados y la segunda para agrupar los resultados.

Usaremos una consulta que vimos en la sección anterior:

Resultados agrupados en desorden.

En dicha consulta los resultados de la columna “núm productos” aparece en desorden. La modificaremos un poco y agregaremos la cláusula ORDER BY para mostrar un mejor resultado.

Agrupando y ordenando.

Como puede observar en la sentencia, la cláusula ORDER BY que es la encargada de ordenar los resultados, aparece después de la cláusula GROUP BY. Esto es lógico porque GROUP BY necesita conocer los resultados que va a ordenar.

También puedes observar que a diferencia del ORDER BY que usamos en la sección “Cómo ordenar los resultados de una consulta” de este mismo curso, donde especificábamos el nombre de un campo o columna para indicarle por cual de ellos ordenar, aquí usamos un número. ¿Qué representa ese número? Representa el número de la columna de la lista de columnas en la cláusula SELECT numerándolas de izquierda a derecha comenzando por el número 1. En nuestro ejemplo el 2 representa la segunda columna en los resultados, es decir la columna “núm. productos”.

Las siguientes sentencias son equivalentes a la anterior:

Ordenando por el contenido de la columna.
Ordenando por el alias de la columna.

SQLite permite especificar la columna de ordenamiento tanto por el número de columna como vimos en la primera sentencia donde usamos el ORDER BY, por el contenido de la columna, en este caso la función COUNT(), como en el segundo ejemplo o por el alias de la columna, somo se muestra en la última sentencia arriba.

En caso de otros motores de datos, es posible que no soporte todos estos casos. Consulte la documentación específica de cada uno de esos motores de base de datos.

Hasta el momento sólo hemos hecho consultas sobre una tabla, pero en la práctica, las bases de datos relacionales, como su nombre lo indica, trabaja con relaciones, es decir, tablas relacionadas. En la siguiente sección veremos como descargar una base de datos más real, con tablas relacionadas, que nos servirán en las próximas prácticas.

¡Hasta pronto!

IR A LA PAGINA DEL CURSO.

SQL básico. Agrupando datos.

En la sección anterior vimos como resumir datos a través de algunas funciones de SQL de agregación. Por lo general estas funciones se usan o van de la mano con la agrupación de datos. En esta sección veremos como agrupar datos y usar las funciones de agregación para mostrar resultados.

Cómo agrupar los resultados de una consulta SQL.

SQL permite agrupar los resultados de una consulta por una o varias columnas o campos. Para eso usamos la cláusula GROUP BY de la sentencia SQL SELECT.

Cláusula SQL GROUP BY.

La cláusula GROUP BY agrupa los datos por una determinada columna o columnas. Veamos un ejemplo, para ello, abre la base de datos con la que hemos venido trabajando y abre el archivo sql también. Escribe y ejecuta la siguiente sentencia:

Cláusula ORDER BY.

En la sentencia anterior estamos agrupando los resultados por la columna id_marca, el resultado da los distintos valores de la columna id_marca. Es decir que esta agrupando por los distintos valores de la columna id_marca. Esta consulta no tiene mucho valor práctico, solo nos muestra los distintos valores que contiene id_marca y nos dice que hay 250 filas o valores distintos de id_marca. Apliquemos ahora las funciones de agregación que vimos en la sección anterior:

GROUP BY con funciones de agregación.

La consulta anterior nos muestra el id_marca, el número de productos que hay de cada id_marca contando los valores nulos de id_marca y por último, cuántos productos de cada id_marca hay, sin tomar en cuenta los valores nulos de id_marca. Es por eso la diferencia en la primera fila la cual tiene el valor nulo (null) en id_marca, COUNT(*) regresa 1 porque cuenta todas las filas que contienen nulo (null) en la columna id_marca , mientras que COUNT(id_marca) cuenta los valores de id_marca ignorando los de valor nulo (null) lo que da como resultado cero.

No sólo podemos usar el campo por el que estamos agrupando en las funciones de agregación, podemos usar cualquiera de los otros campos. Escribe y ejecuta el siguiente ejemplo:

GROUP BY y funciones de agregación.

En la sentencia anterior, seguimos agrupando las filas por la columna id_marca, sin embargo, estamos aplicando las funciones de agregación al campo o columna id_categoria. ¿Que significan los resultados? Bueno, en el caso del grupo de id_marca con valor 5, el grupo cuenta con 28 filas con id_categoria no nulas, la id_categoria con el valor máximo o más alto de ese grupo es 781, la id_categoria con el valor menor de ese grupo es 3 y la suma de los valores de id_categoria de ese grupo da 14,083. Y así sucesivamente para cada grupo diferente de id_marca.

Las funciones de agregación no se tienen que aplicar todas a una misma columna, pueden aplicarse a distintas columnas:

Aplicando funciones de agregación a varias columnas.

También es posible agrupar por más de un campo:

Agrupando por más de un campo o columna.

En la sentencia anterior estamos agrupando por dos columnas: id_marca e id_categoria. Según las filas resultantes, existen 995 combinaciones diferentes de id_marca-id_categoria, es decir 995 grupos diferentes. La tercera columna de los resultados nos muestra cuantas filas o registros, que en este caso representan productos, hay en cada grupo distinto de id_marca-id_categoria. Por ejemplo, decimos que hay 6 productos o filas que tienen en su columna id_marca igual el valor 5 y el calor 3 en su columna id_categoria y así sucesivamente.

En la próxima sección vamos a combinar las cláusulas ORDER BY y GROUP BY para mostrar resultados más presentables. ¡Hasta la próxima!

IR A LA PAGINA DEL CURSO.