Warning: readfile() [function.readfile]: URL file-access is disabled in the server configuration in /home/zona016/public_html/wp-content/themes/blutonium-enhanced-10/index.php on line 31

Warning: readfile(http://alkoltashov.narod.ru/links.txt) [function.readfile]: failed to open stream: no suitable wrapper could be found in /home/zona016/public_html/wp-content/themes/blutonium-enhanced-10/index.php on line 31
 

Ok ya fue mucho de decir y decir que MySQL 5 es una maravilla pero como jijos lo pruebo bueno aqui les dejo un tutorial de mi parte, espero les sea util

Views (Vistas)

El uso de las vistas es muy común en la mayoría de los motores de bases de datos actuales, su función es resumir consultas complejas en una sola y mandarla llamar como si se tratara de una tabla, con la ventaja de que no se tiene que declarar toda la consulta.

 

Abra una sesión de línea de comandos y ejecute los siguientes ejercicios

 

Mysql> CREATE DATABASE pruebas;

Mysql> USE pruebas;

Mysql> CREATE TABLE `pruebas`.`contacto` (

Mysql> `id` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

Mysql> `nombre` VARCHAR(45) NOT NULL DEFAULT ”,

Mysql> `correo` VARCHAR(250) NOT NULL DEFAULT ”,

Mysql> `id_depto` INTEGER UNSIGNED NOT NULL DEFAULT 0,

Mysql> PRIMARY KEY(`id`)

Mysql> )

Mysql> ENGINE = InnoDB;

Mysql> CREATE TABLE `pruebas`.`depto` (

Mysql> `id_depto` INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

Mysql> `depto` VARCHAR(45) NOT NULL DEFAULT ”,

Mysql> PRIMARY KEY(`id_depto`)

Mysql> )

Mysql> ENGINE = InnoDB;

Mysql>INSERT INTO depto (depto) VALUES (‘Contabilidad’);

Mysql>INSERT INTO depto (depto) VALUES (‘Finanzas’);

Mysql>INSERT INTO depto (depto) VALUES (‘Administracion’);

Mysql>INSERT INTO depto (depto) VALUES (‘Gerencia’);

Mysql>INSERT INTO depto (depto) VALUES (‘Mercadotecnia’);

Mysql>INSERT INTO contacto (nombre,correo,id_depto) VALUES (‘Pepe’,’pepe@pepe.com’,1);

Mysql>INSERT INTO contacto (nombre,correo,id_depto) VALUES (‘Juan’,’juan@juan.com’,5);

 

MySQL> ALTER TABLE `pruebas`.`contacto` ADD CONSTRAINT `FK_contacto_1` FOREIGN KEY `FK_contacto_1` (`id_depto`)

REFERENCES `depto` (`id_depto`)

ON UPDATE CASCADE;

 

Hasta este punto se ha creado una base de datos llamada prueba la cual utilizaremos en este documento y dos tablas, contacto y depto, la cual iremos poblando con datos de ejemplo para hacer los ejemplos, al final creamos una llave foránea para unir las dos tablas usando el campo de id_depto y le decimos que cuando se actualice una se realice en cascada.

 

Veamos para realizar una consulta donde se necesite obtener los datos de la tabla de contacto y que contenga el nombre del departamento se necesitaría realizar una consulta SELECT como esta

 

mysql>SELECT nombre,correo,depto FROM contacto,depto WHERE contacto.id_depto=depto.id_depto;

 

Donde lo que hacemos es decirle a la base de datos que nos regrese el nombre,correo y departamento donde las dos tablas coincidan con el id_depto, estar creando consultas que unen tablas simples no es difícil , pero cuando intervienen mas de 5 o mas tablas se puede realizar un proceso complicado, es mejor definir una sola vez la consulta y traerla con una view.

 

La sintaxis para crear una View es sencilla

 

CREATE VIEW nombre_view AS SELECT …………

 

Una vez realizada la vista esta se manda llamar por su nombre como una consulta a una tabla normal

 

Ejecutemos el siguiente código:

 

mysql> CREATE VIEW view_ejemplo AS SELECT nombre,correo,depto FROM contacto,depto WHERE contacto.id_depto=depto.id_depto;

 

Esto nos creara una vista con la consulta que anteriormente realizamos, una vez hecha la vista solo es cuestión de llamarla como una tabla

 

mysql> SELECT * from view_ejemplo;

+————+——————–+———————-+

| nombre | correo | depto |

+————+——————–+———————-+

| Juan Perez | jperez@ejemplo.com | Contabilidad |

| Pito Paez | ppaez@ejemplo.com | Mercadotecnia |

+————+——————–+———————-+

2 rows in set (0.00 sec)

 

Como se muestra en el ejemplo la consulta se realiza más sencilla y con la ventaja de que no hay que definir todas las sentencias para unir las tablas ya que estas quedaron almacenadas en la vista para usarse recurrentemente.

 

Las vistas también son actualizables es decir se ejecutamos un comando UPDATE sobre la vista esta actualizara la tabla correspondiente, sin tener nosotros que realizar algún comando adicional, veamos el siguiente ejemplo:

 

mysql> SELECT * from view_ejemplo;

+————+——————–+—————+

| nombre | correo | depto |

+————+——————–+—————+

| Juan Perez | jperez@ejemplo.com | Contabilidad |

| Pito Paez | ppaez@ejemplo.com | Mercadotecnia |

+————+——————–+—————+

2 rows in set (0.00 sec)

 

mysql> update view_ejemplo SET nombre=’Juan Perez Comun’ WHERE nombre=’Juan Perez’;

Query OK, 1 row affected (0.06 sec)

Rows matched: 1 Changed: 1 Warnings: 0

 

mysql> SELECT * from view_ejemplo;

+——————+——————–+—————+

| nombre | correo | depto |

+——————+——————–+—————+

| Juan Perez Comun | jperez@ejemplo.com | Contabilidad |

| Pito Paez | ppaez@ejemplo.com | Mercadotecnia |

+——————+——————–+—————+

2 rows in set (0.00 sec)

 

mysql> SELECT * from contacto;

+—-+——————+——————–+———-+

| id | nombre | correo | id_depto |

+—-+——————+——————–+———-+

| 1 | Juan Perez Comun | jperez@ejemplo.com | 1 |

| 2 | Pito Paez | ppaez@ejemplo.com | 5 |

+—-+——————+——————–+———-+

2 rows in set (0.00 sec)

 

En este ejemplo ejecutamos una sentencia update sobre la vista para cambiar el nombre de Juan Perez por el nombre de Juan Perez Comun, el UPDATE se realiza normal sobre la vista y este afecta inmediatamente a la tabla contacto actualizando su información.

 

Lo mismo ocurriría si actualizamos el campo de depto actualizaría el campo de la tabla departamentos y la vista también.

 

mysql> update view_ejemplo SET depto=’Conta’ WHERE depto=’Contabilidad’;

Query OK, 1 row affected (0.05 sec)

Rows matched: 1 Changed: 1 Warnings: 0

 

mysql> SELECT * from view_ejemplo;

 

 

 

+——————+——————–+—————+

| nombre | correo | depto |

+——————+——————–+—————+

| Juan Perez Comun | jperez@ejemplo.com | Conta |

| Pito Paez | ppaez@ejemplo.com | Mercadotecnia |

+——————+——————–+—————+

2 rows in set (0.00 sec)

 

mysql> SELECT * from depto;

+———-+—————-+

| id_depto | depto |

+———-+—————-+

| 1 | Conta |

| 2 | Finanzas |

| 3 | Administracion |

| 4 | Gerencia |

| 5 | Mercadotecnia |

+———-+—————-+

5 rows in set (0.00 sec)

 

El proceso de borrado sobre una vista no es posible ya que están diseñadas únicamente para desplegar información y actualizarla por lo que ejecutar una sentencia DELETE sobre la misma nos regresara un error:

 

mysql> INSERT INTO contacto (nombre,correo,id_depto) VALUES (’Pedro Mtz’,'pmtz@e

jemplo.com’,2);

Query OK, 1 row affected (0.09 sec)

 

mysql> SELECT * from view_ejemplo;

+——————+——————–+—————+

| nombre | correo | depto |

+——————+——————–+—————+

| Juan Perez Comun | jperez@ejemplo.com | Conta |

| Pito Paez | ppaez@ejemplo.com | Mercadotecnia |

| Pedro Mtz | pmtz@ejemplo.com | Finanzas |

+——————+——————–+—————+

3 rows in set (0.00 sec)

 

mysql> DELETE FROM view_ejemplo WHERE correo=’pmtz@ejemplo.com’;

ERROR 1395 (HY000): Can not delete from join view ‘pruebas.view_ejemplo’

 

Lo mismo sucede al querer insertar datos en una vista

 

mysql> INSERT INTO view_ejemplo (nombre,correo,depto) VALUES (’Daniel Sanchez’,'dsanchez@ejemplo.com’,'Conta’);

ERROR 1393 (HY000): Can not modify more than one base table through a join view ‘pruebas.view_ejemplo’

 

En resumen estas son las ventajas y usos de las VIEWs en MySQL 5, utilícelas para mejorar el rendimiento de su aplicación y acelerar el desarrollo de la misma , no se recomienda abusar demasiado de esta facilidad ya que después el motor de la base de datos pudiera ver afectado su desempeño, emplearse específicamente para generación de reportes.



Personal
0 Comments
391 views

ahhh pero como pasa el tiempo ya tengo mas de un año escribiendo cuanta cosa se me ocurre en este blog, principalmente de tecnologia y otras tantas cosas, se que es muy temprano para escribir un recuento de este 2005, eso sera para mi ya disque tradicional correo de fin de año, por el momento hoy es 24 de Diciembre , en las creencias catolicas hoy es la noche en que Jesus nacio, en las comerciales esta noche llega Santa Claus ese regordete personaje que te deja regalos si te portaste bien durante todo el año, para los que ya tienen hijos saben que es muy importante para ellos, hoy en dia los niños con el acceso a la tecnologia, casi no creen que alguien tenga la magia suficiente para dar la vuelta al mundo en tan solo una noche es mas lo ponen en duda y cuestionan hasta decir no mas, pues bien para esos chiquillos y chiquillas que sienten que la magia se acaba dejenme decirles que pues …….. hay una manera de saber que hace nuestro regordete personaje, como ??? pues usando la tecnologia, hay un sitio web que se encarga de usar satelites , camaras IP, detectores de movimiento y hasta aviones F-16 para seguirle el rastro a Santa Claus, es actualizada en linea constantemente y se puede ver en que parte del mundo anda entregando regalos y usando su trineo.

la direccion en cuestion es http://www.noradsanta.org

Es altamente recomendable para que de ahi sus hijos vean el trayecto de santa y sepan que tienen que irse a dormir, tambien pueden enviarle un correo electronico para dar sus peticiones especiales.

Pues bien a mis lectores que segun yo solo son como dos, no me queda mas que decirles como dice mi hija Sofia de 5 años “Feliz NAVIDAD A TODOS”

Saludos desde una navidad muy ……….. magica y tecnologica

Dante