MySQL usa aritmética BIGINT (64-bit) para
operaciones de bit, así que estos operadores tienen un rango
máximo de 64 bits.
-
|OR bit a bit:
mysql> SELECT 29 | 15; -> 31El resultado es un entero de 64 bits.
-
&AND bit a bit:
mysql> SELECT 29 & 15; -> 13El resultado es un entero de 64 bits.
-
^XOR bit a bit:
mysql> SELECT 1 ^ 1; -> 0 mysql> SELECT 1 ^ 0; -> 1 mysql> SELECT 11 ^ 3; -> 8El resultado es un entero de 64 bits.
-
<<mysql> SELECT 1 << 2; -> 4El resultado es un entero de 64 bits.
-
>>Desplaza un número largo (
BIGINT) a la derecha.mysql> SELECT 4 >> 2; -> 1El resultado es un entero de 64 bits.
-
~Invierte todos los bits.
mysql> SELECT 5 & ~1; -> 4El resultado es un entero de 64 bits.
-
BIT_COUNT(N)Retorna el número de bits en el argumento
N.mysql> SELECT BIT_COUNT(29); -> 4
Las funciones en esta sección encriptan y desencriptan valores.
Si quiere almacenar resultados de una función de encriptación
que puede contaner valores arbitrarios de bytes, use una columna
BLOB en lugar de CHAR o
VARCHAR para evitar problemas potenciales con
eliminación de espacios finales que pueden cambiar los valores
de datos.
-
AES_ENCRYPT(str,key_str) ,AES_DECRYPT(crypt_str,key_str)Estas funciones permiten encriptación y desencriptación de datos usando el algoritmo oficial AES (Advanced Encryption Standard), conocido anteriormente como "Rijndael." Se usa una encriptación con una clave de 128-bit , pero puede ampliarlo hasta 256 bits modificando las fuentes. Elegimos 128 porque es mucho más rápido y de momento es suficientemente seguro.
Los argumentos de entrada pueden ser de cualquier longitud. Si algún argumento es
NULL, el resultado de esta función también esNULL.Debido a que AES es un algoritmo a nivel de bloques, se usa relleno para cadenas de longitud impar y así la longitud de la cadena resultante puede calcularse como
16 * (trunc(string_length/ 16) + 1).Si
AES_DECRYPT()detecata datos inválidos o relleno incorrecto, retornaNULL. Sin embargo, es posible paraAES_DECRYPT()retornar un valor noNULL(posiblemente basura) si los datos de entrada o la clave son inválidos.Puede usar la función AES para almacenar datos de forma encriptada modificando sus consultas:
INSERT INTO t VALUES (1,AES_ENCRYPT('text','password'));Puede obtener incluso mejor seguridad si no transfiere la clave a través de la conexión para cada consulta, que puede hacerse almacenando la clave en una variable del servidor al hacer la conexión. Por ejemplo:
SELECT @password:='my password'; INSERT INTO t VALUES (1,AES_ENCRYPT('text',@password));AES_ENCRYPT()yAES_DECRYPT()pueden considerarse las funciones de encriptación criptográficamente más seguras disponibles en MySQL. -
DECODE(crypt_str,pass_str)Desencripta la cadena encriptada
crypt_strusandopass_strcomo contraseña.crypt_strdebe ser una cadena retornada deENCODE(). -
ENCODE(str,pass_str)Encripta
strusandopass_strcomo contraseña. Para desencriptar el resultado, useDECODE().El resultado es una cadena binaria de la misma longitud que
str. Si quiere guardarlo en una columna, use una columna de tipoBLOB. -
DES_DECRYPT(crypt_str[,key_str])Desencripta una cadena encriptada con
DES_ENCRYPT(). En caso de error, esta función retornaNULL.Tenga en cuenta que esta función funciona sólo si MySQL se configura con soporte SSL. Consulte Sección 5.7.7, “Usar conexiones seguras”.
Si no se da argumento
key_str,DES_DECRYPT()examina el primer byte de la cadena encriptada para determinar el número de clave DES que se usó para encriptar la cadena original, y luego lee la clave del fichero clave DES para desencriptar el mensaje. Para que esto funcione, el usuario debe tener el privilegioSUPER. El fichero clave puede especificarse con la opción del servidor--des-key-file.Si le pasa a esta función el argumento
key_str, esta cadena se usa como la clave para desencriptar el mensaje.Si el argumento
crypt_strno parece una cadena encriptada, MySQL retornacrypt_str. -
DES_ENCRYPT(str[,(key_num|key_str)])Encriptas la cadena con la clave dada usando el algoritmo triple-DES. En caso de error, retorna
NULL.Tenga en cuenta que esta función funciona sólo si MySQL se configura con soporte SSL. Consulte Sección 5.7.7, “Usar conexiones seguras”.
La clave de encriptación a usar se elige basada en el segundo argumento de
DES_ENCRYPT(), si se ha dado uno:Argumento Descripción Sin argumento Se usa la primera clave del fichero clave DES. key_numEl número de clave dado (0-9) del fichero clave DES se usa. key_strSe usa la cadena clave dada para encriptar str.El fichero clave puede especificarse con la opción de servidor
--des-key-file.La cadena retornada es una cadena binaria donde el primer carácter es
CHAR(128 | key_num).Se añade 128 para hacer más sencillo reconocer una clave encriptada. Si usa una cadena clave,
key_numes 127.La longitud de la cadena para el resultado es
new_len=orig_len+ (8-(orig_len% 8))+1.Cada línea en el fichero clave DES tiene el siguiente formato:
key_numdes_key_strCada
key_numdebe ser un número en el rango de0a9. Las líneas en el fichero pueden estar en cualquier orden.des_key_stres la cadena que se usa para encriptar el mensaje. Entre el número y la clave debe haber un espacio como mínimo. La primera clave es la clave usada por defecto si no especifica ningún argumento clave paraDES_ENCRYPT()Puede decir a MySQL que lea un nuevo valor de clave del fichero clave con el comando
FLUSH DES_KEY_FILE. Esto necesita el privilegioRELOAD.Un beneficio de tener un conjunto de claves por defecto es que da a las aplicaciones una forma de chequear la existencia de valores de columna encriptados, sin dar al usuario final el derecho de desencritparlos.
mysql> SELECT customer_address FROM customer_table > WHERE crypted_credit_card = DES_ENCRYPT('credit_card_number'); -
ENCRYPT(str[,salt])Encripta
strusando la llamada de sistema Unixcrypt(). El argumentosaltdebe ser una cadena con al menos dos carácteres. Si no se da argumentosalt, se usa un valor aleatorio.mysql> SELECT ENCRYPT('hello'); -> 'VxuFAJXVARROc'ENCRYPT()ignora todo excepto los primeros ochos carácteres destr, al menos en algunos sistemas. Este comportamiento viene determinado por la implementación de la llamada de sistemacrypt()subyacente.Si
crypt()no está disponible en su sistema (como pasa en Windows),ENCRYPT()siempre retornaNULL. Debido a esto, recomandamos que useMD5()oSHA1()en su lugar, y que estas dos funciones existen en todas las plataformas. -
MD5(str)Calcula una checksum MD5 de 128-bit para la cadena. El valor se retorna como una cadena binaria de dígitos 32 hex ,o
NULLsi el argumento eraNULL. El valor de retorno puede usarse como clave hash, por ejemplo.mysql> SELECT MD5('testing'); -> 'ae2b1fca515949e5d54fb22b8ed95575'Este es el "RSA Data Security, Inc. MD5 Message-Digest Algorithm."
Si quiere convertir el valor a mayúsculas, consulte la descripción de conversiones de cadenas binarias dada en la entrada del operador
BINARYen Sección 12.8, “Funciones y operadores de cast”. -
OLD_PASSWORD(str)OLD_PASSWORD()se añadió en MySQL 4.1,cuando se cambión la implementación dePASSWORD()para mejorar la seguridad.OLD_PASSWORD()retorna el valor de la implementación pre-4.1 dePASSWORD(), y está hecha para permitirle resetear contraseñas para cualquier cliente pre-4.1 que necesite conectar a su versión 4.1 o posterior de MySQL server sin bloquearlo. Consulte Sección 5.6.9, “Hashing de contraseñas en MySQL 4.1”. -
PASSWORD(str)Calcula y retorna una cadena de contraseña de la contraseña en texto plano
str, oNULLsi el argumento eraNULL. Esta es la función que se usa para encriptar contraseñas MySQL para almacenar en la columnaPasswordde la tablauser.mysql> SELECT PASSWORD('badpwd'); -> '7f84554057dd964b'La encriptación de
PASSWORD()es de un sentido (no reversible).PASSWORD()no realiza encriptación de contraseña de la misma forma que se encriptan las contraseñas Unix. ConsulteENCRYPT().Nota: La función
PASSWORD()se usa por el sistema de autenticación en MySQL Server; no no debe usarlo en su propias aplicaciones. Para ese propósito, useMD5()oSHA1()en su lugar. Consulte RFC 2195 para más información acerca de tratar contraseñas y autenticación de forma segura en su aplicación. -
SHA1(str),SHA(str)Calcula una checksum SHA1 de 160-bit para la cadena, como se describe en RFC 3174 (Secure Hash Algorithm). El valor se retorna como cadnea de 40 dítigos hexadecimales, o
NULLsi el argumento eraNULL. Uno de los usos posibles para esta función es una clave hash. También puede usarlo como función criptográficamente segura para almacenar contraseñasmysql> SELECT SHA1('abc'); -> 'a9993e364706816aba3e25717850c26c9cd0d89d'SHA1()puede considerarse un equivalente criptográficamente más seguro queMD5().SHA()es sinónimo deSHA1().
-
BENCHMARK(count,expr)La función
BENCHMARK()ejecuta la expresiónexprrepetidamentecountveces. Puede usarse para ver lo rápido que MySQL procesa la expresión. El valor resultado siempre es0. El uso pretendido es desde dentro del cliente mysql, que reporte tiempos de ejecución de consultas:mysql> SELECT BENCHMARK(1000000,ENCODE('hello','goodbye')); +----------------------------------------------+ | BENCHMARK(1000000,ENCODE('hello','goodbye')) | +----------------------------------------------+ | 0 | +----------------------------------------------+ 1 row in set (4.74 sec)El tiempo reportado es el tiempo transcurrido en el cliente final no el tiempo de CPU en el servidor. Se recomienda ejecutar
BENCHMARK()varias veces, y interpretar el resultado teniendo en cuenta la carga de la máquina servidor. -
CHARSET(str)Retorna el conjunto de carácteres el argumento cadena.
mysql> SELECT CHARSET('abc'); -> 'latin1' mysql> SELECT CHARSET(CONVERT('abc' USING utf8)); -> 'utf8' mysql> SELECT CHARSET(USER()); -> 'utf8' -
COERCIBILITY(str)Retorna la coerzabilidad de la colación del argumento.
mysql> SELECT COERCIBILITY('abc' COLLATE latin1_swedish_ci); -> 0 mysql> SELECT COERCIBILITY(USER()); -> 3 mysql> SELECT COERCIBILITY('abc'); -> 4El valor de retorno tiene los siguientes significados:
Coerzabilidad Significado Ejemplo 0Colación explícita Valor con la cláusula COLLATE1Sin colación Concatenación de cadenas con distintas colaciones 2Colación implícita Valor de columna 3Constante de sistema Valor de retorno USER()4Coercible Cadena literal 5Ignorable NULLo una expresión derivada deNULLAntes de MySQL 5.0.3, los valores de retorno se muestran como sigue, y las funciones tales como
USER()tienen una coerzabilidad de 2:Coerzabilidad Significado Ejemplo 0Colación explícita Valor con la cláusula COLLATE1Sin colación Concatenación de cadenas con distintas colaciones 2Colación implícita Valor de columna 3Coercible Cadena literal Los valores menores tienen precedencia mayor.
-
COLLATION(str)Retorna la colación para el conjunto de carácteres de la cadena dada.
mysql> SELECT COLLATION('abc'); -> 'latin1_swedish_ci' mysql> SELECT COLLATION(_utf8'abc'); -> 'utf8_general_ci' -
CONNECTION_ID()Retorna el ID de la conexión (ID del thread) para la conexión. Cada conexión tiene su propio y único ID.
mysql> SELECT CONNECTION_ID(); -> 23786 -
CURRENT_USER()Retorna la combinación de nombre de usuario y de equipo que tiene la sesión actual. Este valor se corresponde con la cuenta MySQL que determina sus privilegios de aceso. Puede ser distinto al valor de
USER().mysql> SELECT USER(); -> 'davida@localhost' mysql> SELECT * FROM mysql.user; ERROR 1044: Access denied for user ''@'localhost' to database 'mysql' mysql> SELECT CURRENT_USER(); -> '@localhost'El ejemplo ilustra que aunque el cliente especica un nombre de usuario de
davida(como se indica por el valor de la funciónUSER()), el sevidor autentica al cliente usando una cuenta de usuario anónimo (como se ve por la parte de usuario vacía del valorCURRENT_USER()). Una forma en que esto puede ocurrir es que no haya cuenta listada en las cuentas de permisos paradavida.En MySQL 5.0, la cadena retornada por
CURRENT_USER()usa el conjunto de carácteresutf8. -
DATABASE()Retorna el nombre de base de datos por defecto (actual). En MySQL 5.0, la cadena tiene el conjunto de carácteres
utf8.mysql> SELECT DATABASE(); -> 'test'No hay base de datos por defecto,
DATABASE()retornaNULL. -
FOUND_ROWS()Un comando
SELECTpuede incluir una cláusulaLIMITpara restringir el número de registros que el servidor retorna al cliente. En algunos casos, es deseable saber cuántos registos habría retornado el comando sinLIMIT, pero sin volver a lanzar el comando. Para obtener este conteo de registros, incluya la opciónSQL_CALC_FOUND_ROWSen el comandoSELECT, luego invoqueFOUND_ROWS():mysql> SELECT SQL_CALC_FOUND_ROWS * FROM
tbl_name-> WHERE id > 100 LIMIT 10; mysql> SELECT FOUND_ROWS();El segundo
SELECTretorna un número indicando cuantos registros habría retornado el primerSELECTsin la cláusulaLIMIT. (Si el comando precendente no incluye la opciónSQL_CALC_FOUND_ROWS,FOUND_ROWS()puede retornar un resultado distinto cuando se usaLIMITy cuando no.)Tenga en cuenta que si usa
SELECT SQL_CALC_FOUND_ROWS, MySQL debe calcular cuántos registros hay en el conjunto de resultdos completo. Sin embargo, esto es más rápido que ejecutar la consulta de nuevo sinLIMIT, ya que el conjunto de resultados no necesita ser enviado al cliente.SQL_CALC_FOUND_ROWSyFOUND_ROWS()pueden ser útiles en situaciones donde puede querer restringir el número de registros que retorna una consulta, pero también determinar el número de registros en el conjunto de resultados entero sin ejecutar la consulta de nuevo. Un ejemplo es el script Web que presenta una salida paginada conteniendo enlaces a las páginas que muestran otras secciones de un resultado de búsqueda. UsandoFOUND_ROWS()puede determinar cuántas páginas necesita para el resto de resultados.El uso de
SQL_CALC_FOUND_ROWSyFOUND_ROWS()es más complejo para consultasUNIONque para comandosSELECTsimples, ya queLIMITpuede ocurrir en varios lugares en unaUNION. Puede aplicarse a comandosSELECTindividuales en laUNION, o global en el resultado deUNIONcomo conjunto.La intención de
SQL_CALC_FOUND_ROWSparaUNIONes que debe retornar el número de registros que se retornarían sin unLIMITglobar. Las condiciones para uso deSQL_CALC_FOUND_ROWSconUNIONson:-
La palabra clave
SQL_CALC_FOUND_ROWSdebe aparecer en el primerSELECTde laUNION. -
El valor de
FOUND_ROWS()es exacto sólo si se usaUNION ALL. Si se usaUNIONsinALL, se eliminan duplicados y el valor deFOUND_ROWS()es sólo aproximado. -
Si no hay
LIMITenUNION, se ignoraSQL_CALC_FOUND_ROWSy retorna el número de registros en la tabla temporal que se crea para procesarUNION.
-
-
LAST_INSERT_ID(),LAST_INSERT_ID(expr)Retorna el último valor generado automáticamente que se insertó en una columna
AUTO_INCREMENT.mysql> SELECT LAST_INSERT_ID(); -> 195El último ID generado se mantiene en el servidor para cada conexión. Esto significa que el valor de la función retorna a cada cliente el valor
AUTO_INCREMENTmás reciente generado por ese cliente. Este valor no puede ser afectado por otros clientes, incluso si generan valoresAUTO_INCREMENTellos mismos. Este comportamiento asegura que reciba sus propios IDs sin tener en cuenta la actividad de otros clientes y sin la necesidad de bloqueos o transacciones.El valor de
LAST_INSERT_ID()no cambia si actualiza la columnaAUTO_INCREMENTde un registro con un valor no mágico (esto es, un valor que no esNULLni0).Si inserta varios registros a la vez con un comando de inserción
LAST_INSERT_ID()retorna el valor del primer registro insertado. La razón para esto es hacer posible reproducir fácilmente el mismo comandoINSERTcontra otro servidor.Si usa
INSERT IGNOREy el registro se ignora, el contadorAUTO_INCREMENTno se incrementa yLAST_INSERT_ID()retorna 0, lo que refleja que no se ha insertado ningún registro. (Antes de MySQL 4.1,AUTO_INCREMENTel contador se incrementa yLAST_INSERT_ID()retorna el nuevo valor.)Si se da
exprcomo argumento paraLAST_INSERT_ID(), el valor del argumento se retorna por la función y se recuerda como el siguiente valor a ser retornado porLAST_INSERT_ID(). Esto puede usarse para simular secuencias:-
Cree una tabla para guardar el contador de secuencia y inicializarlo:
mysql> CREATE TABLE sequence (id INT NOT NULL); mysql> INSERT INTO sequence VALUES (0);
-
Use la tabla para generar números de secuncia como aquí:
mysql> UPDATE sequence SET id=LAST_INSERT_ID(id+1); mysql> SELECT LAST_INSERT_ID();
El comando
UPDATEincrementa el contador de secuencia y causa que la siguiente llamada aLAST_INSERT_ID()retorne el valor actualizado. El comandoSELECTrecibe ese valor. La función de la API Cmysql_insert_id()puede usarse para obtener el valor . Consulte Sección 24.3.3.34, “mysql_insert_id()”.
Puede generar secuencias sin llamar a
LAST_INSERT_ID(), pero la utilidad de usar esta función de esta forma es que el valor ID se mantiene en el servidor como el último valor generado automáticamente. Es válido para multi usuarios porque varios clientes pueden realizar el comandoUPDATEy obtener su propio valor de secuencia con el comandoSELECT(omysql_insert_id()), sin afectar o ser afectado por otros clientes que generen sus propios valores de secuencia.Tenga en cuenta que
mysql_insert_id()sólo se actualiza tras los comandosINSERTyUPDATE, así que no puede usar la función de la API C para recibir el valor deLAST_INSERT_ID(expr) tras ejecutar otros comandos SQL comoSELECToSET. -
-
ROW_COUNT()ROW_COUNT()retorna el número de registros actualizados, insertados o borrados por el comando precedente. Esto es lo mismo que el número de registros que muestra el cliente mysql y el valor de la función de la API Cmysql_affected_rows().mysql> INSERT INTO t VALUES(1),(2),(3); Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql> SELECT ROW_COUNT(); +-------------+ | ROW_COUNT() | +-------------+ | 3 | +-------------+ 1 row in set (0.00 sec) mysql> DELETE FROM t WHERE i IN(1,2); Query OK, 2 rows affected (0.00 sec) mysql> SELECT ROW_COUNT(); +-------------+ | ROW_COUNT() | +-------------+ | 2 | +-------------+ 1 row in set (0.00 sec)
ROW_COUNT()se añadió en MySQL 5.0.1. -
SESSION_USER()SESSION_USER()es sinónimo deUSER(). -
SYSTEM_USER()SYSTEM_USER()es sinónimo deUSER(). -
USER()Retorna el nombre de usuario y de equipo de MySQL actual.
mysql> SELECT USER(); -> 'davida@localhost'El valor indica el nombre de usuario especificado al conectar con el servidor, y el equipo cliente desde el que se está conectando. El valor puede ser distinto del de
CURRENT_USER().Puede extraer la parte de nombre de usuario así:
mysql> SELECT SUBSTRING_INDEX(USER(),'@',1); -> 'davida'En MySQL 5.0,
USER()retorna un valor en el conjunto de carácteresutf8, así que debe asegurarse que la literal'@'se interpreta en el conjunto de carácteres:mysql> SELECT SUBSTRING_INDEX(USER(),_utf8'@',1); -> 'davida' -
VERSION()Retorna una cadena que indica la versión del servidor MySQL. La cadena usa el conjunto de carácteres
utf8.mysql> SELECT VERSION(); -> '5.0.9-standard'Tenga en cuenta que si su cadena de versión acaba con
-logsignifica que el logueo está activado.
-
DEFAULT(col_name)Retorna el valor por defecto para una columna de tabla. A partir de MySQL 5.0.2, retorna un error si la columna no tiene valor por defecto.
mysql> UPDATE t SET i = DEFAULT(i)+1 WHERE id < 100;
-
FORMAT(X,D)Formatea el número
Xa un formato como'#,###,###.##', redondeado aDdecimales, y retorna el resultado como una cadena. SiDes0, el resultado no tiene punto decimar o parte fraccional.mysql> SELECT FORMAT(12332.123456, 4); -> '12,332.1235' mysql> SELECT FORMAT(12332.1,4); -> '12,332.1000' mysql> SELECT FORMAT(12332.2,0); -> '12,332' -
GET_LOCK(str,timeout)Intenta obtener un bloqueo con un nombre dado por la cadena
str, con un tiempo máximo detimeoutsegundos. Retorna1si el bloqueo se obtiene con éxito,0si el intento supera el tiempo máximo (por ejemplo, debido a que otro cliente haya bloqueado el nombre préviamente), oNULLsi ocurre un error (tal como quedarse sin memoria o que el flujo acabe con mysqladmin kill). Si tiene un bloqueo obtenido conGET_LOCK(), se libera cuando ejecutaRELEASE_LOCK(), ejecuta un nuevoGET_LOCK(), o su conexión termina (normal o anormalmente).Esta función puede usarse para implementar bloqueos de aplicaciones o simular bloqueo de registros. Los nombres se bloquean en el servidor. Si un nombre lo ha bloqueado un cliente,
GET_LOCK()bloquea cualquier petición de otro cliente para bloquear el mismo nombre. Esto permite a los clientes que se pongan con un nombre de bloqueo dado a usar el nombre para realizar advertencias de bloqueo cooperativo. Pero tenga en cuenta que esto permite a un cliente que no esté entre el conjunto de clientes cooperativos bloquear un nombre, de forma deliverada o no, y evitar que ninguno de los clientes cooperativos puedan bloquear dicho nombre. Una forma de reducir la probabilidad que esto pase es usar nombres de bloqueo especificos de bases de datos o de aplicación. Por ejemplo, use nombres de bloqueo de la formadb_name.stroapp_name.str.mysql> SELECT GET_LOCK('lock1',10); -> 1 mysql> SELECT IS_FREE_LOCK('lock2'); -> 1 mysql> SELECT GET_LOCK('lock2',10); -> 1 mysql> SELECT RELEASE_LOCK('lock2'); -> 1 mysql> SELECT RELEASE_LOCK('lock1'); -> NULLTenga en cuenta que la segunda llamada a
RELEASE_LOCK()retornaNULLdebido a que el bloqueo'lock1'se libera automáticamente por la segunda llamadaGET_LOCK(). -
INET_ATON(expr)Dada la representación de cuatros números separados por puntos de una dirección de red como cadena de carácteres, retorna un entero que representa el valor numérico de la dirección. Las direcciones pueden ser direcciones de 4 o 8 bytes .
mysql> SELECT INET_ATON('209.207.224.40'); -> 3520061480El número generado siempre tiene orden de bytes de red. Para el ejemplo mostrado anteriormente, el número se calcula como
209*256^3 + 207*256^2 + 224*256 + 40.INET_ATON()también entiende direcciones IP de forma corta:mysql> SELECT INET_ATON('127.0.0.1'), INET_ATON('127.1'); -> 2130706433, 2130706433NOTA: Cuando almacene valores generados por
INET_ATON(), se recomiendoa que use una columnaINT UNSIGNED. Si usa una columnaINT(con signo), los valores correspondientes a direcciones IP para las que el primer octeto es mayor que 127 se truncan a 2147483647 (esto es, el valor retornado porINET_ATON('127.255.255.255')). Consulte Sección 11.2, “Tipos numéricos”. -
INET_NTOA(expr)Dada una dirección de red numérica (4 o 8 bytes), retorna la representación de puntos de la dirección como cadena.
mysql> SELECT INET_NTOA(3520061480); -> '209.207.224.40' -
IS_FREE_LOCK(str)Chequea si el nombre de bloqueo
strestá libre para uso (esto es, no bloqueado). Retorna1si el bloqueo está libre (nadie lo usa para bloquear),0si el bloqueo está en uso, yNULLen errores (tales como argumentos incorrectos). -
IS_USED_LOCK(str)Chequea si el nombre de bloqueo
strestá en uso (esto es, bloqueado). Si es así, retorna el identificador de conexión del cliente que tiene el bloqueo. De otro modo, retornaNULL. -
MASTER_POS_WAIT(log_name,log_pos[,timeout])Esta función es útil para control de sincronización de maestro/ esclavo. Bloquea hasta que el esclavo ha leído y aplicado todas las actualizaciones hasta la posición especificada en el log del maestro. El valor retornado es el número de eventos logueados que tiene que esperar para llegar a la posición especificada. La función retorna
NULLsi el flujo esclavo SQL no está arrancado, la información maestra del esclavo no está inicializada, los argumentos son incorrectos, u ocurre un error. Retorna-1si se agota el tiempo de espera. Si el flujo SQL esclavo para mientrasMASTER_POS_WAIT()está esperando, la función retornaNULL. Si el eslavo pasa la posición especificada, la función retorna inmediatamente.Si un valor
timeoutse especifica,MASTER_POS_WAIT()para de esprar cuando pasantimeoutsegundos.timeoutdebe ser superior a 0; un cero otimeoutnegativo significa que no hay timeout. -
RELEASE_LOCK(str)Libera el bloqueo nombrado por la cadena
strobtenida conGET_LOCK(). Retorna1si el bloqueo se libera,0si el bloqueo no estaba bloqueado por este flujo (en cuyo caso el bloqueo no se libera), yNULLsi el bloqueo nombrado no existía. El bloqeuo no existe si nunca se obtuvo por una llamada aGET_LOCK()o si había sido liberado préviamente.El comando
DOes conveniente para usar conRELEASE_LOCK(). Consulte Sección 13.2.2, “Sintaxis deDO”. -
UUID()Retorna un Universal Unique Identifier (UUID) (Identificador Único Universal) generado según la “DCE 1.1: Remote Procedure Call” (Apéndice A) CAE (Common Applications Environment) Especificaciones publicadas por The Open Group en Octubre 1997 (Número de Documento C706).
Se designa un UUID como número que es único globalmente en espacio y tiempo. Dos llamadas a
UUID()generan dos valores distintos, incluso si estas llamadas se realizan en dos máquinas separadas y no están conectadas entre ellas.Un UUID es un número de 128 bits representado por una cadena de cinco números hexadecimales en formato
aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee:-
Los primeros tres números se generan de un valor temporal.
-
El cuarto número preserva unicidad temporal en caso de que el valor temporal pierda moniticidad (por ejemplo, debido al cambio horario).
-
El quinto número es un número IEEE 802 de nodo que proporciona unicidad espacial. Un número aleatorio se sustituye si el último no está disponible (por ejemplo, debido a que la máquina no tenga tarjeta Ethernet, o no sabemos encontrar la dirección hardware de una interfaz en el sistema operativo). En este caso, la unicidad espacial no se puede garantizar. Sin embargo, una colisión debe tener una probabilidad muy baja.
Actualmente, la dirección MAC de una interfaz se tiene en cuenta sólo en FreeBSD y Linux. En otros sistemas operativos, MySQL usa un número generado aleatoriamente de 48 bits.
mysql> SELECT UUID(); -> '6ccd780c-baba-1026-9564-0040f4311e29'Tenga en cuenta que
UUID()no funciona todavía con replicación. -