SlideShare une entreprise Scribd logo
1  sur  39
Affichage
Présentation des vues
Introduction
Lors de l'étude de l'analyse des données, une requête est une technique d'isoler une série de
colonnes et/ou des enregistrements d'une table. Ceci est généralement effectué aux fins de
l'analyse des données. Cela peut se faire également pour créer une nouvelle liste d'éléments pour
toute raison particulière. La plupart du temps, une requête est créée temporairement, tel que lors
de l'analyse de données en utilisant une table, un formulaire ou une page web. Après l'utilisation
d'une telle liste temporaire, elle est alors rejetée.
De nombreuses applications de base de données, notamment Microsoft SQL Server, permettent de
créer une requête et de pouvoir l'enregistrer pour une utilisation ultérieure, ou encore l'utiliser
comme s'il s'agissait de son propre tableau.C'est l'idée derrière une vue.
Définition
Une vue est une liste de colonnes ou une série d'enregistrements extraits d'une ou de plusieurs
tables existantes, ou comme une combinaison d'une ou plusieurs vues et d'une ou de plusieurs
tables. Basé sur ce point, avant de créer une vue, vous devez tout d'abord décider d'où ses colonnes
et enregistrements proviennent. Évidemment le plus simple affichage est celui dont les colonnes et
enregistrements proviennent d'une seule table.
Formation pratique: Présentation des vues
 Démarrez Microsoft SQL Server et connectez-vous au serveur.
Assurez-vous que vous disposez de la base de données RealEstate2 créée dans la leçon
précédente. Si vous ne les avez pas créées, faites-le maintenant.
Principes fondamentaux de la création de vues
Création d'une vue visuellement
Pour créer une vue, vous pouvez utiliser l'Explorateur d'objets, une fenêtre de requête, l'invite de
commande ou Windows PowerShell. Avant de commencer la vue, il vous faudrait spécifier les tables
qui pourraient être impliquées. Pour créer une vue à partir de l'Explorateur d'objets, vous pouvez
étendre la base de données, cliquez avec le bouton droit de la souris sur les vues et cliquez sur
Nouvelle vue... Ceci ouvrirait la boîte de dialogue Add Table :
Les fonctionnalités de base sont exactement les mêmes que nous avons vues dans leçon 13 :
 Pour spécifier la table qui serait utilisée comme source, vous pouvez cliquer dans la zone de
liste de la page de propriétés de Tables
 Si vous utiliserez une autre vue existante, à partir de la page de propriété de vues, vous
pouvez cliquer sur le nom de la vue souhaitée
 Si une fonction serait utilisée pour générer les enregistrements, vous pouvez la rechercher
dans la page de propriétés de fonctions. Après avoir sélectionné l'objet source, vous pouvez
soit double-cliquer dessus ou vous pouvez cliquer dessus une fois et cliquez sur Add. Dans la
leçon précédente, nous avons vu que vous pourriez ajouter plus d'une table existante. De la
même façon, vous pouvez ajouter plus d'une vue ou fonctions
 Après la sélection de (s) la source (s), vous pouvez cliquer sur Fermer dans la boîte de
dialogue Add Table
Après avoir sélectionné les objets, comme nous l'avons vu dans la leçon précédente, ils afficheraient
dans la fenêtre. La barre d'outils du Concepteur de vue pourrait être ajoutée :
Si le concepteur de requêtes n'est pas visible, dans le menu principal, vous pouvez cliquer sur View -
>Toolbars-> Query Designer. Alternativement, vous pouvez cliquer avec le bouton droit sur
n'importe quelle barre d'outils ou le menu principal et cliquez sur Concepteur de requêtes.
La fenêtre dans laquelle vous créez une vue affiche quatre sections. Cela signifie que, outre
les trois sections que nous avons examinées dans la leçon 13, il y a une nouvelle section : le
résultat. Chaque section est représentée dans la barre d'outils du Concepteur de requêtes par un
bouton : le bouton Show Diagram Pane , le bouton Show Criteria Pane , le bouton Show SQL
Pane et le bouton Show Result Pane .
Nous avons déjà passé en revue les trois principales sections (leçon 13). Les résultats de la section
affiche le résultat produit par l'instruction SQL lorsqu'il est exécuté
Si vous ne souhaitez pas qu'une section particulière ou si vous souhaitez masquer certaines
sections, vous pouvez cliquez avec le bouton droit de la souris n'importe où dans le tableau, placez
la souris sur le volet et cliquez sur le nom de la section. Pour masquer une section quelconque, vous
pouvez cliquer avec le bouton droit de la souris n'importe où dans la fenêtre, positionnez la souris
sur Afficher les volets et cliquez sur l'une des sélections :
Lors de l'affichage d'une section, son option de menu est entourée.
 Comme dans la leçon précédente, si vous utilisez plusieurs tables et elles ne sont pas
(encore) liées, vous pouvez faire glisser une colonne d'une table et la déposer sur une autre
table pour créer une jointure entre elles.
 Comme nous l'avons vu dans les leçons précédentes, pour sélectionner une colonne, vous
pouvez cliquer sur la case correspondante dans la liste supérieure. Ce serait l'afficher dans la
première zone vide dans la colonne de la colonne et ajouterait son nom à
l'instruction SELECT. Vous pouvez également cliquer sur une zone vide dans la colonne de la
colonne pour révéler sa zone de liste déroulante, puis cliquez sur la flèche de la zone de liste
déroulante et sélectionnez la colonne souhaitée dans la liste
 Après avoir sélectionné la colonne, sa case pourrait être vérifiée dans la partie supérieure de
la fenêtre, son nom s'affiche dans la colonne de la colonne et elle pourrait être ajoutée à
l'instruction SELECT. Si vous connaissez le nom de la colonne que vous souhaitez ajouter,
vous pouvez le saisir manuellement dans l'instruction SELECT.
La structure d'une vue peut être considérée comme complète lorsque l'instruction SELECT est aussi
complète que possible. À tout moment, pour tester les résultats d'une vue, vous pouvez
l'exécuter.Pour le faire, vous pouvez cliquer sur le bouton Execute SQL . Cela entraînera la
partie inférieure de l'affichage pour afficher les résultats de la requête. Voici un exemple :
Comme je l'ai déjà dit, l'une des raisons pour la création d'une vue est de pouvoir l'ut iliser maintes
et maintes fois. Pour atteindre cet objectif, la vue doit être enregistrée. Comme la plupart des
objets dans SQL Server, une vue doit avoir un nom et il est enregistré dans son propre fichier. Pour
enregistrer une vue à partir de la fenêtre d'affichage, vous pouvez cliquer sur le bouton Enregistrer
de la barre d'outils. Vous pouvez aussi tenter de fermer la fenêtre. Vous serez alors invité à
enregistrer. Lors de l'enregistrement d'une vue, vous devez lui donner un nom qui suit les règles et
les suggestions de SQL.
Formation pratique: Création visuelle d' une vue
1. Dans l'Explorateur d'objets, développez les bases de données et les nœuds de RealEstate2
2. Cliquez avec le bouton droit de la souris sur Views, puis cliquez sur New View
3. Dans la boîte de dialogue Add Table, double-cliquez sur PropertyTypes, Properties et
Conditions
4. Cliquez sur Fermer
5. Dans le tableau PropertyTypes, faites glisser PropertyTypeID et déposez-le sur le champ
PropertyTypeID de la table de propriétés
6. A partir du tableau de Conditions, faites glisser ConditionID et déposez-le sur le champ
ConditionID de la table de propriétés
7. Sur les tables, sélectionnez les champs suivants : PropertyNumber, PropertyType, Condition,
City, ZIPCode, Bedrooms, Bathrooms, FinishedBasement, Stories, YearBuilt et MarketValue
8. Dans la section Critères, cliquez sur PropertyType et appuyez sur la touche Tab 6 fois. Dans
son champ de filtre, tapez Single Family
9. Appuyez sur la touche de tabulation et, dans son Or, tapez Townhouse
Le nom d'une vue
Dans nos leçons, voici les règles que nous utiliserons pour nommer nos vues :
 Un nom commence par une lettre. Exemples : n, act ou Second
 Après la première lettre, le nom aura des combinaisons de caractères de soulignement, de
lettres et de chiffres. Des exemples sont n24, act_52_t
 Un nom n'inclut pas les caractères spéciaux tels que !, @, #, $, %, ^, &, ou *
 Un nom n'aura pas les espaces
 Si le nom est une combinaison de mots, chaque mot commencera par les majuscules.
Exemples : DateHired, RealSport ou DriversLicenseNumber
Après avoir enregistré une vue, elle devient partie intégrante du nœud de Vues de sa base de
données : un nœud serait créé pour elle et son nom s'affiche dans le nœud de vues de sa base de
données.
Formation pratique: Enregistrementd'une vue
1. Pour enregistrer la vue, sur la barre d'outils standard, cliquez sur le bouton Enregistrer
2. Définissez le nom Homes puis cliquez sur le bouton OK.
3. Fermez la fenêtre d'affichage
4. Dans l'Explorateur d'objets, sous RealEstate2, cliquez avec le bouton droit de la souris sur
Views et cliquez sur New View
5. Dans la boîte de dialogue Add Table, double-cliquez sur PropertyTypes, Properties et
Conditions
6. Cliquez sur Fermer
7. Dans le tableau PropertyTypes, faites glisser PropertyTypeID et déposez-le sur le champ
PropertyTypeID de la table Properties
8. A partir du tableau de Conditions, faites glisser ConditionID et déposez-le sur le champ
ConditionID de la table de Properties
9. Sur les tables, sélectionnez les champs suivants : PropertyNumber, PropertyType, Condition,
City, ZIPCode, Bedrooms, Bathrooms et MarketValue
10. Dans la section Critères, cliquez sur PropertyType. Appuyez sur Tab 3 fois et appuyez sur la
barre d'espace pour supprimer la coche de son champ de sortie
11. Appuyez sur la touche de tabulation 3 fois. Dans son champ de Filtre,
tapez Condominiums et appuyez sur la touche Entrée
12. Dans le menu principal, cliquez sur Fichier-> Enregistrer
13. Définissez le nom de Condos puis cliquez sur le bouton OK.
14. Fermez la fenêtre d'affichage
Avec Transact-SQL
Pour créer par programmation une vue, vous utilisez la syntaxe SQL suivante :
CREATE VIEW ViewName
AS
SELECT Statement
Microsoft SQL Server peut générer du code squelette d'une vue pour vous. Pour l'utiliser, tout
d'abord créez une fenêtre de requête vide. Affichez l'Explorateur de modèle. Dans l'Explorateur de
modèle, développez le nœud d'affichage. À partir du nœud de la vue, faites glisser Create View et
déposez-le dans la fenêtre de requête.
La création d'une vue commence avec l'expression CREATE VIEW suivie d'un nom. Le nom d'une
vue suit les règles et les suggestions que nous avons examinées ci-dessus. Après le nom de la
vue, utilisez le mot-clé AS pour indiquer que vous êtes prêt pour définir le mode d'affichage.
Parce qu'une vue est principalement une instruction SQL, elle est définie à l'aide d'une
instructionSELECT, utilisant les mêmes règles que nous avons étudiées pour l'analyse des données.
Voici un exemple d'une vue :
CREATE VIEW dbo.ListOfMen
AS
SELECT dbo.Genders.Gender,
dbo.Persons.FirstName, dbo.Persons.LastName
FROM dbo.Genders INNER JOIN dbo.Persons
ON dbo.Genders.GenderID = dbo.Persons.GenderID
WHERE (dbo.Genders.Gender = N'Male ');
GO
Après la création de l'instruction SQL qui définit la vue, vous devez exécuter l'instruction. Si à l'aide
d'une fenêtre de requête, vous pouvez le faire en appuyant sur la touche F5. Une fois que
l'instruction est exécutée, son nom est automatiquement ajouté au nœud de vues de sa base de
données même si vous n'enregistrez pas son code.
Formation pratique: Création d'une vue
1. Assurez-vous que vous disposez de la base de données BNS Yugo créée dans la Leçon13. Si
vous ne l'avez pas créée, faites-le maintenant.
Dans l'Explorateur d'objets, cliquez avec le bouton droit sur YugoNationalBank, puis cliquez
sur Nouvelle requête
2. Pour créer un nouvel affichage, tapez le code suivant
3. Use YugoNationalBank ;
4. GO
5. CREATE VIEW PayrollPreparation
6. AS
7. SELECT dbo.Employees.EmployeeNumber,
8. dbo.Employees.LastName +', N'+
9. dbo.Employees.FirstName AS [Full Name],
10. dbo.Employees.HourlySalary,
11. dbo.TimeSheets.TimeSheetCode, dbo.TimeSheets.Week1Monday,
12. dbo.TimeSheets.Week1Tuesday, dbo.TimeSheets.Week1Wednesday,
13. dbo.TimeSheets.Week1Thursday, dbo.TimeSheets.Week1Friday,
14. dbo.TimeSheets.Week1Saturday, dbo.TimeSheets.Week1Sunday,
15. dbo.TimeSheets.Week2Monday, dbo.TimeSheets.Week2Tuesday,
16. dbo.TimeSheets.Week2Wednesday, dbo.TimeSheets.Week2Thursday,
17. dbo.TimeSheets.Week2Friday, dbo.TimeSheets.Week2Saturday,
18. dbo.TimeSheets.Week2Sunday
19. FROM dbo.Employees INNER JOIN dbo.TimeSheets
20. ON dbo.Employees.EmployeeNumber = dbo.TimeSheets.EmplNumber ;
GO
21. Pour exécuter le code, appuyez sur la touche F5
22. Supprimez le contenu de l'ensemble de la fenêtre d'affichage
Ouverture ou Exécution d'une vue
Ouvertured'une vue
Comme je l'ai déjà dit, une vue est une technique de sélection d'enregistrements à afficher ou à
utiliser sur un nouveau. Après qu'une vue ait été créée, vous pouvez l'ouvrir. Vous disposez de deux
options principales.
 Pour voir la structure d'une vue, telles que la (s) table (s) sur la/lesquelle (s) elle (s) est/sont
