Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Funciones en mysql

Estas en el tema de Funciones en mysql en el foro de Bases de Datos General en Foros del Web. Hare una pregunta tonta, entiendo que las funciones son algo asi como el generador de expresiones de access y que me sirve para varias cosas... ...
  #1 (permalink)  
Antiguo 11/12/2009, 02:02
 
Fecha de Ingreso: febrero-2008
Mensajes: 101
Antigüedad: 16 años, 9 meses
Puntos: 1
Funciones en mysql

Hare una pregunta tonta, entiendo que las funciones son algo asi como el generador de expresiones de access y que me sirve para varias cosas... verdadero y falso, comparaciones, conversiones, etc etc... por lo que he entendido sobre las funciones son las que hacen que SQL "baile" y no sea solamente un sistema de almacenamiento de datos... La pregunta es ¿las funciones solo se utilizan para trabajar con los datos que ya estan almacenados en las tablas? o sea si yo quiero comparar columna 1 y 2, etc etc

JOKEROBSCURO...
  #2 (permalink)  
Antiguo 11/12/2009, 02:12
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 8 meses
Puntos: 574
Respuesta: Funciones en mysql

No se que quieres decir con que el SQL baile....



En las funciones se pueden usar tambien constantes

es decir comparar la columna 1 y la columna2 + 2 (ejemplo tonto)

combinando el sql con algun otor lenguaje puedes hacer que esas constantes sean variables y quizas así aún bailara mas...


es decir comparar la columna 1 y la columna2 + $var

donde $var tendrà un valor u otro dependiendo del contexto...

En muchos motores tambien tienes los triggers y los stored procedures que aún hacen bailar mas al sql...

Quim
  #3 (permalink)  
Antiguo 11/12/2009, 09:28
 
Fecha de Ingreso: febrero-2008
Mensajes: 101
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Funciones en mysql

jajaj.. bueno es una analogia a una pelicula, pero a lo que me refiero es si las funciones permiten hacer de todo a una BD o sea aumentar la cantidad de cosas que puede hacer SQL y mas que solo almacenar datos, eso es obvio, si pero mi pregunta especificamente es si las funciones sirven solo para aplicarse en datos ya almacenados o tbn sirven para usarse en el ingreso de datos a la tabla...

se entiende?

JOKEROBSCURO...
  #4 (permalink)  
Antiguo 11/12/2009, 09:34
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 15 años, 3 meses
Puntos: 150
Respuesta: Funciones en mysql

Joke no te lies!!!

Cuando tu insertas o modificas un campo en la base de datos ahi tiene que ir un dato, simplemente un dato, un numero, un texto, etc.

Ahora..... por supuesto que tu puedes usar funciones (o formulas matematicas) para que un dato se calcule o tenga modificaciones antes de grabarse.

Un ejemplo:

Código:
// Pondra el campo NOMBRE con Alberto
Update TABLA set NOMBRE="Alberto" where ID=1

// Pondra el campo NOMBRE con ALBERTO, la funcion UCASE convierte a mayusculas
Update TABLA set NOMBRE=UCASE("Alberto") where ID=1

Si estas iniciandote en Mysql, te recomiendo que no empieces la casa por el tejado!! muchos lo hacen, ya quieren armar la base de datos y empiezar a usar funciones y selecciones extrañas, lo mejor es buscar un tutorial, sentarse, buena musica, y empezar por el capitulo 1 que explica que es una base de datos y que partes tiene...
  #5 (permalink)  
Antiguo 11/12/2009, 09:41
 
Fecha de Ingreso: febrero-2008
Mensajes: 101
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Funciones en mysql

gracias vun, estoi en eso, solo que ahora me toca introducirme en las funciones, ya se crear bases de datos por lo menos en un nivel basico y estoi aprendiendo a pensar como debe pensar alguien que trabaja con secuencias sql y almacenamiento de datos, conozco los tipos de datos y ahora queria averiguar que era capaz de hacer con ellos... porque una cosa es meter los datos en cajas y lo otro es saber que hacer con los datos que meto dentro de las cajas... y no te preocupes soi multifuncional, puedo caminar y comer chicle al mismo tiempo ^^... solo que las funciones de momento me cuesta saber bien de donde agarrarlas..

