Más pronto o más tarde nos encontraremos con esta situación. Aprovecho la base de datos EJEMPLO y su tabla PROFESORES de la asignatura —y de paso enlazo FBDdocs—. Si quieres seguir la historia que voy a contar, nada más fácil que usar tu base de datos propia y hacer
create table profesores (select * from ejemplo.profesores)
Ahora tienes una copia de esa tabla y puedes modificar sus filas.
Mostrando entradas con la etiqueta MySQL. Mostrar todas las entradas
Mostrando entradas con la etiqueta MySQL. Mostrar todas las entradas
21 febrero 2018
04 agosto 2016
Si de contar filas se trata
Resulta que esa página del manual de MySQL nunca la he visitado. O no le he hecho mucho caso.
En una aplicación PHP quería limitar el número de filas que devuelve una consulta pero, al mismo tiempo, saber cuántas filas obtendría sin esa limitación. Esto es
select ... limit 100
El problema es contar. Si hago la consulta dos veces, una sin límite para contar y otra limitada para mostrar el resultado, el cliente debe esperar a recibir todas las filas de la tabla y después otras 100.
Sí, para eso está el select count() ... Pero ocurre una cosa curiosa. Por la naturaleza de mi programa no puedo saber cuál es esa consulta así que lo primero que piensas es en convertirla en subconsulta:
06 mayo 2015
NULO es NULO
Hablemos del NULL, del "nulo", pero en MySQL. Cosas que si alguna vez las he sabido, se me habían olvidado.
Parece ser que la necesidad del nulo surgió del propio día a día que quería representar y gestionar el modelo relacional. Es muy habitual encontrarse con formularios donde falta algún dato, bien por ignorancia o por poca relevancia. Vamos, que casi da igual que lo pongas que no, no es importante. En otros casos incluso podría ser inaplicable, pongamos "color de pelo" si resulta que antes has elegido "piedra". Para eso es el nulo.
Parece ser que la necesidad del nulo surgió del propio día a día que quería representar y gestionar el modelo relacional. Es muy habitual encontrarse con formularios donde falta algún dato, bien por ignorancia o por poca relevancia. Vamos, que casi da igual que lo pongas que no, no es importante. En otros casos incluso podría ser inaplicable, pongamos "color de pelo" si resulta que antes has elegido "piedra". Para eso es el nulo.
NULL es un, llamémosle, valor de difícil implementación. De hecho, no es un valor, es un estado, y un nulo no es igual a otro nulo. En clase solemos decir "no sabemos si tiene valor y, si tiene, no sabemos cuál es". En SQL se nota porque no se puede preguntar x = NULL. El nulo no se puede utilizar en comparaciones con "igual", "menor que" y todos los demás. Tenemos que utilizar un operador específico, x IS NULL o x IS NOT NULL.
Para liarla más autores hay que dicen que, precisamente el nulo, es el mayor error de Codd al definir el modelo relacional (1). Y Codd dice que sin los nulos no hay modelo relacional. Lo cierto es que su aplicación más clara es en las claves ajenas donde la existencia de un nulo se interpreta como ausencia de relación. Por eso la mayoría de los sistemas de gestión de bases de datos lo tratan como "ausencia de valor" o "sin valor". Esto hace las cosas más fáciles ya que el nulo solo puede trabajarse con el mencionado operador IS.
Para liarla más autores hay que dicen que, precisamente el nulo, es el mayor error de Codd al definir el modelo relacional (1). Y Codd dice que sin los nulos no hay modelo relacional. Lo cierto es que su aplicación más clara es en las claves ajenas donde la existencia de un nulo se interpreta como ausencia de relación. Por eso la mayoría de los sistemas de gestión de bases de datos lo tratan como "ausencia de valor" o "sin valor". Esto hace las cosas más fáciles ya que el nulo solo puede trabajarse con el mencionado operador IS.
19 diciembre 2012
María, la de las bases de datos
MariaDB reune al mítico equipo creador de MySQL —vaya por delante que este lenguaje futbolero va más por lo irónico que por fanatismo tecnológico— en un proyecto que se dice sucesor del mismo. ¿Por qué? Pues por que se lo vendieron a Sun Microsystems, y este terminó en Oracle, y ahora dicen que hay que garantizar el software libre. Pues será. Estas cosas de la empresa y los empresarios.
27 septiembre 2012
Otra instancia MySQL en el mismo servidor
Se nos ha planteado un interesante ejercicio: poner en marcha una segunda instancia del gestor MySQL instalado en una máquina concreta. No es una segunda instalación, es aprovechar lo ya instalado pero con dos servidores de bases de datos.
Tener dos instancias tiene toda la justificación que nuestras necesidades precisen. Podría ser que una se dedicara a desarrollo, para hacer las modificaciones y pruebas necesarias antes de trasvasar todo el trabajo al otro, al de producción, digamos "el de verdad". También serviría para tener una copia de respaldo. O simplemente por tener dos espacios diferenciados tanto en bases de datos como usuarios, una medida de seguridad adicional.
Sea como fuere, mostramos aquí el procedimiento para hacerlo, o uno de ellos. Lo cierto es que parece laborioso pero no es nada complicado. Tan solo necesitamos saber dónde están las cosas. Eso sí, la cantidad de cosas que pueden variar de un ordenador a otro, versiones, configuraciones, elecciones en la instalación, etc. hace que todo esto tenga más de una posibilidad de ser incompleto.
16 mayo 2012
MySQL: Copiar, duplicar o mover una tabla
Nuestro compañero Sergio, muy amablemente, nos ha hecho llegar este video donde explica qué hacer ante ciertas situaciones en las que debemos duplicar o reubicar una tabla en MySQL. Utiliza PHPMyAdmin, un interfaz muy popular sobre todo entre los usuarios de Apache y los paquetes tipo Xampp. Evidentemente, para todo lo que incluye este trabajo, se ha de disponer de un usuario con los permisos adecuados.
Al final, describe las mismas operaciones pero desde el cliente de línea de comandos propio del producto (el gran olvidado por nosotros :) ) y con órdenes SQL. Recuérdese, no obstante, que estamos hablando de MySQL, no todos los motores de bases de datos tienen las mismas opciones en su versión del lenguaje, o los tienen pero con algunas diferencias de sintaxis y resultado.
El video, añadido a nuestros favoritos, es este: http://youtu.be/-F7xZiIoQ9k
Pero tiene más.
18 marzo 2012
Numerando

