sábado, 10 de agosto de 2013

Vistas en base de datos...



• 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 virtual (no tiene una correspondencia a 
nivel físico)
– Se puede consultar como cualquier tabla básica.
– Las actualizaciones se transfieren a la/s tabla/s original/es 
(con ciertas limitaciones).


La sintaxis para la creación de vistas en SQL es la siguiente:
CREATE | REPLACE VIEW vista [(comalista_columna)]

AS expresión_tabla [with check option]

En donde:
– CREATE VIEW es la orden que permite la creación de la vista.
– vista es el nombre de la tabla virtual que se va a crear.
– (comalista_columna) son los nombres de los atributos de la tabla y es opcional:
• Si no se especifica, el nombre coincide con el nombre de los atributos 
resultantes en expresión_tabla.
• Es obligatorio si algún atributo de expresión_tabla es el resultado de una 

función de agregación o una operación aritmética.

expresión_tabla es una consulta SQL cuyo resultado será el contenido de la vista.
– WITH CHECK OPTION es opcional y se debe incluir si se desea actualizar la 
vista de una manera íntegra.


  • Para la eliminación de una vista se utiliza la instrucción:


      DROP VIEW
nombredelavista


  • Para la creacion de vistas y modificacion se utiliza:
    CREATE VIEW nombredelavista, ALTER VIEW nombredelavista

  • Para que te muestre la vista se utiliza la instrucción:

    SHOW CREATE VIEW nombredelavista
Para mas información de vistas visita estas ligas....
http://users.dsic.upv.es/~jorallo/docent/BDA/castella/tema2efg_4x1.pdf
http://dev.mysql.com/doc/refman/5.0/es/create-view.html

Enviar un mail desde consola de linux...




  • Instalamos los servicios necesarios para enviar el correo con esta linea de codigo:

sudo apt-get install mailutils ssmtp


  • Entramos a el documento de configuracion  con esta linea:

sudo nano /etc/ssmtp/ssmtp.conf


  • Buscamos en el documento donde diga ROOT, AUTHUSER etc, etc. Cambiamos dicha información por tu correo(AuthUser: tu correo), Tu contrasena (Password: tu contraseña)...

  • Para enviar el correo se utiliza esta linea de código:
echo "El mensaje a enviar" | mail -s "Asunto" correodestinatario@example.com 

Triggers...

Un disparador o trigger es un código procedimental en SQL que automáticamente es invocado por el sistema gestor al presentarse un evento determinado para la manipulacion de datos...

Características:

  • Se invoca antes o después de que un renglón/tupla de datos se ha insertado, actualizado o eliminado
  • Esta asociado a una tabla
  • Cada tabla puede tener uno o mas disparadores
  • Se puede utilizar para actualizar valores de una tabla, insertar registros o llamar a otros procedimientos...
  • Un disparador nunca se llama directamente, el disparador se ejecuta cuando el usuario intenta insertar, eliminar o modificar una fila en una tabla
Los disparadores tienen dos palabras clave, OLD y NEW que se refieren a los valores que tienen las columnas antes  y después de la modificación. Los INSERT permiten NEW, los DELETE sólo OLD y los UPDATE permiten ambas.


Y bueno aquí  miau les dejo unos ejemplos de triggers...
(Debiendo ustedes crear la base de datos con los campos necesarios para que funcione)

  • Descripción del trigger: Al borrar un fabricante de la tabla fabricantes le cambie el id=5 a la tabla articulo si este se ve afectado.
-Sintaxis-
DELIMITER//
CREATE TRIGGER delFabric AFTER DELETE ON fabricante FOR EACH ROW
BEGIN
UPDATE articulo SET fabricante=5;
WHERE fabricante OLD.codigo;
END
//
DELIMITER ;
       
NOTA: el delimiter "//" cambia dependiendo el entorno en donde crees tu base de datos en Query browser se utiliza el "//" y en Workbench se utiliza solo  " | ". Siempre hay que delimitar el trigger porque si no el dbms no sabrá donde termina dicha instrucción




  •    Cuando se agregue un artículo  nuevo si es del fabricante 5  que precio sea 10% mas el nuevo valor     capturado.
-Sintaxis-
DELIMITER //
CREATE TRIGGER insertArt BEFORE INSERT ON articulo FOR EACH ROW
BEGIN
IF(fabricante=5)
THEN SET NEW.precio=NEW.precio*1.10;
END IF ;
END ;
//
DELIMITER ;



  • Trigger que no permite cambiar el precio si es 0 y deja el precio anterior.
-Sintaxis-
DELIMITER |
CREATE TRIGGER precio BEFORE UPDATE ON articulo FOR EACH ROW
BEGIN
IF(NEW.precio=0)
THEN SET NEW.precio=OLD.precio;
ELSE SET NEW.precio=NEW.precio;
END IF ;
END
|
DELIMITER ;


  • Trigger que aumenta el precio de un producto cuando este es modificado y le sube el 10% solo si este es menor a 1000
DELIMITER |
CREATE TRIGGER iva BEFORE UPDATE ON arituculo FOR  EACH ROW
BEGIN
IF(NEW.precio<1000)
THEN SET NEW.precio=NEW.precio*1.10;
ELSE SET NEW.precio=NEW.precio;
END IF ;
END
DELIMITER ;