SQL

  • De fábrica, el panel de control de Joomla! sólo permite buscar artículos por título. Esto es algo limitante ya que a veces necesitamos buscar artículos según su contenido. Aunque existen muchas extensiones para Joomla! que proveen esta funcionalidad (poder buscar artículos por tag, contenido, autor), es más rápido y fácil conectarse directamente a la base de datos MySQL y ejecutar una simple consulta SQL.

  • El propósito de este artículo es explicar cómo acceder a una base de datos SQLite desde la línea de comandos en GNU/Linux. La necesidad de "conectar" o mejor dicho abrir una base de datos SQLite, surgió porque debía modificar una cuenta de usuario en una instalación de MediaWiki que utiliza SQLite como motor de base de datos.

    SQLite es una librería que implementa un motor de bases de datos SQL transaccional que no necesita servidor ni configuración, por lo tanto las bases de datos SQLite son archivos que se acceden de forma local. En el sitio oficial "venden" a SQLite como el motor de bases de datos más utilizado en el mundo:

    "SQLite is the most widely deployed SQL database engine in the world. The source code for SQLite is in the public domain."

    Esta aseveración es correcta ya que todos los dispositivos que ejecutan Android utilizan SQLite como motor de base de datos (si tu teléfono ejecuta Android, tus contactos, SMSs, llamadas, bookmarks, etc. se guardan en bases de datos SQLite). Ya que en el mundo hay mayor cantidad de dispositivos con Android que servidores de bases de datos Oracle, MySQL, PostgreSQL, MSSQL, Informix, Firebird, etc., etc. los muchachos de SQLite no mienten.9N39DH23RS65

  • Supongamos que tenemos una tabla de puntos expresados como coordenadas GPS (latitud/longitud en grados) y deseamos obtener todos los puntos que se encuentran dentro de un radio específico (por ejemplo a menos de 100 metros de la ubicación actual). Con una correcta representación de los datos, es posible realizar este cálculo a través de una simple consulta SQL.

  • Este artículo explica cómo listar y ver el código fuente de procedimientos (stored procedures) y funciones (stored functions) en MySQL, desde línea de comandos (cliente mysql).

  • Llegó la hora de borrar algunos sitios de desarrollo en desuso en uno de mis servidores LAMP, y aproveché la oportunidad para hacer una limpieza de usuarios MySQL. En este artículo demuestro cómo listar usuarios de bases de datos MySQL y cómo se relacionan con las mismas (es decir, a qué base de datos tienen acceso).

  • Los servidores de bases de datos PostgreSQL permiten recargar su configuración invocando una función SQL desde un cliente.

  • Tengo curiosidad por saber cuántos artículos me faltan para publicar el número 1000, así que me puse a tirar algunas queries SQL al motor de bases de datos MySQL de este sitio Joomla!

  • Una vez que instalado nuestro servidor Grafana, y luego de agregar el primer Data Source, llega el momento de crear nuestro primer "dashboard", o tablero en criollo. Un dashboard de Grafana es una vista que contiene múltiples gráficos y paneles individuales organizados en forma de grilla. Los dashboards son el concepto clave detrás de Grafana, pues son el medio a través del cual se logra simplificar y agrupar métricas en una vista simple y amigable con el objetivo de mejorar la comprensión sobre los datos e información disponible.

  • Este artículo muestra cómo listar (y obtener información de) procedimientos o funciones en PostgreSQL tanto desde línea de comandos (psql) como a través de consultas SQL.

  • Un servidor de bases de datos PostgreSQL puede contener una o más bases de datos. Los usuarios y grupos se comparten entre todas las bases de datos. Un cliente que inicia una conexión con un servidor Postgres puede acceder a los datos de una única base de datos al mismo tiempo, aquella especificada durante la conexión. No necesariamente los usuarios puede acceder a cualquier base de datos, sino que pueden acceder sólo a aquellas en las cuales tengan permiso.

    En Postgres, una base de datos contiene uno o más schemas, los cuales contienen tablas. Pero también pueden contener otros tipos de objetos como tipos de datos, funciones y operadores. Los nombres se pueden repetir entre schemas, por ejemplo dos schemas diferentes pueden contener cada uno su propia tabla llamada "usuario". Pero a diferencia de las bases de datos, los schemas no están separados de manera rígida: un usuario puede acceder a objetos pertenecientes a cualquiera de los schemas de la base de datos a la cual están conectados (siempre que tengan privilegios suficientes para hacerlo).

    Los schemas se utilizan generalmente para que diferentes usuarios puedan utilizar una misma base de datos sin interferir entre ellos; para organizar los objetos de una base de datos en grupos lógicos que permitan mejorar su administración; para evitar conflictos de nombre con aplicaciones de terceros (poniéndolas en schemas separados); etc.

    Haciendo una analogía con un sistema operativo, los schemas son como los directorios de un sistema de archivos, con la diferencia de que los schemas no pueden ser anidados (no se permite un schema dentro de otro).

  • Este artículo describe algunos comandos útiles para obtener información acerca de usuarios y privilegios en bases de datos MySQL.

  • Desde hace tiempo deseo determinar cuales son los artículos menos leídos del blog. Simplemente por curiosidad. Aunque si comparo únicamente la cantidad de hits (visitas) de cada artículo no obtengo un resultado fiable, ya que los artículos más nuevos aparecen listados como los menos leídos. Esto se debe a que tienen pocos días online (ha pasado poco tiempo desde su publicación). Cuanto más tiempo tenga online un artículo, más visitas acumula. Por lo tanto, para cada artículo, lo mejor es contabilizar la cantidad de visitas dividido la cantidad de días que lleva publicado, lo que daría efectivamente la cantidad promedio de visitas por día.

  • Necesito obtener las 5 filas cuyo valor en un cierto campo de texto tienen la mayor longitud entre todas. He aquí la consulta SQL necesaria.

  • Hace unos días tuve la necesidad de reemplazar, en un archivo de texto, todas las apariciones de una cadena por el número de la línea en la que se encuentra. Afortunadamente encontré la solución utilizando un comando en perl.

  • Los privilegios públicos son aquellos privilegios por defecto que se aplican sobre una conexión cuando no se especifica un usuario. Este artículo explica cómo revocarlos.

  • En PostgreSQL, los roles son objetos globales que puede acceder a todas las bases de datos de cluster (contando con los privilegios adecuados). Los roles están completamente separados de los usuarios a nivel sistema operativo, aunque es conveniente mantener una correspondencia entre los mismos. A fin de inicializar un sistema de bases de datos, cada instalación fresca siempre contiene un rol predefinido. Este rol es siempre un superusuario, y tiene el mismo nombre (a menos que sea cambiado cuando se corre initdb) que el del usuario (a nivel sistema operativo) que inicializó el cluster de bases de datos. Como habrán notado en artículos anteriores, habitualmente se utiliza el nombre de usuario "postgres" para dicho rol. Los roles determinan el conjunto de privilegios disponibles a un cliente conectado.

  • Los administradores de bases de datos MySQL solemos estar acostumbrados a muchas de sus sentencias SQL que están fuera del estándar, como es el caso de SHOW CREATE TABLE. En este artículo voy a demostrar cómo lograr el mismo resultado en servidores de bases de datos PostgreSQL.