11 Lenguaje SQL: Funciones

Si consideramos que MySQL es rico en lo que respecta a operadores, en lo que se refiere a funciones, podemos considerarlo millonario. MySQL dispone de multitud de funciones.

Pero no las explicaremos aquí, ya que este curso incluye una referencia completa. Tan sólo las agruparemos por tipos, e incluiremos los enlaces correspondientes a la documentación de cada una.

Funciones de control de flujo

Las funciones de esta categoría son:

IF Elección en función de una expresión booleana
IFNULL Elección en función de si el valor de una expresión es NULL
NULLIF Devuelve NULL en función del valor de una expresión

Funciones matemáticas

Las funciones de la categoría de matemáticas son:

ABS Devuelve el valor absoluto
ACOS Devuelve el arcocoseno
ASIN Devuelve el arcoseno
ATAN y ATAN2 Devuelven el arcotangente
CEILING y CEIL Redondeo hacia arriba
COS Coseno de un ángulo
COT Cotangente de un ángulo
CRC32 Cálculo de comprobación de redundancia cíclica
DEGREES Conversión de grados a radianes
EXP Cálculo de potencias de e
FLOOR Redondeo hacia abajo
LN Logaritmo natural
LOG Logaritmo en base arbitraria
LOG10 Logaritmo en base 10
LOG2 Logaritmo en base dos
MOD o % Resto de una división entera
PI Valor del número π
POW o POWER Valor de potencias
RADIANS Conversión de radianes a grados
RAND Valores aleatorios
ROUND Cálculo de redondeos
SIGN Devuelve el signo
SIN Cálculo del seno de un ángulo
SQRT Cálculo de la raíz cuadrada
TAN Cálculo de la tangente de un ángulo
TRUNCATE Elimina decimales

Funciones de cadenas

Las funciones para tratamiento de cadenas de caracteres son:

ASCII Valor de código ASCII de un carácter
BIN Converión a binario
BIT_LENGTH Cálculo de longitud de cadena en bits
CHAR Convierte de ASCII a carácter
CHAR_LENGTH o CHARACTER_LENGTH Cálculo de longitud de cadena en caracteres
COMPRESS Comprime una cadena de caracteres
CONCAT Concatena dos cadenas de caracteres
CONCAT_WS Concatena cadenas con separadores
CONV Convierte números entre distintas bases
ELT Elección entre varias cadenas
EXPORT_SET Expresiones binarias como conjuntos
FIELD Busca el índice en listas de cadenas
FIND_IN_SET Búsqueda en listas de cadenas
HEX Conversión de números a hexadecimal
INSERT Inserta una cadena en otra
INSTR Busca una cadena en otra
LEFT Extraer parte izquierda de una cadena
LENGTH u OCTET_LENGTH Calcula la longitud de una cadena en bytes
LOAD_FILE Lee un fichero en una cadena
LOCATE o POSITION Encontrar la posición de una cadena dentro de otra
LOWER o LCASE Convierte una cadena a minúsculas
LPAD Añade caracteres a la izquierda de una cadena
LTRIM Elimina espacios a la izquierda de una cadena
MAKE_SET Crea un conjunto a partir de una expresión binaria
OCT Convierte un número a octal
ORD Obtiene el código ASCII, incluso con caracteres multibyte
QUOTE Entrecomilla una cadena
REPEAT Construye una cadena como una repetición de otra
REPLACE Busca una secuencia en una cadena y la sustituye por otra
REVERSE Invierte el orden de los caracteres de una cadena
RIGHT Devuelve la parte derecha de una cadena
RPAD Inserta caracteres al final de una cadena
RTRIM Elimina caracteres blancos a la derecha de una cadena
SOUNDEX Devuelve la cadena "soundex" para una cadena concreta
SOUNDS LIKE Compara cadenas según su pronunciación
SPACE Devuelve cadenas consistentes en espacios
SUBSTRING o MID Extraer subcadenas de una cadena
SUBSTRING_INDEX Extraer subcadenas en función de delimitadores
TRIM Elimina sufijos y/o prefijos de una cadena.
UCASE o UPPER Convierte una cadena a mayúsculas
UNCOMPRESS Descomprime una cadena comprimida mediante COMPRESS
UNCOMPRESSED_LENGTH Calcula la longitud original de una cadena comprimida
UNHEX Convierte una cadena que representa un número hexadecimal a cadena de caracteres