JOKEROBSCURO...
  #6 (permalink)  
Antiguo 13/12/2009, 07:01
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Funciones en mysql

Para eso precisamente sirven los manuales...
Partamos de la base que existen muchas funciones ya implementadas en los DBMS, y MySQL no es una excepción. Algunas de ellas son genéricas y usadas por todos los DBMS, algunas de ellas se usa de diferente forma, como por ejemplo CONCAT(), que en MySQL permite crear una cadena con un conjunto de N valores, y en Oracle sólo admite dos.
El paseo por las funciones puede ser largo, por lo que te remitiré directamente al manual de referencia (Capítulo 12. Funciones y operadores).

Respecto al uso de las mismas, dependen de lo que tu necesitas hacer con ellas y de cómo está estructurado el servidor de la base en algunos casos. Esto último es a causa de que en ciertos casos las funciones devuelven datos que deseas usar y que debe ser locales, pero se procesan en servidor y al ser remoto la información es distinta.
Cito un caso: Las funciones de fecha como NOW(), CURDATE(), CURTIME(), LOCALTIME, LOCALTIME() y otras semejantes, están afectadas por la fecha del servidor, por lo cual pueden no tener el efecto esperado.
Otro: Ciertas conversiones de caracteres están afectadas por los CHARSET definidos entre los formularios de toma de datos y los de la base de datos.

Al margen de estas cosas, también existe otro tipo de funciones: Stored Functions, que son básicamente procedimientos almacenados que reciben parámetros sólo de entrada y devuelven un sólo valor, el cual no puede ser jamás un registro o conjunto de registros.

¿Me acerco con esto a lo que preguntas?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 13/12/2009, 14:02
 
Fecha de Ingreso: febrero-2008
Mensajes: 101
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Funciones en mysql

Sip, gnzsoloyo, ese mismo capitulo estoi leyendo del manual, pero tbn el 19 que es donde se explican mx mejor como usar las funciones y los procedimientos, y estoi leyendo el 20 de los tiggers que "podria" decirse que son mas o menos lo mismo con sus variantes obvias y pretendo hacer un resumen de cada uno (funciones, procedimientos y triggers) para ver si me los pueden complementar o decirme si esta bien o mal...

JOKEROBSCURO...
  #8 (permalink)  
Antiguo 13/12/2009, 14:19
Avatar de FNX_NET  
Fecha de Ingreso: marzo-2004
Ubicación: EN EL INFIERNO.....
Mensajes: 1.707
Antigüedad: 20 años, 8 meses
Puntos: 7
Respuesta: Funciones en mysql

estay mal cabro, aunque me van a retar porque no lei todo el post

pero una cosa es la tecnologia que mysql guarda sus datos y su dbms, lo otro es el standar sql para poder hacer consultas a dicha base de datos, que enrealidad hasta sobra un txt las puedes utilizar y lo otro es la tecnologia como los triggers, los PS, vistas ETC.

las funciones que hablabas como comprar cosas son solo sql, lo otro es ver como el dbms trabaja con la concurencia, con su cache de consultas y dentro de eso estan las cosas propias de la base de datos que puede ser el soporte de triggers y esas cosas.
__________________
:-D "Que se libere del cielo confinado; que mi cuerpo sea la espada de hielo negro que nos lleve al abismo; que ningún poder pueda detenernos...Destructora de las almas de los dioses!!!":adios:


:pirata:
  #9 (permalink)  
Antiguo 13/12/2009, 14:30
 
Fecha de Ingreso: febrero-2008
Mensajes: 101
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Funciones en mysql

Cita:
los tiggers que "podria" decirse que son mas o menos lo mismo con sus variantes obvias y pretendo hacer un resumen de cada uno
por eso dije eso y puse el "podria" entre comillas... la simitud esta basicamente en que tanto las funciones, procedimientos y triggers hacen que la base de datos no sea solo almacenar datos y buscarlos... sino que te ayudan a que la base de datos haga otras cosas... sumar, restar, dividir, multiplicar, cantar, bailar, almacenar datos especiales, etc etc

JOKEROBSCURO
  #10 (permalink)  