fondée (s) et les relations, ni celles qui les composent, dans l'Explorateur d'objets, cliquez
avec le bouton droit de la souris sur la vue et cliquez sur Créer
 Pour voir le code SQL qui rend une vue, dans l'Explorateur d'objets, cliquez avec le bouton
droit de la souris sur la vue et cliquez sur Modifier
L'exécution d'une vue
L'exécution d'une vue se compose de voir ses résultats. Pour ce faire, vous disposez de différentes
options. Pour afficher les résultats d'une vue :
 Ouvrez une fenêtre de requête vide associée à la base de données qui contient la vue. Dans
la fenêtre de requête, écrivez une instruction SELECT en utilisant les mêmes formules et
règles que nous avons vues pour les tables. Voici un exemple :
 A partir de l'Explorateur d'objets, développez la base de données et ses vues de noeud.
Cliquez avec le bouton droit de la souris sur le nom de la vue et cliquez sur Ouvrir l'affichage
Formation pratique: L'exécution d'une vue
1. Dans l'Explorateur d'objets, sous RealEste2, développez des vues si nécessaire. Cliquez avec
le bouton droit de la souris sur Condos, puis cliquez sur Ouvrir l'affichage
2. Fermez la fenêtre d'affichage
3. Dans l'Explorateur d'objets, cliquez avec le bouton droit sur YugoNationalBank, puis cliquez
sur Nouvelle requête
4. Pour exécuter la vue, dans la fenêtre d'affichage vide, tapez ce qui suit
USE YugoNationalBank
GO
SELECT PayrollPreparation.* FROM PayrollPreparation ;
GO
5. Pour exécuter l'affichage, appuyez sur la touche F5
6. Supprimez le contenu de la fenêtre
Maintenance de vue
Les propriétés d'une vue
Dans Transact-SQL, une vue est considérée comme un objet. En tant que tel, il peut être consulté,
modifié ou supprimé. Comme n'importe quel objet régulier, une vue possède ses propres
caractéristiques. Pour les consulter, vous pouvez cliquez avec le bouton droit de la souris sur la vue
et cliquez sur Propriétés. Une boîte de dialogue View Properties apparaitrait. Elle peut vous donner
des informations telles que le nom de la base de données à laquelle la vue appartient, la date de
création de la vue, etc..
Formation pratique: Accès aux propriétés d'une vue
1. Pour créer une autre vue, tapez ce qui suit :
2. --=============================================
3. --Database : YugoNationalBank
4. --View : TimeSheet
5. --=============================================
6. USE YugoNationalBank
7. GO
8.
9.
10. IF object_id(N'TimeSheet', N'V') IS NOT NULL
11. DROP VIEW dbo.TimeSheet
12. GO
13.
14.
15. CREATE VIEW dbo.TimeSheet
16. AS
17. SELECT EmplNumber, StartDate,
18. Week1Monday, Week1Tuesday, Week1Wednesday,
19. Week1Thursday, Week1Friday,
20. Week1Saturday, Week1Sunday,
21. Week2Monday, Week2Tuesday, Week2Wednesday,
22. Week2Thursday, Week2Friday, Week2Saturday,
23. Week2Sunday, notes
FROM TimeSheets ;
24. Appuyez sur F5 pour exécuter l'instruction.
25. Supprimez le contenu de la fenêtre
26. Dans l'Explorateur d'objets, sous YugoNationalBank, cliquez avec le bouton droit de la souris
sur Views et cliquez sur Actualiser
27. Développez les vues si nécessaire. Cliquez avec le bouton droit de la souris sur TimeSheet,
puis cliquez sur Properties
28. Appuyez sur Echap pour fermer la boîte de dialogue Properties
Modification d'une vue
Après qu'une vue a été créée, par vous ou par quelqu'un d'autre, vous pouvez trouver qu'elle a une
colonne inutile, elle a besoin d'une colonne manquante, elle comprend des enregistrements inutiles
ou certains enregistrements sont manquants. Heureusement, vous pouvez modifier la structure ou
le code d'une vue. Ceci est appelé un avis de modification. Vous disposez de deux options
principales :
 Pour modifier visuellement une vue, dans l'Explorateur d'objets, cliquez avec le bouton droit
de la souris sur la vue et cliquez sur Créer. À partir de la fenêtre d'affichage, vous pouvez
ajouter ou supprimer des colonnes. Vous pouvez également modifier des options dans une
des sections de la fenêtre. Après modification de l'affichage, enregistrez-le et fermez-le
 Pour modifier le code d'une vue, dans l'Explorateur d'objets, cliquez dessus avec le bouton
droit de la souris et affichez les modifications. Après modification de code de l'affichage, vous
pouvez l'enregistrer
 A Partir de l'Explorateur d'objets, cliquez avec le bouton droit de la souris sur la vue,
positionnez la souris sur Script View As-> ALTER to-> New Query Editor Window
La formule de base pour modifier une vue par programme est la suivante :
ALTER VIEW ViewName
AS
SELECT Statement
Vous démarrez l'altération avec l'expression ALTER VIEW suivie du nom de la vue. Après le nom
de la vue, utilisez le mot-clé AS pour indiquer que vous êtes prêt à montrer le changement. Après le
mot-cléAS, vous pouvez ensuite définir la vue comme bon vous semble. Par exemple, vous pouvez
créer une instruction SELECT qui inclut une modification du code existant ou une instruction
entièrement nouvelle.
Dans la vue que nous avons créée pour afficher une liste des hommes d'une table, nous avons
inclus une colonne pour le sexe. Cette colonne est inutile ou redondante parce que nous savons déjà
que la liste inclut uniquement des hommes. Voici un exemple de modification de l'affichage à
supprimer (ou plutôt omettre) la colonne Gender de la table Persons :
ALTER VIEW dbo.ListOfMen
AS
SELECT dbo.Persons.FirstName, dbo.Persons.LastName
FROM dbo.Genders INNER JOIN dbo.Persons
ON dbo.Genders.GenderID = dbo.Persons.GenderID
WHERE (dbo.Genders.Gender = N'Male ') ;
La Suppression d'une vue
Au lieu de modifier une vue, si vous le trouvez complètement inutile, vous pouvez la supprimer de
sa base de données. Vous disposez de différentes options. Pour supprimer une vue :
 Dans l'Explorateur d'objets, dans une base de données, cliquez avec le bouton droit de la
souris sur le nom de la vue et cliquez sur Supprimer. Vous aurez l'occasion de confirmer
votre intention ou de changer d'avis
 Dans l'Explorateur d'objets, cliquez avec le bouton droit de la souris sur la vue, positionnez la
souris sur Script View As-> DROP To-> New Query Editor Window
 Ouvrez une fenêtre de requête vide associée à la base de données qui possède l'affichage
