Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Vues | Quelques Sujets Supplémentaires
Techniques Avancées en SQL
course content

Contenu du cours

Techniques Avancées en SQL

Techniques Avancées en SQL

1. Acid
2. Optimisation des Requêtes.Indexes
3. Quelques Sujets Supplémentaires

book
Vues

Dans le chapitre précédent, nous avons mentionné un objet nommé vue en discutant des privilèges utilisateur. Maintenant, examinons cet objet plus en détail.

Une vue en SQL est une table virtuelle qui est basée sur le jeu de résultats d'une requête SQL. Elle contient des lignes et des colonnes tout comme une table réelle, et les champs d'une vue sont des champs provenant d'une ou plusieurs tables réelles dans la base de données.
Les vues sont utilisées pour plusieurs raisons, notamment pour simplifier les requêtes complexes, améliorer la sécurité en restreignant l'accès à des données spécifiques, et présenter les données dans un format spécifique.

Caractéristiques clés des vues

  • Table virtuelle : Une vue ne stocke pas de données physiquement. Elle tire ses données des tables sur lesquelles elle est basée (appelées tables de base);
  • Simplifier les requêtes complexes : Les vues peuvent simplifier les requêtes SQL complexes en les encapsulant dans une seule vue. Cela facilite le travail avec des jointures et des agrégations complexes;
  • Sécurité : Les vues peuvent restreindre l'accès à des lignes ou colonnes spécifiques de données, améliorant ainsi la sécurité. Les utilisateurs peuvent avoir accès à la vue sans avoir accès aux tables de base sous-jacentes;
  • Cohérence : Les vues peuvent présenter une interface cohérente et inchangée même lorsque le schéma de la base de données sous-jacente change.

Mise en œuvre

Nous allons créer une vue appelée account_activity_view basée sur nos tables BankAccounts et UserLogs qui montre le numéro de compte, le nom du titulaire du compte, le solde et la dernière action effectuée sur le compte.

1234567891011121314151617181920212223242526
-- Create a view that shows account details along with their latest action CREATE OR REPLACE VIEW account_activity_view AS SELECT ba.account_number, -- Select the account number from the bankaccounts table ba.account_holder, -- Select the account holder's name from the bankaccounts table ba.balance, -- Select the balance from the bankaccounts table ul.action AS latest_action, -- Select the latest action from the userlogs table (alias as latest_action) ul.timestamp AS latest_action_time -- Select the timestamp of the latest action (alias as latest_action_time) FROM BankAccounts ba -- Main table: bankaccounts LEFT JOIN ( -- Subquery to get the most recent action for each account SELECT DISTINCT ON (account_number) account_number, -- Select the account number action, -- Select the action timestamp -- Select the timestamp FROM UserLogs ORDER BY account_number, -- Order by account number timestamp DESC -- Order by timestamp in descending order to get the latest action ) ul ON ba.account_number = ul.account_number; -- Join the subquery result with bankaccounts on account number -- Get data from the view SELECT * FROM account_activity_view;
copy

Vous pouvez maintenant utiliser cette vue dans d'autres requêtes sans recréer la requête complexe avec des jointures en utilisant simplement la vue créée comme une table ordinaire.

Remarque

Bien que nous puissions utiliser la vue comme une table régulière, ce n'est pas réellement une table physique ! Les données de la vue ne sont pas stockées sur le disque. Au lieu de cela, chaque fois que nous utilisons la vue, sa requête est exécutée, et les données résultantes sont utilisées dans la requête principale.

Laquelle des affirmations suivantes décrit le mieux l'aspect sécurité des vues ?

Laquelle des affirmations suivantes décrit le mieux l'aspect sécurité des vues ?

Sélectionnez la réponse correcte

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 3. Chapitre 7
We're sorry to hear that something went wrong. What happened?
some-alt