Introduccion a las Vistas en SQL y MySQL


Una vista es una especie de tabla virtual en base a una consulta de una o mas tablas existentes, a continuación les explico mejor.

En base de datos SQL tenemos tablas y las tablas tienen campos, podemos tener tablas con por ejemplo 10 o 50 campos, también es posible que dentro de los campos tengamos datos numéricos que tienen operaciones entre si, por ejemplo el valor1, se multiplica con el valor2.

Bueno una vista nos crea una tabla virtual de una consulta larga y esta tabla virtual se comporta de la misma manera que una tabla.

Empezando

Tenemos la base de datos con la siguiente tabla.

[code language=”sql”] create database pruebavistas;
use pruebavistas;

create table tbl1(
id int not null auto_increment primary key,
name varchar(255),
val1 int,
val2 int,
created_at datetime
);

insert into tbl1 (name,val1,val2,created_at) value ("Valor 1",100,200,NOW());
insert into tbl1 (name,val1,val2,created_at) value ("Valor 3",10,30,NOW());
insert into tbl1 (name,val1,val2,created_at) value ("Valor 5",3000,10000,NOW());
insert into tbl1 (name,val1,val2,created_at) value ("Valor 7",9,250,NOW());
insert into tbl1 (name,val1,val2,created_at) value ("Valor 9",2,900,NOW());

[/code]

En esta base de datos tenemos una tabla con 4 campos que usaremos para el ejemplo.

Crear una vista

Podemos crear una vista con cualquier variante de la consulta select de la tabla tbl1, usaremos la siguiente:

[code language=”sql”]

create view vista1 as select * from tbl1 where val1 <1000;

[/code]

Esto creara una tabla virtual llamada “vista1″ con la consulta ” select * from tbl1 where val1<1000″ es decir mostrar los datos de la tabla donde en campo val1 sea menor que 1000.

El nombre “vista1″ es el nombre de la vista, donde se puede usar cualquier nombre valido.

Para ver los resultados de la vista ejecutamos la siguiente consulta:

[code language=”sql”]

select * from vista1;

[/code]

En una vista incluso se pueden usar modificadores como where, limit u order by;

[code language=”sql”]

select * from vista1 where val2 > 200 order by id desc limit 1;

[/code]

Listar Vistas

Las vistas aparecen en la lista de tablas “SHOW TABLES”.

Para listar solo las vistas debemos ejecutar:

[code language=”sql”]

SHOW FULL TABLES WHERE TABLE_TYPE LIKE ‘VIEW’;

[/code]

También es posible usar SHOW FULL TABLES y en la columna “TABLE_TYPE” se muestra es BASE TABLE o VIEW.

Eliminar Vistas

Las vistas no se eliminan de la misma manera que las tablas, para eliminar una vista debemos usar el comando:

[code language=”sql”]

DROP VIEW vista1;

[/code]

Conclusión

También es posible eliminar datos de una vista, datos que se eliminan tambien de la tabla original.

Las vistas son muy útiles para mejorar la optimizacion de una base de datos, mas adelante veremos otros aspectos avanzados de las vistas.

Leave a comment