Poniendo MySQL en UTF-8

La codificación de contenidos cuando se desarrolla una aplicación que requiere el uso de bases de datos puede llegar a convertirse en una de las peores pesadillas de un desarrollador, sobre todo si es algo en lo que no has pensado desde las primeras fases iniciales previas al inicio del desarrollo. Motores de bases de datos tan populares y difundidos como MySQL pueden dar muchísimos problemas a la hora de grabar datos, de recuperarlos y de renderizarlos en vistas, si no tenemos en cuenta la codificación. La codificación de datos más adecuada en la mayor parte de los casos es UTF-8, ya que implementa todos los caracteres que se puedan usar en cualquier idioma, así como gran cantidad de guarismos que, sin pertenecer a un idioma específico, son de uso relativamente común, como signos matemáticos u otros. Para implementar otros caracteres extremadamente especiales hay otras codificaciones adecuadas, pero eso es tan poco habitual que ni lo vamos a comentar. El problema es que, cuando se crea una base de datos, tabla o campo, el motor de MySQL (dependiendo de la versión, y del entorno de desarrollo) tiende a emplear alguna codificación de tipo latin-n-xxxxxxxx o similar. De momento, parece irrelevante, …

Seguir leyendo

Uniendo tablas MySQL (I). Introducción.

Iniciamos aquí una pequeña serie de artículos dedicados a las consultas MySQL que afectan a dos o más tablas. Cuando, en una consulta, necesitamos recurrir a dos tablas, significa que ambas están relacionadas entre sí, en una relación de 1-m o de m-1. Cuando se recurre a consultas que implican más de dos tablas, puede tratarse de que alguna de ellas esté relacionada con las demás en relaciones del tipo mencionado, o bien que dos tablas estén relacionadas entre sí, en una relación de tipo m-n, a través de una tercera tabla intermedia. Además, podemos encontrarnos con la necesidad de construir consultas que impliquen relaciones “especiales”, bajo determinadas circunstancias, como veremos en esta serie. Procuraremos analizar las sintaxis adecuadas en los casos que se nos presenten, de modo que, cuando tengas necesidad de consultas de este tipo, puedas hacerlas del modo más óptimo posible. En estos artículos presentaremos la sintaxis MySQL. Esto significa que podría haber algunas diferencias si tu motor de base de datos SQL es otro (SQL Server, SQLite, etc). Optar por MySQL ha sido una decisión lógica, teniendo en cuenta que es el motor de bases de datos relacionales más empleado en Internet, con mucha diferencia y, …

Seguir leyendo

Uniendo tablas MySQL (II). Uniones externas.

En el artículo anterior aprendimos a relacionar entre sí tablas a través de un campo que implicaba una relación lógica. De este modo, aquellos registros de la primera tabla que no tenían correspondencia con un registro de la segunda eran, automáticamente, omitidos. En la mayor parte de los casos esto será lo que necesitemos. Sin embargo, no siempre es así. Hay ocasiones en que necesitamos obtener TODOS los registros de una tabla que cumplan determinada condición, tengan o no correspondencia con algún registro de otra tabla. De esto nos vamos a ocupar en este artículo sobre uniones “externas” (OUTER JOIN).

Uniendo tablas MySQL (III). Autocombinaciones.

Siguiendo con el tema de uniones de tablas, en este artículo vamos a ver un tema que, en el día a día del desarrollo de aplicaciones, se da con más frecuencia de la que parece: las autocombinaciones. En los artículos anteriores hemos conocido distintas formas de combinar datos de dos tablas, para obtener el resultado deseado. Aquí vamos a aprender como combinar datos de una tabla con datos procedentes de la misma tabla, que mantienen una relación estructural. Cómo siempre, lo veremos desarrollando un ejemplo, que podremos extrapolar a cualquier otra necesidad que nos surja en este terreno.

Uniendo tablas MySQL (y IV). Uniones con más de dos tablas.

Para finalizar con esta serie de artículos vamos a ver una situación muy habitual, que se da en muchísimos desarrollos. Se trata de relacionar datos de dos tablas, a través de una tercera tabla intermedia, que contiene las referencias a los elementos de cada una de las tablas principales, en la típica relación de “muchos a muchos”, también llamada de m-n. Es el caso en que cada elemento de la tabla A puede estar relacionado con uno o más elementos de la tabla B, y recíprocamente. De hecho, este es el caso más habitual cuando dos tablas se relacionan entre sí. También puede ser, conceptualmente, el más complejo de entender cuando uno se inicia en SQL. Este artículo nos enseñará cómo efectuar estas consultas.

Vistas en MySQL

En este artículo vamos a conocer qué son las vistas en MySQL y como pueden ayudarnos a hacer que nuestra aplicación web con base de datos funcione más rápido, mejorando la experiencia del usuario. Por decirlo brevemente, las vistas constituyen una herramienta muy apta para acelerar las consultas de selección (SELECT), es decir, aquellas que recuperan datos de una o más tablas. Están disponibles, con ligeras variaciones de sintaxis, en todas las implementaciones de SQL, aunque nosotros, por razones obvias, vamos a analizar su funcionamiento en MySQL.