Antiguo 13/12/2009, 16:18
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Funciones en mysql

Magnífico, ahora bie, hagamos una pequeña aclaración para estar seguro que la explicación de los TRIGGERs se comprende:
Si, es cierto que son rutinas almacenadas, pero tienen algunas restricciones que deben seguirse al pié de la letra o te encontrarás con serios problemas de lógica, implementación y resultados:
  • Los triggers son rutinas almacenadas que no se pueden invocar bajo ninguna circunstancia. Sólo se disparan ante ciertos eventos: inserciones (INSERT), actualizaciones (UPDATE) y borrados (DELETE).
  • No reciben ningún tipo de parámetros. Sólo INSERT y UPDATE contienen una pseudovariable (NEW) que es en realidad una referencia al registro entrante, y que contiene los campos del registro que ingresa. UPDATE tiene otra que es OLD y que representa una referencia al estado actual del registro a actualizar.
  • No devuelven datos de ningún tipo ni clase. Solamente pueden devolver valores en variables de usuario de tipo global.
  • Pueden invocar operaciones DML sobre otras tablas, pero no se pueden realizar contra la propia tabla que lo disparó, ni contra tablas que a su vez tengan triggers que intenten realizar tareas en propia tabla. Esto es: Si el trigger T1 de la tabla A intenta acceder a la tabla B para hacer u INSERT/UPDATE/DELETE, y la tabla B tiene el trigger T2 que debe hacer un INSERT/UPDATE/DELETE en la tabla A, esto no se puede realizar. La razón es simple: Un TRIGGER bloquea su tabla para escritura, y además MySQL aún no da soporte a rutinas recursivas.
  • No se puede crear dos triggers para el mismo evento en la misma tabla. Si existe más de una tarea a realizar en mismo evento deben hacerse todas en el mismo.
  • No se puede usar un trigger para formatear o validar datos previo a la inserción o actualización, si los datos recibidos en la pseudovariable NEW no cumplen con las restricciones de dominio del campo. Esto es porque esas restricciones se verifican antes de que el trigger inicie su ejecución, sea esto BEFORE o AFTER el evento.

Creo que hay algunas otras restricciones, pero esas son las más importantes en este momento.
__________________
¿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; 13/12/2009 a las 17:59 Razón: Error al poner "triggger" donde iba "evento" (penultimo caso)
  #11 (permalink)  
Antiguo 13/12/2009, 17:20
 
Fecha de Ingreso: febrero-2008
Mensajes: 101
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Funciones en mysql

Es cierto que no se puede tener dos disparadores para una misma tabla, siempre que sean activados en el mismo momento y por el mismo evento, pero si se puede tener un BEFORE INSERT y un AFTER UPDATE, pero esto se soluciona con un disparador que ejecute multiples sentencias, encerrado entre DELIMITER se crea el trigger y cuando debe ser lanzado dps un FOR EACH ROW, luego el BEGIN... END

o sea:

DELIMITER
CREATE TRIGGER nombre_del_trigger BEFORE/AFTER ON nombre_tabla
FOR EACH ROW
BEGIN
triggers simultaneos
END// o simplemente //
DELIMITER;

mas o menos eso es lo que he visto, asi es que en el sentido practico si se pueden disparar varios triggers simultaneos pero solo se declara un solo momento... o es asi hasta donde entendi.. corrijanme si me equivoco...

y gracias gnzsoloyo me ahorraste un resumen...xD

JOKEROBSCURO.
  #12 (permalink)  
Antiguo 13/12/2009, 17:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Funciones en mysql

Cita:
mas o menos eso es lo que he visto, asi es que en el sentido practico si se pueden disparar varios triggers simultaneos pero solo se declara un solo momento... o es asi hasta donde entendi.. corrijanme si me equivoco...
Eso no son varios triggers en un trigger, sino varias tareas en el mismo trigger, que es exactamente el penultimo caso, sólo que me equivoqué al poner trigger donde quería decir evento.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #13 (permalink)  
Antiguo 13/12/2009, 19:50
 
Fecha de Ingreso: febrero-2008
Mensajes: 101
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Funciones en mysql

perfecto... gracias

JOKEROBSCURO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 23:54.