Une vue représente une table virtuelle . Vous pouvez joindre plusieurs tables dans une vue et utiliser la vue pour présenter les données comme si les données provenaient d'une seule table.
Une procédure stockée utilise des paramètres pour exécuter une fonction ... qu'il s'agisse de mettre à jour et d'insérer des données, ou de renvoyer des valeurs uniques ou des ensembles de données.
Création de vues et de procédures stockées - contient des informations de Microsoft sur le moment et les raisons de les utiliser.
Disons que j'ai deux tables:
tbl_user
, Avec des colonnes: user_id
, user_name
,user_pw
tbl_profile
, Avec des colonnes: profile_id
, user_id
,profile_description
Donc, si je me surprends à interroger BEAUCOUP ces tables ... au lieu de faire la jointure dans CHAQUE morceau de SQL, je définirais une vue comme:
CREATE VIEW vw_user_profile
AS
SELECT A.user_id, B.profile_description
FROM tbl_user A LEFT JOIN tbl_profile B ON A.user_id = b.user_id
GO
Ainsi, si je veux interroger profile_description
par user_id
dans le futur, tout ce que j'ai à faire est:
SELECT profile_description FROM vw_user_profile WHERE user_id = @ID
Ce code pourrait être utilisé dans une procédure stockée comme:
CREATE PROCEDURE dbo.getDesc
@ID int
AS
BEGIN
SELECT profile_description FROM vw_user_profile WHERE user_id = @ID
END
GO
Donc, plus tard, je peux appeler:
dbo.getDesc 25
et j'obtiendrai la description de user_id
25, où 25
est votre paramètre.
Il y a évidemment beaucoup plus de détails, ce n'est que l'idée de base.
Beaucoup d'informations disponibles ici
Voici un bon résumé:
Une procédure stockée:
Une vue:
la source
Vous devez d'abord comprendre que les deux sont des choses différentes.
Stored Procedures
sont mieux utilisés pour lesINSERT-UPDATE-DELETE
déclarations. Alors queViews
sont utilisés pour lesSELECT
déclarations. Vous devez utiliser les deux.Dans les vues, vous ne pouvez pas modifier les données.Certaines bases de données Vues actualisables où vous pouvez utiliserINSERT-UPDATE-DELETE
surViews
.la source
Une vue SQL est une table virtuelle basée sur une requête SQL SELECT. Une vue fait référence à une ou plusieurs tables de base de données existantes ou à d'autres vues. Il s'agit de la capture instantanée de la base de données alors qu'une procédure stockée est un groupe d'instructions Transact-SQL compilées dans un seul plan d'exécution.
La vue est une simple présentation des données stockées dans les tables de la base de données, tandis qu'une procédure stockée est un groupe d'instructions qui peuvent être exécutées.
Une vue est plus rapide car elle affiche les données des tables référencées tandis qu'une procédure de stockage exécute des instructions sql.
Consultez cet article: Afficher vs procédures stockées . Exactement ce que vous recherchez
la source
Une vue est un moyen simple d'enregistrer un complexe
SELECT
dans la base de données.Une procédure de stockage est utilisée lorsque le SQL simple ne suffit pas. Les procédures de stockage contiennent des variables, des boucles et des appels à d'autres procédures stockées. C'est un langage de programmation, pas un langage de requête.
Les vues sont statiques. Considérez-les comme de nouvelles tables avec une certaine mise en page et les données qu'elles contiennent sont créées à la volée à l'aide de la requête avec laquelle vous les avez créées. Comme pour toute table SQL, vous pouvez la trier et la filtrer avec
WHERE
,GROUP BY
etORDER BY
.Cela dépend de ce que vous faites.
Le dépend de la base de données. Les vues simples exécutent simplement la requête et filtrent le résultat. Mais les bases de données comme Oracle permettent de créer une vue "matérialisée" qui est essentiellement une table qui est mise à jour automatiquement lorsque les données sous-jacentes de la vue changent.
Une vue matérialisée permet de créer des index sur les colonnes de la vue (notamment sur les colonnes calculées qui n'existent nulle part dans la base de données).
Je ne comprends pas de quoi vous parlez.
la source
En plus des commentaires ci-dessus, je voudrais ajouter quelques points sur les vues.
la source
la source
Mahesh n'a pas tout à fait raison lorsqu'il suggère que vous ne pouvez pas modifier les données d'une vue. Donc avec le point de vue de Patrick
JE PEUX mettre à jour les données ... à titre d'exemple, je peux faire l'un de ces deux ...
ou
Vous ne pouvez pas INSÉRER dans cette vue car tous les champs de toute la table ne sont pas présents et je suppose que PROFILE_ID est la clé primaire et ne peut pas être NULL. Cependant, vous pouvez parfois INSÉRER dans une vue ...
J'ai créé une vue sur une table existante en utilisant ...
PUIS
et
L'INSERT et le DELETE ont tous deux fonctionné dans ce cas
Évidemment, vous ne pouvez pas mettre à jour les champs qui sont agrégés ou calculés, mais toute vue qui n'est qu'une vue simple devrait pouvoir être mise à jour.
Si la vue contient plus d'une table, vous ne pouvez pas insérer ou supprimer, mais si la vue est un sous-ensemble d'une seule table, vous le pouvez généralement.
la source
La principale différence est que lorsque vous interrogez une vue, sa définition est collée dans votre requête. La procédure pourrait également donner des résultats de requête, mais elle est compilée et pour ainsi plus rapidement. Les vues indexées sont une autre option.
la source
@Patrick a raison avec ce qu'il a dit, mais pour répondre à vos autres questions, une vue se créera en mémoire, et selon le type de jointures, de données et s'il y a une agrégation effectuée, cela pourrait être une vue assez gourmande en mémoire.
Les procédures stockées effectuent tout leur traitement soit en utilisant Temp Hash Table, par exemple # tmpTable1, soit en mémoire en utilisant @ tmpTable1. Selon ce que vous voulez lui dire de faire.
Une procédure stockée est comme une fonction, mais est appelée directement par son nom. au lieu de Fonctions qui sont réellement utilisées dans une requête elle-même.
Évidemment, la plupart du temps, les tables de mémoire sont plus rapides, si vous ne récupérez pas beaucoup de données.
la source