TEMA 8. CONSTRUCCIÓN DE GUIONES DE ADMINISTRACIÓN

Tamaño: px
Comenzar la demostración a partir de la página:

Download "TEMA 8. CONSTRUCCIÓN DE GUIONES DE ADMINISTRACIÓN"

Transcripción

1 1 TEMA 8. CONSTRUCCIÓN DE GUIONES DE ADMINISTRACIÓN 1. Introducción 2. Procedimientos y funciones 3. Parámetros y variables 4. Instrucciones condicionales 5. Instrucciones repetitivas 6. Cursores 7. Gestión de rutinas almacenadas 8. Triggers 8.1. Control de sesiones 8.2. Control de valores de entrada 8.3. Mantenimiento de campos derivados 8.4. Estadísticas 8.5. Registro y auditoría 9. Eventos 1. Introducción Dada la gran cantidad de trabajos que debe realizar el administrador de bases de datos debe contar con herramientas para automatizar sus tareas. De hecho automatizar es la clave de una buena administración. Sin esa posibilidad el administrador quedaría limitado enormemente en su trabajo. Hoy en día casi todos los sistemas gestores, comerciales y libres, cuentan con herramientas para la automatización que en la mayoría de los casos consisten en el uso de rutinas (procedimientos y funciones) almacenados, disparadores o triggers y eventos.

2 2 2. Procedimientos y funciones Las rutinas (procedimientos y funciones) son un conjunto de comandos SQL que pueden almacenarse en el servidor. Una vez almacenados, los clientes no necesitan lanzar cada comando individual sino que pueden en su lugar llamar a la rutina cómo un único comando. Una rutina obedece al siguiente esquema simplificado: Nombre rutina + parámetros (entrada, salida o entrada/salida) Declaración e inicialización de variables Procesamiento de datos: Bloques /END con instrucciones de control (condicionales y repetitivas) Fin: Con la instrucción RETURN para devolver un valor en el caso de funciones almacenadas. La sintaxis general para la creación de un procedimiento es: CREATE PROCEDURE nombre_procedimiento ([parámetro[, ]]) [características] Cuerpo del procedimiento La sintaxis general para la creación de una función es: CREATE FUNCTION nombre_funcion ([parámetro[, ]]) RETURNS variable; [características] Cuerpo de la función Por defecto, la rutina se asocia con la base de datos actual. Para asociar la rutina explícitamente con una base de datos, debemos especificar el nombre como nombre_bbdd.nombre_rutina al crearlo. Tanto en los procedimientos cómo en las funciones, los parámetros se especifican de la forma: [IN OUT INOUT] nombre_parámetro tipo_parámetro Donde los tipos de parámetros son los que ya hemos visto para MySQL. La lista de parámetros entre paréntesis debe estar siempre presente. Si no hay parámetros, se debe usar una lista de parámetros vacía (). En los procedimientos se pueden utilizar parámetros IN (entrada), OUT (salida) o INOUT (entrada/salida). Para ello es necesario especificarlo delante del nombre del parámetro. Si no especificamos nada, se toma por defecto el valor IN.