Funciones de comparación de cadenas

Además de los operadores que vimos para la comparación de cadenas, existe una función:

STRCMP Compara cadenas

Funciones de fecha

Funciones para trabajar con fechas:

ADDDATE Suma un intervalo de tiempo a una fecha
ADDTIME Suma tiempos
CONVERT_TZ Convierte tiempos entre distintas zonas horarias
CURDATE o CURRENTDATE Obtener la fecha actual
CURTIME o CURRENT_TIME Obtener la hora actual
DATE Extraer la parte correspondiente a la fecha
DATEDIFF Calcula la diferencia en días entre dos fechas
DATE_ADD Aritmética de fechas, suma un intervalo de tiempo
DATE_SUB Aritmética de fechas, resta un intervalo de tiempo
DATE_FORMAT Formatea el valor de una fecha
DAY o DAYOFMONTH Obtiene el día del mes a partir de una fecha
DAYNAME Devuelve el nombre del día de la semana
DAYOFWEEK Devuelve el índice del día de la semana
DAYOFYEAR Devuelve el día del año para una fecha
EXTRACT Extrae parte de una fecha
FROM_DAYS Obtener una fecha a partir de un número de días
FROM_UNIXTIME Representación de fechas UNIX en formato de cadena
GET_FORMAT Devuelve una cadena de formato
HOUR Extrae la hora de un valor time
LAST_DAY Devuelve la fecha para el último día del mes de una fecha
MAKEDATE Calcula una fecha a partir de un año y un día del año
MAKETIME Calcula un valor de tiempo a partir de una hora, minuto y segundo
MICROSECOND Extrae los microsegundos de una expresión de fecha/hora o de hora
MINUTE Extrae el valor de minutos de una expresión time
MONTH Devuelve el mes de una fecha
MONTHNAME Devuelve el nombre de un mes para una fecha
NOW o CURRENT_TIMESTAMP o LOCALTIME o LOCALTIMESTAMP o SYSDATE Devuelve la fecha y hora actual
PERIOD_ADD Añade meses a un periodo (año/mes)
PERIOD_DIFF Calcula la diferencia de meses entre dos periodos (año/mes)
QUARTER Devuelve el cuarto del año para una fecha
SECOND Extrae el valor de segundos de una expresión time
SEC_TO_TIME Convierte una cantidad de segundos a horas, minutos y segundos
STR_TO_DATE Obtiene un valor DATETIME a partir de una cadena con una fecha y una cadena de formato
SUBDATE Resta un intervalo de tiempo de una fecha
SUBTIME Resta dos expresiones time
TIME Extrae la parte de la hora de una expresión fecha/hora
TIMEDIFF Devuelve en tiempo entre dos expresiones de tiempo
TIMESTAMP Convierte una expresión de fecha en fecha/hora o suma un tiempo a una fecha
TIMESTAMPADD Suma un intervalo de tiempo a una expresión de fecha/hora
TIMESTAMPDIFF Devuelve la diferencia entre dos expresiones de fecha/hora
TIME_FORMAT Formatea un tiempo
TIME_TO_SEC Convierte un tiempo a segundos
TO_DAYS Calcula el número de días desde el año cero
UNIX_TIMESTAMP Devuelve un timestamp o una fecha en formato UNIX, segundos desde 1070
UTC_DATE Devuelve la fecha UTC actual
UTC_TIME Devuelve la hora UTC actual
UTC_TIMESTAMP Devuelve la fecha y hora UTC actual
WEEK Calcula el número de semana para una fecha
WEEKDAY Devuelve el número de día de la semana para una fecha
WEEKOFYEAR Devuelve el número de la semana del año para una fecha
YEAR Extrae el año de una fecha
YEARWEEK Devuelve el año y semana de una fecha

