MySQL Funciones: cadena, numérica, definida por el usuario, almacenada
¿Qué son las funciones?
MySQL puede hacer mucho más que simplemente almacenar y recuperar datos. También podemos realizar manipulaciones en los datos antes de recuperarlo o guardarlo. Ahí es donde MySQL Las funciones son simplemente fragmentos de código que realizan algunas operaciones y luego devuelven un resultado. Algunas funciones aceptan parámetros, mientras que otras no.
Veamos brevemente un ejemplo de MySQL función. Por defecto, MySQL guarda los tipos de datos de fecha en el formato “AAAA-MM-DD”. Supongamos que hemos creado una aplicación y nuestros usuarios quieren que la fecha se devuelva en el formato "DD-MM-AAAA", podemos usar MySQL función incorporada DATE_FORMAT para lograr esto. DATE_FORMAT es una de las funciones más utilizadas en MySQLLo veremos con más detalle a medida que avancemos en la lección.
¿Por qué utilizar funciones?
Según el ejemplo dado en la introducción, las personas con experiencia en programación de computadoras pueden estar pensando "¿Por qué molestarse?" MySQL Funciones? ¿Se puede lograr el mismo efecto con el lenguaje de programación/scripting? Es cierto que podemos lograrlo escribiendo algunos procedimientos/funciones en el programa de aplicación.
Volviendo a nuestro ejemplo de FECHA en la introducción, para que nuestros usuarios obtengan los datos en el formato deseado, la capa empresarial deberá realizar el procesamiento necesario.
Esto se convierte en un problema cuando la aplicación tiene que integrarse con otros sistemas. cuando usamos MySQL funciones como DATE_FORMAT, entonces podemos tener esa funcionalidad integrada en la base de datos y cualquier aplicación que necesite los datos los obtiene en el formato requerido. Este reduce el retrabajo en la lógica empresarial y reduce las inconsistencias de los datos.
Otra razón por la que deberíamos considerar el uso MySQL funciones es el hecho de que puede ayudar a reducir el tráfico de red en aplicaciones cliente/servidor. Business Layer solo necesitará realizar llamadas a las funciones almacenadas sin necesidad de manipular los datos. En promedio, el uso de funciones puede ayudar a mejorar en gran medida el rendimiento general del sistema.
Tipos de funciones
Funciones integradas
MySQL viene con una serie de funciones integradas. Las funciones integradas son simplemente funciones que ya vienen implementadas en el MySQL servidor. Estas funciones nos permiten realizar distintos tipos de manipulaciones sobre los datos. Las funciones integradas se pueden clasificar básicamente en las siguientes categorías más utilizadas.
- Funciones de cadenas – operar en tipos de datos de cadena
- Funciones numéricas – operar con tipos de datos numéricos
- Funciones de fecha – operar con tipos de datos de fecha
- Funciones agregadas – operar con todos los tipos de datos anteriores y producir conjuntos de resultados resumidos.
- Otras funciones – MySQL También admite otros tipos de funciones integradas, pero limitaremos nuestra lección únicamente a las funciones mencionadas anteriormente.
Veamos ahora en detalle cada una de las funciones mencionadas anteriormente. Estaremos explicando las funciones más utilizadas usando nuestro “Myflixdb”.
Funciones de cadena
Ya vimos qué hacen las funciones de cadena. Veremos un ejemplo práctico que los utiliza. En nuestra tabla de películas, los títulos de las películas se almacenan utilizando combinaciones de letras mayúsculas y minúsculas. Supongamos que queremos obtener una lista de consulta que devuelva los títulos de las películas en letras mayúsculas. Podemos usar la función "UCASE" para hacer eso. Toma una cadena como parámetro y convierte todas las letras a mayúsculas. El script que se muestra a continuación demuestra el uso de la función "UCASE".
SELECT `movie_id`,`title`, UCASE(`title`) FROM `movies`;
AQUÍ
- UCASE(`title`) es la función integrada que toma el título como parámetro y lo devuelve en letras mayúsculas con el nombre de alias `upper_case_title`.
Ejecutando el script anterior en MySQL El banco de trabajo contra Myflixdb nos da los siguientes resultados que se muestran a continuación.
movie_id | title | UCASE('title') |
---|---|---|
16 | 67% Guilty | 67% GUILTY |
6 | Angels and Demons | ANGELS AND DEMONS |
4 | Code Name Black | CODE NAME BLACK |
5 | Daddy's Little Girls | DADDY'S LITTLE GIRLS |
7 | Davinci Code | DAVINCI CODE |
2 | Forgetting Sarah Marshal | FORGETTING SARAH MARSHAL |
9 | Honey mooners | HONEY MOONERS |
19 | movie 3 | MOVIE 3 |
1 | Pirates of the Caribean 4 | PIRATES OF THE CARIBEAN 4 |
18 | sample movie | SAMPLE MOVIE |
17 | The Great Dictator | THE GREAT DICTATOR |
3 | X-Men | X-MEN |
MySQL admite varias funciones de cadena. Para obtener una lista completa de todas las funciones de cadena integradas, consulte este enlace http://dev.mysql.com/doc/refman/5.0/en/string-functions.html on MySQL sitio web.
Funciones numéricas
Como se mencionó anteriormente, estas funciones operan con tipos de datos numéricos. Podemos realizar cálculos matemáticos sobre datos numéricos en las declaraciones SQL.
Operadores aritémicos
MySQL admite los siguientes operadores aritmáticos que se pueden utilizar para realizar cálculos en las instrucciones SQL.
Nombre | Descripciones |
---|---|
DIV | División entera |
/ | División |
– | Sustracción |
+ | Adición |
* | Multiplicación |
% o MOD | Módulo |
Veamos ahora ejemplos de cada uno de los operadores anteriores.
División entera (DIV)
SELECT 23 DIV 6 ;
Al ejecutar el script anterior obtenemos los siguientes resultados.
3
Operador de división (/)
Veamos ahora el ejemplo del operador de división. Modificaremos el ejemplo DIV.
SELECT 23 / 6 ;
Al ejecutar el script anterior obtenemos los siguientes resultados.
3.8333
Operador de resta (-)
Veamos ahora el ejemplo del operador de resta. Usaremos los mismos valores que en los dos ejemplos anteriores.
SELECT 23 - 6 ;
La ejecución del script anterior nos da 17
Operador de suma (+)
Veamos ahora el ejemplo del operador de suma. Modificaremos el ejemplo anterior.
SELECT 23 + 6 ;
La ejecución del script anterior nos da 29
Operador de multiplicación (*)
Veamos ahora el ejemplo del operador de multiplicación. Usaremos los mismos valores que en los ejemplos anteriores.
SELECT 23 * 6 AS `multiplication_result`;
Al ejecutar el script anterior obtenemos los siguientes resultados.
resultado_multiplicación |
---|
138 |
Operador de módulo (-)
El operador de módulo divide N por M y nos da el resto. Veamos ahora el ejemplo del operador de módulo. Usaremos los mismos valores que en los ejemplos anteriores.
SELECT 23 % 6 ;
OR
SELECT 23 MOD 6 ;
La ejecución del script anterior nos da 5
Veamos ahora algunas de las funciones numéricas comunes en MySQL.
Floor – esta función elimina los decimales de un número y lo redondea al número más bajo más cercano. El script que se muestra a continuación demuestra su uso.
SELECT FLOOR(23 / 6) AS `floor_result`;
Al ejecutar el script anterior obtenemos los siguientes resultados.
Piso_resultado |
---|
3 |
Redondeada – esta función redondea un número con decimales al número entero más próximo. El script que se muestra a continuación demuestra su uso.
SELECT ROUND(23 / 6) AS `round_result`;
Al ejecutar el script anterior obtenemos los siguientes resultados.
resultado_ronda |
---|
4 |
Frontera – esta función se utiliza para generar un número aleatorio, su valor cambia cada vez que se llama a la función. El script que se muestra a continuación demuestra su uso.
SELECT RAND() AS `random_result`;
Funciones almacenadas
Las funciones almacenadas son como las funciones integradas, excepto que usted mismo debe definir la función almacenada. Una vez que se ha creado una función almacenada, se puede utilizar en declaraciones SQL como cualquier otra función. La sintaxis básica para crear una función almacenada se muestra a continuación.
CREATE FUNCTION sf_name ([parameter(s)]) RETURNS data type DETERMINISTIC STATEMENTS
AQUÍ
- “CREAR FUNCIÓN sf_name ([parámetro(s)]) “ es obligatorio y dice MySQL server para crear una función llamada `sf_name' con parámetros opcionales definidos entre paréntesis.
- “RETORNO tipo de datos” es obligatorio y especifica el tipo de datos que debe devolver la función.
- “DETERMINISTA” significa que la función devolverá los mismos valores si se le proporcionan los mismos argumentos.
- "DECLARACIONES" es el código de procedimiento que ejecuta la función.
Veamos ahora un ejemplo práctico que implementa una función incorporada. Supongamos que queremos saber qué películas alquiladas ya pasaron la fecha de devolución. Podemos crear una función almacenada que acepte la fecha de devolución como parámetro y luego la compare con la fecha actual en MySQL servidor. Si la fecha actual es menor que la fecha de regreso de la película, entonces devolvemos "No"; de lo contrario, devolvemos "Sí". El script que se muestra a continuación nos ayuda a lograrlo.
DELIMITER | CREATE FUNCTION sf_past_movie_return_date (return_date DATE) RETURNS VARCHAR(3) DETERMINISTIC BEGIN DECLARE sf_value VARCHAR(3); IF curdate() > return_date THEN SET sf_value = 'Yes'; ELSEIF curdate() <= return_date THEN SET sf_value = 'No'; END IF; RETURN sf_value; END|
La ejecución del script anterior creó la función almacenada `sf_past_movie_return_date`.
Probemos ahora nuestra función almacenada.
SELECT `movie_id`,`membership_number`,`return_date`,CURDATE() ,sf_past_movie_return_date(`return_date`) FROM `movierentals`;
Ejecutando el script anterior en MySQL El banco de trabajo contra myflixdb nos da los siguientes resultados.
movie_id | membership_number | return_date | CURDATE() | sf_past_movie_return_date('return_date') |
---|---|---|---|---|
1 | 1 | NULL | 04-08-2012 | NULL |
2 | 1 | 25-06-2012 | 04-08-2012 | yes |
2 | 3 | 25-06-2012 | 04-08-2012 | yes |
2 | 2 | 25-06-2012 | 04-08-2012 | yes |
3 | 3 | NULL | 04-08-2012 | NULL |
Funciones definidas por el usuario
MySQL también admite funciones definidas por el usuario que amplían MySQL. Las funciones definidas por el usuario son funciones que puede crear utilizando un lenguaje de programación como C, C++ etc. y luego agregarlos a MySQL servidor. Una vez agregados, se pueden usar como cualquier otra función.
Resumen
- Las funciones nos permiten mejorar las capacidades de MySQL.
- Las funciones siempre devuelven un valor y, opcionalmente, pueden aceptar parámetros.
- Las funciones integradas son funciones que se envían con MySQLSe pueden clasificar según los tipos de datos con los que operan, es decir, cadenas, fechas y funciones numéricas integradas.
- Las funciones almacenadas son creadas por el usuario dentro MySQL servidor y se puede utilizar en sentencias SQL.
- Las funciones definidas por el usuario se crean fuera MySQL y se puede incorporar a MySQL servidor.