intempestif. Dans l'Explorateur de modèle, dans le nœud de la vue, faites glisser la vue et
déposez-la dans la fenêtre de requête
La formule pour supprimer par programmation une vue est la suivante :
DROP VIEW ViewName
Sur le côté droit de l'expression DROP VIEW, entrez le nom de la vue indésirable et exécutez
l'instruction. Vous ne serez pas averti avant que l'interprète supprime la vue.
L'Utilisation d'une vue
L'Entrée de données avec une Vue
Comme vu jusqu'à présent, une Vue est une liste d'enregistrements d'une table. Comme vous le
pensez peut-être, la vue la plus simple est probablement la création à partir d'une seule table.
Imaginez que vous avez une table d'employés et que vous souhaitez créer une vue qui répertorie
uniquement leurs noms. Vous pouvez créer une vue comme suit :
CREATE VIEW dbo.EmployeesNames
AS
SELECT FirstName,
LastName,
LastName + ', N' + FirstName AS FullName FROM Persons ;
GO
Sur ce point de vue qui est basé sur une table, vous pouvez effectuer l'entrée de données, à l'aide
de la vue, plutôt que de la table. Pour le faire, vous suivez les mêmes règles que nous avons
examinées à la leçon 9. Voici un exemple :
INSERT INTO dbo.EmployeesNames(FirstName, LastName)
VALUES(N'Peter', N'Justice') ;
Si vous appliquez l'entrée de données à l'aide d'une vue, les données que vous fournissez sont
saisies sur la table de base ; cela signifie que le tableau pourrait être mis à jour automatiquement.
Basé sur cette fonctionnalité, vous pouvez créer une vue délibérément destinée à mettre à jour une
table de sorte que, dans la vue, vous devrez inclure uniquement les colonnes qui doivent être mises
à jour.
Pratique : Exécution de saisie de données à l'aide d'une vue
1. Pour créer une fonction, nous utiliserons, entrerons le code suivant :
2. --= =================================================
3. --Database : YugoNationalBank
4. --Function : CreateTimeSheetCode
5. --Purpose : This function takes an employee number
6. -- and the start date of a time sheet.
7. -- Then it creates a unique number
8. -- in the format 0000000000000
9. -- The first 5 digits represent the
10. -- employee number,
11. -- the second 4 digits represent the year,
12. -- the 2 digits represent the month,
13. -- that last 2 digits represent the day
14. --==================================================
15. USE YugoNationalBank
16. GO
17.
18.
19. IF OBJECT_ID (N'dbo.CreateTimeSheetCode') IS NOT NULL
20. DROP FUNCTION dbo.CreateTimeSheetCode
21. GO
22.
23.
24.
25. CREATE FUNCTION dbo.CreateTimeSheetCode(@EmplNbr nvarchar(6),
26. @dteStart datetime2)
27. RETURNS nvarchar(15)
28. AS
29. BEGIN
30. DECLARE @strMonth AS nvarchar(20);
31. DECLARE @strDay AS nvarchar(20);
32. DECLARE @iMonth AS int;
33. DECLARE @iDay AS int;
34. DECLARE @strTimeSheetCode nvarchar(20);
35.
36.
37. SET @iMonth = CONVERT(nvarchar(20), MONTH(@dteStart));
38. SET @iDay = CONVERT(nvarchar(20), DAY(@dteStart));
39.
40.
41. IF @iMonth < 10
42. SET @strMonth = CONVERT(nvarchar(20), YEAR(@dteStart)) +
43. '0' + CONVERT(nvarchar(20), @iMonth);
44. ELSE
45. SET @strMonth = CONVERT(nvarchar(20), YEAR(@dteStart)) +
46. CONVERT(nvarchar(20), @iMonth);
47. IF @iDay < 10
48. SET @strDay = @strMonth + '0' +
49. CONVERT(nvarchar(20), @iDay);
50. ELSE
51. SET @strDay = @strMonth + CONVERT(nvarchar(2), @iDay);
52.
53. SET @strTimeSheetCode = @EmplNbr + @strDay;
54. RETURN @strTimeSheetCode;
55. END
GO
56. Appuyez sur F5 pour exécuter
57. Pour effectuer la saisie de données à l'aide d'une vue, entrez le code suivant :
58. USE YugoNationalBank
59. GO
60. -- The following code performs data entry using a view
61. INSERT INTO dbo.TimeSheet
62. VALUES(N'46288', N'1/1/2007',
63. 0.00, 8.50, 9.50, 8.50, 9.00, 0.00, 0.00,
64. 10.00, 9.50, 8.50, 10.50, 9.00, 0.00, 0.00, N'');
65. GO
66. INSERT INTO dbo.TimeSheet
67. VALUES(N'66286', N'1/1/2007',
68. 0.00, 8.50, 6.50, 5.50, 6.50, 0.00, 0.00,
69. 4.00, 6.00, 6.50, 6.00, 5.50, 0.00, 0.00, N'');
70. GO
71. INSERT INTO dbo.TimeSheet
72. VALUES(N'92493', N'1/1/2007',
73. 0.00, 8.00, 9.00, 8.50, 9.50, 0.00, 0.00,
74. 5.50, 6.50, 4.50, 6.00, 4.00, 0.00, 0.00, N'');
75. GO
76. INSERT INTO dbo.TimeSheet
77. VALUES(N'27199', N'1/15/2007',
78. 6.00, 8.50, 0.00, 4.00, 6.50, 0.00, 0.00,
79. 4.00, 0.00, 6.00, 4.00, 0.00, 0.00, 0.00, N'');
80. GO
81. INSERT INTO dbo.TimeSheet
82. VALUES(N'39538', N'1/15/2007',
83. 8.00, 8.00, 6.00, 8.50, 6.00, 0.00, 0.00,
84. 9.50, 10.50, 8.00, 8.00, 8.50, 0.00, 0.00,
85. 'There were a few missing times in the time sheet. ' +
86. 'They have been recorded.');
87. GO
88. INSERT INTO dbo.TimeSheet
89. VALUES(N'40550', N'1/15/2007',
90. 8.50, 8.00, 0.00, 8.50, 0.00, 0.00, 0.00,
91. 6.00, 6.50, 6.50, 0.00, 4.00, 0.00, 0.00, N'');
92. GO
93. INSERT INTO dbo.TimeSheet
94. VALUES(N'66286', N'1/29/2007',
95. 8.00, 6.50, 9.50, 8.00, 7.50, 0.00, 0.00,
96. 10.50, 9.50, 8.50, 8.00, 10.00, 0.00, 0.00, N'');
97. GO
98. INSERT INTO dbo.TimeSheet
99. VALUES(N'90026', N'2/12/2007',
100. 8.50, 6.50, 8.00, 8.00, 9.50, 0.00, 0.00,
101. 9.50, 8.00, 8.50, 8.00, 8.00, 0.00, 0.00, N'');
102. GO
103. INSERT INTO dbo.TimeSheet
104. VALUES(N'92493', N'2/12/2007',
105. 4.00, 6.50, 5.50, 8.00, 6.50, 0.00, 0.00,
106. 8.00, 8.00, 8.00, 6.00, 8.00, 0.00, 0.00, N'');
107. GO
108. -- The following code updates a table using a function
109. UPDATE dbo.TimeSheets
110. SET TimeSheetCode = dbo.CreateTimeSheetCode(N'46288', N'1/1/2007')
111. WHERE (EmplNumber = N'46288') AND (StartDate = N'1/1/2007');
112. GO
113. UPDATE dbo.TimeSheets
114. SET TimeSheetCode = dbo.CreateTimeSheetCode(N'66286', N'1/1/2007')
115. WHERE (EmplNumber = N'66286') AND (StartDate = N'1/1/2007');
116. GO
117. UPDATE dbo.TimeSheets
118. SET TimeSheetCode = dbo.CreateTimeSheetCode(N'92493', N'1/1/2007')
119. WHERE (EmplNumber = N'92493') AND (StartDate = N'1/1/2007');
120. GO
121. UPDATE dbo.TimeSheets
122. SET TimeSheetCode = dbo.CreateTimeSheetCode(N'27199', N'1/15/2007')
123. WHERE (EmplNumber = N'27199') AND (StartDate = N'1/15/2007');
124. GO
125. UPDATE dbo.TimeSheets
126. SET TimeSheetCode = dbo.CreateTimeSheetCode(N'39538', N'1/15/2007')
127. WHERE (EmplNumber = N'39538') AND (StartDate = N'1/15/2007');
128. GO
129. UPDATE dbo.TimeSheets
130. SET TimeSheetCode = dbo.CreateTimeSheetCode(N'40550', N'1/15/2007')
131. WHERE (EmplNumber = N'40550') AND (StartDate = N'1/15/2007');
132. GO
133. UPDATE dbo.TimeSheets
134. SET TimeSheetCode = dbo.CreateTimeSheetCode(N'66286', N'1/29/2007')
135. WHERE (EmplNumber = N'66286') AND (StartDate = N'1/29/2007');
136. GO
137. UPDATE dbo.TimeSheets
138. SET TimeSheetCode = dbo.CreateTimeSheetCode(N'90026', N'2/12/2007')
139. WHERE (EmplNumber = N'90026') AND (StartDate = N'2/12/2007');
140. GO
141. UPDATE dbo.TimeSheets
142. SET TimeSheetCode = dbo.CreateTimeSheetCode(N'92493', N'2/12/2007')
143. WHERE (EmplNumber = N'92493') AND (StartDate = N'2/12/2007');
GO
144. Appuyez sur F5 pour exécuter
145. Supprimer le contenu de la fenêtre
Une vue avec des noms d'alias
Il est important de savoir qu'une vue est plus d'un type de table, que n'importe quel autre objet.
Cela signifie qu'une vue n'est pas une fonction, mais elle peut utiliser une fonction. L'argument de
mot ici signifie uniquement que certaines valeurs peuvent être transmises à une vue mais ces
valeurs peuvent être spécifiées uniquement lors de la création de la vue. Elles ne sont pas de vrais
arguments.
Lors de la structuration d'une vue, vous pouvez créer des espaces réservés pour les colonnes et les
transmettre dans les parenthèses de la vue. Cela s'effectuerait comme suit :
CREATE VIEW CarIdentifier([Tag #], Manufacturer, [Type of Car], Available)...
Si vous utilisez cette technique, les noms transmis dans les parenthèses de la vue sont les légendes
qui s'affichent au lieu des colonnes de la vue. Cette technique vous permet de spécifier les chaînes
de votre choix pour les colonnes. Si vous souhaitez une en-tête de colonne pour afficher le nom réel
de la colonne, écrivez le même. Dans le cas contraire, vous pouvez utiliser n'importe quelle chaîne
souhaitée pour la colonne. Si le nom est en un mot, vous pouvez le taper. Si le nom contient des
mots différents, incluez-les entre un crochet d'ouverture "[" et un crochet fermant"]".
Après avoir énuméré les chaînes nécessaires comme les légendes des colonnes, dans votre
instructionSELECT de la vue, vous devez utiliser le même nombre exact de colonnes comme le
nombre d'arguments de la vue. En fait, chaque colonne de votre instruction SELECT doit
correspondre à un argument du même ordre.
Voici un exemple :
CREATE VIEW dbo.MenAndWomen([First Name], [Last Name], Gender)
AS
SELECT dbo.Persons.FirstName,
dbo.Persons.LastName,
dbo.Genders.Gender
FROM dbo.Genders INNER JOIN dbo.Persons
ON dbo.Genders.GenderID = dbo.Persons.GenderID ;
GO
Car, comme nous l'avons déjà dit, une vue n'est pas une fonction et les valeurs passées à la vue ne
sont pas des arguments réels, lors de l'exécution de la vue, ne spécifiez pas le nom des arguments.
Créez simplement une instruction SELECT et spécifiez le nom de la vue comme la source. Voici un
exemple :
Vues et requêtes conditionnelles
Outre ses caractéristiques d'interrogation lui permettant d'effectuer une analyse de données,
probablement la plus importante fonction d'une requête est sa capacité à être aussi complexe que
possible grâce à la gestion des instructions conditionnelles. Il est ainsi possible d'utiliser une vue au
lieu d'une table dans les opérations et les expressions qui compliquent le code ou la structure d'une
table. Lorsque vous créez une vue, dans sa déclaration SELECT, vous pouvez effectuer des
sélections de colonne, les commander et définir des critères pour exclure certains enregistrements.
Voici un exemple :
Fonctions et vues
Pour créer des vues plus complexes ou avancées, vous pouvez impliquer des fonctions. Comme
toujours, probablement les fonctions les plus faciles à utiliser sont celles intégrées.
S'il n'y a aucune fonction intégrée qui effectue l'opération que vous souhaitez, vous pouvez créer
votre propre fonction. Voici un exemple :
USE People ;
GO
CREATE FUNCTION dbo.GetFullName
(
@FName type nvarchar (20),
@LName type nvarchar (20)
)
RETURNS nvarchar(41)
AS
BEGIN
RETURN @LName + ', N' + @ FName ;
END
GO
Une fois que vous avez une fonction que vous souhaitez utiliser, vous pouvez l'appeler dans le corps
de votre vue comme vous le jugez nécessaire. Voici un exemple :
CREATE VIEW dbo.MyPeople
AS
SELECT dbo.GetFullName (FirstName, LastName) AS [Full Name],
dbo.Genders.Gender
FROM Genders INNER JOIN dbo.Persons
ON dbo.Genders.GenderID = dbo.Persons.GenderID ;
Cela donnerait :
Formation pratique: Utilisation d'une fonction dans une vue
1. Dans l'Explorateur d'objets, sous YugoNationalBank, développez Views si nécessaire.
Cliquez avec le bouton droit de la souris sur PayrollPreparation, positionnez la souris sur
Script View As-> ALTER to-> New Query Editor Window
2. Modifiez le code comme suit :
3. USE [YugoNationalBank]
4. GO
5. SET ANSI_NULLS ON
6. GO
7. SET QUOTED_IDENTIFIER ON
8. GO
9. ALTER VIEW [dbo].[PayrollPreparation]
10. AS
11. SELECT dbo.Employees.EmployeeNumber,
12. dbo.Employees.LastName + ', N' +
13. dbo.Employees.FirstName AS [Full Name],
14. dbo.Employees.HourlySalary,
15. dbo.TimeSheets.TimeSheetCode, dbo.TimeSheets.Week1Monday,
16. dbo.TimeSheets.Week1Tuesday, dbo.TimeSheets.Week1Wednesday,
17. dbo.TimeSheets.Week1Thursday, dbo.TimeSheets.Week1Friday,
18. dbo.TimeSheets.Week1Saturday, dbo.TimeSheets.Week1Sunday,
19. dbo.TimeSheets.Week2Monday, dbo.TimeSheets.Week2Tuesday,
20. dbo.TimeSheets.Week2Wednesday, dbo.TimeSheets.Week2Thursday,
21. dbo.TimeSheets.Week2Friday, dbo.TimeSheets.Week2Saturday,
22. dbo.TimeSheets.Week2Sunday,
23.
24. CAST(dbo.TimeSheets.Week1Monday AS SmallMoney) +
25. CAST(dbo.TimeSheets.Week1Tuesday AS SmallMoney) +
26. CAST(dbo.TimeSheets.Week1Wednesday AS SmallMoney) +
27. CAST(dbo.TimeSheets.Week1Thursday AS SmallMoney) +
28. CAST(dbo.TimeSheets.Week1Friday AS SmallMoney) +
29. CAST(dbo.TimeSheets.Week1Saturday AS SmallMoney) +
30. CAST(dbo.TimeSheets.Week1Sunday AS SmallMoney)
31. AS [Total Week1],
32. CAST(dbo.TimeSheets.Week2Monday AS SmallMoney) +
33. CAST(dbo.TimeSheets.Week2Tuesday AS SmallMoney) +
34. CAST(dbo.TimeSheets.Week2Wednesday AS SmallMoney) +
35. CAST(dbo.TimeSheets.Week2Thursday AS SmallMoney) +
36. CAST(dbo.TimeSheets.Week2Friday AS SmallMoney) +
37. CAST(dbo.TimeSheets.Week2Saturday AS SmallMoney) +
38. CAST(dbo.TimeSheets.Week2Sunday AS SmallMoney)
39. AS [Total Week2],
40. CAST(dbo.TimeSheets.Week1Monday AS SmallMoney) +
41. CAST(dbo.TimeSheets.Week1Tuesday AS SmallMoney) +
42. CAST(dbo.TimeSheets.Week1Wednesday AS SmallMoney) +
43. CAST(dbo.TimeSheets.Week1Thursday AS SmallMoney) +
44. CAST(dbo.TimeSheets.Week1Friday AS SmallMoney) +
45. CAST(dbo.TimeSheets.Week1Saturday AS SmallMoney) +
46. CAST(dbo.TimeSheets.Week1Sunday AS SmallMoney) +
47. CAST(dbo.TimeSheets.Week2Monday AS SmallMoney) +
48. CAST(dbo.TimeSheets.Week2Tuesday AS SmallMoney) +
49. CAST(dbo.TimeSheets.Week2Wednesday AS SmallMoney) +
50. CAST(dbo.TimeSheets.Week2Thursday AS SmallMoney) +
51. CAST(dbo.TimeSheets.Week2Friday AS SmallMoney) +
52. CAST(dbo.TimeSheets.Week2Saturday AS SmallMoney) +
53. CAST(dbo.TimeSheets.Week2Sunday AS SmallMoney)
54. AS [Total Time Sheet]
55. FROM dbo.Employees INNER JOIN dbo.TimeSheets
ON dbo.Employees.EmployeeNumber = dbo.TimeSheets.EmplNumber;
56. Pour mettre à jour la requête, dans le menu principal, cliquez sur Query-> Execute
57. Supprimer le contenu de la fenêtre
58. Pour voir le résultat de la requête, tapez ce qui suit :
59. Use YugoNationalBank
60. GO
61. USE YugoNationalBank
62. GO
63. PayrollPreparation.*
64. SELECT FROM PayrollPreparation ;
GO
65. Supprimez le contenu de la fenêtre
Résumé des vues
Introduction
Examinez le tableau suivant de vidéos créé dans une base de données VideoCollection :
-- =============================================
-- Database: VideoCollection
-- =============================================
USE master
GO
-- Drop the database if it already exists
IF EXISTS (SELECT name FROM sys.databases WHERE name = N'VideoCollection'
)
DROP DATABASE VideoCollection
GO
CREATE DATABASE VideoCollection
GO
USE VideoCollection;
GO
CREATE TABLE Videos
(
VideoID int identity(1, 1) not null,
Title nvarchar(50) not null,
Director nvarchar(50),
VideoLength int,
Rating nchar(10),
YearReleased int
);
GO
INSERT INTO Videos(Title, Director, VideoLength,
Rating, YearReleased)
VALUES(N'Two for the Money', N'D.J. Caruso', 123, N'R', 2008),
(N'Her Alibi', N'Bruce Beresford', 94, N'PG-13', 1998),
(N'Memoirs of a Geisha', N'Rob Marshall', 145, N'PG-13', 2006),
(N'Wall Street', N'Oliver Stone', 126, N'R', 2000);
GO
INSERT INTO Videos(Title, Director, VideoLength, Rating)
VALUES(N'Distinguished Gentleman (The)', N'Jonathan Lynn', 112, N'R');
GO
INSERT INTO Videos(Title, Director, YearReleased, VideoLength)
VALUES(N'The Silence of the Lambs', N'Jonathan Demme', 1991, 118);
GO
INSERT INTO Videos(Title, Director, YearReleased, VideoLength)
VALUES(N'A Few Good Men', N'Rob Reiner', 1992, N'138');
GO
GO
INSERT INTO Videos(Title, Director, VideoLength,
Rating, YearReleased)
VALUES(N'Michael Jackson Live in Bucharest',
N'Andy Morahan', 122, N'N/R', 1992);
GO
INSERT INTO Videos(Title, Director, Rating, VideoLength)
VALUES(N'The Lady Killers', N'Joel Coen & Ethan Coen', N'R', N'104');
GO
INSERT INTO Videos(Title, Director) VALUES(N'Outfoxed', N'Robert Greenwald');
GO
INSERT INTO Videos(Title, Director, VideoLength,
Rating, YearReleased)
VALUES(N'Sneakers', N'Phil Alden Robinson', 126, N'PG-13', 1992),
(N'Soldier', N'Paul Anderson', 99, N'R', 1998),
(N'War of the Roses (The)', N'Dany de Vito', 116, N'R', 2001),
(N'Last Castle (The)', N'Rod Lurie', 133, N'R', 2001);
GO
INSERT INTO Videos(Title, Director, VideoLength)
VALUES(N'Ghosts of Mississippi', N'Rob Reiner', 130);
GO
Il existe différents types de statistiques, que vous souhaiterez peut -être obtenir à partir de cette
table. Vous pouvez connaître le nombre de vidéos dans le tableau. Vous souhaitez connaître le
nombre de vidéos qui sont notés R, ou le nombre des vidéos nommées PG-13. Vous pouvez
connaître la durée moyenne des vidéos. Pour vous aider à obtenir ces statistiques, vous pouvez
créer une requête sommaire.
Une vue est dénommée résumé si elle fournit une ou plusieurs statistiques analytiques sur les
enregistrements.
Création d'une vue de synthèse
Avant de créer une vue de synthèse, dans l'Explorateur d'objets, développez la base de données sur
laquelle vous allez travailler. Cliquez avec le bouton droit de la souris sur Views, puis cliquez sur
New View... Dans la boîte de dialogue Add Table, sélectionnez les tables (ou view(s)) et fermez-les.
Pour lancer une requête sommaire :
 Cliquez avec le bouton droit de la souris quelque part dans la fenêtre du milieu, puis cliquez
sur Add Group By
 Dans la barre d'outils du Concepteur de vue, cliquez sur le bouton Add Group By
 Dans le menu principal, cliquez sur View Designer, puis cliquez sur Add Group By
Il obtient la vue prête pour le résumé.
La formule pour créer une vue synthétique par programmation est la suivante :
SELECT What
FROM WhatObject(s)
GROUP BY Column (s)
La nouvelle expression dans cette formule est GROUP BY. Cela indique que vous souhaitez résumer
un groupe de valeurs d'une ou de plusieurs colonnes. Bien entendu, il y a des règles à suivre.
Bien que vous puissiez créer une vue récapitulative avec tous les champs ou les champs d'une vue,
l'objectif de la vue est de résumer les données. Pour une bonne vue récapitulative, vous devez
sélectionner une colonne où les enregistrements contiennent des catégories de données. Cela
signifie que les enregistrements dans la liste doivent être regroupés par catégories. Pour cela, le
SQL fournit l'expression GROUP BY. Cela signifie que, lorsque les enregistrements affichent, ils
seraient regroupés par leurs catégories. Par exemple, si vous souhaitez obt enir le nombre de vidéos
par cote, vous sélectionnez la colonne qui contient cette information : Rating. Vous pouvez
également sélectionner d'autres colonnes. Voici un exemple :
Lorsque les résultats se montrent, ils seraient regroupés par leurs catégories :
Comme je l'ai déjà dit, une vue récapitulative vise à fournir des statistiques. Par conséquent, il est
normal que vous vous intéressez uniquement à la (aux) colonne (s) qui tient (ent) les statistiques
de votre choix et éviter les colonnes qui sont sans importance. En conséquence, si vous sélectionnez
(uniquement) une colonne qui contient les informations que vous souhaitez, dans la liste qui en
résulte, chacune de ses catégories s'afficherait une seule fois :
Résumé des valeurs
Pour obtenir les types de statistiques voulues, dans la section critères, ajoutez la même colonne une
fois de plus et donnez-lui une légende dans la section alias. Puis, cliquez sur la zone Group By qui
correspond à la colonne en double :
En réalité, une vue récapitulative utilise une fonction d'agrégation pour afficher son résultat :
 Count : le moteur de base de données utilise la fonction Count() pour compter le nombre
d'occurrences de la catégorie dans la colonne et produit le total. Cette fonction compte
également des valeurs NULL. La syntaxe de la fonction Count() est :
int COUNT ({[[ALL | DISTINCT] expression] | *})
 Cette fonction prend un seul argument. Pour obtenir le nombre d'occurrences d'une valeur,
dans la section critères, sélectionnez COUNT(*). Voici un exemple :
Exécutez ensuite l'instruction :
La fonction Count() renvoie une valeur de type int. Si vous travaillez sur un grand nombre
d'enregistrements, vous pouvez appeler la fonction Count_Big(). Sa syntaxe est la suivante
:
bigint COUNT_BIG ({[ALL | DISTINCT] expression} | *)
 Examinez le tableau ci-après nommé :
-- =============================================
-- Database: DepartmentStore
-- =============================================
USE master
GO
-- Drop the database if it already exists
IF EXISTS (SELECT name FROM sys.databases WHERE name =
N'VideoCollection'
)
DROP DATABASE DepartmentStore
GO
CREATE DATABASE DepartmentStore
GO
USE DepartmentStore;
GO
-- =============================================
-- Database: DepartmentStore
-- Table: Customer
-- Description: This table holds some information
-- about the customers who hold
a store
-- credit card
-- =============================================
CREATE TABLE Customers
(
CustomerID int identity(1, 1) not null,
AccountNumber nchar(10) not null,
FullName nvarchar(50) not null
);
GO
-- =============================================
-- Database: DepartmentStore
-- Table: CreditCardPayments
-- Description: This table holds the records of payments
-- of the customers who
hold a store
-- credit cad
-- =============================================
CREATE TABLE CreditCardPayments
(
PaymentID int identity(1, 1) not null,
CustomerAccount nchar(10) not null,
Amount money not null
);
GO
INSERT INTO Customers(AccountNumber, FullName)
VALUES(N'924-074', N'Daniel Caruso'), (N'248-006', N'Annette
Greenwald'),
(N'570-816', N'Robert Stonewall'), (N'824-692', N'John Stons');
GO
INSERT INTO CreditCardPayments(CustomerAccount, Amount)
VALUES(N'924-074', 15), (N'248-006', 25), (N'924-074', 50),
(N'570-816', 30), (N'248-006', 20), (N'570-816', 120),
(N'924-074', 95), (N'924-074', 115), (N'570-816', 15),
(N'248-006', 100), (N'824-692', 75), (N'924-074', 50),
(N'824-692', 40), (N'924-074', 45), (N'248-006', 125);
GO

Si la colonne contient des valeurs numériques :
o Sum : la fonction Sum() est utilisée pour résumer les valeurs dans la catégorie. La
syntaxe de la fonction Sum() est :
Number SUM ([ALL | DISTINCT] expression)
o Voici un exemple :
o Avg : la somme de la valeur dans une catégorie pourrait être divisée par le nombre
d'occurrences dans cette catégorie pour obtenir la moyenne. La syntaxe de la
fonction Avg() est :
Number AVG ([ALL | DISTINCT] expression)
o Voici un exemple :
o Min : la valeur la plus basse de la catégorie serait produite à partir de la
fonction Min(). La syntaxe de cette fonction est la suivante :
DependsOnType MIN ([ALL | DISTINCT] expression)
o Voici un exemple :
o Max : la valeur la plus élevée de la catégorie serait produite à l'aide de la
fonction Max(). La syntaxe de cette fonction est la suivante :
DependsOnType MAX ([ALL | DISTINCT] expression)
o Voici un exemple :
o StdDev : la fonction StdDev() est utilisée pour calculer l'écart de toutes les valeurs
numériques d'un groupe. S'il n'y a pas de valeur ou de la même valeur dans le groupe
considéré, cette fonction renvoie la valeur NULL. Cela signifie qu'il doit y avoir au
moins deux valeurs différentes dans le groupe. La syntaxe de la
fonction StdDev() est :
float STDEV ([ALL | DISTINCT] expression)
Voici un exemple :
Notez que la notation N/R produit NULL parce qu'une seule vidéo utilise cette note.
o Var : la fonction Var() calcule la variance statistique de toutes les valeurs
numériques d'un groupe. S'il n'y a pas de valeur ou de la même valeur dans le groupe
considéré, cette fonction renvoie la valeur NULL. La syntaxe de la fonction est : Var()
float VAR ([ALL | DISTINCT] expression)
Voici un exemple :
La variance des valeurs dans la catégorie statistique serait calculée.
 Expression : comme son nom l'indique, l'option d'expression vous permet d'écrire votre
propre expression qui sera appliquée sur la colonne. Voici un exemple :
 Where : pensez à la vue de synthèse suivante qui appelle la fonction COUNT(*) :
Notez que cela comprend des vidéos nominales NULL, ce qui n'est pas un réelle évaluation.
Imaginez que vous souhaitez inclure uniquement les vidéos qui ont une vraie évaluation.
Pour vous aider à définir une condition, vous pouvez utiliser un emplacement d'option. Pour
ce faire, dans les critères de section, ajoutez la colonne sur laquelle le résumé doit être
appliqué et sélectionnez où. Ensuite, dans la zone de filtre équivalente, tapez la condition et
exécutez l'instruction. Voici un exemple :
Avoir un critère
Lorsque nous avons mentionné une condition Where dans nos points de vues récapitulatives, nous
avons vu que nous devions ajouter une colonne en double pour l'appliquer. Dans certains cas, ce
n'est pas nécessaire. Tenez compte du résumé suivant des paiements pour chaque compte :
Imaginez que vous souhaitez visualiser uniquement les comptes dont les paiements dépassent
250,00. Pour cela, vous pouvez ajouter une clause nommée HAVING à l'instruction. La formule à
utiliser est la suivante :
La formule pour créer par programmation une vue synthétique est la suivante :
SELECT What
FROM WhatObject(s)
GROUP BY Column(s)
HAVING Condition
L'opérateur New dans cette formule est HAVING. Il vous permet de spécifier le critère par lequel
l'instruction SELECT doit produire ses résultats. Par exemple, affichez uniquement les sommes qui
sont supérieures à 250, vous pouvez écrire :
SELECT CustomerAccount AS [Account ], SUM(Amount) AS [Total Payments]
FROM CreditCardPayments
GROUP BY CustomerAccount
HAVING SUM(Amount) > 250
Pour indiquer visuellement un critère HAVING, dans le filtre correspondant à la colonne, tapez
l'expression conditionnelle et exécutez l'instruction. Voici un exemple :
Cour sqlserver

Contenu connexe

Tendances (9)

Excel
ExcelExcel
Excel
 
CHAPITRE 1.pdf
CHAPITRE 1.pdfCHAPITRE 1.pdf
CHAPITRE 1.pdf
 
Access requete
Access requeteAccess requete
Access requete
 
Fiche Pratiques Word_2007
Fiche Pratiques Word_2007Fiche Pratiques Word_2007
Fiche Pratiques Word_2007
 
4 vb composants
4 vb composants4 vb composants
4 vb composants
 
Requetes
RequetesRequetes
Requetes
 
Cours Excel
Cours ExcelCours Excel
Cours Excel
 
Courspowerpoint2010
Courspowerpoint2010Courspowerpoint2010
Courspowerpoint2010
 
Catia v5 introduction
Catia v5 introductionCatia v5 introduction
Catia v5 introduction
 

Similaire à Cour sqlserver

Rechercher un enregistrement avec une liste déroulante dans un formulaire Access
Rechercher un enregistrement avec une liste déroulante dans un formulaire AccessRechercher un enregistrement avec une liste déroulante dans un formulaire Access
Rechercher un enregistrement avec une liste déroulante dans un formulaire AccessVotre Assistante
 
Fiches Pratiques Excel 2007
Fiches Pratiques Excel 2007Fiches Pratiques Excel 2007
Fiches Pratiques Excel 2007Guillaume MAURIN
 
Pratique professionnelle TCG KOUAMI DJOMO JULIO STEPHANE
Pratique professionnelle TCG  KOUAMI DJOMO JULIO STEPHANEPratique professionnelle TCG  KOUAMI DJOMO JULIO STEPHANE
Pratique professionnelle TCG KOUAMI DJOMO JULIO STEPHANEJulio Djomo
 
Totu access sphinx_epruves_excel Tle ACC
Totu access sphinx_epruves_excel Tle ACCTotu access sphinx_epruves_excel Tle ACC
Totu access sphinx_epruves_excel Tle ACCJulio Djomo
 
pratique proessionnelle PCG/ACC KOUAMI DJOMO JULIO STEPHANE
pratique proessionnelle PCG/ACC  KOUAMI DJOMO JULIO STEPHANEpratique proessionnelle PCG/ACC  KOUAMI DJOMO JULIO STEPHANE
pratique proessionnelle PCG/ACC KOUAMI DJOMO JULIO STEPHANEJulio Djomo
 
Créer un tableau croisé dynamique avec Excel
Créer un tableau croisé dynamique avec ExcelCréer un tableau croisé dynamique avec Excel
Créer un tableau croisé dynamique avec ExcelVotre Assistante
 
Green System University - Development JDEdwards (French Version) - Tome3
Green System University - Development JDEdwards (French Version) - Tome3Green System University - Development JDEdwards (French Version) - Tome3
Green System University - Development JDEdwards (French Version) - Tome3Minh-Tri Nguyen
 
Tp a revit_interface inteface revit
Tp a revit_interface inteface revitTp a revit_interface inteface revit
Tp a revit_interface inteface revitali lemssefer
 
1425583156389.pptx
1425583156389.pptx1425583156389.pptx
1425583156389.pptxtirike6016
 
Chapitre 9-Les Formulaires et les contrôles.pptx
Chapitre 9-Les Formulaires et les contrôles.pptxChapitre 9-Les Formulaires et les contrôles.pptx
Chapitre 9-Les Formulaires et les contrôles.pptxSamiBENAISSIA1
 
Cours access
Cours accessCours access
Cours accessmsodjinou
 
Pourquoi et comment créer un plan sur Excel ?
Pourquoi et comment créer un plan sur Excel ?Pourquoi et comment créer un plan sur Excel ?
Pourquoi et comment créer un plan sur Excel ?Votre Assistante
 
Jet Reports Pour Microsoft Dynamics NAV
Jet Reports Pour Microsoft Dynamics NAVJet Reports Pour Microsoft Dynamics NAV
Jet Reports Pour Microsoft Dynamics NAVMaroua Bouhachem
 

Similaire à Cour sqlserver (20)

Rechercher un enregistrement avec une liste déroulante dans un formulaire Access
Rechercher un enregistrement avec une liste déroulante dans un formulaire AccessRechercher un enregistrement avec une liste déroulante dans un formulaire Access
Rechercher un enregistrement avec une liste déroulante dans un formulaire Access
 
Fiches Pratiques O.O Calc
Fiches Pratiques O.O CalcFiches Pratiques O.O Calc
Fiches Pratiques O.O Calc
 
Eclipse
EclipseEclipse
Eclipse
 
Fiches Pratiques Excel 2007
Fiches Pratiques Excel 2007Fiches Pratiques Excel 2007
Fiches Pratiques Excel 2007
 
Pratique professionnelle TCG KOUAMI DJOMO JULIO STEPHANE
Pratique professionnelle TCG  KOUAMI DJOMO JULIO STEPHANEPratique professionnelle TCG  KOUAMI DJOMO JULIO STEPHANE
Pratique professionnelle TCG KOUAMI DJOMO JULIO STEPHANE
 
Totu access sphinx_epruves_excel Tle ACC
Totu access sphinx_epruves_excel Tle ACCTotu access sphinx_epruves_excel Tle ACC
Totu access sphinx_epruves_excel Tle ACC
 
pratique proessionnelle PCG/ACC KOUAMI DJOMO JULIO STEPHANE
pratique proessionnelle PCG/ACC  KOUAMI DJOMO JULIO STEPHANEpratique proessionnelle PCG/ACC  KOUAMI DJOMO JULIO STEPHANE
pratique proessionnelle PCG/ACC KOUAMI DJOMO JULIO STEPHANE
 
Créer un tableau croisé dynamique avec Excel
Créer un tableau croisé dynamique avec ExcelCréer un tableau croisé dynamique avec Excel
Créer un tableau croisé dynamique avec Excel
 
Sql
SqlSql
Sql
 
O oo base
O oo baseO oo base
O oo base
 
Guide talend
Guide talendGuide talend
Guide talend
 
Guidetalendd
GuidetalenddGuidetalendd
Guidetalendd
 
Green System University - Development JDEdwards (French Version) - Tome3
Green System University - Development JDEdwards (French Version) - Tome3Green System University - Development JDEdwards (French Version) - Tome3
Green System University - Development JDEdwards (French Version) - Tome3
 
Tp a revit_interface inteface revit
Tp a revit_interface inteface revitTp a revit_interface inteface revit
Tp a revit_interface inteface revit
 
1425583156389.pptx
1425583156389.pptx1425583156389.pptx
1425583156389.pptx
 
Chapitre 9-Les Formulaires et les contrôles.pptx
Chapitre 9-Les Formulaires et les contrôles.pptxChapitre 9-Les Formulaires et les contrôles.pptx
Chapitre 9-Les Formulaires et les contrôles.pptx
 
Cours access
Cours accessCours access
Cours access
 
Td4 bibnum
Td4 bibnumTd4 bibnum
Td4 bibnum
 
Pourquoi et comment créer un plan sur Excel ?
Pourquoi et comment créer un plan sur Excel ?Pourquoi et comment créer un plan sur Excel ?
Pourquoi et comment créer un plan sur Excel ?
 
Jet Reports Pour Microsoft Dynamics NAV
Jet Reports Pour Microsoft Dynamics NAVJet Reports Pour Microsoft Dynamics NAV
Jet Reports Pour Microsoft Dynamics NAV
 

Cour sqlserver

  • 1. Affichage Présentation des vues Introduction Lors de l'étude de l'analyse des données, une requête est une technique d'isoler une série de colonnes et/ou des enregistrements d'une table. Ceci est généralement effectué aux fins de l'analyse des données. Cela peut se faire également pour créer une nouvelle liste d'éléments pour toute raison particulière. La plupart du temps, une requête est créée temporairement, tel que lors de l'analyse de données en utilisant une table, un formulaire ou une page web. Après l'utilisation d'une telle liste temporaire, elle est alors rejetée. De nombreuses applications de base de données, notamment Microsoft SQL Server, permettent de créer une requête et de pouvoir l'enregistrer pour une utilisation ultérieure, ou encore l'utiliser comme s'il s'agissait de son propre tableau.C'est l'idée derrière une vue. Définition Une vue est une liste de colonnes ou une série d'enregistrements extraits d'une ou de plusieurs tables existantes, ou comme une combinaison d'une ou plusieurs vues et d'une ou de plusieurs tables. Basé sur ce point, avant de créer une vue, vous devez tout d'abord décider d'où ses colonnes et enregistrements proviennent. Évidemment le plus simple affichage est celui dont les colonnes et enregistrements proviennent d'une seule table. Formation pratique: Présentation des vues  Démarrez Microsoft SQL Server et connectez-vous au serveur. Assurez-vous que vous disposez de la base de données RealEstate2 créée dans la leçon précédente. Si vous ne les avez pas créées, faites-le maintenant. Principes fondamentaux de la création de vues Création d'une vue visuellement Pour créer une vue, vous pouvez utiliser l'Explorateur d'objets, une fenêtre de requête, l'invite de commande ou Windows PowerShell. Avant de commencer la vue, il vous faudrait spécifier les tables qui pourraient être impliquées. Pour créer une vue à partir de l'Explorateur d'objets, vous pouvez étendre la base de données, cliquez avec le bouton droit de la souris sur les vues et cliquez sur Nouvelle vue... Ceci ouvrirait la boîte de dialogue Add Table :
  • 2. Les fonctionnalités de base sont exactement les mêmes que nous avons vues dans leçon 13 :  Pour spécifier la table qui serait utilisée comme source, vous pouvez cliquer dans la zone de liste de la page de propriétés de Tables  Si vous utiliserez une autre vue existante, à partir de la page de propriété de vues, vous pouvez cliquer sur le nom de la vue souhaitée  Si une fonction serait utilisée pour générer les enregistrements, vous pouvez la rechercher dans la page de propriétés de fonctions. Après avoir sélectionné l'objet source, vous pouvez soit double-cliquer dessus ou vous pouvez cliquer dessus une fois et cliquez sur Add. Dans la leçon précédente, nous avons vu que vous pourriez ajouter plus d'une table existante. De la même façon, vous pouvez ajouter plus d'une vue ou fonctions  Après la sélection de (s) la source (s), vous pouvez cliquer sur Fermer dans la boîte de dialogue Add Table Après avoir sélectionné les objets, comme nous l'avons vu dans la leçon précédente, ils afficheraient dans la fenêtre. La barre d'outils du Concepteur de vue pourrait être ajoutée : Si le concepteur de requêtes n'est pas visible, dans le menu principal, vous pouvez cliquer sur View - >Toolbars-> Query Designer. Alternativement, vous pouvez cliquer avec le bouton droit sur n'importe quelle barre d'outils ou le menu principal et cliquez sur Concepteur de requêtes. La fenêtre dans laquelle vous créez une vue affiche quatre sections. Cela signifie que, outre les trois sections que nous avons examinées dans la leçon 13, il y a une nouvelle section : le résultat. Chaque section est représentée dans la barre d'outils du Concepteur de requêtes par un bouton : le bouton Show Diagram Pane , le bouton Show Criteria Pane , le bouton Show SQL Pane et le bouton Show Result Pane .
  • 3. Nous avons déjà passé en revue les trois principales sections (leçon 13). Les résultats de la section affiche le résultat produit par l'instruction SQL lorsqu'il est exécuté Si vous ne souhaitez pas qu'une section particulière ou si vous souhaitez masquer certaines sections, vous pouvez cliquez avec le bouton droit de la souris n'importe où dans le tableau, placez la souris sur le volet et cliquez sur le nom de la section. Pour masquer une section quelconque, vous pouvez cliquer avec le bouton droit de la souris n'importe où dans la fenêtre, positionnez la souris sur Afficher les volets et cliquez sur l'une des sélections : Lors de l'affichage d'une section, son option de menu est entourée.  Comme dans la leçon précédente, si vous utilisez plusieurs tables et elles ne sont pas (encore) liées, vous pouvez faire glisser une colonne d'une table et la déposer sur une autre table pour créer une jointure entre elles.  Comme nous l'avons vu dans les leçons précédentes, pour sélectionner une colonne, vous pouvez cliquer sur la case correspondante dans la liste supérieure. Ce serait l'afficher dans la première zone vide dans la colonne de la colonne et ajouterait son nom à l'instruction SELECT. Vous pouvez également cliquer sur une zone vide dans la colonne de la
  • 4. colonne pour révéler sa zone de liste déroulante, puis cliquez sur la flèche de la zone de liste déroulante et sélectionnez la colonne souhaitée dans la liste  Après avoir sélectionné la colonne, sa case pourrait être vérifiée dans la partie supérieure de la fenêtre, son nom s'affiche dans la colonne de la colonne et elle pourrait être ajoutée à l'instruction SELECT. Si vous connaissez le nom de la colonne que vous souhaitez ajouter, vous pouvez le saisir manuellement dans l'instruction SELECT. La structure d'une vue peut être considérée comme complète lorsque l'instruction SELECT est aussi complète que possible. À tout moment, pour tester les résultats d'une vue, vous pouvez l'exécuter.Pour le faire, vous pouvez cliquer sur le bouton Execute SQL . Cela entraînera la partie inférieure de l'affichage pour afficher les résultats de la requête. Voici un exemple : Comme je l'ai déjà dit, l'une des raisons pour la création d'une vue est de pouvoir l'ut iliser maintes et maintes fois. Pour atteindre cet objectif, la vue doit être enregistrée. Comme la plupart des objets dans SQL Server, une vue doit avoir un nom et il est enregistré dans son propre fichier. Pour enregistrer une vue à partir de la fenêtre d'affichage, vous pouvez cliquer sur le bouton Enregistrer de la barre d'outils. Vous pouvez aussi tenter de fermer la fenêtre. Vous serez alors invité à enregistrer. Lors de l'enregistrement d'une vue, vous devez lui donner un nom qui suit les règles et les suggestions de SQL. Formation pratique: Création visuelle d' une vue
  • 5. 1. Dans l'Explorateur d'objets, développez les bases de données et les nœuds de RealEstate2 2. Cliquez avec le bouton droit de la souris sur Views, puis cliquez sur New View 3. Dans la boîte de dialogue Add Table, double-cliquez sur PropertyTypes, Properties et Conditions 4. Cliquez sur Fermer 5. Dans le tableau PropertyTypes, faites glisser PropertyTypeID et déposez-le sur le champ PropertyTypeID de la table de propriétés 6. A partir du tableau de Conditions, faites glisser ConditionID et déposez-le sur le champ ConditionID de la table de propriétés 7. Sur les tables, sélectionnez les champs suivants : PropertyNumber, PropertyType, Condition, City, ZIPCode, Bedrooms, Bathrooms, FinishedBasement, Stories, YearBuilt et MarketValue 8. Dans la section Critères, cliquez sur PropertyType et appuyez sur la touche Tab 6 fois. Dans son champ de filtre, tapez Single Family 9. Appuyez sur la touche de tabulation et, dans son Or, tapez Townhouse Le nom d'une vue Dans nos leçons, voici les règles que nous utiliserons pour nommer nos vues :  Un nom commence par une lettre. Exemples : n, act ou Second  Après la première lettre, le nom aura des combinaisons de caractères de soulignement, de lettres et de chiffres. Des exemples sont n24, act_52_t  Un nom n'inclut pas les caractères spéciaux tels que !, @, #, $, %, ^, &, ou *  Un nom n'aura pas les espaces  Si le nom est une combinaison de mots, chaque mot commencera par les majuscules. Exemples : DateHired, RealSport ou DriversLicenseNumber Après avoir enregistré une vue, elle devient partie intégrante du nœud de Vues de sa base de données : un nœud serait créé pour elle et son nom s'affiche dans le nœud de vues de sa base de données. Formation pratique: Enregistrementd'une vue 1. Pour enregistrer la vue, sur la barre d'outils standard, cliquez sur le bouton Enregistrer
  • 6. 2. Définissez le nom Homes puis cliquez sur le bouton OK. 3. Fermez la fenêtre d'affichage 4. Dans l'Explorateur d'objets, sous RealEstate2, cliquez avec le bouton droit de la souris sur Views et cliquez sur New View 5. Dans la boîte de dialogue Add Table, double-cliquez sur PropertyTypes, Properties et Conditions 6. Cliquez sur Fermer 7. Dans le tableau PropertyTypes, faites glisser PropertyTypeID et déposez-le sur le champ PropertyTypeID de la table Properties 8. A partir du tableau de Conditions, faites glisser ConditionID et déposez-le sur le champ ConditionID de la table de Properties 9. Sur les tables, sélectionnez les champs suivants : PropertyNumber, PropertyType, Condition, City, ZIPCode, Bedrooms, Bathrooms et MarketValue 10. Dans la section Critères, cliquez sur PropertyType. Appuyez sur Tab 3 fois et appuyez sur la barre d'espace pour supprimer la coche de son champ de sortie 11. Appuyez sur la touche de tabulation 3 fois. Dans son champ de Filtre, tapez Condominiums et appuyez sur la touche Entrée 12. Dans le menu principal, cliquez sur Fichier-> Enregistrer
  • 7. 13. Définissez le nom de Condos puis cliquez sur le bouton OK. 14. Fermez la fenêtre d'affichage Avec Transact-SQL Pour créer par programmation une vue, vous utilisez la syntaxe SQL suivante : CREATE VIEW ViewName AS SELECT Statement Microsoft SQL Server peut générer du code squelette d'une vue pour vous. Pour l'utiliser, tout d'abord créez une fenêtre de requête vide. Affichez l'Explorateur de modèle. Dans l'Explorateur de modèle, développez le nœud d'affichage. À partir du nœud de la vue, faites glisser Create View et déposez-le dans la fenêtre de requête. La création d'une vue commence avec l'expression CREATE VIEW suivie d'un nom. Le nom d'une vue suit les règles et les suggestions que nous avons examinées ci-dessus. Après le nom de la vue, utilisez le mot-clé AS pour indiquer que vous êtes prêt pour définir le mode d'affichage. Parce qu'une vue est principalement une instruction SQL, elle est définie à l'aide d'une instructionSELECT, utilisant les mêmes règles que nous avons étudiées pour l'analyse des données. Voici un exemple d'une vue : CREATE VIEW dbo.ListOfMen AS SELECT dbo.Genders.Gender, dbo.Persons.FirstName, dbo.Persons.LastName FROM dbo.Genders INNER JOIN dbo.Persons ON dbo.Genders.GenderID = dbo.Persons.GenderID WHERE (dbo.Genders.Gender = N'Male '); GO Après la création de l'instruction SQL qui définit la vue, vous devez exécuter l'instruction. Si à l'aide d'une fenêtre de requête, vous pouvez le faire en appuyant sur la touche F5. Une fois que l'instruction est exécutée, son nom est automatiquement ajouté au nœud de vues de sa base de données même si vous n'enregistrez pas son code. Formation pratique: Création d'une vue 1. Assurez-vous que vous disposez de la base de données BNS Yugo créée dans la Leçon13. Si vous ne l'avez pas créée, faites-le maintenant. Dans l'Explorateur d'objets, cliquez avec le bouton droit sur YugoNationalBank, puis cliquez sur Nouvelle requête 2. Pour créer un nouvel affichage, tapez le code suivant 3. Use YugoNationalBank ; 4. GO 5. CREATE VIEW PayrollPreparation 6. AS 7. SELECT dbo.Employees.EmployeeNumber, 8. dbo.Employees.LastName +', N'+ 9. dbo.Employees.FirstName AS [Full Name],
  • 8. 10. dbo.Employees.HourlySalary, 11. dbo.TimeSheets.TimeSheetCode, dbo.TimeSheets.Week1Monday, 12. dbo.TimeSheets.Week1Tuesday, dbo.TimeSheets.Week1Wednesday, 13. dbo.TimeSheets.Week1Thursday, dbo.TimeSheets.Week1Friday, 14. dbo.TimeSheets.Week1Saturday, dbo.TimeSheets.Week1Sunday, 15. dbo.TimeSheets.Week2Monday, dbo.TimeSheets.Week2Tuesday, 16. dbo.TimeSheets.Week2Wednesday, dbo.TimeSheets.Week2Thursday, 17. dbo.TimeSheets.Week2Friday, dbo.TimeSheets.Week2Saturday, 18. dbo.TimeSheets.Week2Sunday 19. FROM dbo.Employees INNER JOIN dbo.TimeSheets 20. ON dbo.Employees.EmployeeNumber = dbo.TimeSheets.EmplNumber ; GO 21. Pour exécuter le code, appuyez sur la touche F5 22. Supprimez le contenu de l'ensemble de la fenêtre d'affichage Ouverture ou Exécution d'une vue Ouvertured'une vue Comme je l'ai déjà dit, une vue est une technique de sélection d'enregistrements à afficher ou à utiliser sur un nouveau. Après qu'une vue ait été créée, vous pouvez l'ouvrir. Vous disposez de deux options principales.  Pour voir la structure d'une vue, telles que la (s) table (s) sur la/lesquelle (s) elle (s) est/sont fondée (s) et les relations, ni celles qui les composent, dans l'Explorateur d'objets, cliquez avec le bouton droit de la souris sur la vue et cliquez sur Créer  Pour voir le code SQL qui rend une vue, dans l'Explorateur d'objets, cliquez avec le bouton droit de la souris sur la vue et cliquez sur Modifier L'exécution d'une vue L'exécution d'une vue se compose de voir ses résultats. Pour ce faire, vous disposez de différentes options. Pour afficher les résultats d'une vue :  Ouvrez une fenêtre de requête vide associée à la base de données qui contient la vue. Dans la fenêtre de requête, écrivez une instruction SELECT en utilisant les mêmes formules et règles que nous avons vues pour les tables. Voici un exemple :
  • 9.  A partir de l'Explorateur d'objets, développez la base de données et ses vues de noeud. Cliquez avec le bouton droit de la souris sur le nom de la vue et cliquez sur Ouvrir l'affichage Formation pratique: L'exécution d'une vue 1. Dans l'Explorateur d'objets, sous RealEste2, développez des vues si nécessaire. Cliquez avec le bouton droit de la souris sur Condos, puis cliquez sur Ouvrir l'affichage 2. Fermez la fenêtre d'affichage 3. Dans l'Explorateur d'objets, cliquez avec le bouton droit sur YugoNationalBank, puis cliquez sur Nouvelle requête 4. Pour exécuter la vue, dans la fenêtre d'affichage vide, tapez ce qui suit USE YugoNationalBank GO SELECT PayrollPreparation.* FROM PayrollPreparation ; GO 5. Pour exécuter l'affichage, appuyez sur la touche F5 6. Supprimez le contenu de la fenêtre Maintenance de vue Les propriétés d'une vue Dans Transact-SQL, une vue est considérée comme un objet. En tant que tel, il peut être consulté, modifié ou supprimé. Comme n'importe quel objet régulier, une vue possède ses propres caractéristiques. Pour les consulter, vous pouvez cliquez avec le bouton droit de la souris sur la vue et cliquez sur Propriétés. Une boîte de dialogue View Properties apparaitrait. Elle peut vous donner des informations telles que le nom de la base de données à laquelle la vue appartient, la date de création de la vue, etc.. Formation pratique: Accès aux propriétés d'une vue 1. Pour créer une autre vue, tapez ce qui suit :
  • 10. 2. --============================================= 3. --Database : YugoNationalBank 4. --View : TimeSheet 5. --============================================= 6. USE YugoNationalBank 7. GO 8. 9. 10. IF object_id(N'TimeSheet', N'V') IS NOT NULL 11. DROP VIEW dbo.TimeSheet 12. GO 13. 14. 15. CREATE VIEW dbo.TimeSheet 16. AS 17. SELECT EmplNumber, StartDate, 18. Week1Monday, Week1Tuesday, Week1Wednesday, 19. Week1Thursday, Week1Friday, 20. Week1Saturday, Week1Sunday, 21. Week2Monday, Week2Tuesday, Week2Wednesday, 22. Week2Thursday, Week2Friday, Week2Saturday, 23. Week2Sunday, notes FROM TimeSheets ; 24. Appuyez sur F5 pour exécuter l'instruction. 25. Supprimez le contenu de la fenêtre 26. Dans l'Explorateur d'objets, sous YugoNationalBank, cliquez avec le bouton droit de la souris sur Views et cliquez sur Actualiser 27. Développez les vues si nécessaire. Cliquez avec le bouton droit de la souris sur TimeSheet, puis cliquez sur Properties 28. Appuyez sur Echap pour fermer la boîte de dialogue Properties Modification d'une vue Après qu'une vue a été créée, par vous ou par quelqu'un d'autre, vous pouvez trouver qu'elle a une colonne inutile, elle a besoin d'une colonne manquante, elle comprend des enregistrements inutiles ou certains enregistrements sont manquants. Heureusement, vous pouvez modifier la structure ou le code d'une vue. Ceci est appelé un avis de modification. Vous disposez de deux options principales :  Pour modifier visuellement une vue, dans l'Explorateur d'objets, cliquez avec le bouton droit de la souris sur la vue et cliquez sur Créer. À partir de la fenêtre d'affichage, vous pouvez ajouter ou supprimer des colonnes. Vous pouvez également modifier des options dans une des sections de la fenêtre. Après modification de l'affichage, enregistrez-le et fermez-le  Pour modifier le code d'une vue, dans l'Explorateur d'objets, cliquez dessus avec le bouton droit de la souris et affichez les modifications. Après modification de code de l'affichage, vous pouvez l'enregistrer  A Partir de l'Explorateur d'objets, cliquez avec le bouton droit de la souris sur la vue, positionnez la souris sur Script View As-> ALTER to-> New Query Editor Window La formule de base pour modifier une vue par programme est la suivante : ALTER VIEW ViewName AS SELECT Statement
  • 11. Vous démarrez l'altération avec l'expression ALTER VIEW suivie du nom de la vue. Après le nom de la vue, utilisez le mot-clé AS pour indiquer que vous êtes prêt à montrer le changement. Après le mot-cléAS, vous pouvez ensuite définir la vue comme bon vous semble. Par exemple, vous pouvez créer une instruction SELECT qui inclut une modification du code existant ou une instruction entièrement nouvelle. Dans la vue que nous avons créée pour afficher une liste des hommes d'une table, nous avons inclus une colonne pour le sexe. Cette colonne est inutile ou redondante parce que nous savons déjà que la liste inclut uniquement des hommes. Voici un exemple de modification de l'affichage à supprimer (ou plutôt omettre) la colonne Gender de la table Persons : ALTER VIEW dbo.ListOfMen AS SELECT dbo.Persons.FirstName, dbo.Persons.LastName FROM dbo.Genders INNER JOIN dbo.Persons ON dbo.Genders.GenderID = dbo.Persons.GenderID WHERE (dbo.Genders.Gender = N'Male ') ; La Suppression d'une vue Au lieu de modifier une vue, si vous le trouvez complètement inutile, vous pouvez la supprimer de sa base de données. Vous disposez de différentes options. Pour supprimer une vue :  Dans l'Explorateur d'objets, dans une base de données, cliquez avec le bouton droit de la souris sur le nom de la vue et cliquez sur Supprimer. Vous aurez l'occasion de confirmer votre intention ou de changer d'avis  Dans l'Explorateur d'objets, cliquez avec le bouton droit de la souris sur la vue, positionnez la souris sur Script View As-> DROP To-> New Query Editor Window  Ouvrez une fenêtre de requête vide associée à la base de données qui possède l'affichage intempestif. Dans l'Explorateur de modèle, dans le nœud de la vue, faites glisser la vue et déposez-la dans la fenêtre de requête La formule pour supprimer par programmation une vue est la suivante : DROP VIEW ViewName Sur le côté droit de l'expression DROP VIEW, entrez le nom de la vue indésirable et exécutez l'instruction. Vous ne serez pas averti avant que l'interprète supprime la vue. L'Utilisation d'une vue L'Entrée de données avec une Vue Comme vu jusqu'à présent, une Vue est une liste d'enregistrements d'une table. Comme vous le pensez peut-être, la vue la plus simple est probablement la création à partir d'une seule table. Imaginez que vous avez une table d'employés et que vous souhaitez créer une vue qui répertorie uniquement leurs noms. Vous pouvez créer une vue comme suit : CREATE VIEW dbo.EmployeesNames AS SELECT FirstName, LastName, LastName + ', N' + FirstName AS FullName FROM Persons ;
  • 12. GO Sur ce point de vue qui est basé sur une table, vous pouvez effectuer l'entrée de données, à l'aide de la vue, plutôt que de la table. Pour le faire, vous suivez les mêmes règles que nous avons examinées à la leçon 9. Voici un exemple : INSERT INTO dbo.EmployeesNames(FirstName, LastName) VALUES(N'Peter', N'Justice') ; Si vous appliquez l'entrée de données à l'aide d'une vue, les données que vous fournissez sont saisies sur la table de base ; cela signifie que le tableau pourrait être mis à jour automatiquement. Basé sur cette fonctionnalité, vous pouvez créer une vue délibérément destinée à mettre à jour une table de sorte que, dans la vue, vous devrez inclure uniquement les colonnes qui doivent être mises à jour. Pratique : Exécution de saisie de données à l'aide d'une vue 1. Pour créer une fonction, nous utiliserons, entrerons le code suivant : 2. --= ================================================= 3. --Database : YugoNationalBank 4. --Function : CreateTimeSheetCode 5. --Purpose : This function takes an employee number 6. -- and the start date of a time sheet. 7. -- Then it creates a unique number 8. -- in the format 0000000000000 9. -- The first 5 digits represent the 10. -- employee number, 11. -- the second 4 digits represent the year, 12. -- the 2 digits represent the month, 13. -- that last 2 digits represent the day 14. --================================================== 15. USE YugoNationalBank 16. GO 17. 18. 19. IF OBJECT_ID (N'dbo.CreateTimeSheetCode') IS NOT NULL 20. DROP FUNCTION dbo.CreateTimeSheetCode 21. GO 22. 23. 24. 25. CREATE FUNCTION dbo.CreateTimeSheetCode(@EmplNbr nvarchar(6), 26. @dteStart datetime2) 27. RETURNS nvarchar(15) 28. AS 29. BEGIN 30. DECLARE @strMonth AS nvarchar(20); 31. DECLARE @strDay AS nvarchar(20); 32. DECLARE @iMonth AS int; 33. DECLARE @iDay AS int; 34. DECLARE @strTimeSheetCode nvarchar(20); 35. 36. 37. SET @iMonth = CONVERT(nvarchar(20), MONTH(@dteStart)); 38. SET @iDay = CONVERT(nvarchar(20), DAY(@dteStart));
  • 13. 39. 40. 41. IF @iMonth < 10 42. SET @strMonth = CONVERT(nvarchar(20), YEAR(@dteStart)) + 43. '0' + CONVERT(nvarchar(20), @iMonth); 44. ELSE 45. SET @strMonth = CONVERT(nvarchar(20), YEAR(@dteStart)) + 46. CONVERT(nvarchar(20), @iMonth); 47. IF @iDay < 10 48. SET @strDay = @strMonth + '0' + 49. CONVERT(nvarchar(20), @iDay); 50. ELSE 51. SET @strDay = @strMonth + CONVERT(nvarchar(2), @iDay); 52. 53. SET @strTimeSheetCode = @EmplNbr + @strDay; 54. RETURN @strTimeSheetCode; 55. END GO 56. Appuyez sur F5 pour exécuter 57. Pour effectuer la saisie de données à l'aide d'une vue, entrez le code suivant : 58. USE YugoNationalBank 59. GO 60. -- The following code performs data entry using a view 61. INSERT INTO dbo.TimeSheet 62. VALUES(N'46288', N'1/1/2007', 63. 0.00, 8.50, 9.50, 8.50, 9.00, 0.00, 0.00, 64. 10.00, 9.50, 8.50, 10.50, 9.00, 0.00, 0.00, N''); 65. GO 66. INSERT INTO dbo.TimeSheet 67. VALUES(N'66286', N'1/1/2007', 68. 0.00, 8.50, 6.50, 5.50, 6.50, 0.00, 0.00, 69. 4.00, 6.00, 6.50, 6.00, 5.50, 0.00, 0.00, N''); 70. GO 71. INSERT INTO dbo.TimeSheet 72. VALUES(N'92493', N'1/1/2007', 73. 0.00, 8.00, 9.00, 8.50, 9.50, 0.00, 0.00, 74. 5.50, 6.50, 4.50, 6.00, 4.00, 0.00, 0.00, N''); 75. GO 76. INSERT INTO dbo.TimeSheet 77. VALUES(N'27199', N'1/15/2007', 78. 6.00, 8.50, 0.00, 4.00, 6.50, 0.00, 0.00, 79. 4.00, 0.00, 6.00, 4.00, 0.00, 0.00, 0.00, N''); 80. GO 81. INSERT INTO dbo.TimeSheet 82. VALUES(N'39538', N'1/15/2007', 83. 8.00, 8.00, 6.00, 8.50, 6.00, 0.00, 0.00, 84. 9.50, 10.50, 8.00, 8.00, 8.50, 0.00, 0.00, 85. 'There were a few missing times in the time sheet. ' + 86. 'They have been recorded.'); 87. GO 88. INSERT INTO dbo.TimeSheet 89. VALUES(N'40550', N'1/15/2007', 90. 8.50, 8.00, 0.00, 8.50, 0.00, 0.00, 0.00, 91. 6.00, 6.50, 6.50, 0.00, 4.00, 0.00, 0.00, N''); 92. GO 93. INSERT INTO dbo.TimeSheet 94. VALUES(N'66286', N'1/29/2007', 95. 8.00, 6.50, 9.50, 8.00, 7.50, 0.00, 0.00,
  • 14. 96. 10.50, 9.50, 8.50, 8.00, 10.00, 0.00, 0.00, N''); 97. GO 98. INSERT INTO dbo.TimeSheet 99. VALUES(N'90026', N'2/12/2007', 100. 8.50, 6.50, 8.00, 8.00, 9.50, 0.00, 0.00, 101. 9.50, 8.00, 8.50, 8.00, 8.00, 0.00, 0.00, N''); 102. GO 103. INSERT INTO dbo.TimeSheet 104. VALUES(N'92493', N'2/12/2007', 105. 4.00, 6.50, 5.50, 8.00, 6.50, 0.00, 0.00, 106. 8.00, 8.00, 8.00, 6.00, 8.00, 0.00, 0.00, N''); 107. GO 108. -- The following code updates a table using a function 109. UPDATE dbo.TimeSheets 110. SET TimeSheetCode = dbo.CreateTimeSheetCode(N'46288', N'1/1/2007') 111. WHERE (EmplNumber = N'46288') AND (StartDate = N'1/1/2007'); 112. GO 113. UPDATE dbo.TimeSheets 114. SET TimeSheetCode = dbo.CreateTimeSheetCode(N'66286', N'1/1/2007') 115. WHERE (EmplNumber = N'66286') AND (StartDate = N'1/1/2007'); 116. GO 117. UPDATE dbo.TimeSheets 118. SET TimeSheetCode = dbo.CreateTimeSheetCode(N'92493', N'1/1/2007') 119. WHERE (EmplNumber = N'92493') AND (StartDate = N'1/1/2007'); 120. GO 121. UPDATE dbo.TimeSheets 122. SET TimeSheetCode = dbo.CreateTimeSheetCode(N'27199', N'1/15/2007') 123. WHERE (EmplNumber = N'27199') AND (StartDate = N'1/15/2007'); 124. GO 125. UPDATE dbo.TimeSheets 126. SET TimeSheetCode = dbo.CreateTimeSheetCode(N'39538', N'1/15/2007') 127. WHERE (EmplNumber = N'39538') AND (StartDate = N'1/15/2007'); 128. GO 129. UPDATE dbo.TimeSheets 130. SET TimeSheetCode = dbo.CreateTimeSheetCode(N'40550', N'1/15/2007') 131. WHERE (EmplNumber = N'40550') AND (StartDate = N'1/15/2007'); 132. GO 133. UPDATE dbo.TimeSheets 134. SET TimeSheetCode = dbo.CreateTimeSheetCode(N'66286', N'1/29/2007') 135. WHERE (EmplNumber = N'66286') AND (StartDate = N'1/29/2007'); 136. GO 137. UPDATE dbo.TimeSheets 138. SET TimeSheetCode = dbo.CreateTimeSheetCode(N'90026', N'2/12/2007') 139. WHERE (EmplNumber = N'90026') AND (StartDate = N'2/12/2007'); 140. GO 141. UPDATE dbo.TimeSheets 142. SET TimeSheetCode = dbo.CreateTimeSheetCode(N'92493', N'2/12/2007') 143. WHERE (EmplNumber = N'92493') AND (StartDate = N'2/12/2007'); GO 144. Appuyez sur F5 pour exécuter 145. Supprimer le contenu de la fenêtre Une vue avec des noms d'alias Il est important de savoir qu'une vue est plus d'un type de table, que n'importe quel autre objet. Cela signifie qu'une vue n'est pas une fonction, mais elle peut utiliser une fonction. L'argument de mot ici signifie uniquement que certaines valeurs peuvent être transmises à une vue mais ces
  • 15. valeurs peuvent être spécifiées uniquement lors de la création de la vue. Elles ne sont pas de vrais arguments. Lors de la structuration d'une vue, vous pouvez créer des espaces réservés pour les colonnes et les transmettre dans les parenthèses de la vue. Cela s'effectuerait comme suit : CREATE VIEW CarIdentifier([Tag #], Manufacturer, [Type of Car], Available)... Si vous utilisez cette technique, les noms transmis dans les parenthèses de la vue sont les légendes qui s'affichent au lieu des colonnes de la vue. Cette technique vous permet de spécifier les chaînes de votre choix pour les colonnes. Si vous souhaitez une en-tête de colonne pour afficher le nom réel de la colonne, écrivez le même. Dans le cas contraire, vous pouvez utiliser n'importe quelle chaîne souhaitée pour la colonne. Si le nom est en un mot, vous pouvez le taper. Si le nom contient des mots différents, incluez-les entre un crochet d'ouverture "[" et un crochet fermant"]". Après avoir énuméré les chaînes nécessaires comme les légendes des colonnes, dans votre instructionSELECT de la vue, vous devez utiliser le même nombre exact de colonnes comme le nombre d'arguments de la vue. En fait, chaque colonne de votre instruction SELECT doit correspondre à un argument du même ordre. Voici un exemple : CREATE VIEW dbo.MenAndWomen([First Name], [Last Name], Gender) AS SELECT dbo.Persons.FirstName, dbo.Persons.LastName, dbo.Genders.Gender FROM dbo.Genders INNER JOIN dbo.Persons ON dbo.Genders.GenderID = dbo.Persons.GenderID ; GO Car, comme nous l'avons déjà dit, une vue n'est pas une fonction et les valeurs passées à la vue ne sont pas des arguments réels, lors de l'exécution de la vue, ne spécifiez pas le nom des arguments. Créez simplement une instruction SELECT et spécifiez le nom de la vue comme la source. Voici un exemple :
  • 16. Vues et requêtes conditionnelles Outre ses caractéristiques d'interrogation lui permettant d'effectuer une analyse de données, probablement la plus importante fonction d'une requête est sa capacité à être aussi complexe que possible grâce à la gestion des instructions conditionnelles. Il est ainsi possible d'utiliser une vue au lieu d'une table dans les opérations et les expressions qui compliquent le code ou la structure d'une table. Lorsque vous créez une vue, dans sa déclaration SELECT, vous pouvez effectuer des sélections de colonne, les commander et définir des critères pour exclure certains enregistrements. Voici un exemple : Fonctions et vues
  • 17. Pour créer des vues plus complexes ou avancées, vous pouvez impliquer des fonctions. Comme toujours, probablement les fonctions les plus faciles à utiliser sont celles intégrées. S'il n'y a aucune fonction intégrée qui effectue l'opération que vous souhaitez, vous pouvez créer votre propre fonction. Voici un exemple : USE People ; GO CREATE FUNCTION dbo.GetFullName ( @FName type nvarchar (20), @LName type nvarchar (20) ) RETURNS nvarchar(41) AS BEGIN RETURN @LName + ', N' + @ FName ; END GO Une fois que vous avez une fonction que vous souhaitez utiliser, vous pouvez l'appeler dans le corps de votre vue comme vous le jugez nécessaire. Voici un exemple : CREATE VIEW dbo.MyPeople AS SELECT dbo.GetFullName (FirstName, LastName) AS [Full Name], dbo.Genders.Gender FROM Genders INNER JOIN dbo.Persons ON dbo.Genders.GenderID = dbo.Persons.GenderID ; Cela donnerait : Formation pratique: Utilisation d'une fonction dans une vue
  • 18. 1. Dans l'Explorateur d'objets, sous YugoNationalBank, développez Views si nécessaire. Cliquez avec le bouton droit de la souris sur PayrollPreparation, positionnez la souris sur Script View As-> ALTER to-> New Query Editor Window 2. Modifiez le code comme suit : 3. USE [YugoNationalBank] 4. GO 5. SET ANSI_NULLS ON 6. GO 7. SET QUOTED_IDENTIFIER ON 8. GO 9. ALTER VIEW [dbo].[PayrollPreparation] 10. AS 11. SELECT dbo.Employees.EmployeeNumber, 12. dbo.Employees.LastName + ', N' + 13. dbo.Employees.FirstName AS [Full Name], 14. dbo.Employees.HourlySalary, 15. dbo.TimeSheets.TimeSheetCode, dbo.TimeSheets.Week1Monday, 16. dbo.TimeSheets.Week1Tuesday, dbo.TimeSheets.Week1Wednesday, 17. dbo.TimeSheets.Week1Thursday, dbo.TimeSheets.Week1Friday, 18. dbo.TimeSheets.Week1Saturday, dbo.TimeSheets.Week1Sunday, 19. dbo.TimeSheets.Week2Monday, dbo.TimeSheets.Week2Tuesday, 20. dbo.TimeSheets.Week2Wednesday, dbo.TimeSheets.Week2Thursday, 21. dbo.TimeSheets.Week2Friday, dbo.TimeSheets.Week2Saturday, 22. dbo.TimeSheets.Week2Sunday, 23. 24. CAST(dbo.TimeSheets.Week1Monday AS SmallMoney) + 25. CAST(dbo.TimeSheets.Week1Tuesday AS SmallMoney) + 26. CAST(dbo.TimeSheets.Week1Wednesday AS SmallMoney) + 27. CAST(dbo.TimeSheets.Week1Thursday AS SmallMoney) + 28. CAST(dbo.TimeSheets.Week1Friday AS SmallMoney) + 29. CAST(dbo.TimeSheets.Week1Saturday AS SmallMoney) + 30. CAST(dbo.TimeSheets.Week1Sunday AS SmallMoney) 31. AS [Total Week1], 32. CAST(dbo.TimeSheets.Week2Monday AS SmallMoney) + 33. CAST(dbo.TimeSheets.Week2Tuesday AS SmallMoney) + 34. CAST(dbo.TimeSheets.Week2Wednesday AS SmallMoney) + 35. CAST(dbo.TimeSheets.Week2Thursday AS SmallMoney) + 36. CAST(dbo.TimeSheets.Week2Friday AS SmallMoney) + 37. CAST(dbo.TimeSheets.Week2Saturday AS SmallMoney) + 38. CAST(dbo.TimeSheets.Week2Sunday AS SmallMoney) 39. AS [Total Week2], 40. CAST(dbo.TimeSheets.Week1Monday AS SmallMoney) + 41. CAST(dbo.TimeSheets.Week1Tuesday AS SmallMoney) + 42. CAST(dbo.TimeSheets.Week1Wednesday AS SmallMoney) + 43. CAST(dbo.TimeSheets.Week1Thursday AS SmallMoney) + 44. CAST(dbo.TimeSheets.Week1Friday AS SmallMoney) + 45. CAST(dbo.TimeSheets.Week1Saturday AS SmallMoney) + 46. CAST(dbo.TimeSheets.Week1Sunday AS SmallMoney) + 47. CAST(dbo.TimeSheets.Week2Monday AS SmallMoney) + 48. CAST(dbo.TimeSheets.Week2Tuesday AS SmallMoney) + 49. CAST(dbo.TimeSheets.Week2Wednesday AS SmallMoney) + 50. CAST(dbo.TimeSheets.Week2Thursday AS SmallMoney) + 51. CAST(dbo.TimeSheets.Week2Friday AS SmallMoney) + 52. CAST(dbo.TimeSheets.Week2Saturday AS SmallMoney) + 53. CAST(dbo.TimeSheets.Week2Sunday AS SmallMoney) 54. AS [Total Time Sheet] 55. FROM dbo.Employees INNER JOIN dbo.TimeSheets ON dbo.Employees.EmployeeNumber = dbo.TimeSheets.EmplNumber;
  • 19. 56. Pour mettre à jour la requête, dans le menu principal, cliquez sur Query-> Execute 57. Supprimer le contenu de la fenêtre 58. Pour voir le résultat de la requête, tapez ce qui suit : 59. Use YugoNationalBank 60. GO 61. USE YugoNationalBank 62. GO 63. PayrollPreparation.* 64. SELECT FROM PayrollPreparation ; GO 65. Supprimez le contenu de la fenêtre Résumé des vues Introduction Examinez le tableau suivant de vidéos créé dans une base de données VideoCollection : -- ============================================= -- Database: VideoCollection -- ============================================= USE master GO -- Drop the database if it already exists
  • 20. IF EXISTS (SELECT name FROM sys.databases WHERE name = N'VideoCollection' ) DROP DATABASE VideoCollection GO CREATE DATABASE VideoCollection GO USE VideoCollection; GO CREATE TABLE Videos ( VideoID int identity(1, 1) not null, Title nvarchar(50) not null, Director nvarchar(50), VideoLength int, Rating nchar(10), YearReleased int ); GO INSERT INTO Videos(Title, Director, VideoLength, Rating, YearReleased) VALUES(N'Two for the Money', N'D.J. Caruso', 123, N'R', 2008), (N'Her Alibi', N'Bruce Beresford', 94, N'PG-13', 1998), (N'Memoirs of a Geisha', N'Rob Marshall', 145, N'PG-13', 2006), (N'Wall Street', N'Oliver Stone', 126, N'R', 2000); GO INSERT INTO Videos(Title, Director, VideoLength, Rating) VALUES(N'Distinguished Gentleman (The)', N'Jonathan Lynn', 112, N'R'); GO INSERT INTO Videos(Title, Director, YearReleased, VideoLength) VALUES(N'The Silence of the Lambs', N'Jonathan Demme', 1991, 118); GO INSERT INTO Videos(Title, Director, YearReleased, VideoLength) VALUES(N'A Few Good Men', N'Rob Reiner', 1992, N'138'); GO GO INSERT INTO Videos(Title, Director, VideoLength, Rating, YearReleased) VALUES(N'Michael Jackson Live in Bucharest', N'Andy Morahan', 122, N'N/R', 1992); GO INSERT INTO Videos(Title, Director, Rating, VideoLength) VALUES(N'The Lady Killers', N'Joel Coen & Ethan Coen', N'R', N'104'); GO
  • 21. INSERT INTO Videos(Title, Director) VALUES(N'Outfoxed', N'Robert Greenwald'); GO INSERT INTO Videos(Title, Director, VideoLength, Rating, YearReleased) VALUES(N'Sneakers', N'Phil Alden Robinson', 126, N'PG-13', 1992), (N'Soldier', N'Paul Anderson', 99, N'R', 1998), (N'War of the Roses (The)', N'Dany de Vito', 116, N'R', 2001), (N'Last Castle (The)', N'Rod Lurie', 133, N'R', 2001); GO INSERT INTO Videos(Title, Director, VideoLength) VALUES(N'Ghosts of Mississippi', N'Rob Reiner', 130); GO Il existe différents types de statistiques, que vous souhaiterez peut -être obtenir à partir de cette table. Vous pouvez connaître le nombre de vidéos dans le tableau. Vous souhaitez connaître le nombre de vidéos qui sont notés R, ou le nombre des vidéos nommées PG-13. Vous pouvez connaître la durée moyenne des vidéos. Pour vous aider à obtenir ces statistiques, vous pouvez créer une requête sommaire. Une vue est dénommée résumé si elle fournit une ou plusieurs statistiques analytiques sur les enregistrements. Création d'une vue de synthèse Avant de créer une vue de synthèse, dans l'Explorateur d'objets, développez la base de données sur laquelle vous allez travailler. Cliquez avec le bouton droit de la souris sur Views, puis cliquez sur New View... Dans la boîte de dialogue Add Table, sélectionnez les tables (ou view(s)) et fermez-les. Pour lancer une requête sommaire :  Cliquez avec le bouton droit de la souris quelque part dans la fenêtre du milieu, puis cliquez sur Add Group By  Dans la barre d'outils du Concepteur de vue, cliquez sur le bouton Add Group By  Dans le menu principal, cliquez sur View Designer, puis cliquez sur Add Group By Il obtient la vue prête pour le résumé. La formule pour créer une vue synthétique par programmation est la suivante : SELECT What FROM WhatObject(s) GROUP BY Column (s) La nouvelle expression dans cette formule est GROUP BY. Cela indique que vous souhaitez résumer un groupe de valeurs d'une ou de plusieurs colonnes. Bien entendu, il y a des règles à suivre. Bien que vous puissiez créer une vue récapitulative avec tous les champs ou les champs d'une vue, l'objectif de la vue est de résumer les données. Pour une bonne vue récapitulative, vous devez sélectionner une colonne où les enregistrements contiennent des catégories de données. Cela signifie que les enregistrements dans la liste doivent être regroupés par catégories. Pour cela, le SQL fournit l'expression GROUP BY. Cela signifie que, lorsque les enregistrements affichent, ils seraient regroupés par leurs catégories. Par exemple, si vous souhaitez obt enir le nombre de vidéos
  • 22. par cote, vous sélectionnez la colonne qui contient cette information : Rating. Vous pouvez également sélectionner d'autres colonnes. Voici un exemple : Lorsque les résultats se montrent, ils seraient regroupés par leurs catégories :
  • 23. Comme je l'ai déjà dit, une vue récapitulative vise à fournir des statistiques. Par conséquent, il est normal que vous vous intéressez uniquement à la (aux) colonne (s) qui tient (ent) les statistiques de votre choix et éviter les colonnes qui sont sans importance. En conséquence, si vous sélectionnez (uniquement) une colonne qui contient les informations que vous souhaitez, dans la liste qui en résulte, chacune de ses catégories s'afficherait une seule fois :
  • 24. Résumé des valeurs Pour obtenir les types de statistiques voulues, dans la section critères, ajoutez la même colonne une fois de plus et donnez-lui une légende dans la section alias. Puis, cliquez sur la zone Group By qui correspond à la colonne en double :
  • 25. En réalité, une vue récapitulative utilise une fonction d'agrégation pour afficher son résultat :  Count : le moteur de base de données utilise la fonction Count() pour compter le nombre d'occurrences de la catégorie dans la colonne et produit le total. Cette fonction compte également des valeurs NULL. La syntaxe de la fonction Count() est : int COUNT ({[[ALL | DISTINCT] expression] | *})  Cette fonction prend un seul argument. Pour obtenir le nombre d'occurrences d'une valeur, dans la section critères, sélectionnez COUNT(*). Voici un exemple :
  • 27. La fonction Count() renvoie une valeur de type int. Si vous travaillez sur un grand nombre d'enregistrements, vous pouvez appeler la fonction Count_Big(). Sa syntaxe est la suivante : bigint COUNT_BIG ({[ALL | DISTINCT] expression} | *)  Examinez le tableau ci-après nommé : -- ============================================= -- Database: DepartmentStore -- ============================================= USE master GO -- Drop the database if it already exists IF EXISTS (SELECT name FROM sys.databases WHERE name = N'VideoCollection' ) DROP DATABASE DepartmentStore GO
  • 28. CREATE DATABASE DepartmentStore GO USE DepartmentStore; GO -- ============================================= -- Database: DepartmentStore -- Table: Customer -- Description: This table holds some information -- about the customers who hold a store -- credit card -- ============================================= CREATE TABLE Customers ( CustomerID int identity(1, 1) not null, AccountNumber nchar(10) not null, FullName nvarchar(50) not null ); GO -- ============================================= -- Database: DepartmentStore -- Table: CreditCardPayments -- Description: This table holds the records of payments -- of the customers who hold a store -- credit cad -- ============================================= CREATE TABLE CreditCardPayments ( PaymentID int identity(1, 1) not null, CustomerAccount nchar(10) not null, Amount money not null ); GO INSERT INTO Customers(AccountNumber, FullName) VALUES(N'924-074', N'Daniel Caruso'), (N'248-006', N'Annette Greenwald'), (N'570-816', N'Robert Stonewall'), (N'824-692', N'John Stons'); GO INSERT INTO CreditCardPayments(CustomerAccount, Amount) VALUES(N'924-074', 15), (N'248-006', 25), (N'924-074', 50), (N'570-816', 30), (N'248-006', 20), (N'570-816', 120), (N'924-074', 95), (N'924-074', 115), (N'570-816', 15), (N'248-006', 100), (N'824-692', 75), (N'924-074', 50), (N'824-692', 40), (N'924-074', 45), (N'248-006', 125); GO  Si la colonne contient des valeurs numériques : o Sum : la fonction Sum() est utilisée pour résumer les valeurs dans la catégorie. La syntaxe de la fonction Sum() est : Number SUM ([ALL | DISTINCT] expression)
  • 29. o Voici un exemple : o Avg : la somme de la valeur dans une catégorie pourrait être divisée par le nombre d'occurrences dans cette catégorie pour obtenir la moyenne. La syntaxe de la fonction Avg() est : Number AVG ([ALL | DISTINCT] expression)
  • 30. o Voici un exemple : o Min : la valeur la plus basse de la catégorie serait produite à partir de la fonction Min(). La syntaxe de cette fonction est la suivante : DependsOnType MIN ([ALL | DISTINCT] expression)
  • 31. o Voici un exemple : o Max : la valeur la plus élevée de la catégorie serait produite à l'aide de la fonction Max(). La syntaxe de cette fonction est la suivante : DependsOnType MAX ([ALL | DISTINCT] expression)
  • 32. o Voici un exemple : o StdDev : la fonction StdDev() est utilisée pour calculer l'écart de toutes les valeurs numériques d'un groupe. S'il n'y a pas de valeur ou de la même valeur dans le groupe considéré, cette fonction renvoie la valeur NULL. Cela signifie qu'il doit y avoir au moins deux valeurs différentes dans le groupe. La syntaxe de la fonction StdDev() est : float STDEV ([ALL | DISTINCT] expression)
  • 33. Voici un exemple : Notez que la notation N/R produit NULL parce qu'une seule vidéo utilise cette note. o Var : la fonction Var() calcule la variance statistique de toutes les valeurs numériques d'un groupe. S'il n'y a pas de valeur ou de la même valeur dans le groupe considéré, cette fonction renvoie la valeur NULL. La syntaxe de la fonction est : Var() float VAR ([ALL | DISTINCT] expression)
  • 34. Voici un exemple : La variance des valeurs dans la catégorie statistique serait calculée.  Expression : comme son nom l'indique, l'option d'expression vous permet d'écrire votre propre expression qui sera appliquée sur la colonne. Voici un exemple :
  • 35.  Where : pensez à la vue de synthèse suivante qui appelle la fonction COUNT(*) :
  • 36. Notez que cela comprend des vidéos nominales NULL, ce qui n'est pas un réelle évaluation. Imaginez que vous souhaitez inclure uniquement les vidéos qui ont une vraie évaluation. Pour vous aider à définir une condition, vous pouvez utiliser un emplacement d'option. Pour ce faire, dans les critères de section, ajoutez la colonne sur laquelle le résumé doit être appliqué et sélectionnez où. Ensuite, dans la zone de filtre équivalente, tapez la condition et exécutez l'instruction. Voici un exemple :
  • 37. Avoir un critère Lorsque nous avons mentionné une condition Where dans nos points de vues récapitulatives, nous avons vu que nous devions ajouter une colonne en double pour l'appliquer. Dans certains cas, ce n'est pas nécessaire. Tenez compte du résumé suivant des paiements pour chaque compte :
  • 38. Imaginez que vous souhaitez visualiser uniquement les comptes dont les paiements dépassent 250,00. Pour cela, vous pouvez ajouter une clause nommée HAVING à l'instruction. La formule à utiliser est la suivante : La formule pour créer par programmation une vue synthétique est la suivante : SELECT What FROM WhatObject(s) GROUP BY Column(s) HAVING Condition L'opérateur New dans cette formule est HAVING. Il vous permet de spécifier le critère par lequel l'instruction SELECT doit produire ses résultats. Par exemple, affichez uniquement les sommes qui sont supérieures à 250, vous pouvez écrire : SELECT CustomerAccount AS [Account ], SUM(Amount) AS [Total Payments] FROM CreditCardPayments GROUP BY CustomerAccount HAVING SUM(Amount) > 250 Pour indiquer visuellement un critère HAVING, dans le filtre correspondant à la colonne, tapez l'expression conditionnelle et exécutez l'instruction. Voici un exemple :