| ||||
| FAQ's de MySQL Inicio las FAQ's pura y exclusivamente de MySQL Espero que les sea útil... 1.- Como le doy formato a un campo fecha (datetime) ?? Cita: DATE_FORMAT(date,format) Formats the date value according to the format string. The following specifiers may be used in the format string. The ‘%’ character is required before format specifier characters. Specifier Description %a - Abbreviated weekday name (Sun..Sat) %b - Abbreviated month name (Jan..Dec) %c - Month, numeric (0..12) %D - Day of the month with English suffix (0th, 1st, 2nd, 3rd, …) %d - Day of the month, numeric (00..31) %e - Day of the month, numeric (0..31) %f - Microseconds (000000..999999) %H - Hour (00..23) %h - Hour (01..12) %I - Hour (01..12) %i - Minutes, numeric (00..59) %j - Day of year (001..366) %k - Hour (0..23) %l - Hour (1..12) %M - Month name (January..December) %m - Month, numeric (00..12) %p - AM or PM %r - Time, 12-hour (hh:mm:ss followed by AM or PM) %S - Seconds (00..59) %s - Seconds (00..59) %T - Time, 24-hour (hh:mm:ss) %U - Week (00..53), where Sunday is the first day of the week %u - Week (00..53), where Monday is the first day of the week %V - Week (01..53), where Sunday is the first day of the week;used with %X %v - Week (01..53), where Monday is the first day of the week; used with %x %W - Weekday name (Sunday..Saturday) %w - Day of the week (0=Sunday..6=Saturday) %X - Year for the week where Sunday is the first day of the week, numeric, four digits; used with %V %x - Year for the week, where Monday is the first day of the week, numeric, four digits; used with %v %Y - Year, numeric, four digits %y Year, numeric (two digits) %% - A literal ‘%’ character %x - x, for any ‘x’ not listed above Ranges for the month and day specifiers begin with zero due to the fact that MySQL allows the storing of incomplete dates such as '2004-00-00'. As of MySQL 5.0.25, the language used for day and month names and abbreviations is controlled by the value of the lc_time_names system variable (Section 5.10.9, “MySQL Server Locale Support”). As of MySQL 5.0.36, DATE_FORMAT() returns a string with a character set and collation given by character_set_connection and collation_connection so that it can return month and weekday names containing non-ASCII characters. Before 5.0.36, the return value is a binary string. Código PHP:
__________________ Mi Blog http://turco7.blogspot.com Usuario Linux : 404289 Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales! |
| ||||
| Re: FAQ's de MySQL Pregunta: Que herramientas puedo usar para conectarme a MySQL? Respuesta: Personalmente conozco tres formas de conectarme a MySQL. 1.- Linea de comando (Valido para Windows y Linux) Tipean esto en la linea de comando, la opcion -u indica el usuario que se escribe seguido de esta opcion, en el caso que querramos conectarnos a otro servidor distinto debemos especificar el host con la opcion -h seguido del numero de ip o nombre de dominio. Y de esto modo tambien tenemos que tener en cuenta a que puerto debemos conectarnos, por defecto MySQL tiene el puerto 3306. El administrador lo puede cambiar del archivo de configuración. my.cfg para esto tenemos que usar la opcion -P seguido del puerto. Ejemplos: Local >mysql -u root -p Enter Password: ****** A un servidor (dominio.com - puerto:3305) >mysql -h dominio.com -P 3305 -u root -p Enter Password: ****** También podemos usar programas como SQLYog que se siente bastante comodo, de aca pueden descargar una version gratuita. (Community Edition) Y el archi conocido PHPMyADMIN que funciona con apache. http://www.phpmyadmin.net/home_page/index.php Espero que les sirva. saludos http://www.webyog.com/en/downloads.php
__________________ Mi Blog http://turco7.blogspot.com Usuario Linux : 404289 Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales! |
| ||||
| Re: FAQ's de MySQL Te dejo el link al manual on line ... http://dev.mysql.com/doc/refman/5.0/es/index.html --------------------------------------------------------------- Pregunta: Como puedo conocer el proximo id de un campo `auto_increment` respuesta: Suponiendo que tenemos una tabla con la siguiente estructura. usuarios CREATE TABLE `usuarios` ( `id` int(11) NOT NULL auto_increment, `usuario` varchar(255), `password` varchar(255), PRIMARY KEY (`id`) ) Usamos esta consulta para saber el proximo id, para hacer la prueba insertamos varios registros y vamos viendo el resultado que nos devuelve la consulta. SELECT AUTO_INCREMENT FROM `information_schema`.`tables` WHERE TABLE_SCHEMA = "test" AND TABLE_NAME = "usuarios" test = Nombre de la base de datos usuarios = Nombre del campo Espero que les sea útil ...
__________________ Mi Blog http://turco7.blogspot.com Usuario Linux : 404289 Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales! |
| ||||
| Mi aporte a este foro que me ha dado tanto... Pregunta:Qué tipo de tablas usar para mi proyecto, myisam, innodb?? Respuesta: Pues debes tener en cuenta una cosa: Si tu tabla requiere foreingn key(llaves foraneas, fk), pues lo ideal serìa que fuera innodb, por que hará respetar la integridad referencial de tu DB, e iràs a la fija sabiendo que no permitirá datos que no vengan de una tabla relacionada a esa, ya que las tablas tipo myisam no te respetan eso y te permiten "introducir lo que quieras". Ahora bien, si tu tabla no requiere fk, puedes dejarla myisam, por que no necesitas validar para esa tabla la integridad referencial, lo que te permitirá realizar consultas de más rápido con respecto a innodb. Saludos y espero que sea un buen aporte!!
__________________ Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo) www.programandoweb.com Última edición por Carxl; 05/04/2010 a las 15:28 |
| ||||
| Otro aporte mas... Pregunta: No tengo activada tipo de tabla innodb?? Còmo la activo? Repuesta: La respuesta que doy, aplica para myql 5, creo que en mysql 4 no estaban, creo .Ya sea con un paquete todo en uno (xampp, wamp) o en tu instalaciòn personalizada de mysql, dirìgete a la carpeta mysql y luego a la que dice "bin". Normalmente, aparece un icono en forma de computador llamado "my". Ábrelo con bloc de notas, note pad o un editor de texto, como quieras y busca la línea que diga: skip-innodb, verás en esa lìnea un ";" punto y coma, quítaselo y guarda la modificación. Para aquellos que trabajen con el appserv, sòlo se mofica un poco la explicaciòn anterior, para habilitar las tablas innodb, procedan de la siguiente manera, es muy facil. Simplemente localicen la ruta C:Appserv/mysql/my.ini, luego ubiquen la linea: skip-innodb. Y agreguen # al principio, es decir que les deberia quedar asi: #skip-innodb (Crèditos: cala932) Guarden los cambios y reinicien el mysql. Si estabas con los servicios arriba de mysql cuando hiciste esto, el semàforo en verde o en tu panel decía "Running", baja los servicios, y vuelvelos a iniciar. En el phpmyadmin te muestra los tipos de tablas que están actualmente activas y verás a innodb!!! Listo!!! ya tienes innodb activadas!!, ya puedes hacer DB utilizándolas!! Saludos!
__________________ Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo) www.programandoweb.com Última edición por Carxl; 09/08/2007 a las 12:58 Razón: Actualizaciòn como hacerlo en Appserv |
| ||||
| Re: FAQ's de MySQL Hola, pienso que puede llegar a ser de mucha utilidad, lo dejo para la comunidad: Pregunta: Como reestablezco la contraseña del root, si olvide la que tenia??? Cita: Referencia: EN MYSQLEn windows: 1.Entre en su sistema como Administrador. 2. Pare el servidor MySQL si se está ejecutando. Para servidores que se estén ejecutando como servicio de Windows, vaya al Gestor de Servicios: Menú Inicio -> Panel de Control -> Herramientas administrativas -> Servicios Después encuentre en la lista el servicio MySQL, y parelo. Si su servidor no está ejecutándose como servicio, podría necesitar utilizar el Gestor de tareas para forzarlo a parar 3.Cree un archivo de texto e introduzca el siguiente comando en él, en una única línea: SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MiNuevaContraseña'); 4.Guarde el archivo con cualquier nombre. Para este ejemplo, el nombre del archivo será C:\mysql-init.txt. 5.Abra una ventana de comandos para obtener una consola de comandos DOS: Menú Inicio -> Ejecutar -> cmd 6.Asumiremos que usted tiene instalado MySQL en C:\mysql. Si lo intaló en algún otro lugar, ajuste los siguientes comandos de manera adecuada. En la línea de comandos DOS, ejecute esta orden: C:\> C:\mysql\bin\mysqld-nt --init-file=C:\mysql-init.txt Los contenidos del archivo nombrado por la opción --init-file son ejecutados en el inicio del servidor, cambiando la contraseña de root. Cuando el servidor se haya iniciado correctamente, debería borrar el archivo C:\mysql-init.txt. Los usuarios de MySQL 4.1 y superiores que instalen MySQL utilizando el instalador de mySQL, pueden necesitar especificar una opción --defaults-file: C:\> C:\Archivos de Programa\MySQL\MySQL Server 5.0\bin\mysqld-nt.exe --defaults-file="C:\Archivos de Programa\MySQL\MySQL Server 5.0\my.ini" --init-file=C:\mysql-init.txt La configuración apropiada de --defaults-file puede encontrarse utilizando el Gestor de Servicios: Menú Inicio -> Panel de Control -> Herramientas Administrativas -> Servicios Encuentre el servicio MySQL en la lista, pulse con el botón derecho del ratón, y escoja la opción Propiedades. El campo Ruta al Ejecutable contiene la configuración de --defaults-file. 7.Pare el servidor MySQL, y reinícielo en modo normal de nuevo. Si ejecuta el servidor como servicio, inícielo desde la ventana de servicios de Windows. Si ejecuta el servidor manualmente, utilice el comando que normalmente use. 8.Debería poder conectar utilizando la nueva contraseña . En un entorno Unix, el procedimiento para restablecer la contraseña root es el siguiente: 1. Entre en sus sitema como usuario Unix root o bien como el mismo usuario que ejecuta el servidor mysqld. 2. Localice el archivo .pid que contiene el ID de proceso del servidor. La localización exacta y el nombre de este archivo depende de su distribución, nombre de máquina, y configuración. Lugares comunes son /var/lib/mysql/, /var/run/mysqld/, y /usr/local/mysql/data/. Generalmente, el archivo tiene una extensión .pid y comienza con mysqld o el nombre de su máquina. Puede parar el servidor MySQL enviando un comando kill (no kill -9) a el proceso mysqld utilizando la ruta del archivo .pid en el siguiente comando: shell> kill `cat /mysql-data-directory/host_name.pid` Nótese el uso de acentos abiertos en vez de comillas simples con el comando cat; estos causan que la salida de cat sea sustituida en el comando kill. 3. Cree un archivo de texto e introduzca el siguiente comando en una única línea: 4. SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MiNuevaContraseña'); Guarde el archivo con cualquier nombre. Para este ejemplo, el archivo tendrá el nombre ~/mysql-init. 5. Reinicie el servidor MySQL con la opción especial --init-file=~/mysql-init: 6. shell> mysqld_safe --init-file=~/mysql-init & Los contenidos del archivo son ejecutados al inicio del servidor, cambiando la contraseña de root. Después de que el servidor se haya iniciado con éxito, debería borrar ~/mysql-init. 7. Debería poder conectar utilizando la nueva contraseña. Una alternativa, en cualquier plataforma, es establecer la nueva contraseña desde el cliente mysql (pero esta manera es menos segura): 1. Pare mysqld y reinícielo con la opción --skip-grant-tables --user=root (Los usuarios de Windows deben omitir la parte de --user=root). 2. Conecte al servidor mysqld con este comando: 3. shell> mysql -u root 4. Ejecute las siguientes sentencias en el cliente mysql: 5. mysql> UPDATE mysql.user SET Password=PASSWORD('nuevacontraseña') 6. -> WHERE User='root'; 7. mysql> FLUSH PRIVILEGES; Reemplace “nuevacontraseña” con la contraseña de root real que quiere utilizar. 8. Debería poder conectar utilizando la nueva contraseña. Saludos
__________________ ->Aprender es un proceso que incluye el error.. |
| ||||
| Re: FAQ's de MySQL Hola por aca, creo que esta no puede faltar: Tipos de datos en MySQL: Cita: saludos y suerte 1. Acerca de este artículo Este documento corresponde a la traducción del tema 6.2 (Column Types) del manual de MySQL en Inglés, y ha sido puesto a disposición de MySQL Hispano por Mario Alberich Piqué. 2. Introducción MySQL soporta varios tipos de datos, que pueden ser agrupados en tres categorías: numéricos, fecha y hora, y cadenas (caracteres). En este artículo se presenta un breve resumen de estos tipos, se mencionan sus requerimientos de almacenamiento, y se hace una descripción más detallada de las propiedades de cada uno de ellos. Los tipos de datos soportados por MySQL son listados a continuación. Sigue la fuente: http://www.mysql-hispano.org/page.php?id=22 |
| ||||
| Re: FAQ's de MySQL Método para perimitir ingresar caracteres en españos y que no los tome como iguales. Agradecimeinto a William Chiquito (Foro Spanish de MySQL.com) por esta magífica solución. El problema era una tabla con PK tipo VARCHAR y que no tomaba "campaña" y "campana" como claves distintas, quedando solamente "campana". W. Chiquito mandó esta solución: Cita: Te muestro mi ejemplo: CREATE TABLE `t2` ( `clave` varchar(20) character set utf8 NOT NULL default '', PRIMARY KEY (`clave`) ) ENGINE=InnoDB; INSERT INTO t2 (clave) VALUES ('campana'); INSERT INTO t2 (clave) VALUES ('campaña'); INSERT INTO t2 (clave) VALUES ('canción'); INSERT INTO t2 (clave) VALUES ('cancion');Resultado: (1 row(s)affected) (0 ms taken) Error Code : 1062 Duplicate entry 'campaña' for key 1 (0 ms taken) (1 row(s)affected) (0 ms taken) Error Code : 1062 Duplicate entry 'cancion' for key 1 (0 ms taken) SELECT * FROM t2;Resultado: clave -------- campana canción DROP TABLE IF EXISTS t2; CREATE TABLE `t2` ( `clave` varchar(20) collate latin1_spanish_ci NOT NULL default '', PRIMARY KEY (`clave`) ) ENGINE=InnoDB; INSERT INTO t2 (clave) VALUES ('campana'); INSERT INTO t2 (clave) VALUES ('campaña'); INSERT INTO t2 (clave) VALUES ('canción'); INSERT INTO t2 (clave) VALUES ('cancion');Resultado: (1 row(s)affected) (0 ms taken) (1 row(s)affected) (0 ms taken) (1 row(s)affected) (0 ms taken) Error Code : 1062 Duplicate entry 'cancion' for key 1 (0 ms taken) SELECT * FROM t2;Resultado: clave -------- campana campaña canción DROP TABLE IF EXISTS t2; CREATE TABLE `t2` ( `clave` varchar(20) character set latin1 collate latin1_bin NOT NULL default '', PRIMARY KEY (`clave`) ) ENGINE=InnoDB; INSERT INTO t2 (clave) VALUES ('campana'); INSERT INTO t2 (clave) VALUES ('campaña'); INSERT INTO t2 (clave) VALUES ('canción'); INSERT INTO t2 (clave) VALUES ('cancion');Resultado: (1 row(s)affected) (0 ms taken) (1 row(s)affected) (0 ms taken) (1 row(s)affected) (0 ms taken) (1 row(s)affected) (0 ms taken) SELECT * FROM t2;Resultado: clave -------- campana campaña cancion canción |
| |||
| Respuesta: Re: FAQ's de MySQL Pregunta: Como trabajar con intervalos de fechas? Respuesta: Cita: campo_fecha >= STR_TO_DATE('2008-07-01','%Y-%m-%d') AND campo_fecha <= STR_TO_DATE('2008-07-02','%Y-%m-%d') |
| ||||
| Respuesta: FAQ's de MySQL Pregunta: ¿Cómo numerar secuencialmente una consulta, sin usar PK? Respuesta: Numerar dinámicamente con variables de usuario. Ocasionalmente alguien realiza una consulta a una tabla y por cuestiones de comodidad quiere que los registros obtenidos sean numerados, pero la tabla o no tiene ID autonumérico o bien el mismo tiene "huecos" en la numeración o al menos números faltantes. Bueno, para hacer que MySQL numere en una columna en forma directa una tabla recuperada de una consulta hay que usar una variable de tipo global y realizar la consulta como subconsulta, de esta forma:
Código sql:
Ver originalCopiar Debe forzosamente hacer la definición de la variable global dentro de la subconsulta para que la misma pueda existir, sin lo cual el resultado de la columna Linea se vuelve NULL.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) Última edición por gnzsoloyo; 18/04/2010 a las 07:35 |
| ||||
| Respuesta: FAQ's de MySQL Pregunta: ¿Cómo respaldar mi base de datos? Una forma es desde la linea de comandos:
Código:
Pedirá la contraseña y listo!C:\AppServ\MySQL\bin>mysqldump -u root -p base_de_datos > archivo_respaldo.sql La ruta depende de donde tengas instalado mysql. root es el usuario. El archivo se guarda en la carpeta bin. Y para restaurar una base de datos desde un archivo:
Código:
Ojo: es solo mysql, el anterio era mysqldump. Tambien cuidado con el signo <C:\AppServ\MySQL\bin>mysql -u root -p base_de_datos < archivo_origen.sql La base de datos debe estar creada antes de la modificacion. El archivo origen debe estar en la carpeta bin |
| ||||
| Respuesta: FAQ's de MySQL Pregunta: ¿Cómo usar Foreign Keys en MySQL? Respuesta: En este sitio nos explican de manera simple, clara y con un ejemplo práctico cómo usar las Foreign Keys en MySQL. De manera complementaria recomiendo comprender las diferencias entre MyISAM e InnoDB informandose en la documentaición oficial de MySQL.
__________________ Respondo a MP, si de verdad es necesario. No pidas que te den el código hecho, pide el método y aprende de él. lowsession.com - ¡La noche es tuya! Última edición por thesixhalcon; 18/07/2009 a las 07:58 |
| ||||
| Respuesta: FAQ's de MySQL Pregunta: Como puedo agrupar en un solo registro todos los valores para un campo determinado? Respuesta: Con la función group_concat Ejemplo:
Código mysql:
Ver originalCopiar
__________________ El que no sabe lo que busca, no entiende lo que encuentra. |
| ||||
| Respuesta: FAQ's de MySQL Pregunta: Tengo una base de datos enorme y hay bastantes valores repetidos en una tabla que me gustaría borrar. ¿Cómo lo hago? Respuesta: Seguro que muchos de vosotros habéis tenido un problema parecido y probablemente no hayais encontrado una manera genérica de hacerlo, bien, pues aquí lo dejo:
Código sql:
Ver originalCopiar Esta de aquí para que sólo os aparezcan una muestra de lo repetido (Sólo se añade un DISTINCT):
Código sql:
Ver originalCopiar EDITO: Otra forma de hacerlo, gracias a huesos52, es:
Código sql:
Ver originalCopiar Un saludo!
__________________ Respondo a MP, si de verdad es necesario. No pidas que te den el código hecho, pide el método y aprende de él. lowsession.com - ¡La noche es tuya! Última edición por thesixhalcon; 08/09/2009 a las 08:30 |
| ||||
| Respuesta: FAQ's de MySQL ELIMINAR LETRAS DE UNA CADENA Y RECUPERAR UN ENTERO: Una función para eliminar de una cadena los caracteres alfabéticos y dejar solamente números. Es útil para aquellos casos en los que se hayan dejado ingresar en un campo que debe contener número caracteres alfabéticos y se los quiere eliminar.
Código sql:
Ver originalCopiar Esta función puede ser reescrita para recuperar sólo letras, decimales, flotantes, etc.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| |||
| PRÓXIMOS CUMPLEAÑOS ¡Saludos! Ya tenía demasiado tiempo sin andar por éstos rumbos. El motivo de mi post es porque hace un rato se me ocurrió hacer un query de los próximos cumpleaños, con cierto rango de días (en éste caso usaremos 5)... Bien... pues aquí está mi Query:
Código MySQL:
Ver originalCopiar El año presente debe concatenarse para saber que día de la semana se le celebrará, etc... Recordar que si estas trabajando en .NET y tu GridView tiene AutoGenerateColumns="True", debes agregar el CAST AS STRING a tu columna de fecha... de lo contrario no la toma en centa... Espero les sea de gran ayuda... Nos seguimos leyendo... Última edición por NA1TM3R; 27/01/2010 a las 23:44 |
| ||||
| Respuesta: FAQ's de MySQL Este es un stored procedure que surgió de la pregunta de un post. Devuelve una tabla de días entre dos fechas. Para el que lo necesite, esto sería:
Código MySQL:
Ver originalCopiar Nota: Como la tabla está declarada como TEMPORARY, sólo existirá dentro de la ejecución de la sentencia y será inaccesible fuera de la conexión y tiempo de ejecución de la misma, luego de lo cual se borra.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| ||||
| Respuesta: FAQ's de MySQL Pregunta: Como manejar transacciones en mysql? Respuesta: Ver ejemplo
Código MySQL:
ExplicaciónVer originalCopiar Después de iniciada una transacción se pueden realizar 3 acciones: Commit -> Confirmar cambios definitivos. (Esto termina la transacción) savepoint -> Confirmar hasta cierto punto de los procesos sin finalizar la transacción. rollback -> Deshacer cambios desde el inicio de la transacción. (Esto también finaliza la transacción) Como se muestra en el ejemplo, también se puede hacer rollback hasta el ultimo savepoint guardado.
__________________ El que no sabe lo que busca, no entiende lo que encuentra. Última edición por huesos52; 09/02/2010 a las 19:41 |
| ||||
| Respuesta: FAQ's de MySQL Pregunta: Renumerar un campo auto_increment Respuesta: No es conveniente y es innecesario hacerlo. a) Un campo AUTO_INCREMENT en MySQL es normalmente usado como PRIMARY KEY. b) Por definición, una PRIMARY KEY (PK) crea en forma automática un índice agrupado (cluster), que se utiliza para mantener el ordenamiento físico de los registros. Por esa razón también es único (un conjunto de datos no puede tener dos ordenamientos físicos diferentes en el disco (¿como se ordenaría una biblioteca de dos formas al mismo tiempo?) 1. No es conveniente "reorganizar" un índice autoincremental porque en esencia es una tarea sin funcionalidad, carente de practicidad y consumidora innecesaria de tiempo de proceso. 2. El renumerar las PRIMARY KEY de un campo incremental no produce ninguna mejora en la optimización de consultas, por lo que hacerlo solamente resulta en tiempo de PC consumido. 3. Renumerar un campo autoincremental, genera un nuevo ordenamiento FÍSICO de los datos (no olvidar que una PK genera un índice cluster), con la consiguiente sobrecarga del microprocesador, porque tiene que reescribir físicamente la tabla cada vez y reconstruir el índice completamente. 4. Tampoco es recomendable bajo ninguna circunstancia renumerar una PK (es el caso en MySQL donde un AUTOINCREMENT es PK por default) si se usa como FK de otras tablas, porque generará inconsistencia de datos entre registros de tablas relacionadas. 5. No se recomienda renumerar si existen datos históricos de otras transacciones, que hacen referencia a otros registros que tenían el mismo número. De hecho, en una tabla de stock, las ID jamás cambian porque el hecho que un producto ya no exista ni se fabrique no quiere decir que no aparezca en registros más antiguos. Pisar un ID sería lo mismo que ponerle a un recién nacido el número de documento de un muerto. 6. Es irrelevante tener espacios de números que ya no se usan, en tanto la numeración sea secuencial e incremental. Perder tiempo en renumerar sólo hace que una lista quede más bonita, pero eso se puede hacer perfectamente en la interfase, donde se visualiza la tabla de datos, o bien se pueden usar variables de usuario para generar numeraciones temporales sin afectar la tabla. 7. Si la duda es quedarse sin números para usar, un ID generado en un campo numérico UNSIGNED tiene estos rangos: - TINYINT: 0 a 255. - SMALLINT: 0 a 65.535. - MEDIUMINT: 0 a 16.777.215 - INT: 0 a 4.294.967.295. - BIGINT: 0 a 18.446.744.073.709.551.615 En este contexto, si se insertasen 1.000.000 de registros por segundo, se requerirían más de 584.554 años para agotar la numeración de un BIGINT.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) Última edición por gnzsoloyo; 27/06/2011 a las 06:13 |
| |||
| Respuesta: FAQ's de MySQL Pregunta: buscar si un rango de fechas comparte uno o más días con otro rango de fechas búsquedas por eje. sobre reservas de hotel que se hacen entre dos fechas para averiguar con un rango de fechas qué habitaciones estarían ocupadas al menos un día de los del rango de fechas de la reserva. Llamaremos campofechainiciores y campofechafinres a los campos de la tabla reservas, y @fechainiciocons y @fechafincons a las variables que se cargan desde formulario para realizar la búsqueda. Respuesta:
Código MySQL:
Ver originalCopiar La lógica es la siguiente:si la primera fecha es anterior o igual a la fecha final de reserva y a la vez la fecha final es mayor o igual que la fecha de inicio de reserva, hay al menos un día en común. Nos lo hizo ver Avatar810 en un post http://www.forosdelweb.com/f86/selec...fechas-693114/ |
| ||||
| Respuesta: FAQ's de MySQL Pregunta: ¿"SET CHARACTER SET utf8" es necesario cuando estoy trabajando con data codificada en UTF8? Respuesta: Información tomada de http://stackoverflow.com/questions/1...utf8-necessary Cita: Usar SET CHARACTER SET utf8 después de usar SET NAMES utf8 realmente restablece el character_set_connection y collation_connection a @@character_set_database y @@collation_database respectivamente. El manual indica que SET NAMES x es equivalente a SET character_set_client = x; SET character_set_results= x; SET character_set_connection = x; y SET CHARACTER SET X es equivalente a SET character_set_client = x; SET character_set_results = x; SET collation_connection = @@collation_database; mientras que SET collation_connection = x internamente tambien ejecuta SET character_set_connection = <<character_set_of_collation_x>> y SET character_set_connection = x internamente ejecuta tambien SET collation_connection = <<default_collation_of_character_set_x. Así que, esencialmente estás restableciendo character_set_connection a @@character_set_database y collation_connection a @@collation_database. El manual explica el uso de estas variables: Cita: Para resumir, el procedimiento de MySQL codificación / transcodificación que utiliza para procesar la consulta y sus resultados es una cosa-multi-paso: ¿ Qué conjunto de caracteres debería usar el servidor para traducir una consulta tras recibirla? Para esto, el servidor usa character_set_connection y collation_connection. Esto convierte las consultas enviadas por el cliente de character_set_client a character_set_connection (excepto para cadenas de caracteres literales que tienen un introductor como _latin1 o _utf8). collation_connection es importante para comparaciones de cadenas de caracteres literales. Para comparaciones de cadenas de caracteres con valores de columnas no importa, ya que las columnas tienen una precedencia mayor en las colaciones. 1. MySQL trata la consulta entrante como codificado en character_set_client. 2. MySQL transcodifica la declaración de character_set_client en character_set_connection cuando se comparan los valores de la cadena de valores de columna MySQL transcodifica el valor de la cadena de character_set_connection en el chracter conjunto de la columna de la base de datos y utiliza la intercalación de columna para hacer la comparación y ordenación. 3. MySQL acumula el conjunto de resultados codificados en character_set_results (esto incluye datos de los resultados, así como metadatos resultantes como nombres de columna y así sucesivamente) Por lo tanto, podría ser el caso de que un conjunto de caracteres Utf8 no sería suficiente para proporcionar completo de UTF-8. Piense en una base de datos de carácter conjunto predeterminado de latin1 y las columnas definidas con utf8-charset y seguir los pasos descritos anteriormente. Como latin1 no puede cubrir todos los caracteres que UTF-8 puede cubrir, puede perder información de carácter en el paso 3. Paso 3: Teniendo en cuenta que la consulta está codificado en UTF-8 y contiene caracteres que no se puede representar con latin1, estos personajes se pierden en la transcodificación de utf8 a latin1 (la base de datos por defecto del juego de caracteres) de no poder hacer su consulta. Así que creo que es seguro decir que SET NAMES ... es la forma correcta de manejar los problemas del conjunto de caracteres. A pesar de que podría añadir que la creación de las variables del servidor MySQL correctamente (todas las variables reuired se puede configurar de forma estática en el my.cnf) le libera de la sobrecarga de rendimiento de la consulta adicional que se requiere en cada conexión.
__________________ Verifica antes de preguntar. Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos |
| |||
| Respuesta: FAQ's de MySQL Me dice acceso denegado, no me llega a pedir la contraseña Cita:
Iniciado por gusma62 Pregunta: ¿Cómo respaldar mi base de datos? Una forma es desde la linea de comandos:
Código:
Pedirá la contraseña y listo!C:\AppServ\MySQL\bin>mysqldump -u root -p base_de_datos > archivo_respaldo.sql La ruta depende de donde tengas instalado mysql. root es el usuario. El archivo se guarda en la carpeta bin. |
| |||
| Respuesta: FAQ's de MySQL PERO... Y si intento importar artículos de varios blogs de Wordpress por ejemplo a un solo blog de joomla? Hay artículos que tienen el mismo ID en cada uno de los blogs de Wordpress y luego al pasarlos todos al mismo blog de Joomla hay conflicto porque tienen el mismo ID. En este caso sí habría que cambiarle el número ID a muchos artículos a la vez. ¿Cómo se puede hacer eso? Cita:
Iniciado por gnzsoloyo Pregunta: Renumerar un campo auto_increment Respuesta: No es conveniente y es innecesario hacerlo. a) Un campo AUTO_INCREMENT en MySQL es normalmente usado como PRIMARY KEY. b) Por definición, una PRIMARY KEY (PK) crea en forma automática un índice agrupado (cluster), que se utiliza para mantener el ordenamiento físico de los registros. Por esa razón también es único (un conjunto de datos no puede tener dos ordenamientos físicos diferentes en el disco (¿como se ordenaría una biblioteca de dos formas al mismo tiempo?) 1. No es conveniente "reorganizar" un índice autoincremental porque en esencia es una tarea sin funcionalidad, carente de practicidad y consumidora innecesaria de tiempo de proceso. 2. El renumerar las PRIMARY KEY de un campo incremental no produce ninguna mejora en la optimización de consultas, por lo que hacerlo solamente resulta en tiempo de PC consumido. 3. Renumerar un campo autoincremental, genera un nuevo ordenamiento FÍSICO de los datos (no olvidar que una PK genera un índice cluster), con la consiguiente sobrecarga del microprocesador, porque tiene que reescribir físicamente la tabla cada vez y reconstruir el índice completamente. 4. Tampoco es recomendable bajo ninguna circunstancia renumerar una PK (es el caso en MySQL donde un AUTOINCREMENT es PK por default) si se usa como FK de otras tablas, porque generará inconsistencia de datos entre registros de tablas relacionadas. 5. No se recomienda renumerar si existen datos históricos de otras transacciones, que hacen referencia a otros registros que tenían el mismo número. De hecho, en una tabla de stock, las ID jamás cambian porque el hecho que un producto ya no exista ni se fabrique no quiere decir que no aparezca en registros más antiguos. Pisar un ID sería lo mismo que ponerle a un recién nacido el número de documento de un muerto. 6. Es irrelevante tener espacios de números que ya no se usan, en tanto la numeración sea secuencial e incremental. Perder tiempo en renumerar sólo hace que una lista quede más bonita, pero eso se puede hacer perfectamente en la interfase, donde se visualiza la tabla de datos, o bien se pueden usar variables de usuario para generar numeraciones temporales sin afectar la tabla. 7. Si la duda es quedarse sin números para usar, un ID generado en un campo numérico UNSIGNED tiene estos rangos: - TINYINT: 0 a 255. - SMALLINT: 0 a 65.535. - MEDIUMINT: 0 a 16.777.215 - INT: 0 a 4.294.967.295. - BIGINT: 0 a 18.446.744.073.709.551.615 En este contexto, si se insertasen 1.000.000 de registros por segundo, se requerirían más de 584.554 años para agotar la numeración de un BIGINT. |
Este tema le ha gustado a 27 personas (incluyéndote)
Este tema no le ha gustado a 10 personas