3 3 En las funciones sólo se utilizan los valores IN y no es necesario especificarlo. Sin embargo, en las funciones, se utiliza la cláusula RETURNS para indicar una variable de retorno. Esta cláusula es obligatoria en las funciones, no se puede omitir. Las características pueden tomar los siguientes valores: LANGUAGE SLQ [NOT] DETERMINISTIC { CONTAINS SQL NO SQL READS SQL DATA MODIFIES SQL DATA } SQL SECURITY { DEFINER INVOKER } LANGUAGE SLQ: Indica que el procedimiento está escrito en SQL [NOT] DETERMINISTIC: Una rutina se considera determinista si siempre produce el mismo resultado para los mismos parámetros de entrada, y no determinista en cualquier otro caso. Si no indicamos nada, toma el valor no determinita por defecto. CONTAINS SQL NO SQL READS SQL DATA MODIFIES SQL DATA: CONTAINS SQL indica que la rutina no contiene comandos que leen o escriben datos. NO SQL indica que la rutina no contiene comandos SQL. READS SQL DATA indica que la rutina contiene comandos que leen datos, pero no comandos que escriben datos. MODIFIES SQL DATA indica que la rutina contiene comandos que pueden escribir datos. CONTAINS SQL es el valor por defecto si no se dan explícitamente ninguna de estas características. SQL SECURITY { DEFINER INVOKER }: Se utiliza para especificar si la rutina debe ser ejecutada usando los permisos del usuario que crea la rutina o el usuario que la invoca. El valor por defecto es DEFINER. Para poder ejecutar una rutina es necesario tener el permiso EXECUTE. El cuerpo de la rutina suele estar formado por sentencias SQL. En caso de haber más de una deben ir dentro de un bloque delimitado por sentencias y END cómo veremos en el ejemplo que se muestran a continuación: DROP PROCEDURE IF EXISTS hola_mundo$$ CREATE PROCEDURE test.hola_mundo() SELECT hola mundo ; END $$ Este es un procedimiento muy simple cuyo único objeto es imprimir por pantalla la cadena hola mundo. La palabra clave DELIMITER indica el carácter de comienzo y fin del procedimiento. Típicamente sería un ; pero dado que necesitamos un ; para cada sentencia SQL dentro del procedimiento es conveniente usar otro carácter (normalmente $$ o //).

4 4 En la línea DROP PROCEDURE IF EXISTS hola_mundo$$ eliminamos el procedimiento si es que existe. Esto es opcional pero evita errores cando queremos modificar un procedimiento ya existente. La línea CREATE PROCEDURE test.hola_mundo() indica el comienzo de la definición del procedimiento. No tiene parámetros de entrada y salida por lo que los paréntesis están vacios. En este caso además precedemos al nombre del procedimiento con el nombre de la base de datos, test, a la que pertenecerá el procedimiento. indica el comienzo de una serie de sentencias SQL que componen el cuerpo del procedimiento. En este caso sólo hay un SELECT que imprime la cadena de texto hola mundo por pantalla. END indica el fin del bloque. Finaliza en $$ para indicar que hemos terminado. Utilizaremos un editor para escribir este procedimiento, utilizando un nombre y una extensión apropiados, en este caso hola_mundo.sql. Crearemos el procedimiento con el comando SOURCE de la forma: mysql> SOURCE hola_mundo.sql Una vez creado, podemos ejecutarlo mediante el comando CALL: mysql> call hola_mundo () $$ Veamos otros ejemplos: CREATE FUNCTION estado (in_estado CHAR(1)) RETURNS VARCHAR(20) DECLARE estado VARCHAR ( =); IF in_estado = P THEN SET estado= caducado ; ELSEIF in_estado = O THEN SET estado= activo ; ELSEIF in_status = N THEN SET estado= nuevo ; RETURN (estado); En este ejemplo la función recibe un valor de estado como entrada y lo comprueba. Según cual sea se asignará un valor u otro, con el comando SET, a la variable que devuelve la función. CREATE FUNCTION esimpar (numero int)

5 5 RETURNS int DECLARE impar INT; IF MOD (numero,2)=0 THEN SET impar=false; ELSE SET impart=true; RETURN (impar); En este caso recibimos un número cómo entrada devolviendo TRUE si es par y FALSE en caso de que sea impar. DROP PROCEDURE IF EXISTS muestra_estado$$ CREATE PROCEDURE muestra_estado (in numero int) IF (esimpar(numero)) THEN SELECT CONCAT (numero, es impar ); ELSE SELECT CONCAT (numero, es par ); Este procedimiento nos muestra un mensaje por pantalla indicándonos la paridad del parámetro que recibe cómo entrada. 3. Parámetros y variables Igual que en otros lenguajes de programación los procedimientos y funciones usan variables y parámetros que determinan la salida del algoritmo. Veámoslo en un ejemplo: DROP PROCEDURE IF EXISTS proc1 $$ CREATE PROCEDURE proc1 /*nombre*/ (IN parametro1 INTEGER) /*parámetros*/ DECLARE variable1 INTEGER; /*variables*/ DECLARE variable2 INTEGER; /*variables*/ IF parametro1=17 THEN SET variable1 = parametro1; /*asignación*/ ELSE SET variable2 = 30; /*asignación*/ INSERT INTO t VALUES (variable1, variable2); /*instrucción SQL*/

6 6 END $$ En este ejemplo DECLARE crea una nueva variable con su nombre y tipo. Los tipos son los usuales de MySQL. Esta cláusula puede incluir una opción para indicar valores por defecto. Si no se indica, dichos valores serán NULL. Un ejemplo de asignación de un valor por defecto sería: DECLARE a, b INT DEFAULT 5; SET permite asignar valores a las variables usando el operador de igualdad. En el ejemplo se recibe una variables entera de entrada llamada parámetro1, se declaran las variables variable1 y variable2 de tipo entero y se testea el valor del parámetro. En caso de que sea 17 se asigna su valor a la variable1, sino se le asigna el valor 30 a la variable2. Es un ejemplo sin mucha utilidad práctica y únicamente tiene fines didácticos. Veamos algunos ejemplos incluyendo parámetros de los diferentes tipos (IN, OUT, INOUT) en los procedimientos: CREATE PROCEDURE proc2 (IN p INT) = p$$ mysql> CALL proc2 (12345)$$ En este ejemplo se establece el valor de una variable de sesión (precedida al valor de entrada p; Si ejecutamos el comando tras la llamada al procedimiento (CALL), mysql nos responderá con el valor de x que será CREATE PROCEDURE proc3 (OUT p INT) SET p = -5 $$ mysql>call proc3 (@y)$$ En este caso se crea una nueva al llamar al procedimiento cuyo valor se actualiza dentro del mismo por ser esta de tipo OUT. Si ejecutamos el comando tras la llamada al procedimiento nos dará el valor de y que será -5. CREATE PROCEDURE proc4 (INOUT p INT) SET p = p-5 $$ mysql>call proc4 (@y)$$

7 7 En este ejemplo se usa el mismo valor del parámetro en la entrada (0) para modificar su valor, que será además devuelto por el procedimiento (-5). La sentencia nos dará precisamente ese valor, -5. Las variables tiene un alcance que está determinado por el bloque /END en el que se encuentran. Es decir, no podemos ver una variable que se encuentra fuera de un procedimiento salvo que la asignemos a un parámetro out (RETURN en una función) o a una variable de sesión 4. Instrucciones condicionales En muchas ocasiones el valor de una o más variables o parámetros determinará el proceso de las mismas. Cuando esto ocurre debemos usar instrucciones condicionales de tipo simple o IF cuando solamente hay una condición, alternativas o IF THEN ELSE cuando hay dos posibilidades o múltiple, o CASE cuando tenemos un conjunto de condiciones distintas. La sintaxis general para IF-THEN-ELSE es: IF expr1 THEN ELSEIF expr2 THEN ELSE END IF Veamos un ejemplo: CREATE PROCEDURE proc7 (IN par1 INT) DECLARE var1 INT; SET var1 = par1 + 1; IF var1 = 0 THEN INSERT INTO t VALUES (17); IF par1 = = THEN UPDATE t SET sq= s1 + 1; ELSE UPDATE t SET s1 = s1 + 2; END $$ En este ejemplo insertamos o actualizamos la tabla de prueba t en la base de datos test según el valor de entrada. Cuando el valor de la variable 1 es 0 entonces

8 8 hacemos una inserción, en caso de que sea 0 actualizamos sumando 1 al valor actual y, sino, sumamos 2. La sintaxis de la instrucción CASE es: CASE expr WHEN value THEN sentencias [WHEN value THEN sentencias ] [ELSE sentencias] END CASE; Veamos un ejemplo: CREATE PROCEDURE proc8 (IN parameter1 INT) DECLARE variable1 INT; SET variable1 = parameter1 + 1; CASE variable1 WHEN 0 THEN INSERT INTO t VALUES (17); WHEN 1 THEN INSERT INTO t VALUES (18); ELSE INSERT INTO t VALUES (19); END CASE; 5. Instrucciones repetitivas MySQL provee de tres tipos de instrucciones repetitivas: LOOP, REPEAT UNTIL y WHILE LOOP. Veamos la sintaxis básica de todos ellos y algunos ejemplos. La sintaxis básica de LOOP es: [etiqueta:] LOOP instrucciones END LOOP [etiqueta]; La palabra opcional etiqueta permite etiquetar el LOOP para podernos referir a él dentro del bloque. Veamos un ejemplo:

9 9 CREATE PROCEDURE proc9 () DECLARE cont INT; SET cont = 0; loop_label: LOOP INSERT INTO t VALUES (cont); SET cont = cont + 1; IF cont >= 5 THEN LEAVE loop_label; END LOOP; END; $$ En este ejemplo el LOOP o bucle se ejecuta mientras no lleguemos a la condición cont>=5. En caso de que se cumpla la condición, la orden LEAVE termina el LOOP etiquetado cómo loop_label. Veamos ahora la sintaxis del REPEAT UNTIL LOOP: [etiqueta:] REPEAT Instrucciones UNTIL expresión END REPEAT [etiqueta] A continuación vemos un ejemplo de un procedimiento en el que se muestran los números impares del 0 al 10: CREATE PROCEDURE proc10 () DECLARE i INT; SET i = =; loop1 : REPEAT SET i = i + 1; IF MOD (i,2)<>0 THEN /*número impar*/ SELECT CONCAT (i, es impar ); UNTIL i >= 10 END REPEAT loop1; La sintaxis general de WHILE LOOP es: [etiqueta:] WHILE expresión DO Instrucciones END WHILE [etiqueta]

10 10 Veamos el ejemplo anterior utilizando ahora WHILE LOOP: CREATE PROCEDURE proc10 () DECLARE i INT; SET i=1; loop1: WHILE i<=10 DO IF MOD (i,2)<>0 THEN SELECT CONCAT (i, es impar ); SET i=i+1; END WHILE loop1; EJERCICIOS 1. Crea un procedimiento que muestre dos cadenas pasadas cómo parámetros concatenadas. 2. Crea una función que devuelva el valor de la hipotenusa de un triángulo a partir de los valores de sus lados. 3. Crea una función que devuelva 1 ó 0 si un número es o no divisible por otro. 4. Usa las estructuras condicionales para mostrar el día de la semana según un valor de entrada numérico, 1 para lunes, 2 para martes, etc. 5. Crea un procedimiento que muestre la suma de los primeros n números enteros, siendo n un parámetro de entrada. 6. Crea una función que determine si un número es primo devolviendo 0 ó Cursores Hasta ahora todos los ejemplos que hemos visto contenían instrucciones o expresiones referidas a cálculos matemáticos o de cadena sencillos sin implicar el uso de una base de datos. Sin embargo, el uso de procedimientos implica manipular datos de tablas de bases de datos lo que implica usar instrucciones SQL. En general, podemos utilizar cualquier instrucción de SQL, del DDL, del DML o del DCL. Veamos un ejemplo simple: CREATE PROCEDURE simple_sql() DECLARE i INT DEFAULT 1; /*instrucción DDL*/ DROP TABLE IF EXISTS test_table;

11 11 CREATE TABLE test_table (id INT PRIMARY KEY, some_data VARCHAR (30)) ENGINE=innodb; /*INSERT usando una variable de procedimiento*/ WHILE (i<=10) DO INSERT INTO test_table VALUES (i, CONCAT ( Registro, i); SET i = i + 1; END WHILE; /*Ejemplo de actualización usando variables de procedimiento*/ SET i=5; UPDATE test_table SET some_data=concat ( Se modificó la fila, i) WHERE id = i; /*DELETE con una variable de procedimiento*/ DELETE FROM test_table WHERE id>i; En el siguiente ejemplo usamos la propiedad de las sentencias SELECT de enviar valores a variables usando INTO: CREATE PROCEDURE motorblog.obtener_datos_noticia (id_noticia INT) DECLARE vtitulo VARCHAR (200); DECLARE vcontenido TEXT; DECLARE vfecha DATE; SELECT titulo, contenido, fecha INTO vtitulo, vcontenido, vfecha FROM noticias WHERE id=id_noticia; /*Procesamos los datos obtenidos, por ejemplo mostrándolos*/ SELECT vtitulo, vcontenido, vfecha; En el anterior ejemplo observamos cómo la sentencia SELECT asigna los valores de la fila seleccionada para asignarlos a su vez a nuevas variables internas del procedimiento. No obstante muchas veces querremos recuperar más de una fila para manipular sus datos. En estos casos no sirve la sentencia anterior y requerimos el uso de cursores. Conceptualmente un cursor se asocia con un conjunto de filas de una base de datos. Algunos comandos relacionados con cursores son: DECLARE: para declarar un cursor de la forma DECLARE nombre_cursor CURSOR FOR SELECT sentencia;. OPEN: inicializa el conjunto de resultados asociados con el cursor. Ejemplo: OPEN nombre_cursor;. FETCH: extrae la siguiente fila de valores del conjunto de resultados del cursor moviendo su puntero interno una posición. Ejemplo: FETCH nombre_cursor INTO lista de variables;.

12 12 CLOSE: cierra el cursor liberando la memoria que ocupa y haciendo imposible el acceso a cualquiera de sus datos. Ejemplo: CLOSE nombre_cursor;. Veamos un ejemplo con un bucle: CREATE PROCEDURE cursor_demo1 () DECLARE tmp VARCHAR (30); DECLARE cursor1 CURSOR FOR SELECT titulo FROM noticias; OPEN cursor1; 1_cursor: LOOP FETCH cursor1 INTO tmp; END LOOP 1_cursor; CLOSE cursor1; En el anterior ejemplo se produce un error similar al siguiente: mysql> call cursor_demo1 (); ERROR 1329 (02000): No data to FETCH Esto sucede porque cuando llegamos a la última fila no hay más datos que obtener y se produce el error. Necesitamos, por tanto, una forma de detectar ese momento. Para ello utilizaremos un manejador de errores o handler. Usaremos la siguiente instrucción: DECLARE CONTINUE HANDLER FOR NOT FOUND SET ultima_fila=1; Este handler hace dos cosas, por un lado establece la variable ultima_fila a 1 y permite al programa continuar su ejecución. Nuestro procedimiento quedaría ahora: CREATE PROCEDURE cursor_demo2() DECLARE tmp VARCHAR (200); DECLARE 1rf BOOL; DECLARE nn INT; DECLARE cursor2 CURSOR FOR SELECT titulo FROM NOTICIAS; DECLARE CONTINUE HANDLER FOR NOT FOUND SET 1rf=1; SET 1rf=0, nn=0; OPEN cursor2; 2_cursor: LOOP FETCH cursor2 INTO tmp; SET nn=nn+1; IF 1rf=1 THEN

13 13 LEAVE 1_cursor; END LOOP 2_cursor; CLOSE cursor2; SELECT nn; Hemos declarado dos nuevas variables: lrf que es una variable booleana que toma los posibles valores 0 ó 1, indicando si hemos llegado o no a la última fila del cursor; y nn que almacena el número de noticias o registros contenidos en el cursor. Gracias a la sentencia LEAVE podemos terminar el bucle cuando lrf adquiere el valor 1 o, lo que es lo mismo, se alcanza el final del cursor. Finalmente, cuando ejecutemos el procedimiento veremos el número de noticias gracias a la sentencia final SELECT nn. 7. Gestión de rutinas almacenadas Las rutinas se manipulan con los comandos CREATE (ya visto), DROP y SHOW. Para eliminar procedimientos o funciones usamos el comando DROP con la siguiente sintaxis: DROP {PROCEDURE FUNCTION} [IF EXISTS] nombre_rutina Podemos ver información de nuestras rutinas usando los comandos: SHOW CREATE {PROCEDURE FUNCTION} nombre_rutina SHOW {PROCEDURE FUNCTION} STATUS [LIKE pattern ] Dónde en el segundo caso hacemos un filtro por patrones. Estos comandos, y en general todos los de tipo SHOW se nutren del diccionario de datos gracias a la tabla INFORMATION_SCHEMA.ROUTINES que también podemos consultar con instrucciones SELECT. EJERCICIOS 7. Sobre la BBDD oposiciones y utilizando cursores realiza las siguientes operaciones: - Crea un procedimiento que muestre el nombre del opositor que ha conseguido la nota más alta en cualquiera de los exámenes realizados. - Crea un procedimiento que muestro un listado con los opositores que han suspendido cualquiera de los exámenes. El listado debe mostrar el nombre, el dni y la descripción del examen.

14 14 - Calcula con un procedimiento la nota media de todas las notas. No tengas en cuenta que hay distintos exámenes. 8. Triggers Un trigger o disparador es un tipo especial de rutina almacenada que se activa o ejecuta cuando en una tabla ocurre un evento de tipo INSERT, DELETE o UPDATE. Es decir, los disparadores implementan una funcionalidad asociada a cualquier cambio en una tabla. Las instrucciones para gestionar disparadores son CREATE TRIGGER, SHOW TRIGGER y DROP TRIGGER. La sintaxis general para crear un trigger es: CREATE TRIGGER nombre_disp momento_disp evento_disp ON nombre_tabla FOR EACH ROW sentencia_disp momento_disp: es el momento en que el disparador entra en acción. Puede ser BEFORE (antes) o AFTER (después), para indicar que el disparador se ejecute antes o después que la sentencia que lo activa. evento_disp: indica la clase de sentencia que activa el disparador. Puede ser INESRT, UPDATE o DELETE. Por ejemplo, un disparador BEFORE para sentencias INSERT podría utilizarse para validar los valores a insertar. No puede haber dos disparadores en una misma tabla que correspondan al mismo momento y sentencia. Por ejemplo, no se pueden tener dos disparadores BEFORE UPDATE. Pero sí es posible tener los disparadores BEFORE UPDATE y BEFORE INSERT o BEFORE UPDATE y AFTER UPDATE. sentencia_disp: Es la sentencia que se ejecuta cuando se activa el disparador. Si se desean ejecutar múltiples sentencias, deben colocarse entre.end, el constructor de sentencias compuestas. Las columnas de la tabla asociada con el disparador pueden referenciarse empleando los alias OLD y NEW. OLD.nombre_columna hace referencia a una columna de una fila existente, antes de ser actualizada o borrada. NEW.nombre_columna hace referencia a una columna en una nueva fila a punto de ser insertada o en una fila existente después de ser actualizada. Las palabras clave OLD y NEW permiten acceder a columnas en los registros afectados por un disparador. En un disparador para INSERT, solamente puede utilizarse NEW.nombre_columna ya que no hay una versión anterior del registro. En un disparador para DELETE solo puede emplearse OLD.nombre_columna, porque no hay un nuevo registro. En un disparador para UPDATE se puede emplear OLD.nombre_columna para referirse a las columnas de un registro antes de que sea actualizado, y NEW.nombre_columna para referirse a las columnas del registro luego de actualizarlo.

15 15 El uso de SET NEW.nombre_columna = valor necesita que se tenga el privilegio UPDATE sobre la columna. El uso de SET nombre_variable = NEW.nombre_columna necesita el privilegio SELECT sobre la columna. Para eliminar un disparador, se emplea una sentencia DROP TRIGGER. El nombre del disparador debe incluir el nombre de la tabla: DROP TRIGGER [ IF EXISTS [nombre_tabla.]trigger_nombre Podemos obtener información de los trigger creados con SHOW TRIGGERS. SHOW TRIGGERS [{FROM IN} nombre_bbdd] [LIKE pattern WHERE expr] Este comando nos permite mostrar trigger de una base de datos filtrándolo con un patrón o cláusula WHERE. Cuando creamos triggers se crea un nuevo registro en la tabla TRIGGERS del diccionario de datos. Aunque su uso es muy variado y depende mucho del tipo de aplicación o base de datos con que trabajemos podemos hacer una clasificación más o menos general del uso de los triggers. Veamos algunos ejemplos en los siguientes apartados. 8.1 Control de sesiones En ocasiones puede ser interesante recoger ciertos valores en variables de sesión creadas por el usuario que al final nos permitan ver un resumen de lo realizado en dicha sesión. Veamos un ejemplo: CREATE TRIGGER insertar_movimiento BEFORE INSERT ON movimiento FOR EACH ROW + NEW.cantidad; En este ejemplo antes de insertar uno o varios movimientos se acumula la cantidad de todos ellos en la variable de Para utilizar este trigger se debe establecer el valor de la variable acumulador a cero, ejecutar una o varias sentencias INSERT y ver qué valor presenta luego la variable: mysql> = 0; mysql> INSERT INTO movimiento VALUES (137, 14.98), (141, ), (97, ); mysql> AS Total insertado ; 100). El valor mostrado por la select será (el resultado de

16 Control de valores de entrada Un uso posible de los disparadores es el control de valores insertados o actualizado s en tablas. En el ejemplo siguiente se crea un disparador en la tabla movimiento para UPDATE que verifica los valores utilizados para actualizar cada columna, y modifica el valor para que se encuentre en un rango de 0 a 100. Esto debe hacerse en un disparador BEFORE porque los valores deben verificarse antes de emplearse para actualizar el registro: CREATE TRIGGER comprobación_saldo BEFORE UPDATE ON movimiento FOR EACH ROW IF NEW.cantidad < 0 THEN SET NEW.cantidad = 0; ELSEIF NEW.cantidad > 100 THEN SET NEW.cantidad = 100; En este caso cada vez que se actualice la tabla cuenta se controlará el valor del saldo para que sea siempre positivo. 8.3 Mantenimiento de campos derivados Otro uso típico de los triggers es para mantenimiento de campos derivados o redundantes, o sea campos que pueden calcularse a partir de otros cómo por ejemplo el campo saldo en la tabla cuenta de ebanca. El siguiente trigger actualiza ese valor cada nuevo ingreso: CREATE TRIGGER actualizar_cuenta BEFORE INSERT ON movimiento FOR EACH ROW UPDATE cuenta SET saldo = saldo + NEW.cantidad WHERE cod_cuenta = OLD.cod_cuenta; 8.4 Estadísticas Podemos registrar estadísticas de operaciones o valores de nuestras bases de datos en tiempo real usando triggers. Por ejemplo podemos registrar los ingresos que se hacen cada mes en una tabla aparte con el siguiente trigger:

17 17 CREATE TRIGGER ingresos_dia AFTER INSERT ON movimiento FOR EACH ROW IF existe (MONTH(NEW.fecha, idia)=0 THEN INSERT into idia (cantidad, fecha) VALUES (NEW.cantidad, NEW.fecha); ELSE UPDATE idia SET cantidad = NEW.cantidad + cantidad WHERE mes= MONTH (NEW.fecha); Para lo cual debemos crear la función existe que nos devuelve 1 ó 0 si existe o no el registro para cada mes. 8.5 Registro y auditoría Cuando muchos usuarios acceden a las bases de datos puede ser que el registro de log no sea suficiente o simplemente dificulte la revisión de la actividad en el servidor en el sentido de saber quién ha hecho que operación y a qué hora. Para ello existen soluciones (por ejemplo scripts en perl) que permiten filtrar los ficheros de registro para obtener la información que necesito. Sin embargo podemos también usar triggers que me faciliten dicha tarea. Podemos asignar un trigger a una tabla que dispare después (AFTER) de una sentencia DELETE o update, que guarde los valores del registro, así como alguna otra información de utilidad en una tabla de log. Vamos a examinar un caso práctico. Queremos saber quién y a qué hora modificó la tabla movimientos en la base de datos ebanca. Para ello craemos un trigger que registre dichas actualizaciones incluyendo los datos antiguos y los nuevos para cada registro modificado. Primero creamos una tabla simple de log/auditoriía: CREATE TABLE auditoria_movimientos ( id_mov INT NOT NULL AUTO_INCREMENT, cod_cuenta_ant VARCHAR (100) fecha_ant DATETIME, cantidad_ant INT, cod_cuenta_n VARCHAR (100), fecha_n DATETIME, cantidad_n INT, usuario VARCHAR (40), fecha_mod DATETIME, PRIMARY KEY (id)

18 18 ) ENGINE = InnoDB; Y ahora crearemos un trigger para que vaya llenando los registros de esta tabla cada vez que alguien ejecute una actualización sobre la tabla: CREATE TRIGGER trigger_auditoria_movimientos AFTER UPDATE ON movimientos FOR EACH ROW INSERT INTO auditoria_movimientos (cod_cuenta_ant, fecha_ant, cantidad_ant, cod_cuenta_n, fecha_n, cantidad_n, usuario, fecha_mod) VALUES (OLD.cod_cuenta, OLD.fecha, OLD.cantidad, NEW.cod_cuenta, NEW.fecha_n, NEW.cantidad_n, CURRENT_USER (), NOW ()); Cómo se puede observar, el trigger creado anteriormente se activará con la ejecución de la actualización (UPDATE) y agregará un nuevo registro a la tabla de auditoría cada vez que se actualice la tabla movimientos. De una forma sencilla, usando las funciones CURRENT_USER () y NOW () sabemos quién realizo una actualización y cuando l ohizo. Podríamos agregar una columna acción a esta tabla de auditoría, y registrar también sentencias INSERT y DELETE en esta misma tabla. 9. Eventos En MySQL los eventos son tareas que se ejecutan de acuerdo a un horario. Por lo tanto, a veces nos referiremos a ellos cómo los eventos programados. También se conoce cómo triggers temporales ya que conceptualmente son similares diferenciándose en que el trigger se activa por un evento sobre la base de datos mientras que el evento según una marca de tiempo. Un evento se identifica por su nombre y el esquema o base de datos al que se le asigna. Lleva a cabo una acción específica de acuerdo a un horario. Esta acción consiste en una o varias instrucciones SQL dentro de un bloque END. Distinguiremos dos tipos de eventos, los que se programan para una única ocasión y los que ocurren periódicamente cada cierto tiempo. La variable global event_scheduler determina si el programador de eventos está habilitado y en ejecución en el servidor. Esta variable puede tomar los valores ON para activarlo, OFF para desactivarlo y DISABLED si queremos imposibilitar la activación en tiempo de ejecución. Cuando el programador de eventos (scheduler) se detiene (event_scheduler está a OFF), puede ser iniciado en tiempo de ejecución con la sentencia SET GLOBAL event_scheduler = ON;

19 19 Ya que el programador de eventos se ejecuta cómo un hilo más del servidor, podemos comprobar que está activo con la sentencia SHOW PROCESSLIST. Los comandos para la gestión de eventos son CREATE EVENT, ALTER EVENT, SHOW EVENT y DROP EVENT. La sintaxis general para la gestión de eventos es: CREATE [DEFINER = {user CURRENT_USER}] EVENT [IF NOT EXISTS] nombre_evento ON SCHEDULE schedule [ON COMPLETION [NOT] PRESERVE] [ENABLE DISABLE DISABLE ON SLAVE] [COMMENT comment ] DO cuerpo_evento DEFINER especifica el usuario cuyos permisos se tendrán en cuenta en la ejecución del evento. ON SCHEDULE permite establecer cómo y cuándo se ejecutará el evento. Una sola vez, durante un intervalo, cada cierto tiempo o en una fecha hora de inicio y fin determinadas. schedule puede tomar los siguientes valores: AT timestamp [ + INTERVAL intervalo] EVERY intervalo [STARTS timestamp [ + INTERVAL intervalo] ] [ENDS timestamp [+INTERVAL intervalo] ] A su vez, intervalo puede tomar los siguientes valores: YEAR, QUARTER, MONT, DAY, HOUR, MINUTE, WEEK, SECOND, YEAR_MONT, DAY_HOUR, DAY_MINUTE, DAY_SECOND, HOUR_MINUTE, HOUR_SECOND, MINUTE_SECOND. La claúsula ON COMPLETION [NOT] PRESERVE permite mantener el evento aunque haya expirado. DISABLE permite crear el evento en estado inactivo. DISABLE ON SLAVE sirve para indicar que el evento se creó en el maestro de una replicación y que, por tanto, no se ejecutará en el esclavo. COMMENT sirve para insertar comentarios. cuerpo_evento: contenido del evento que se va a ejecutar. En el ejemplo que se muestra a continuación cada mes se eliminan de la tabla noticias en la base de datos motorblog las noticias fechadas hace más de 30 días. Previamente se almacenan en una tabla de histórico. El evento comienza el CREATE EVENT archivo_noticias ON SCHEDULE EVERY 1 MONT STARTS :00:00 ENABLE

20 20 DO INSERT INTO histórico_noticias SELECT * FROM noticias WHERE fecha <= DATE_SUB (CURRENT_DATE (), INTERVAL 30 DAY); DELETE FROM noticias WHERE fecha <= DATE_SUB (CURRENT_DATE (), INTERVAL 30 DAY); Para la información asociada a un evento usamos SHOW EVENT: SHOW EVENTS [FROM IN} schema_name] [LIKE pattern WHERE expr] Que muestra información de eventos asociados a un esquema o base de datos y filtrado según el patrón que determinemos o una claúsula WHERE. Como siempre, podemos recurrir al diccionario de datos consultando la tabla EVENTS. EJERCICIOS 8. Sobre la BBDD cursos realiza las siguientes operaciones: - Crea un trigger que cuente las matriculas que se van dando de alta por sesión. El procedimiento debe mostrar el resultado cada vez que se realice una llamada al mismo desde la consola. - Crea un trigger que modifique el valor del campo horascur de la tabla curso de la siguiente manera: Si el valor que se pretende insertar es menor que 0, modificar este valor para que inserte 0 en la tabla. Si el valor que se pretende insertar es mayor que 500, modificar este valor para que inserte 500 en la tabla. - Modifica la tabla alumno añadiendo un campo que sea IBAN y crea un trigger que inserte un valor en dicho campo cada vez que se dé de alta un nuevo alumno. El valor insertado será ES00 + entidad (campo entidadalu de la tabla alumno) + sucursal (campo sucursalalu de la tabla alumno) + número de cuenta (campo numcuentaalu de la tabla alumno). - Crea una nueva tabla en la base de datos que se llame estadística_alumnos y que tenga los campos fecha y número alumnos. Esta tabla recogerá los alumnos dados de alta en una fecha determinada. Para insertar datos en la tabla crear un trigger que inserte nuevos registros o, en su defecto, modifique los ya existentes, cada vez que se inserte un nuevo alumno en la tabla alumnos. - Crea una nueva tabla en la base de datos que nos permita hacer una auditoría de los cambios realizados en la tabla matriculas. La tabla se llamará auditoria_matricula y tendrá los siguientes campos: un código que identifique las filas de forma única, alumno antiguo, curso antiguo, edición antigua, pagado antiguo, alumno nuevo, curso nuevo, edición nueva, pagado nueva, usuario, fecha de modificación y acción. Crear los

21 21 triggers necesarios para insertar datos en dicha tabla cada vez que un usuario modifique, inserte o borre datos en la tabla. Los campos de la nueva tabla recogerán los valores antiguos, los valores nuevos, el usuario que realiza la modificación, la fecha y hora en la que se realiza la modificación y la acción realizada (INSERT, UPDATE o DELETE).

- Bases de Datos - - Diseño Físico - Luis D. García

- Bases de Datos - - Diseño Físico - Luis D. García - Diseño Físico - Luis D. García Abril de 2006 Introducción El diseño de una base de datos está compuesto por tres etapas, el Diseño Conceptual, en el cual se descubren la semántica de los datos, definiendo

Más detalles

Un ejemplo teórico de trigger podría ser éste:

Un ejemplo teórico de trigger podría ser éste: 9. TRIGGERS EN LA BASE DE DATOS Un trigger (disparador sería la traducción técnica) es un bloque PLSQL que se ejecuta implícitamente cuando ocurre un evento y pueden ser de base de datos o de aplicación.

Más detalles

Procedimientos, Funciones, Trigger y Cursores en ORACLE

Procedimientos, Funciones, Trigger y Cursores en ORACLE Procedimientos, Funciones, Trigger y Cursores en ORACLE PROCEDIMIENTOS ALMACENADOS Un procedimiento almacenado es un conjunto de instrucciones en PL/SQL, que pueden ser llamados usando el nombre que se

Más detalles

SQL (Structured Query Language)

SQL (Structured Query Language) SQL (Structured Query Language) El lenguaje de consulta estructurado o SQL (por sus siglas en inglés Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite

Más detalles

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006

Bases de Datos SQL 1 SQL. Jorge Pérez R. Universidad de Talca, II Semestre 2006 Bases de Datos SQL 1 SQL Jorge Pérez R. Universidad de Talca, II Semestre 2006 Bases de Datos SQL 2 SQL + Procedural La mayoría de los DBMS actuales permiten extensiones de SQL para la creación de bloques

Más detalles

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle:

PL/SQL. Con PL/SQL vamos a poder programar las unidades de programa de la base de datos Oracle: PL/SQL (Procedural Language/Structured Query Language) PL/SQL es el lenguaje de programación que proporciona Oracle para extender el SQL estándar con otro tipo de instrucciones y elementos propios de los

Más detalles

Base de datos relacional

Base de datos relacional Base de datos relacional Una base de datos relacional es una base de datos que cumple con el modelo relacional, el cual es el modelo más utilizado en la actualidad para modelar problemas reales y administrar

Más detalles

ADMINISTRACIÓN DE BASE DE DATOS

ADMINISTRACIÓN DE BASE DE DATOS SQL SERVER T-SQL QUERY s es ADMINISTRADOR GRÁFICO SGBD Elementos objetos Tablas Procedimientos Triggers Funciones Usuarios Permiso Roles Contraseñas Programas DTS (Data Transfer System) Exportación e Importación

Más detalles

Capítulo 8. Construcción de guiones

Capítulo 8. Construcción de guiones Capítulo 8 Construcción de guiones ÍNDICE CAPÍTULO 8 Lenguajes de programación y bases de datos Procedimientos y funciones almacenados en MySQL Sintaxis y ejemplos Parámetros y variables Instrucciones

Más detalles

1. DML. Las subconsultas

1. DML. Las subconsultas 1.1 Introducción 1. DML. Las subconsultas Una subconsulta es una consulta que aparece dentro de otra consulta o subconsulta en la lista de selección, en la cláusula WHERE o HAVING, originalmente no se

Más detalles

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN

COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN COMANDOS DE SQL, OPERADORES, CLAUSULAS Y CONSULTAS SIMPLES DE SELECCIÓN Tipos de datos SQL admite una variada gama de tipos de datos para el tratamiento de la información contenida en las tablas, los tipos

Más detalles

Trabajos de Ampliación. Bases de datos NoSQL.

Trabajos de Ampliación. Bases de datos NoSQL. BASES DE DATOS NoSql Son bases de datos pensadas para aplicaciones que hagan un uso intensivo de la misma. Estas bases de datos permiten una mayor flexibilidad y facilidad a la hora de introducir los datos

Más detalles

MANUALITO MS-SQL SERVER

MANUALITO MS-SQL SERVER MANUALITO MS-SQL SERVER Contenido 1. Crear Store Procedures en MS SQL Server... 1 2. Crear Triggers en MS SQL Server... 5 3. Crear Vistas en MS SQL Server... 9 1. Crear Store Procedures en MS SQL Server

Más detalles

Iniciando con Oracle. Índice de contenido. Ingresando a Oracle. Cambiando Su Contraseña. Ingresando un Comando SQL en SQL*Plus

Iniciando con Oracle. Índice de contenido. Ingresando a Oracle. Cambiando Su Contraseña. Ingresando un Comando SQL en SQL*Plus Iniciando con Oracle Índice de contenido Ingresando a Oracle...1 Cambiando Su Contraseña...1 Ingresando un Comando SQL en SQL*Plus...2 Saliendo de SQL*Plus...2 Consiguiendo Ayuda...2 Creación de una Tabla...3

Más detalles

Diseño de bases de datos

Diseño de bases de datos Departamento de Lenguajes y Sistemas Informáticos E.T.S. Ingeniería Informática. Universidad de Sevilla Avda Reina Mercedes sn. 41012 Sevilla TlfFax 954 557 139 E-mail lsi@lsi.us.es Web www.lsi.us.es Diseño

Más detalles

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros

Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros La sentencia INSERT permite agregar nuevas filas de datos a las tablas existentes. Está sentencia

Más detalles

Laboratorio Informix. Stored Procedures Triggers

Laboratorio Informix. Stored Procedures Triggers Laboratorio Informix Stored Procedures Triggers Repaso A partir del ER, hicimos las tablas de la base de datos. Creamos en MySql las base de datos y las tablas Hicimos una aplicación que se comunica con

Más detalles

FIREBIRD: SQL PROCEDIMENTAL (PSQL)

FIREBIRD: SQL PROCEDIMENTAL (PSQL) FIREBIRD: SQL PROCEDIMENTAL (PSQL) Vicente Tejero Trueba Pag 1 IES Pedro Espinosa FIREBIRD: SQL PROCEDIMENTAL (PSQL) 1.- INTRODUCCION...1 2.- EXTENSIONES DEL LENGUAJE...2 2.1.- Terminadores...2 2.2.- Variables...3

Más detalles

Repaso. Laboratorio Informix. Stored Procedures. Ejemplo. Creación de stored procedures. Sql en un Procedimiento

Repaso. Laboratorio Informix. Stored Procedures. Ejemplo. Creación de stored procedures. Sql en un Procedimiento Laboratorio Informix Stored Procedures Triggers Repaso A partir del ER, hicimos las tablas de la base de datos. Creamos en MySql las base de datos y las tablas Hicimos una aplicación que se comunica con

Más detalles

UNIVERSIDAD DEL ISTMO CAMPUS IXTEPEC LIC. INFORMATICA GRUPO 508 PROCEDIMIENTOS ALMACENADOS EN SQL SERVER 2000

UNIVERSIDAD DEL ISTMO CAMPUS IXTEPEC LIC. INFORMATICA GRUPO 508 PROCEDIMIENTOS ALMACENADOS EN SQL SERVER 2000 PROCEDIMIENTOS ALMACENADOS EN SQL SERVER 2000 Creación de la base de Datos Pulsamos F5 para Actualizar, y una vez posicionados en nuestra base de datos,se crean los scripts que seran soportados por el

Más detalles

SQL PROCEDURAL Triggers y Stored Procedures. Ing. Gustavo A. Correa Reina UNCPBA 2008

SQL PROCEDURAL Triggers y Stored Procedures. Ing. Gustavo A. Correa Reina UNCPBA 2008 Base de Datos I SQL PROCEDURAL Triggers y Stored Procedures Ing. Gustavo A. Correa Reina UNCPBA 2008 SQL Procedural Posibilita el uso de código procedural conjuntamente con sentencias SQL que son almacenadas

Más detalles

Sintaxis: CURSOR nombre_cursor[(param1 [IN] tipo1,... )] IS consulta ;

Sintaxis: CURSOR nombre_cursor[(param1 [IN] tipo1,... )] IS consulta ; 7. CONCEPTOS AVANZADOS DE CURSORES EXPLICITOS En este capítulo veremos algunas cosas bastante útiles respecto a los cursores explícitos, como pueden ser los cursores con parámetros (que nos permitirán

Más detalles

LAS SUBCONSULTAS SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

LAS SUBCONSULTAS SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE LAS SUBCONSULTAS SQL SERVER 2005 Manual de Referencia para usuarios Salomón Ccance CCANCE WEBSITE LAS SUBCONSULTAS Una subconsulta es una consulta que aparece dentro de otra consulta o subconsultas, en

Más detalles

Modulo 1 El lenguaje Java

Modulo 1 El lenguaje Java Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto

Más detalles

T12 Vistas y tablas temporales

T12 Vistas y tablas temporales 1 de 9 17/05/2013 14:01 Lecciones SQL > T12 Vistas y tablas temporales En esta sesión vamos a mostrar dos tipos de objetos de uso habitual en cualquier SGBD: las vistas y las tablas temporales. Mientras

Más detalles

Oracle básico (IV): Programación en PL/SQL

Oracle básico (IV): Programación en PL/SQL Oracle básico (IV): Programación en PL/SQL El lenguaje de programación de Oracle, llamado PL/SQL, es un lenguaje portable, procedural y de transacción muy potente y de fácil manejo, con las siguientes

Más detalles

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD Manual de usuario 1 - ÍNDICE 1 - ÍNDICE... 2 2 - INTRODUCCIÓN... 3 3 - SELECCIÓN CARPETA TRABAJO... 4 3.1 CÓMO CAMBIAR DE EMPRESA O DE CARPETA DE TRABAJO?...

Más detalles

Enlaces relacionados: http://otn.oracle.com/tech/pl_sql/index.html

Enlaces relacionados: http://otn.oracle.com/tech/pl_sql/index.html 1.INTRODUCCION PL/SQL (Procedural Language ó Programming Language, según distintas fuentes, aunque la oficial es la primera) es el lenguaje utilizado por Oracle como extensión al SQL, y que nos va a permitir

Más detalles

Restricciones (constraints) FOREIGN KEY

Restricciones (constraints) FOREIGN KEY INSTITUTO DE EDUCACION TECNICA PROFESIONAL INTEP 1 Restricciones (constraints) FOREIGN KEY InnoDB también soporta restricciones de claves foráneas. La sintaxis para definir una restricción de clave foránea

Más detalles

Capítulo 9. Archivos de sintaxis

Capítulo 9. Archivos de sintaxis Capítulo 9 Archivos de sintaxis El SPSS permite generar y editar archivos de texto con sintaxis SPSS, es decir, archivos de texto con instrucciones de programación en un lenguaje propio del SPSS. Esta

Más detalles

El lenguaje de manipulación de datos (DML) es una parte fundamental de SQL.

El lenguaje de manipulación de datos (DML) es una parte fundamental de SQL. GUIA DE LABORATORIO # 5 Nombre de la Practica: Manipulación de datos Lugar de ejecución: Centro de Computo MATERIA: Base de Datos II CICLO: 02-2012 I. OBJETIVOS ESPECIFICOS Qué el estudiante: Manipule

Más detalles

Hacer clic sobre la figura, para extraer todos los registros o presionar la tecla F2.

Hacer clic sobre la figura, para extraer todos los registros o presionar la tecla F2. b) Adicionar grados Para llevar a cabo esta operación el usuario deberá realizar los siguientes pasos: Recuperar la información, para realizar esta operación el usuario puede hacerla de las siguientes

Más detalles

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: 93.410.92.92 Fax.: 93.419.86.49 e-mail:atcliente@websie.

Adaptación al NPGC. Introducción. NPGC.doc. Qué cambios hay en el NPGC? Telf.: 93.410.92.92 Fax.: 93.419.86.49 e-mail:atcliente@websie. Adaptación al NPGC Introducción Nexus 620, ya recoge el Nuevo Plan General Contable, que entrará en vigor el 1 de Enero de 2008. Este documento mostrará que debemos hacer a partir de esa fecha, según nuestra

Más detalles

Bases de datos relacionales y el modelo entidad-relación

Bases de datos relacionales y el modelo entidad-relación Bases de datos relacionales y el modelo entidad-relación Qué es una base de datos relacional? El sistema gestor de bases de datos El modelo entidad-relación entidad, atributos y elementos (tablas, columnas

Más detalles

Ejercicios - Persistencia en Android: ficheros y SQLite

Ejercicios - Persistencia en Android: ficheros y SQLite Ejercicios - Persistencia en Android: ficheros y SQLite Índice 1 Uso de ficheros (0.5 puntos)...2 2 Persistencia con ficheros (0.5 puntos)...3 3 Base de datos: SQLiteOpenHelper (0.5 puntos)... 3 4 Base

Más detalles

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin.

PHPMYADMIN Y MYSQL. Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin. PHPMYADMIN Y MYSQL Para gestionar la base de datos MySQL, lo haremos desde la aplicación PhpMyAdmin. PhpMyAdmin es una herramienta para la administración del servidor de base de datos MySQL que dispone

Más detalles

6 - Recuperar algunos registros (where)

6 - Recuperar algunos registros (where) 6 - Recuperar algunos registros (where) Hemos aprendido a seleccionar algunos campos de una tabla. También es posible recuperar algunos registros. Existe una cláusula, "where" con la cual podemos especificar

Más detalles

2.6.2.- Aplicaciones de las vistas. 2.6.1.- Concepto de vista. 2.6.3.- Vistas en SQL. 2.6.3.- Vistas en SQL.

2.6.2.- Aplicaciones de las vistas. 2.6.1.- Concepto de vista. 2.6.3.- Vistas en SQL. 2.6.3.- Vistas en SQL. 2.6.1.- Concepto de vista. Una vista es una tabla derivada de otras tablas (básicas o virtuales). Una vista se caracteriza porque: Se considera que forma parte del esquema externo. Una vista es una tabla

Más detalles

Centro de Capacitación en Informática

Centro de Capacitación en Informática Fórmulas y Funciones Las fórmulas constituyen el núcleo de cualquier hoja de cálculo, y por tanto de Excel. Mediante fórmulas, se llevan a cabo todos los cálculos que se necesitan en una hoja de cálculo.

Más detalles

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo.

CONSULTAS CON SQL. 3. Hacer clic sobre el botón Nuevo de la ventana de la base de datos. Aparecerá el siguiente cuadro de diálogo. CONSULTAS CON SQL 1. Qué es SQL? Debido a la diversidad de lenguajes y de bases de datos existentes, la manera de comunicar entre unos y otras sería realmente complicada a gestionar de no ser por la existencia

Más detalles

GUIA DE LABORATORIO N 9 B. (000Webhost Php- Para desarrollar en casa)

GUIA DE LABORATORIO N 9 B. (000Webhost Php- Para desarrollar en casa) GUIA DE LABORATORIO N 9 B (000Webhost Php- Para desarrollar en casa) Objetivo: Crear servicios web utilizando la arquitectura REST, para obtener información desde un servidor web gratuito que se conecta

Más detalles

CURSORES EN SQL SERVER

CURSORES EN SQL SERVER Año del Centenario de Machu Picchu para el mundo CURSORES EN SQL SERVER Curso: IMPLEMENTACION DE BASE DE DATOS VII Ciclo Integrantes: Vásquez Paredes, Pablo Bustamante Auccasi, Janett Córdova Farfán, Carlos

Más detalles

TEMA 6: MODIFICACIÓN DE LA BASE DE DATOS EN SQL

TEMA 6: MODIFICACIÓN DE LA BASE DE DATOS EN SQL TEMA 6: MODIFICACIÓN DE LA BASE DE DATOS EN SQL 5.6 MODIFICACIÓN DE LA BASE DE DATOS SQL posee comandos destinados también para modificar la base de datos, entre estos se tienen operaciones de borrado,

Más detalles

BASE DE DATOS QUÉ ES UNA BASE DE DATOS?

BASE DE DATOS QUÉ ES UNA BASE DE DATOS? BASE DE DATOS BASE DE DATOS QUÉ ES UNA BASE DE DATOS? Una base de datos se puede definir como un conjunto de información relacionada que se encuentra agrupada ó estructurada. Actualmente la mayoría de

Más detalles

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA

RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí

Más detalles

Restricciones de Integridad

Restricciones de Integridad Restricciones de Integridad Amparo López Gaona México, D.F. Semestre 2000-I Restricciones de Integridad Las principales restricciones de integridad que pueden indicarse son: La clave primaria. Claves candidatas.

Más detalles

APUNTES: APLICACIONES WEB BASADAS EN PHP Y MYSQL Página 1 de 5

APUNTES: APLICACIONES WEB BASADAS EN PHP Y MYSQL Página 1 de 5 APUNTES: APLICACIONES WEB BASADAS EN PHP Y MYSQL Página 1 de 5 APLICACIONES WEB BASADAS EN PHP Y MYSQL Una aplicación web es básicamente un programa escrito sobre una página web, generalmente en lenguaje

Más detalles

Administradores de Bases de Datos Studio.NET 2005 Y SQL Server 2005. Barrios

Administradores de Bases de Datos Studio.NET 2005 Y SQL Server 2005. Barrios Curso de SQL Server 2005 Developer e Introducción a VB.net Práctica No.1. Escribiendo y ejecutando código transact sql desde el Query Analyzer EELLAA BBO RRAADDO PPO RR: FFEECCHHAA DDEE EELLAABB OO RR

Más detalles

Introducción a la programación orientada a objetos

Introducción a la programación orientada a objetos Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases 3. El tipo Struct 4. Diferencias entre Class y Struct 5. Pilares de la Programación

Más detalles

PRÁCTICA III. DISPARADORES EN SQL (II)

PRÁCTICA III. DISPARADORES EN SQL (II) PRÁCTICA III. DISPARADORES EN SQL (II) MODELOS AVANZADOS DE BASES DE DATOS CURSO 2000/2001 Objetivo Conocer mejor los disparadores en SQL. Se verá uno de los principales inconvenientes que se presentan

Más detalles

5.8. REGISTRO DE FACTURAS.

5.8. REGISTRO DE FACTURAS. 5.8. REGISTRO DE FACTURAS. Una factura es un documento probatorio de la realización de una operación económica que especifica cantidades, concepto, precio y demás condiciones de la operación. Este módulo

Más detalles

Backup & Recovery Oracle 9i. Las copias físicas offline, conocidas como Backups en frío, se realizan cuando la Base de Datos está parada.

Backup & Recovery Oracle 9i. Las copias físicas offline, conocidas como Backups en frío, se realizan cuando la Base de Datos está parada. Copias de Seguridad Físicas OFFLINE Las copias físicas offline, conocidas como Backups en frío, se realizan cuando la Base de Datos está parada. Como ya se ha comentado anteriormente, una copia en frío

Más detalles

GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS

GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS GESTINLIB GESTIÓN PARA LIBRERÍAS, PAPELERÍAS Y KIOSCOS DESCRIPCIÓN DEL MÓDULO DE KIOSCOS 1.- PLANTILLA DE PUBLICACIONES En este maestro crearemos la publicación base sobre la cual el programa generará

Más detalles

Introducción a la Programación en MATLAB

Introducción a la Programación en MATLAB Introducción a la Programación en MATLAB La programación en MATLAB se realiza básicamente sobre archivos M, o M-Files. Se los denomina de esta forma debido a su extensión.m. Estos archivos son simple archivos

Más detalles

CONSULTAS BASICAS EN SQL SERVER

CONSULTAS BASICAS EN SQL SERVER CONSULTAS BASICAS EN SQL SERVER CONSULTAS DE SELECCION Las consultas de selección se utilizan para indicar al motor de datos que devuelva información de las bases de datos, esta información es devuelta

Más detalles

Oracle 12c DISEÑO Y PROGRAMACIÓN

Oracle 12c DISEÑO Y PROGRAMACIÓN Oracle 12c Se estudia el servidor de bases de datos empresarial Oracle 12c, centrándose especialmente en el punto de vista de un diseñador o programador de bases de datos, pero explicando también cómo

Más detalles

Bases de Datos / Elementos de Bases de Datos 2011. Que es un Stored Procedure? Stored Procedures: Ventajas

Bases de Datos / Elementos de Bases de Datos 2011. Que es un Stored Procedure? Stored Procedures: Ventajas Bases de Datos / Elementos de Bases de Datos 2011 Stored Procedures, Triggers y Transacciones en MySQL Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur 1 Que es un Stored

Más detalles

En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.

En cualquier caso, tampoco es demasiado importante el significado de la B, si es que lo tiene, lo interesante realmente es el algoritmo. Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa

Más detalles

En términos generales, un foro es un espacio de debate donde pueden expresarse ideas o comentarios sobre uno o varios temas.

En términos generales, un foro es un espacio de debate donde pueden expresarse ideas o comentarios sobre uno o varios temas. 1 de 18 Inicio Qué es un foro En términos generales, un foro es un espacio de debate donde pueden expresarse ideas o comentarios sobre uno o varios temas. En el campus virtual, el foro es una herramienta

Más detalles

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.

Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero. Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero. Uso de Ficheros Todas las estructuras de datos vistas hasta ahora utilizan la

Más detalles

Estimado usuario. Tabla de Contenidos

Estimado usuario. Tabla de Contenidos Estimado usuario. El motivo del presente correo electrónico es mantenerle informado de las mejoras y cambios realizados en el software Orathor (Athor/Olimpo) en su versión 5.7.041 la cual ha sido recientemente

Más detalles

Consultas con combinaciones

Consultas con combinaciones UNIDAD 1.- PARTE 2 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES Xochitl Clemente Parra Armando Méndez Morales Consultas con combinaciones Usando combinaciones (joins), se pueden

Más detalles

Tutorial Básico de vbscript

Tutorial Básico de vbscript Tutorial Básico de vbscript Bueno, primero aclarar que este tutorial, pretende explicar de manera básica las distintas instrucciones aplicadas en visual basic script (vbs de aquí en más), para que así

Más detalles

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA Perfil Entidad Proveedora El objetivo del módulo de Gestión de Solicitudes vía Internet es facilitar el trabajo

Más detalles

PHP Perfect SQL v1.0 (SQL perfectas en PHP)

PHP Perfect SQL v1.0 (SQL perfectas en PHP) PHP Perfect SQL v1.0 (SQL perfectas en PHP) Muchas veces cuando programamos para web es muy fácil cometer errores en la construcción sintáctica de consultas SQL, por ejemplo cuando tenemos que realizar

Más detalles

Operación de Microsoft Word

Operación de Microsoft Word Generalidades y conceptos Combinar correspondencia Word, a través de la herramienta combinar correspondencia, permite combinar un documento el que puede ser una carta con el texto que se pretende hacer

Más detalles

Trey-SAT Pag. 1. Manual de usuario

Trey-SAT Pag. 1. Manual de usuario Trey-SAT Pag. 1 Manual de usuario Trey-SAT Pag. 2 Modulo SAT : Servicio de asistencia técnica TREY-SAT es un potente módulo para el servicio de asistencia técnica, completamente integrado a la Gestión

Más detalles

Curso de PHP con MySQL Gratis

Curso de PHP con MySQL Gratis Curso de PHP con MySQL Gratis Introducción Este mini curso o mini tutorial de PHP le ayudará a realizar cualquier sistema para que pueda insertar uno o varios registros a una base de datos con MySQL, este

Más detalles

1.- INTRODUCCIÓN 2.- PARÁMETROS

1.- INTRODUCCIÓN 2.- PARÁMETROS 1.- INTRODUCCIÓN Hemos diseñado una aplicación que facilite el envío a las entidades bancarias de las de cobro por domiciliación. La entrada de esta aplicación pueden ser, tanto ficheros cuyos formatos

Más detalles

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor.

Objetivo: Introducción conceptual y aplicación básica de los lenguajes del lado del servidor. Sesión 03: Lenguajes web del servidor Competencias a Conseguir: - Conocer el entorno de trabajo a nivel de servidores web. - Instalación del localhost (Servidor Local). - Repaso general de PHP y ejercicios

Más detalles

Kaldeera Advanced Forms 2009 Guía del usuario

Kaldeera Advanced Forms 2009 Guía del usuario Kaldeera Advanced Forms 2009 Guía del usuario Indice Usando Kaldeera Advanced Forms 2009... 3 Accediendo a la página de configuración... 3 Activando o desactivando la funcionalidad de Kaldeera Advanced

Más detalles

Manual CMS Mobincube

Manual CMS Mobincube Manual CMS Mobincube CMS Mobincube Qué es? El CMS (Sistema de Gestión de Contenidos) es un completo website que permite la creación y actualización de contenido remoto. De esta forma, una vez creada una

Más detalles

5.4. Manual de usuario

5.4. Manual de usuario 5.4. Manual de usuario En esta sección se procederá a explicar cada una de las posibles acciones que puede realizar un usuario, de forma que pueda utilizar todas las funcionalidades del simulador, sin

Más detalles

Manual de rol gestor de GAV para moodle 2.5

Manual de rol gestor de GAV para moodle 2.5 Manual de rol gestor de GAV para moodle 2.5 Consultas LDAP-GAUR... 2 Buscar en LDAP datos de un usuario... 2 Docentes... 3 Buscar en GAUR datos de un docente... 3 Buscar en GAUR la docencia de un docente

Más detalles

CONSULTAS DE RESUMEN SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

CONSULTAS DE RESUMEN SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE CONSULTAS DE RESUMEN SQL SERVER 2005 Manual de Referencia para usuarios Salomón Ccance CCANCE WEBSITE CONSULTAS DE RESUMEN Una de las funcionalidades de la sentencia SELECT es el permitir obtener resúmenes

Más detalles

Programa diseñado y creado por 2014 - Art-Tronic Promotora Audiovisual, S.L.

Programa diseñado y creado por 2014 - Art-Tronic Promotora Audiovisual, S.L. Manual de Usuario Programa diseñado y creado por Contenido 1. Acceso al programa... 3 2. Opciones del programa... 3 3. Inicio... 4 4. Empresa... 4 4.2. Impuestos... 5 4.3. Series de facturación... 5 4.4.

Más detalles

MySQL y Sesiones en PHP. Área de Ingeniería Telemática

MySQL y Sesiones en PHP. Área de Ingeniería Telemática MySQL y Sesiones en PHP Contenido Repaso de SQL PHP y MySQL MySQL en PHP 2 Numéricos Standard: Repaso SQL: tipo de datos INTEGER o INT, SMALLINT, DECIMAL o DEC, NUMERIC FLOAT, REAL, DOUBLE PRECISION BIT

Más detalles

Base de datos Procedimientos Almacenados y Funciones

Base de datos Procedimientos Almacenados y Funciones Base de datos Procedimientos Almacenados y Eduardo Saavedra A. Universidad Nacional Andrés Bello 4 de noviembre de 2008 Contenidos Ventajas 1 Ventajas 2 3 4 5 Conceptos Ejemplo 6 Procedimiento Almacenado

Más detalles

Ejemplos de conversión de reales a enteros

Ejemplos de conversión de reales a enteros Ejemplos de conversión de reales a enteros Con el siguiente programa se pueden apreciar las diferencias entre las cuatro funciones para convertir de reales a enteros: program convertir_real_a_entero print

Más detalles

GENERACIÓN DE TRANSFERENCIAS

GENERACIÓN DE TRANSFERENCIAS GENERACIÓN DE TRANSFERENCIAS 1 INFORMACIÓN BÁSICA La aplicación de generación de ficheros de transferencias permite generar fácilmente órdenes para que la Caja efectúe transferencias, creando una base

Más detalles

A.1. Definiciones de datos en SQL

A.1. Definiciones de datos en SQL A.1. Definiciones de datos en SQL Las Sentencias del lenguaje de definición de datos (DDL) que posee SQL operan en base a tablas. Las Principales sentencias DDL son las siguientes: CREATE TABLE DROP TABLE

Más detalles

Introducción a PHP. * No es necesario declarar previamente las variables.

Introducción a PHP. * No es necesario declarar previamente las variables. Introducción a PHP La programación de sitios web cada día está más orientada al desarrollo de páginas dinámicas y aplicaciones, o sea sitios donde el usuario pueda interactuar con la web. Dentro de los

Más detalles

GENERACIÓN DE CÓDIGO

GENERACIÓN DE CÓDIGO GENERACIÓN DE CÓDIGO INTRODUCCION La generación de código es la fase más compleja de un compilador, puesto que no sólo depende de las características del lenguaje fuente sino también de contar con información

Más detalles

Optimizar base de datos WordPress

Optimizar base de datos WordPress Optimizar base de datos WordPress Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 www.hostalia.com WordPress se ha convertido en uno de los CMS más utilizados en todo el mundo. Su robustez,

Más detalles

SINAUTO. (Captura Requirimientos) GRUPO 03

SINAUTO. (Captura Requirimientos) GRUPO 03 SINAUTO (Captura Requirimientos) GRUPO 03 Iker Jauregi ikerjauregivicente@hotmail.com Iñigo Arregui bateman2012@gmail.com Javier Arce arcjav@hotmail.com Jorge García. jgfand@gmail.com Patxi Campos.patxi948@wanadoo.es

Más detalles

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD Fecha última revisión: Diciembre 2010 Tareas Programadas TAREAS PROGRAMADAS... 3 LAS TAREAS PROGRAMADAS EN GOTELGEST.NET... 4 A) DAR DE ALTA UN USUARIO...

Más detalles

Tema: PROCEDIMIENTOS ALMACENADOS.

Tema: PROCEDIMIENTOS ALMACENADOS. Base de datos I. Guía 9 1 Facultad: Ingeniería Escuela: Computación Asignatura: Base de datos I Tema: PROCEDIMIENTOS ALMACENADOS. Objetivo Específico Conocer la sintaxis de un procedimiento almacenado

Más detalles

Creación de Funciones de Conducción

Creación de Funciones de Conducción Creación de Funciones de Conducción Requerimientos Para el desarrollo de esta actividad se requiere que: Contemos con un robot BoeBot armado con placa Arduino. Repetición En estos momentos habremos notado

Más detalles

Aviso Legal El presente libro electrónico se distribuye bajo Attribution-NonCommercial- NoDerivs 3.0 Unported

Aviso Legal El presente libro electrónico se distribuye bajo Attribution-NonCommercial- NoDerivs 3.0 Unported PROGRAMACIÓN ORIENTADA A OBJETOS APLICADA A BASES DE DATOS Por LAURA NOUSSAN LETTRY BrowserSQL MySQL Workbench en Linux (Abril 2015, Mendoza) Aviso Legal El presente libro electrónico se distribuye bajo

Más detalles

Tablas y Campos Nuevos

Tablas y Campos Nuevos Tablas y Campos Nuevos Maxicomercio tiene la capacidad para poder agregar tablas y campos nuevos para darle nueva funcionalidad al sistema, los cambios que realice a la estructura de la base de datos podrán

Más detalles

Ejercicios - Persistencia en Android: proveedores de contenidos y SharedPreferences

Ejercicios - Persistencia en Android: proveedores de contenidos y SharedPreferences Ejercicios - Persistencia en Android: proveedores de contenidos y SharedPreferences Índice 1 Compartir datos entre actividades con Shared Preferences (0.75 puntos)... 2 2 Actividad de preferencias (0.75

Más detalles

Sistemas de Datos Curso: Ernesto Chinkes. Subconsultas Stored Procedures - Triggers

Sistemas de Datos Curso: Ernesto Chinkes. Subconsultas Stored Procedures - Triggers Subconsultas Stored Procedures - Triggers Subconsultas Concepto Ubicación En el SELECT En el FROM En el WHERE Operadores IN ANY-ALL EXISTS Concepto Son sentencias SELECT que aparecen dentro de otra consulta

Más detalles

La ventana de Microsoft Excel

La ventana de Microsoft Excel Actividad N 1 Conceptos básicos de Planilla de Cálculo La ventana del Microsoft Excel y sus partes. Movimiento del cursor. Tipos de datos. Metodología de trabajo con planillas. La ventana de Microsoft

Más detalles

Comisión Nacional de Bancos y Seguros

Comisión Nacional de Bancos y Seguros Comisión Nacional de Bancos y Seguros Manual de Usuario Capturador de Pólizas División de Servicios a Instituciones Financieras Mayo de 2011 2 Contenido 1. Presentación... 3 1.1 Objetivo... 3 2. Descarga

Más detalles

BANCO DE PREGUNTAS PARA EVALUACIÓN DE CONOCIMIENTOS DEL CONCURSO DE MÉRITOS Y OPOSICIÓN EXPERTO EN DESARROLLO DE SISTEMAS 1

BANCO DE PREGUNTAS PARA EVALUACIÓN DE CONOCIMIENTOS DEL CONCURSO DE MÉRITOS Y OPOSICIÓN EXPERTO EN DESARROLLO DE SISTEMAS 1 BANCO DE PREGUNTAS PARA EVALUACIÓN DE CONOCIMIENTOS DEL CONCURSO DE MÉRITOS Y OPOSICIÓN EXPERTO EN DESARROLLO DE SISTEMAS 1 1. Cuáles de los siguientes enunciados son declaraciones válidas? 2. Cuál de

Más detalles

Base de Datos Práctica 1.

Base de Datos Práctica 1. Base de Datos Práctica 1. Objetivo: Introducción al Mysql, aprender a identificar los errores más comunes en la creación de las bases de datos para su solución, conocer los diferentes tipos de datos y

Más detalles

Tutorial: Primeros Pasos con Subversion

Tutorial: Primeros Pasos con Subversion Tutorial: Primeros Pasos con Subversion Introducción Subversion es un sistema de control de versiones open source. Corre en distintos sistemas operativos y su principal interfaz con el usuario es a través

Más detalles

Oficina Online. Manual del administrador

Oficina Online. Manual del administrador Oficina Online Manual del administrador 2/31 ÍNDICE El administrador 3 Consola de Administración 3 Administración 6 Usuarios 6 Ordenar listado de usuarios 6 Cambio de clave del Administrador Principal

Más detalles

Tutorial Oracle SQL Developer 1.2.1

Tutorial Oracle SQL Developer 1.2.1 Tutorial Oracle SQL Developer 1.2.1 Departamento de Informática Índice Í0. Introducción...3 1. Conexión y desconexión de la base de datos...3 2. Ejecución de sentencias SQL...4 3. Creación de tablas...6

Más detalles

WINDOWS 2008 7: COPIAS DE SEGURIDAD

WINDOWS 2008 7: COPIAS DE SEGURIDAD 1.- INTRODUCCION: WINDOWS 2008 7: COPIAS DE SEGURIDAD Las copias de seguridad son un elemento fundamental para que el trabajo que realizamos se pueda proteger de aquellos problemas o desastres que pueden

Más detalles