De búsqueda de texto

Función de búsqueda de texto:

Funciones de casting (conversión de tipos)

CAST o CONVERT Conversión de tipos explícita

Funciones de encripdado

Funciones de encriptado de datos y de checksum:

AES_ENCRYPT y AES_DECRYPT Encriptar y desencriptar datos usando el algoritmo oficial AES
DECODE Desencripta una cadena usando una contraseña
ENCODE Encripta una cadena usando una contraseña
DES_DECRYPT Desencripta usando el algoritmo Triple-DES
DES_ENCRYPT Encripta usando el algoritmo Triple-DES
ENCRYPT Encripta str usando la llamada del sistema Unix crypt()
MD5 Calcula un checksum MD5 de 128 bits para la cadena string
PASSWORD u OLD_PASSWORD Calcula una cadena contraseña a partir de la cadena en texto plano
SHA o SHA1 Calcula un checksum SHA1 de 160 bits para una cadena

Funciones de información

Información sobre el sistema:

BENCHMARK Ejecuta una expresión varias veces
CHARSET Devuelve el conjunto de caracteres de una cadena
COERCIBILITY Devuelve el valor de restricción de colección de una cadena
COLLATION Devuelve la colección para el conjunto de caracteres de una cadena
CONNECTION_ID Devuelve el ID de una conexión
CURRENT_USER Devuelve el nombre de usuario y el del host para la conexión actual
DATABASE Devuelve el nombre de la base de datos actual
FOUND_ROWS Calcular cuántas filas se hubiesen obtenido en una sentencia SELECT sin la cláusula LIMIT
LAST_INSERT_ID Devuelve el último valor generado automáticamente para una columna AUTO_INCREMENT
USER o SESSION_USER o SYSTEM_USER Devuelve el nombre de usuario y host actual de MySQL
VERSION Devuelve la versión del servidor MySQL

Miscelanea

Funciones generales:

DEFAULT Devuelve el valor por defecto para una columna
FORMAT Formatea el número según la plantilla '#,###,###.##
GET_LOCK Intenta obtener un bloqueo con el nombre dado
INET_ATON Obtiene el entero equivalente a la dirección de red dada en formato de cuarteto con puntos
INET_NTOA Obtiene la dirección en formato de cuarteto con puntos dado un entero
IS_FREE_LOCK Verifica si un nombre de bloqueo está libre
IS_USED_LOCK Verifica si un nombre de bloqueo está en uso
MASTER_POS_WAIT Espera hasta que el esclavo alcanza la posición especificada en el diario maestro
RELEASE_LOCK Libera un bloqueo
UUID Devuelve un identificador único universal

De grupos

Funciones de grupos:

AVG Devuelve el valor medio
BIT_AND Devuelve la operación de bits AND para todos los bits de una expresión
BIT_OR Devuelve la operación de bits OR para todos los bits de una expresión
BIT_XOR Devuelve la operación de bits XOR para todos los bits de una expresión
COUNT Devuelve el número de valores distintos de NULL en las filas recuperadas por una sentencia SELECT
COUNT DISTINCT Devuelve el número de valores diferentes, distintos de NULL
GROUP_CONCAT Devuelve una cadena con la concatenación de los valores de un grupo
MIN Devuelve el valor mínimo de una expresión
MAX Devuelve el valor máximo de una expresión
STD o STDDEV Devuelve la desviación estándar de una expresión
SUM Devuelve la suma de una expresión
VARIANCE Devuelve la varianza estándar de una expresión