Que a Codd le apetecía utilizar los conjuntos para definir su modelo relacional ya lo sabíamos o estáis a punto de saberlo. Una característica importante de los conjuntos, matemáticamente hablando, es su ausencia de orden. Así, pues, partiendo de esta sencilla tabla
create table tabla(
num integer primary key,
tipo char(1),
precio decimal(6,2)
)
la teoría nos dice que aunque obtengamos la siguiente salida
select * from tabla;
01 febrero 2012
Recuperar filas aleatoriamente de una tabla con Transact-SQL
Yo lo he leído en el blog de James D. McCaffrey pero
no tengo más mérito, es uno de los muchos resultados de su búsqueda en
Google sugerida por un alumno que ya lo había encontrado antes. Sea como
sea, no conocía este método para obtener una fila de una tabla de forma
aleatoria.
Se basa en una combinación de newid() y top(). La primera función devuelve un valor uniqueidentifier, valioso para crear datos ficticios con los que probar una base de datos, por ejemplo. O para lo que nos ocupa:
select @result = (select top(1) pid from @mytable order by newid() )
Ya puestos, como sospecho que top() es la respuesta de Microsoft al limit de MySQL, también he buscado lo mismo para este motor. No pierdo tiempo, la primera página que me ha ofrecido Google, de El blog de Neurotic:
SELECT * FROM nombre_tabla WHERE condicion
ORDER BY RAND()
LIMIT 1;
Se basa en una combinación de newid() y top(). La primera función devuelve un valor uniqueidentifier, valioso para crear datos ficticios con los que probar una base de datos, por ejemplo. O para lo que nos ocupa:
select @result = (select top(1) pid from @mytable order by newid() )
Ya puestos, como sospecho que top() es la respuesta de Microsoft al limit de MySQL, también he buscado lo mismo para este motor. No pierdo tiempo, la primera página que me ha ofrecido Google, de El blog de Neurotic:SELECT * FROM nombre_tabla WHERE condicion
ORDER BY RAND()
LIMIT 1;
Ahora ya que cada cual se meta o no en la guerra de si una es más elegante, simple, intuitiva, etc. que la otra.
11 noviembre 2011
PHP-MySQL simplón
Empezamos aquí una serie de artículos sobre cómo acceder a bases de datos, MySQL, desde una aplicación PHP. Todo muy básico, que para profundizar ya están los manuales. Aún así, antes hay que explicar un par de cosas.
PHP es un lenguaje interpretado que se ejecuta en un servidor. Sin entrar en detalles, necesitamos un servidor HTTP que nos proporcione páginas HTML, o sea, un sitio web, y un intérprete PHP que ejecute una serie de programas que estarán almacenados, normalmente, en el mismo servidor. La ejecución de estos genera páginas HTML que son el resultado que se ve en nuestro navegador. Punto importante este, pues, el programa se ejecuta en el servidor, no en el cliente, no en el navegador lo que redunda en seguridad ya que ni Firefox ni IExplorer, ni ninguno, tiene acceso directo al código fuente.
Nuestro objetivo es generar páginas dinámicas a partir de los datos extraídos de una base de datos. Como ya dice el título, vamos a usar MySQL pero no es obligatorio elegir este motor.
24 marzo 2011
MySQL Workbench y antecesores

Nos hemos resistido a comentar MySQL Workbench porque tiene muchas mas opciones de las que necesitamos en FBD y, hasta hace poco, sus sucesivas ediciones tenían algún que otro problema de estabilidad, pero a la vista de que muchos optáis por sistemas operativos de 64 bits y la última de la última y más potente versión del mismo, hablemos de él. Tampoco es que funcione mal en versiones más modestas.
Suscribirse a:
Entradas (Atom)


