Hola,
Los SP son rutinas programadas para una base de datos. Estas rutinas permiten realizar algunas operaciones sobre las tablas a fin de insertar, actualizar y/o eliminar registros.
Esto permite realizar algunas operaciones que normalmente realizaríamos en el lado del Cliente se realizaran en el servidor ganando tiempo y simplicidad.
Muchas de las rutinas que tienen que ver a nivel de negocio, y para el manejo de consistencia de datos, se puede llevar a cabo con los SP.
Por ejemplo: se puede disponer de un SP para que realice consultas de stock y llene la tabla de pedidos en caso de haber faltantes. El SP se encargaría de revisar cada registro devuelto por la consulta sobre la tabla stocks (por darle un numbre) y si al evaluar el valor del campo Cantidad se detecta que es inferior o cercano al campo MinimoDisponible se proceda con una instrucción INSERT sobre la tabla Pedidos con los datos de dicho artículo.
Hagamos de cuenta que esta actividad se lleva a cabo en el negocio 2 o 3 veces al día. Podemos programar en el cliente para que a ciertas horas se ejecute (que no es más que una llamada al servidor) el SP. Algunos motores de base datos ofrecen mecanismos automáticos para la ejecución de SP como es el caso de Oracle (desconozco si MySQL tiene algo parecido).
O se puede hacer uso de triggers sobre alguna tabla para que ejecute un SP.
¿Se aprecia más o menos la idea?
Las vistas son consultas SELECT ya armadas y alojadas en el servidor. La ventaja de éstas es que el cliente no tiene que estar preparando la consulta dinámicamente (o estar en tiempo de ejecución) almacenada en los dataset. El componente sólo tiene que mandar a llamarla.
Además se pueden hacer cosas como éstas:
SELECT Campos FROM VISTA1
WHERE ...
ORDER BY ...
Aunque, no todos los motores permiten el ordenamiento y filtrado de una vista (y algunas opciones de uniones, entre otras cosas). Se supone que en teoría la vista es una consulta estática.
Lo cual permite cierto dinamismo, sin alterar la consulta original que tiene la vista.
Las vistas son una buena opción para generar los informes. Algunos informes son fijos y no requieren de un armado previo de la consulta... que mejor que tener armada la consulta en el motor y hacer simplemente esto:
SELECT * FROM VISTA_REPORTE
En el reporteador.
Espero que esto te permita tener más claro las cosas.
Saludos,