OFPPT – ISTA BENI MELLAL

© RHATAY – BENTALEB

Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL.

SOMMAIRE
I. LE LANGAGE SQL............................................................3
SQL ( STRUCTURED QUERY LANGAGE = LANGAGE DE REQUÊTE STRUCTURÉ ) N’EST PAS UN LANGAGE DE PROGRAMMATION
AU SENS CLASSIQUE DU TERME, MAIS PLUTÔT UN ENSEMBLE DE VERBES PERMETTANTS DE CRÉER EST DE MANIPULER DES TABLES RELATIONNELLES, VERBES QUI DOIVENT EUX-MÊMES ÊTRE RETOURNÉS OU INCLUS DANS UN AUTRE LANGAGE.

........................3 1. LANGAGE DE DÉFINITION DE DONNÉES (DDL).........................................................................................................3 CREATE TABLE : Crée une nouvelle table.....................................................................................................3

II. SYNTAXE...........................................................................3
Description........................................................................................................................................................3 CREATE INDEX : Crée un nouvel index pour une table existante.............................................................5
Syntaxe.........................................................................................................................................................................5

ALTER TABLE : Modifie une table créée avec l’instruction CREATE .......................................................6 TABLE........................................................................................................................6 CONSTRAINT :.................................................................................................................................................9 DROP : Supprime une table d’une base de données ou supprime un index d’une table.............................11
Syntaxe.......................................................................................................................................................................11

2. LANGAGE DE MANIPULATION DE DONNÉES...............................................................................................................12 L’Instruction SELECT : Requête Sélection.....................................................................................................12 SQL ET L’ALGÈBRE RELATIONNELLE........................................................................................................................15
1.La Restriction...........................................................................................................................................................16

NUMCMD............................................................................16
2.La Projection............................................................................................................................................................16

NUMCMD............................................................................16
3.Le Produit cartésien ................................................................................................................................................16

NUMCMD............................................................................17
Paris................................................................................................................................................................17

C.NUMCMD.........................................................................17
Paris................................................................................................................................................................17 Paris................................................................................................................................................................17 Paris................................................................................................................................................................17
4.La Jointure...............................................................................................................................................................17

NUMCMD............................................................................18
Paris................................................................................................................................................................18 Grenoble.........................................................................................................................................................18

C.NUMCMD.........................................................................18
Ou Aussi..........................................................................................................................................................18
5.L’Union...................................................................................................................................................................19

 Page 1

OFPPT – ISTA BENI MELLAL

© RHATAY – BENTALEB

Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL.

NUMCMD............................................................................19 NUMCMD............................................................................19 NUMCMD............................................................................19
6.L’Intersection...........................................................................................................................................................20

NUMCMD............................................................................20 NUMCMD............................................................................20 NUMCMD............................................................................20
7.La Différence :.........................................................................................................................................................20

NUMCMD............................................................................21 NUMCMD............................................................................21 NUMCMD............................................................................21
8.La Division .............................................................................................................................................................21

Ligne de COM Article ...................................................................................................................22 Les Prédicats : ALL, DISTINCT, DISTINCTROW, TOP ..............................................................................22 Les Fonctions de Regroupement :...................................................................................................................27
La Fonction AVG :.....................................................................................................................................................27 La Fonction Count :....................................................................................................................................................28 La Fonction MIN et MAX :........................................................................................................................................30 La Fonction Sum :.......................................................................................................................................................31

La Clause GROUP BY ..... HAVING :............................................................................................................33 La Clause Order..... BY :................................................................................................................................35 INNER JOIN :.................................................................................................................................................37 LEFT | RIGHT JOIN......................................................................................................................................40 PARAMETERS :..............................................................................................................................................42 SELECT .... INTO .... : Crée une requête de création de table.......................................................................43 INSERT INTO : Requête Ajout.......................................................................................................................44 Update : Requête Mise à jour.........................................................................................................................48

LES MISES À JOUR NE PEUVENT FAIRE APPEL AUX FONCTIONS AVG, COUNT, MAX, MIN, SUM................48
DELETE : Requête suppression......................................................................................................................49 La Clause Where ............................................................................................................................................50 Fieldlist ..........................................................................................................................................................51

 Page 2

OFPPT – ISTA BENI MELLAL

© RHATAY – BENTALEB

Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL.

I.

Le Langage SQL

SQL ( Structured Query Langage = Langage de Requête structuré ) n’est pas un langage de programmation au sens classique du terme, mais plutôt un ensemble de verbes permettants de créer est de manipuler des tables relationnelles, verbes qui doivent eux-mêmes être retournés ou inclus dans un autre langage.
1. Langage de Définition de Données (DDL)

SQL n’est pas seulement un langage de requêtes, il permet en effet de définir des structures de données, de spécifier des contraintes d’intégrité pour maîtriser leur cohérence, d’imposer des droits d’accès garantissant la confidentialité des informations. Tout cela va donc au-delà de simples possibilités d’interrogation et d’extraction. Les instructions permettant ces opérations sont comme suit :

 CREATE TABLE : Crée une nouvelle table.

II.

Syntaxe

CREATE TABLE table (field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...]] [, CONSTRAINT multifieldindex [, ...]])
L’instruction CREATE TABLE se compose des éléments suivants :

Elément
Table field1, field2 Type Size index1, index2 Multifieldindex

Description
Nom de la table à créer. Nom du ou des champs à créer dans la nouvelle table. Vous devez créer au moins un champ. Type de données du field dans la nouvelle table. Taille du champ en caractères (pour les données de type Texte ou Binaire uniquement). Clause CONSTRAINT définissant un index monochamp. Pour plus d'informations sur la façon de le créer, reportez-vous à l’aide relative à la clause CONSTRAINT. Clause CONSTRAINT définissant un index multichamp. Pour plus d'informations sur la façon de le créer, reportez-vous à l’aide relative à la clause CONSTRAINT.

 Page 3

OFPPT – ISTA BENI MELLAL

© RHATAY – BENTALEB

Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL.

Remarques

Employez l’instruction CREATE TABLE pour définir une nouvelle table, ses champs et ses contraintes. Si NOT NULL est utilisé dans la définition d’un champ, les nouveaux enregistrements devront contenir une donnée valide dans ce champ. Une clause CONSTRAINT place diverses restrictions d’emploi sur un champ et peut servir à définir la clé primaire. Vous pouvez aussi utiliser l’instruction CREATE INDEX pour créer une clé primaire ou de nouveaux index sur des tables existantes. Vous pouvez appliquer NOT NULL sur un champ unique ou à l’intérieur d’une clause CONSTRAINT nommée s’appliquant à un champ unique ou à un champ multiple. Cependant, cette restriction NOT NULL ne peut s’appliquer qu’une seule fois sur un champ, sinon une erreur d’exécution se produit.  Exemple : L'exemple suivant présente la création d'une nouvelle table avec deux champs de type Texte : CREATE TABLE PremièreTable(Prénom TEXT, Nom TEXT) ; L'exemple suivant montre la création d'une nouvelle table avec deux champs de type Texte, un champ Date/Heure et un index unique reprenant ces trois champs : CREATE TABLE DeuxièmeTable(Prénom TEXT, Nom TEXT, DateDeNaissance DATETIME, CONSTRAINT MaContrainteTable UNIQUE (Prénom, Nom,DateDeNaissance) ; L'exemple suivant présente la création d'une nouvelle table avec deux champs de type Text et un champ de type Entier. Le champ NSS est la clé primaire. CREATE TABLE TroisièmeTable (Prénom TEXT, Nom TEXT, NSS INTEGER CONSTRAINT MaContrainteChamp PRIMARY KEY) ;

 Page 4

OFPPT – ISTA BENI MELLAL

© RHATAY – BENTALEB

Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL.

 CREATE INDEX : Crée un nouvel index pour une table existante. Syntaxe

CREATE [ UNIQUE ] INDEX index ON table (field [ASC|DESC][, field [ASC|DESC], ...]) [WITH { PRIMARY | DISALLOW NULL | IGNORE NULL }]
L’instruction CREATE INDEX se compose des éléments suivants :

Elément
index Table Field

Description
Nom de l’index à créer. Nom de la table existante dans laquelle l’index doit être créé. Nom du ou des champs à indexer. Pour créer un index monochamp, spécifiez le nom de champ entre parenthèses à la suite du nom de la table. Pour créer un index multichamp, spécifiez le nom de chaque champ à inclure dans l'index. Pour créer des index établis par ordre décroissant, utilisez le mot réservé DESC ; par défaut, les index sont établis par ordre croissant.

Remarques

Pour éviter les doublons dans le ou les champs indexés de différents enregistrements, utilisez le mot réservé UNIQUE. Dans la clause WITH facultative, vous avez la possibilité de forcer les règles de validation des données. Pour ce faire, vous pouvez :  Interdire les entrées Null dans le ou les champs indexés des nouveaux enregistrements en utilisant l'option DISALLOW NULL.  Empêcher que les enregistrements contenant des valeurs Null dans le ou les champs indexés soient inclus dans l'index en utilisant l'option IGNORE NULL.  Définir le ou les champs indexés comme clé primaire en utilisant le mot réservé PRIMARY. Cela implique alors que la clé doit être unique, ainsi vous pouvez omettre le mot réservé UNIQUE. Vous pouvez également utiliser l'instruction ALTER TABLE pour ajouter un index monochamp ou un index multichamp à une table. En outre, vous pouvez utiliser cette instruction ou l'instruction DROP pour supprimer un index créé avec ALTER TABLE ou CREATE INDEX  Page 5

OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL.  Note : N'utilisez pas le mot réservé PRIMARY lorsque vous créez un nouvel index sur une table qui dispose déjà d'une clé primaire. Vous ne pouvez supprimer cet index de la table en mode Création à moins de supprimer également la relation avec la table Clients.  ALTER TABLE : Modifie une table créée avec l’instruction CREATE TABLE. vous devez utiliser l'instruction DROP.  Exemple : L'exemple suivant présente la création d'un index comportant les champs Tél domicile et Extension dans la table Employés : CREATE INDEX NouvIndex ON Employés ([Tél domicile]. CREATE UNIQUE INDEX Numcli ON Clients ([N° client]) WITH DISALLOW NULL . L'instruction suivante supprime le nouvel index en utilisant l'instruction DROP : DROP INDEX Numcli ON Clients . Pour supprimer l'index créé dans l'exemple précédent. Extension) . Deux enregistrements ne peuvent avoir les mêmes données. et la valeur Null est interdite. Cette opération provoque une erreur. Syntaxe ALTER TABLE table {ADD {COLUMN field type[(size)] [NOT NULL] [CONSTRAINT index] I CONSTRAINT multifieldindex} | DROP {COLUMN field I CONSTRAINT indexname} }  Page 6 . L'exemple suivant présente la création dans la table Clients d'un index comportant le champ N° client.

Si vous ajoutez l’indication NOT NULL pour un champ. son type de données et (dans le cas de champs Texte et Binaire) sa taille (facultative).  Utiliser ADD CONSTRAINT pour ajouter un index multichamp. les nouveaux enregistrements doivent contenir des données valides dans ce champ. reportez-vous à la rubrique d'aide relative à la clause CONSTRAINT. Pour plus d'informations sur la création de cet index. reportez-vous à la rubrique d’aide relative à la clause CONSTRAINT.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. Multifieldindex Indexname  Remarque : L'instruction ALTER TABLE permet de modifier une table existante de plusieurs façons. reportez-vous à la rubrique d’aide relative à la clause CONSTRAINT. Pour plus d'informations sur les index multichamps. Type de donnée du field.  Page 7 . Taille du champ. Pour plus d'informations sur la création de cet index. Nom de l’index multichamp à supprimer. vous pouvez :  Utiliser ADD COLUMN pour ajouter un nouveau champ à la table. reportez-vous à la rubrique d'aide relative à la clause CONSTRAINT. Index de field. en caractères (champs Texte et Binaire uniquement). Définition d’un index multichamp à ajouter à la table. Spécifiez alors le nom du champ. l'instruction suivante ajoute un champ de texte de 25 caractères appelé Remarques à la table Employés : ALTER TABLE Employés ADD COLUMN Remarques TEXT(25) Vous pouvez également définir un index sur ce champ. L’instruction ALTER TABLE se compose des éléments suivants : Élément Table Field Type Size Index Description Nom de la table à modifier. Pour plus d'informations sur les index monochamp. Par exemple. Ainsi. Nom du champ à ajouter ou à supprimer dans la table.

une erreur se produit lors de l’exécution.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL.  Exemple : L'exemple suivant ajoute à la table Employés une donnée Salaire avec un champ de type Monétaire : ALTER TABLE Employés ADD COLUMN Salaire MONÉTAIRE . L'exemple suivant retire de la table Employés le champ Salaire : ALTER TABLE Employés DROP COLUMN Salaire . ♦ Vous pouvez employer NOT NULL pour un champ unique ou dans une clause CONSTRAINT nommée s’appliquant soit à un simple champ soit à un champ multiple nommé CONSTRAINT. Spécifiez alors uniquement le nom d'index suivant le mot réservé CONSTRAINT. Spécifiez alors uniquement le nom du champ .  Notes : ♦ Vous ne pouvez pas ajouter ou supprimer plusieurs champs ou index à la fois. Toutefois. vous ne pouvez appliquer la restriction NOT NULL qu’une seule fois par champ . et vous pouvez utiliser l'instruction ALTER TABLE ou DROP pour supprimer un index créé avec ALTER TABLE ou CREATE INDEX. L'exemple suivant remet la clé externe dans la table Commandes : ALTER TABLE Commandes ADD CONSTRAINT EmployésCommandes FOREIGN KEY (N° employé) REFERENCES Employés (N° employé) .  Utiliser DROP COLUMN pour supprimer un champ. L'exemple suivant retire la clé externe existante de la table Commandes : ALTER TABLE Commandes DROP CONSTRAINT EmployésCommandes .  Page 8 .  Utiliser DROP CONSTRAINT pour supprimer un index multichamp. ♦ Vous pouvez utiliser l'instruction CREATE INDEX pour ajouter un index monochamp ou multichamp à une table. sinon.

unique2 [. Il existe deux types de clauses CONSTRAINT : une pour la création d'une contrainte portant sur un seul champ et une autre pour la création d'une contrainte portant sur plusieurs champs. primary2 [..  CONSTRAINT : une contrainte est identique à un index mais elle peut être également utilisée pour établir une relation avec une autre table.. Nom du ou des champs de la foreigntable spécifié(s) par ref1. ref2 Foreigntable Foreignfield1.  Page 9 . unique2 Notnull1.]]) | UNIQUE (unique1[. Nom de la table externe contenant le ou les champs spécifiés par foreignfield. . .]]) | FOREIGN KEY (ref1[. ... Nom du ou des champs à spécifier comme clé primaire. primary2 unique1. notnull2 [.. Nom du ou des champs de clé externe faisant référence à des champs d’une autre table. foreignfield2 Description Nom de la contrainte à créer.]])]} La clause CONSTRAINT se compose des éléments suivants : Elément Name primary1.. .. ref2..]]) | NOT NULL (notnull1[. Nom du ou des champs ne devant pas contenir la valeur Null. Nom du ou des champs à spécifier comme clé unique.]]) REFERENCES foreigntable [(foreignfield1 [.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. Syntaxe Contrainte monochamp : CONSTRAINT name {PRIMARY KEY | UNIQUE | NOT NULL | REFERENCES foreigntable [(foreignfield1.. Vous pouvez omettre cette clause si le champ faisant l’objet de la référence constitue la clé primaire de foreigntable . foreignfield2 [. notnull2 ref1. ref2 [. Utilisez la clause CONSTRAINT dans les instructions ALTER TABLE et CREATE TABLE pour créer ou supprimer des contraintes.. . foreignfield2)]} Contrainte multichamp : CONSTRAINT name {PRIMARY KEY (primary1[.

Si la clé primaire de la table externe se compose de plusieurs champs.  Vous pouvez utiliser les mots réservés PRIMARY KEY pour définir un champ ou une plage de champs sur une table comme clé primaire.   Vous pouvez utiliser les mots réservés FOREIGN KEY pour définir un champ comme clé externe. vous devez utiliser une définition de contrainte multichamp en spécifiant tous les champs de référence.  Remarques Utilisez la syntaxe d’une contrainte monochamp dans la clause de définition de champ d'une instruction ALTER TABLE ou CREATE TABLE immédiatement après la spécification du type de données du champ.  Exemple : (Voir L’Exemple de Create Table)  Page 10 . Utilisez la syntaxe d'une contrainte multichamp chaque fois que vous utilisez le mot réservé CONSTRAINT hors d'une clause de définition de champ dans une instruction ALTER TABLE ou CREATE TABLE. Si un index multichamp est défini comme clé unique. Note : Ne définissez pas une contrainte PRIMARY KEY sur une table disposant déjà d'une clé primaire. Cela signifie que deux enregistrements de la table ne peuvent pas avoir la même valeur dans ce champ.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. Cette opération provoque une erreur. même si plusieurs enregistrements ont la même valeur dans un seul des champs. Toutes les valeurs de la clé primaire doivent être uniques et non Null et vous ne pouvez définir qu'une seule clé primaire par table. Vous pouvez contraindre n'importe quel champ ou liste de champs à être unique. le moteur Microsoft Jet considère que ces champs constituent la clé primaire. et cela. dans l'ordre des champs de référence. CONSTRAINT permet de définir un des types de contraintes suivantes pour un champ :  Vous pouvez utiliser le mot réservé UNIQUE pour définir un champ comme clé unique. Si le ou les champs référencés constituent la clé primaire de la table externe. les valeurs combinées de tous les champs de l'index doivent être uniques. par défaut. le nom de la table externe et les noms des champs référencés dans cette table. il est inutile de les spécifier .

Nom de l’index à supprimer dans la table. Vous pouvez également utiliser l’instruction ALTER TABLE pour supprimer un index d’une table.  Page 11 .OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL.  DROP : Supprime une table d’une base de données ou supprime un index d’une table. Pour modifier une table. Remarques Vous devez fermer la table avant de la supprimer ou d'y supprimer un index.  Exemple : L'exemple suivant supprime l'index MonIndex de la table Employés : DROP INDEX MonIndex ON Employés . L'exemple suivant supprime la table Stagiaires de la base de données : DROP TABLE Stagiaires . Vous pouvez utiliser CREATE TABLE pour créer une table et CREATE INDEX ou ALTER TABLE pour créer un index. Syntaxe DROP {TABLE table | INDEX index ON table} L’instruction DROP se compose des éléments suivants : Elément Table Index  Description Nom de la table à supprimer ou de la table contenant l’index à supprimer. utilisez ALTER TABLE.

Langage de Manipulation de données Le language SQL permet la manipulation et la mise à jour des données d’une base de données.. DISTINCT... Les prédicats permettent de limiter le nombre d'enregistrements renvoyés.. ] [HAVING.]]} FROM tableexpression [. Il comporte quatre verbes de manipulation des données : Select : Recherche Insert : Ajout Update : Mise à jour Delete : Suppression  L’Instruction SELECT : Requête Sélection Demande au moteur de base de données Microsoft Jet de lui renvoyer des informations depuis la base de données sous la forme d'une série d'enregistrements. Nom de la table contenant les champs dans lesquels les enregistrements sont sélectionnés. ] [GROUP BY. [table. .... ] [ORDER BY..* | [table.. 2.  Page 12 * Table . ALL est choisi par défaut.]field2 [AS alias2] [. Syntaxe SELECT [predicate] { * | table. . DISTINCTROW ou TOP. Indique que tous les champs de la ou des tables spécifiées sont sélectionnés..] [IN externaldatabase] [WHERE.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL..]field1 [AS alias1] [.. Si aucun n’est précisé. ] [WITH OWNERACCESS OPTION] L’instruction SELECT se compose des éléments suivants : Elément Predicate Description L'un des prédicats suivants : ALL.

field1. Remarques Pour effectuer cette opération. trie et/ou regroupe ces lignes dans l'ordre indiqué. Si vous souhaitez utiliser un autre nom de champ ou un nom qui n'est pas concerné par l'expression utilisée pour générer le champ. Les instructions SQL sont pour la plupart des instructions SELECT ou SELECT. La syntaxe minimale d'une instruction SELECT est la suivante : SELECT fields FROM table Vous pouvez utiliser un astérisque (*) pour sélectionner tous les champs d'une table. Noms à utiliser comme en-têtes de colonne à la place des noms de colonnes originaux dans table. Lorsqu'un objet Recordset est créé. Superviseurs WHERE Employés. Si le nom d'un champ figure dans plusieurs tables stipulées par la clause FROM. Nom de la ou des tables contenant les données à extraire.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. L'instruction SQL sélectionne "Département" dans la table Employés et "NomSupv" dans la table Superviseurs : SELECT Employés. les données seront extraites dans l'ordre indiqué. le champ "Département" se trouve à la fois dans les tables Employés et Superviseurs. sélectionne les lignes qui satisfont aux critères.Département = Superviseurs.NomSupv FROM Employés. le moteur Jet recherche la ou les tables spécifiées.. (point).Département. alias2 Tableexpression Externaldatabase  Noms des champs contenant les données à extraire. utilisez le mot réservé AS.Département. SELECT constitue généralement le premier mot d'une instruction SQL. Superviseurs. SELECT ne modifie pas les données dans la base de données. field2 alias1. Si vous incluez plusieurs champs.INTO. faites-le précéder du nom de la table correspondante et de l'opérateur . Dans l'exemple suivant. extrait les colonnes choisies. le moteur de base de données Microsoft Jet utilise le nom de champ de la table comme nom de l'objet Field dans l'objet Recordset.. Nom de la base de données contenant les tables de tableexpression si elles ne se trouvent pas dans la base de données en cours. L'exemple suivant utilise le titre Anniversaire comme nom pour l'objet Field renvoyé dans l'objet Recordset résultant :  Page 13 . Les exemples suivants sélectionnent tous les champs dans la table Employés : SELECT * FROM Employés.

L'exemple suivant affiche le NomProduit et le PrixUnitaire de chaque enregistrement de la table Produits. PrixUnitaire AS Courant. La phrase "a un prix unitaire de" sépare les deux champs dans la présentation des résultats. Les exemples suivants utilisent le titre Effectif comme nom pour l'objet Field renvoyé dans l'objet Recordset résultant : SELECT COUNT([N° employé]) AS Effectif FROM Employés. Les prix unitaires de produits ne sont pas modifiés dans la base de données. L'exemple suivant montre ce que deviennent les prix unitaires de produits quand chacun est augmenté de 10 pour cent. Vous pouvez utiliser les autres clauses d'une instruction SELECT pour limiter et organiser davantage les données renvoyées.  Page 14 . Chaque fois que vous utilisez des fonctions de regroupement ou des requêtes qui renvoient des noms d'objets Field ambigus ou en double. ' a un prix unitaire de '. SELECT NomProduit. reportez-vous à la rubrique d'aide relative à la clause que vous utilisez. vous devez utiliser la clause AS pour fournir un nom de remplacement à l'objet Field. Pour plus d'informations. PrixUnitaire FROM Produits .1 AS NouveauPrixProposé FROM Produits .  Exemple : L'exemple suivant montre la sélection des champs Nom et Prénom de tous les enregistrements dans la table Employés : SELECT Nom. SELECT NomProduit.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. PrixUnitaire * 1. Prénom FROM Employés . L'exemple suivant montre la sélection de tous les champs dans la table Employés : SELECT * FROM Employés . SELECT [Date de naissance] AS Anniversaire FROM Employés.

Quatre autres sont spécifiques à la manipulation de tableaux : Projection. B Projection Restriction A B C D 1 2 1 4 W X W Z Jointure 1 R1 2 R2 3 R3 A 1 W 1 R1 B 2 X 2 R2 C 1 W 1 R1 A D A B C A 1 2 3 1 2 2 Division 1 3 A Select Ai. différence et produit cartésien. B Where Ai = Bi Select * From A A1 Where Not exists (Select * From B Where Not exists (Select * from A A2 Where A1i = A2i AND Bj=A2j ))  Page 15 .OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL.  SQL et l’Algèbre relationnelle Les relations normalisées vont pouvoir faire l’objet de manipulations en utilisant des opérateur dérivés de la théorie des ensembles. Quatre d’entre eux correspondent aux opérations traditionnelles sur les ensembles : Union. Aj From A Select * From A Where Ai = X Select * From A. division. CODD a défini huit opérateurs principaux pour la manipulation des relations. jointure. Union Intersection Différence Produit Cartésien 1 2 A A B B C C 1 2 1 2 1 2 A X B C = Select * From A Union Select * From B Select * From A Where Exists ( Select * from B Where Ai=Bi ) Select * From A Where Not Exists ( Select * from B Where Ai=Bi ) Slect * From A. Intersection. Restriction.

 1050 1025 1021 1051 1450 Exemple : Quelles sont les commandes passées en 1989 ? Datcmd 26/10/89 28/09/89 18/10/88 18/10/88 28/02/89 Numfour TH008 TH009 BM118 BM118 MN010 Mncmd 1587.50 1678. 3.70 1154.  Exemple : Quels sont les fournisseurs et les montants de commande associés ? Numcmd 1050 1025 1021 1051 1450 Datcmd 26/10/89 28/09/89 18/10/88 18/10/88 28/02/89 Numfour TH008 TH009 BM118 BM118 MN010 Mncmd 1587. Il permet d’élaborer l’opérateur de jointure.90 4857.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. Le Produit cartésien Réalise la concaténation de tous les t-uplets de la première table avec chaque tuplet de la seconde.90 4857.10 2547. La Projection La projection permet d’effectuer un découpage vertical de la relation en ne concervant que les attributs souhaités.10 2547. Mncmd from Commande .  Page 16 .50 1678.30 Select Numfour. 1. Le tableau résultant comporte le même nombre de colonnes que le tableau initial. 2. La Restriction La restriction permet d’effectuer un découpage horizontal de la relation on ne conservant que les lignes qui vérifient une condition définie.70 1154. indisponsable dans de nombreuses requêtes multi-tables.30 Numcmd Select * from Commande Where Datcmd like ‘’ *89 ‘’ .

90 4857.Numfour.Mncmd F.Mncmd. 4. C. Numfour. C. Il s’opère sur deux tables possédant un champ en commun. C.  Page 17 .Numfour.Numfour TH008 TH009 BM118 TH008 TH009 BM118 Datcmd 26/10/89 28/09/89 18/10/88 Numfour TH008 TH009 BM118 Adrfour Bordeaux Paris C.Nu C. F.  Exemple : Dans notre exemple Commande et Fournisseurs s’est opéré une restriction de façon à ne garder en résultat que les lignes qui vérifie l’egalité Commande.Datcmd.  Exemple : Etablir le produit cartésien des commandes et fournisseurs Commande (C) Numcmd 1050 1025 1021 Fournisseurs (F) Numfour TH009 TH008 Le Produit Cartésien C.90 4857.10 Select C.Adrfour From C.Numfour = Fournisseur.50 1678.Datcmd mcmd 1050 26/10/89 1025 28/09/89 1021 18/10/88 1050 26/10/89 1025 28/09/89 1021 18/10/88 C.90 4857. F .Numcmd. Numfour F.50 1678.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. La Jointure La jointure n’est en fait que l’utilisation combiné de deux opérateurs : Produit et Restriction.50 1678.10 TH009 TH009 TH009 TH008 TH008 TH008 Bordeaux Bordeaux Bordeaux Paris Paris Paris Mncmd 1587.10 1587. Le résultat permet ainsi de juxtaposer les informations de commandes et les informations des fournisseurs détenteur de cette commande.Adrfour 1587. F.

Numfour= F. F. C. C.  L’Auto-Jointure Lorsque la condition de recherche introduite par la clause Where porte sur les valeurs d’un attribut qu’il s’agit de comparer avec les valeur de ce même attribut dans les mêmes enregistrements de la même table. Numfour F.50 1678. C.Numfour mcmd 1050 26/10/89 TH008 1025 28/09/89 TH009 C.Numfour = Fournisseur.Mncmd.Datcmd.Numfour .  Exemples : Trouver les articles ayant le même prix unitaire que l’article n°14 ?  Page 18 .Datcmd. Ce type de requête est appelée autojointure. F.Adrfour From C Inner join F On C.Adrfour 1587.Nu C.Numfour.Numcmd.90 4857.50 1678. F.Mncmd. Numfour.Numcmd. On va etablir un tableau relatif à l’ensemble des commandes en le completant avec les informations de leur fournisseur. C.Numfour.Mncmd F.Numfour .OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. C.Adrfour From C . Commande Numcmd 1050 1025 1021 Fournisseurs Numfour TH009 TH008 TH010 Datcmd 26/10/89 28/09/89 18/10/88 Numfour TH008 TH009 BM118 Adrfour Bordeaux Paris Grenoble Mncmd 1587.Datcmd C.10 Join (Commande.90 TH008 TH009 Paris Bordeaux Select C. F Where C.Numfour= F. l’élaboration d’un produit cartésien de la relation avec elle même devient nécessaire. C. Ou Aussi Select C. Numfour. F.Numfour) C.

L’Union L’opération d’union entre deux tables de même schéma permet de réunir en une table résultat l’ensemble des t-uplets appartenant à l’une ou aux deux tables de départ.90 4721.90 4857. Article Y Where X.10 2534.PU and Y.  Exemple : La liste des commandes qui ont été passées soit en 1988.Mncmd From Commande88 Union Select Numcmd.30 3548.Datcmd.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL.  Page 19 .30 3548.Numfour.20 Commande88 Union Commande89 Numcmd Datcmd 1050 26/10/88 1025 28/09/88 1021 18/10/88 1023 15/09/89 1051 23/07/89 950 19/05/89 Numfour TH008 TH009 BM118 TH010 MN008 BM107 Mncmd 1587.Datcmd. Select X.PU=Y.50 1678.90 4721.90 4857.50 1678.Mncmd From Commande89 .10 Mncmd 2534.Ref from Article X.Numfour.Ref=14 . soit en 1989 Commande 88 Numcmd 1050 1025 1021 Commande 89 Numcmd 1023 1051 950 Datcmd 26/10/88 28/09/88 18/10/88 Datcmd 15/09/89 23/07/89 19/05/89 Numfour TH008 TH009 BM118 Numfour TH010 MN008 BM107 Mncmd 1587. 5.20 Select Numcmd.

90 4857.  Page 20 . Mncmd from [Commande88] Where Exists (Select Numcmd.20 Mncmd 1678.Numcmd=[Commande88/TH].10 3548.30 1678. 6.90 4721.Numcmd) 7.90 4857.10 Commande88 Intersect Commande88/TH Numcmd Datcmd Numfour 1025 28/09/88 TH009 1021 18/10/88 BM118 Select Numcmd.Datcmd. L’Intersection Permet de presenter en une table résultat l’ensemble des t-uplets appartenant aux deux tables de départ.50 1678.90 4857. Mncmd from [Commande88/TH] Where [Commande88]. La Différence : Permet de présenter en une table les t-uplets de la première en éliminant ceux qui appartiennent aussi à la seconde.10 Mncmd 2534.  Exemple : Quelles sont les commands mentionnée à la fois dans la table Commande88 et dans la table Commande88/TH ? Commande 88 Numcmd 1050 1025 1021 Commande 88/TH Numcmd 1023 1025 1021 1051 950 Datcmd 26/10/88 28/09/88 18/10/88 Datcmd 15/09/88 28/09/88 18/10/88 23/07/88 19/05/88 Numfour TH008 TH009 BM118 Numfour TH010 TH009 BM118 MN008 BM107 Mncmd 1587.Datcmd. Numfour. Numfour.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL.

90 4721.30 4857. Numfour. La Division La division s’effectue sur deux tables (Dividende.90 3548.20 Mncmd 2534.10 Commande DIFF CommandeTH Numcmd Datcmd 1023 15/09/88 1021 18/10/88 Select Numcmd. Mncmd from [Commande] Where Not Exists (Select Numcmd. Diviseur) possédant des colonnes à champ commun.20 Mncmd 1678.  Exemple : Quelles sont les commandes qui ne sont pas mentionnées dans la table commandeTH ? Commande Numcmd 1023 1025 1021 1051 950 Commande TH Numcmd 1025 1051 950 Datcmd 15/09/88 28/09/88 18/10/88 23/07/88 19/05/88 Datcmd 28/09/88 23/07/88 19/05/88 Numfour TH010 TH009 BM118 MN008 BM107 Numfour TH009 MN008 BM107 Numfour TH010 BM118 Mncmd 2534.Datcmd.Numcmd=[Commande TH].10 3548.Numcmd) 8.Datcmd. (Exprime « Pour tous les » )  Exemple : Quelles sont les commandes concernant tous les articles ?  Page 21 .OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. Mncmd from [Commande TH] Where [Commande]. Numfour.90 4857. Elle permet de répondre à la question suivante : quels sont tous les éléments d’une table qui sont associés à tous les éléments d’une autres table.90 4721.30 1678.

Ligne de COM Numcmd 1080 1050 1070 1050 1070 1021 1050 1021 1070 Codart CS30 CS10 CS10 CS20 CS20 CS10 CS30 CS20 CS30 Article Codart CS10 CS20 CS30 Ligne de Com DIV Article Numcmd 1050 1070 Select Numcmd from LC LC1 Where Not exists (Select Codart from article Where Not exists ( Select * from LC LC2 Where LC1. DISTINCTROW.Numcmd And LC1. TOP Spécifie les enregistrements sélectionnés par des requêtes SQL. DISTINCT.Codart ) )  Les Prédicats : ALL.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL.Numcmd= LC2. Syntaxe SELECT [ALL | DISTINCT | DISTINCTROW | [TOP n [PERCENT]]] FROM table  Page 22 .Codart= LC2.

Par exemple. Le résultat d'une requête qui utilise DISTINCT ne peut pas être mis à jour et ne reflète pas les modifications ultérieures effectuées par d'autres utilisateurs. La table Clients  Page 23 DISTINCTROW . plusieurs employés répertoriés dans une table Employés peuvent avoir le même nom. l'instruction SQL suivante ne renvoie alors qu'un seul de ces enregistrements : SELECT DISTINCT Nom FROM Employés. et pas seulement de champs en double. pour un enregistrement donné.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. le moteur de base de données Microsoft Jet sélectionne tous les enregistrements qui remplissent les conditions de l'instruction SQL. Omet les données sur la base des enregistrements complets en double. Si la clause SELECT contient plusieurs champs. pour que ces valeurs apparaissent dans le résultat. les valeurs de chaque champ répertorié dans l'instruction SELECT doivent être uniques. pour être incluses dans les résultats de la requête. Si vous omettez DISTINCT. SELECT * FROM Employés ORDER BY [N° employé]. vous pouvez créer une requête qui joint les tables Clients et Commandes à l'aide du champ "Code client". Par exemple. Ainsi. Les deux exemples suivants sont équivalents et renvoient tous les enregistrements de la table Employés : SELECT ALL * FROM Employés ORDER BY [N° employé]. cette requête renvoie les deux enregistrements Durand. DISTINCT Omet tous les enregistrements pour lesquels les champs sélectionnés contiennent des données en double. Si deux enregistrements contiennent Durand dans le champ "Nom". la combinaison des valeurs de tous ces champs doit être unique. Une instruction SELECT contenant ces prédicats se compose des éléments suivants : Elément ALL Description Si vous n'incluez aucun prédicat.

Si vous n'incluez pas la clause ORDER BY.DISTINCTROW est ignoré si votre requête n'inclut qu'une seule table ou si vous sélectionnez les champs de toutes les tables.DISTINCTROW n'a d'effet que si vous sélectionnez des champs dans seulement certaines des tables utilisées dans la requête. Supposons qu'au lieu des 25 meilleurs étudiants. mais la table Commandes en contient car chaque client passe plusieurs commandes. si. la requête renverra une série de 25 enregistrements choisis arbitrairement parmi ceux de la table Students qui remplissent les conditions de la clause WHERE. Renvoie un certain nombre d'enregistrements situés au début ou à la fin d'une plage spécifiée par une clause ORDER BY.[Code client] ORDER BY Société. parmi les meilleurs résultats obtenus. Vous pouvez également utiliser le mot réservé PERCENT pour renvoyer un certain pourcentage des premiers ou derniers enregistrements d'une plage spécifiée par la clause ORDER BY. Dans l'exemple précédent. Prénom FROM Etudiants WHERE Promotion = 1996 ORDER BY Moyenne DESC.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. cette requête produit plusieurs lignes pour chaque société ayant passé plusieurs commandes. Si vous omettez DISTINCTROW. L'instruction SQL suivante montre comment utiliser DISTINCTROW pour produire une liste de sociétés qui ont passé au moins une commande. sans afficher le détail de ces commandes : SELECT DISTINCTROW Société FROM Clients INNER JOIN Commandes ON Clients. la requête renvoie 26 enregistrements.[Code client]= Commandes. Le prédicat TOP n'effectue pas de choix entre des valeurs égales. ne contient aucun doublon dans le champ "Code client". vous souhaitiez sélectionner 10 pour cent de la promotion : TOP n [PERCENT]  Page 24 . Supposons que vous souhaitiez obtenir les noms des 25 premiers étudiants de la promotion 1996 : SELECT TOP 25 Nom. le vingt-cinquième et le vingtsixième ont obtenu la même moyenne.

Table Clients table Prénom Bob Adam Beverly Bob Table Factures Code client 1 2 3 4 Code client 1 1 2 2 2 4 4 N° facture 1 2 3 4 5 6 7  Page 25 . Créez une nouvelle requête dans l'exemple de votre base de données. Le prédicat ASC donne des valeurs croissantes. Nom de la table contenant les enregistrements à extraire. La valeur qui suit TOP doit être un entier non signé. SELECT TOP 10 PERCENT Nom.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. Passez en mode SQL. puis exécutez la requête. Ecrivez votre code SQL. TOP n'affecte pas les possibilités de mise à jour de la requête. Prénom FROM Etudiants WHERE Promotion = 1994 ORDER BY Moyenne ASC.  Exemple : Pour essayer les exemples suivants sous Microsoft Access. créez deux nouvelles tables comme celles présentées ci-dessous.

Codeclient . SELECT ALL Prénom FROM Clients INNER JOIN Factures ON Clients. L'exemple suivant retourne tous les enregistrements retournés par une jointure interne entre les deux tables.CodeClient . Résultat Bob Adam L'exemple suivant ne sélectionne que les enregistrements uniques retournés par une jointure interne entre les deux tables. Le résultat est modifiable. Codeclient = Factures. Codeclient .CodeClient = Factures. SELECT DISTINCTROW Prénom FROM Clients INNER JOIN Factures ON Clients. Résultat Bob Bob Adam Adam Adam Bob Bob L'exemple suivant ne sélectionne que les enregistrements à valeur unique retournés par une jointure interne entre les deux tables. SELECT DISTINCT Prénom FROM Clients INNER JOIN Factures ON Clients. Le résultat peut être mis à jour.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. La présentation des résultats n'est pas modifiable. Résultat Bob Adam Bob  Page 26 . Codeclient = Factures.

La fonction Moyenne (Avg) vous permet de calculer la moyenne des frais de port des commandes pour les frais dépassant 100F. Les opérandes associés à expr peuvent comprendre le nom d'un champ de table. Résultat Bob Bob Adam Adam Adam Calcule la moyenne arithmétique d'une série de valeurs contenues dans un champ spécifié dans une requête. Tapez l'expression suivante en mode SQL dans la fenêtre Requête :  Page 27 . L'exemple suivant présente la sélection des cinq premiers enregistrements retournés par une jointure interne entre les deux tables. à l'exclusion de toute autre fonction de regroupement SQL).  Exemple : L'exemple suivant suppose que vous disposiez d'une table Commandes contenant le champ Port.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL.  Les Fonctions de Regroupement : ♦ Syntaxe La Fonction AVG : Avg(expr) L'argument expr représente une expression de chaîne qui identifie le champ contenant les données numériques dont vous souhaitez calculer la moyenne ou une expression qui exécute un calcul sur la base des données contenues dans ce champ. Le résultat est modifiable. une constante ou une fonction (qui peut être soit intrinsèque. SELECT TOP 5 Prénom FROM Clients INNER JOIN Factures ON Clients. soit définie par l'utilisateur. Codeclient = Factures.N° facture . Codeclient ORDER BY Factures.

Vous pouvez utiliser Avg. Tapez l'expression suivante dans la propriété SourceContrôle (ControlSource) d'une zone de texte du formulaire.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. par exemple. à partir de la même table Commandes. =Avg(Port)  Remarques La moyenne calculée par Avg est la moyenne arithmétique (la somme des valeurs divisée par le nombre de valeurs). Vous pouvez utiliser Avg dans une expression de requête. Les opérandes associés à expr peuvent comprendre le nom d'un champ de table ou une fonction (qui peut être soit intrinsèque. paramétrez la propriété Filtre (Filter) du formulaire. Pour appliquer une condition qui limite le calcul à quelques enregistrements seulement. pour calculer le coût moyen du transport de marchandises. Syntaxe Count(expr) L'argument expr représente une expression de chaîne qui identifie le champ contenant les données numériques dont vous souhaitez obtenir le nombre ou une expression qui exécute un calcul sur la base des données contenues dans ce champ. Ouvrez un nouveau formulaire et attribuez Commandes à sa propriété Source (RecordSource). à l'exclusion de toute autre fonction de regroupement SQL).  Page 28 . SELECT Avg(Port) AS [PortMoyen] FROM Commandes WHERE Port > 100. ♦ La Fonction Count : Calcule le nombre d'enregistrements renvoyés par une requête. comme ceux qui se rapportent aux commandes de plus de 100F. Vous pouvez compter toute sorte de données y compris les données de type texte. L'exemple qui suit crée un contrôle calculé qui affiche les frais de port moyens relatifs aux enregistrements sous-jacents d'un formulaire. soit définie par l'utilisateur. La fonction Avg n'intègre aucun champ Null à ses calculs.

 Exemple : L'exemple suivant suppose que vous disposez d'une table Commandes contenant le champ PaysLivraison. Bien que l’argument expr puisse exécuter un calcul sur un champ. Les noms des champs doivent être séparés par une perluète (&). L'exemple suivant montre comment limiter le comptage aux enregistrements pour lesquels Date envoi ou Port est différent de Null : SELECT Count('[Date envoi] & Port') AS [Nonnull] FROM Commandes Vous pouvez utiliser Count dans une expression de requête. Count(*) s'exécute beaucoup plus rapidement que Count([nom de colonne]). la fonction Count ne fait que dénombrer les enregistrements. Dans l'exemple suivant. la fonction Count ne compte un enregistrement que si au moins un de ses champs contient une valeur différente de Null. la fonction Count calcule le nombre total des enregistrements en incluant ceux qui contiennent des champs avec valeurs Null.  Remarques Vous pouvez utiliser la fonction Count pour compter le nombre d'enregistrements présents dans une requête sous-jacente. La fonction Count ne compte pas les enregistrements possédant des champs avec valeurs Null sauf si l’argument expr est remplacé par le caractère générique astérisque (*). Si expr identifie plusieurs champs. Le type des valeurs contenues dans les enregistrements est sans importance. Par exemple. on calcule le nombre d'enregistrements contenus dans la table Commandes. Si vous utilisez un astérisque.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. Si tous les champs spécifiés ont la valeur Null. Tapez l'expression suivante en mode SQL dans la fenêtre Requête :  Page 29 . l'enregistrement n'est pas comptabilisé. SELECT Count(*) AS TotalCommandes FROM Commandes. L'astérisque doit être entré sans apostrophes (' '). vous pouvez utiliser la fonction Count pour compter le nombre de commandes expédiées vers un pays donné. Utilisez la fonction Compte (Count) pour calculer le nombre de commandes expédiées en Belgique.

soit définie par l'utilisateur. Syntaxe Min(expr) Max(expr) L'argument expr représente une expression de chaîne qui identifie le champ contenant les données que vous souhaitez évaluer ou une expression qui exécute un calcul sur la base des données contenues dans ce champ.  Page 30 .  Remarques Vous pouvez utiliser les fonctions Min et Max pour déterminer les valeurs les plus basses et les plus élevées contenues dans un champ en fonction du mode de regroupement spécifié. Pour appliquer une condition qui limite le compte à quelques enregistrements seulement. paramètrez la propriété Filtre (Filter) du formulaire. Ouvrez un nouveau formulaire et attribuez Commandes à sa propriété Source (RecordSource). Si aucun regroupement n'est spécifié. une constante ou une fonction (qui peut être soit intrinsèque. toute la table est utilisée. comme ceux qui se rapportent aux commandes expédiées en Belgique. Tapez l'expression suivante dans la propriété SourceContrôle (ControlSource) d'une zone de texte du formulaire. Les opérandes associés à expr peuvent comprendre le nom d'un champ de table. BEL] FROM L'exemple qui suit crée un contrôle calculé qui affiche le nombre de commandes de la même table Commandes. à l'exclusion de toute autre fonction de regroupement SQL). vous pouvez utiliser ces fonctions pour renvoyer les coûts de transport de marchandises les plus bas et les plus élevés. Vous pouvez utiliser les fonctions Min et Max dans une expression de requête. =Count([PaysLivraison]) ♦ La Fonction MIN et MAX : Renvoient la valeur minimum ou maximum d'une série de valeurs contenues dans un champ spécifié dans une requête.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. Par exemple. SELECT Count([PaysLivraison]) AS [Commandes Commandes WHERE [PaysLivraison] = 'Belgique'.

Utilisez les fonctions Min et Max pour retourner les frais de port les plus faibles et les plus élevés concernant les commandes expédiées en Belgique.  Exemple : L'exemple suivant suppose que vous disposiez d'une table Commandes contenant les champs Port et PaysLivraison. paramétrez la propriété Filtre (Filter) du formulaire. Ouvrez un nouveau formulaire et attribuez Commandes à sa propriété Source (RecordSource). Pour appliquer une condition qui limite la recherche à quelques enregistrements seulement. Tapez l'expression suivante dans la propriété SourceContrôle (ControlSource) d'une zone de texte du formulaire. comme ceux qui se rapportent aux commandes expédiées en Belgique. max] FROM Commandes WHERE L'exemple qui suit crée un contrôle calculé qui affiche les frais de port les plus faibles parmi tous les enregistrements de la même table Commandes. Les opérandes associés à expr peuvent comprendre le nom d'un champ de table.  Page 31 . à l'exclusion de toute autre fonction de regroupement SQL).OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. soit définie par l'utilisateur. une constante ou une fonction (qui peut être soit intrinsèque. Tapez l'expression suivante en mode SQL dans la fenêtre Requête : SELECT Min(Port) AS [Port min] FROM Commandes WHERE [PaysLivraison] = 'Belgique'. Syntaxe Sum(expr) L'argument expr représente une expression de chaîne qui identifie le champ contenant les données numériques dont vous souhaitez calculer la somme ou une expression qui exécute un calcul sur la base des données contenues dans ce champ. =Min(Port) ♦ La Fonction Sum : Renvoie la somme d'une série de valeurs contenues dans un champ spécifié dans une requête. SELECT Max(Port) AS [Port [PaysLivraison] = 'Belgique'.

ainsi que d'une table Détails commandes contenant les champs PrixUnitaire et Quantité. Pour appliquer une condition qui limite la recherche à quelques enregistrements seulement. Tapez l'expression suivante dans la propriété SourceContrôle (ControlSource) d'une zone de texte du formulaire. paramétrez la propriété Filtre (Filter) du formulaire. vous pouvez utiliser la fonction Sum pour déterminer le coût total des frais de transport. L'exemple suivant montre comment calculer la somme des produits contenus dans les champs Prix unitaire et Quantité.  Exemple : L'exemple suivant suppose que vous disposiez d'une table Commandes contenant les champs Réf produit et PaysLivraison. La fonction Sum ignore les enregistrements contenant des champs avec la valeur Null. [NumeroCommande] = [Détails commandes].OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. Utilisez la fonction Somme (Sum) pour calculer le total des ventes relatives aux commandes expédiées en Belgique. Vous pouvez utiliser la fonction Sum dans une expression de requête.[NumeroCommande] WHERE ([PaysLivraison] = 'Belgique'). L'exemple qui suit crée un contrôle calculé qui affiche les ventes totales relatives aux enregistrements de la table Détails commandes. comme ceux qui se rapportent aux commandes expédiées en Belgique. Ouvrez un nouveau formulaire et attribuez Détails commandes à sa propriété Source (RecordSource).  Remarques La fonction Sum totalise les valeurs contenues dans un champ. SELECT Sum([Prix unitaire] * Quantité) AS [Rapport Total] FROM [Détails commandes]. Par exemple. Tapez l'expression suivante en mode SQL dans la fenêtre Requête : SELECT Sum([PrixUnitaire]*[Quantité]) AS [TotalVentes BEL] FROM Commandes INNER JOIN [Détails commandes] ON Commandes. =Sum([PrixUnitaire]*[Quantité])  Page 32 .

.  La Clause GROUP BY . DISTINCTROW ou TOP) ou autres options d'instructions SELECT. du plus élevé au plus bas. Critères de sélection. par exemple Sum ou Count. Noms des champs (10 au maximum) utilisés pour regrouper les enregistrements. Table Criteria Groupfieldlist Groupcriteria  Remarques  La clause GROUP BY est facultative. L'ordre des noms de champs dans groupfieldlist détermine les niveaux de regroupement. fonctions de regroupement SQL. Si l'instruction inclut une clause WHERE.  Page 33 . Une valeur de synthèse est créée pour chaque enregistrement si vous incluez une fonction de regroupement SQL.. HAVING : La clause GROUP BY combine en un seul enregistrement les enregistrements comportant des valeurs identiques dans la liste des champs spécifiés. Nom de la table contenant les enregistrements à extraire.. Expression qui détermine quels sont les enregistrements regroupés à afficher. dans l'instruction SELECT. prédicats de sélection (ALL.  Les valeurs de synthèse sont omises si l'instruction SELECT ne contient aucune fonction de regroupement SQL. Syntaxe SELECT fieldlist FROM table [WHERE criteria] [GROUP BY groupfieldlist [HAVING Groupcriteria ]] Une instruction SELECT contenant une clause GROUP BY se compose des éléments suivants : Élément Fieldlist Description Nom du ou des champs à extraire ainsi que des alias de nom de champ.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL.. reportez-vous à la rubrique relative à la clause FROM. le moteur de base de données Microsoft Jet regroupe les valeurs après avoir appliqué les conditions WHERE aux enregistrements. Pour plus d'informations. DISTINCT.

OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. même si celui-ci n'est pas inclus dans l'instruction SELECT.  Les valeurs Null des champs GROUP BY sont regroupées et ne sont pas omises.  À moins de contenir des données de type Memo ou OLE Object. sous forme d'arguments. Le moteur de base de données Microsoft Jet ne peut pas faire porter des opérations de regroupement sur des champs Memo ou OLE. les valeurs Null ne sont évaluées dans aucune fonction de regroupement SQL. un champ d'une liste de champs GROUP BY peut faire référence à n'importe quel champ de la clause FROM. Sum([Unités en stock]) FROM Produits GROUP BY [Code catégorie] HAVING Sum([Unités en stock]) > 100 And Like "BOS*". dans une fonction de regroupement SQL. Toutefois.  Exemple L'exemple suivant trouve la moyenne des prix unitaires de chaque fournisseur et regroupe la liste des prix par fournisseur : SELECT N°Fournisseur.  Page 34 . Une clause HAVING peut contenir jusqu'à 40 expressions liées par des opérateurs logiques comme And et Or. Une fois que GROUP BY a regroupé les enregistrements. Avg(PrixUnitaire) AS PrixUnitMoyen FROM Produits GROUP BY N°Fournisseur . qui détermine quels sont les enregistrements à sélectionner.  Utilisez la clause WHERE pour exclure les lignes que vous ne souhaitez pas regrouper et la clause HAVING pour filtrer les enregistrements après leur regroupement.  Tous les champs de la liste de champs SELECT doivent être inclus dans la clause GROUP BY ou. HAVING détermine quels sont les enregistrements qui seront affichés : SELECT [Code catégorie]. à condition toutefois que l'instruction SELECT inclue au moins une fonction de regroupement SQL.  La clause HAVING est facultative.  HAVING est similaire à WHERE.

L'exemple suivant présente la sélection des employés qui ont vendu plus de 100 commandes : SELECT N° employé. les enregistrements résultants d'une requête en fonction du ou des champs spécifiés....]]]  Page 35 . L'exemple suivant compte le nombre de commandes attribuées à chaque employé(e) dans la base de données : SELECT N°Employé.. L'exemple suivant trouve le prix unitaire maximal par produit dans chaque catégorie : SELECT CodeCatégorie.. Count(N° commande) AS CompteN° commande FROM Commandes GROUP BY N° employé .  La Clause Order. par ordre croissant ou décroissant. field2 [ASC | DESC ]][.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. BY : Trie. Count(N° commande) AS CompteN° commande FROM Commandes GROUP BY N° employé HAVING Count(N° commande) > 100 .. Avg(PrixUnitaire) AS PrixUnitMoyen FROM Produits GROUP BY N° fournisseur HAVING (Avg(PrixUnitaire)>25) . L'exemple suivant trouve les fournisseurs dont les produits ont un prix unitaire moyen supérieur à 25 F : SELECT N° fournisseur. Syntaxe SELECT fieldlist FROM table WHERE selectcriteria [ORDER BY field1 [ASC | DESC ][. Max(PrixUnitaire) AS PrixUnitMax FROM Produits GROUP BY CodeCatégorie . .

les employés sont sélectionnés. Dans les deux exemples suivants. Si l'instruction contient une clause WHERE. Pour effectuer un tri par ordre décroissant (de Z à A et de 9 à 0). Toutefois. les données sont affichées sans être triées. SELECT Nom. prédicats de sélection (ALL. le moteur de base de données Microsoft Jet trie les valeurs après avoir appliqué les conditions WHERE aux enregistrements. reportez-vous à la rubrique relative à la clause FROM. field2  Remarques La clause ORDER BY est facultative. les employés sont triés sur leur nom : SELECT Nom. DISTINCTROW. Salaire FROM Employés ORDER BY Salaire DESC. Table Selectcriteria field1. Prénom FROM Employés ORDER BY Prénom. Mais si vous n'incluez pas ORDER BY. DISTINCT. Critères de sélection. fonctions de regroupement SQL. L'ordre de tri par défaut est l'ordre croissant (de A à Z et de 0 à 9). vous pouvez inclure le mot réservé ASC à la fin de chaque champ que vous souhaitez trier par ordre croissant. Dans les deux exemples suivants.  Page 36 . ou TOP) ou autres options d'instruction SELECT.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. Une instruction SELECT contenant une clause ORDER BY se compose des éléments suivants : Élément Fieldlist Description Noms du ou des champs à extraire avec leurs alias de nom de champ. Prénom FROM Employés ORDER BY Prénom ASC. Nom. Pour plus d'informations. ajoutez le mot réservé DESC à la fin de chaque champ que vous souhaitez trier par ordre décroissant. Nom de la table contenant les enregistrements à extraire. Noms des champs sur lesquels doit porter le tri. puis triés par ordre décroissant : SELECT Nom.

OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. puis par nom de produit : SELECT Réfproduit. Nomproduit.  Exemple Cet exemple trie les enregistrements par ordre décroissant sur le nom de famille (Z à A) : SELECT Nom. Ensuite. et ainsi de suite. une erreur se produit. Prénom FROM Employés ORDER BY Nom DESC .  INNER JOIN : Fusionne les enregistrements de deux tables lorsqu’un champ commun contient des valeurs identiques Syntaxe FROM table1 INNER JOIN table2 ON table1. Nomproduit . Vous pouvez inclure des champs supplémentaires dans une clause ORDER BY. Le moteur de base de données Microsoft Jet ne peut trier des champs contenant ces types de données. Prixunitaire FROM Produits ORDER BY Réfproduit. Cet exemple trie d'abord par catégorie. les enregistrements pour lesquels ce champ contient des valeurs identiques sont triés en fonction de la valeur du second champ spécifié.field1 compopr table2. Si vous spécifiez un champ contenant des données de type Memo ou OLE Object dans la clause ORDER BY. ORDER BY est généralement le dernier élément d'une instruction SQL. Les enregistrements sont triés tout d'abord en fonction du premier champ spécifié après ORDER BY.field2  Page 37 .

Une jointure peut impliquer deux champs numériques de type identique. "<=". Dans cet exemple. par exemple. Si vous tentez d'établir une jointure entre des champs contenant des données de type Memo ou OLE Object . Pour inclure le champ de base de la jointure. [Nom du produit] FROM Catégories INNER JOIN Produits ON Catégories.  Page 38 . sur la base du champ Nom de catégorie : SELECT [Nom de catégorie]. field2 Noms des champs reliés entre eux.  Exemple : L'exemple qui suit montre comment réaliser une jointure entre les tables Catégories et Produits. Leurs noms peuvent être différents. une erreur se produit. L'opération INNER JOIN comprend les éléments suivants : Elément Description table1.[Nom de catégorie]. Les jointures INNER JOIN fusionnent les enregistrements de deux tables lorsqu’un champ commun contient des valeurs identiques.  Remarques Vous pouvez utiliser une opération INNER JOIN dans n'importe quelle clause FROM. À l'opposé.[Nom de catégorie]. le champ sur lequel se fait la jointure est Nom de catégorie mais il n'est pas visible dans le résultat de la requête car il n'a pas été inclus dans l'instruction SELECT.[Nom de catégorie] = Produits.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. ">=". field1. Par contre. S'ils ne sont pas numériques. "<". ">". Oprcomp Tout opérateur de comparaison relationnelle tel que "=". Il s'agit du type de jointure le plus répandu. Catégories. établir une jointure entre les champs AutoNumber et Long car il s'agit de types identiques. vous pouvez utiliser une opération LEFT JOIN or RIGHT JOIN pour créer une jointure externe. il est impossible d'établir une jointure entre les types de champs Single et Double. table2 Noms des tables depuis lesquelles les enregistrements sont fusionnés. intégrez son nom à l'instruction SELECT ¾ dans le cas présent. Vous pouvez. les champs doivent avoir le même type de données et contenir des données de nature identique.Vous pouvez utiliser INNER JOIN avec les tables Services et Employés pour sélectionner tous les employés appartenant à un service donné. ou "<>". pour sélectionner tous les services (même si certains n'ont aucun personnel) ou tous les employés (même si certains ne sont liés à aucun service).

field3)].N° commande = [Détails commandes]. Vous pouvez également imbriquer des instructions JOIN à l'aide de la syntaxe suivante: SELECT fields FROM table1 INNER JOIN (table2 INNER JOIN [( ]table3 [INNER JOIN [( ]tablex [INNER JOIN .OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL.N° commande) ON Employés.field2 compopr table3. à l'aide de la syntaxe suivante : SELECT fields FROM table1 INNER JOIN table2 ON table1. Une jointure LEFT JOIN ou RIGHT JOIN peut être imbriquée dans une jointure INNER JOIN mais il est impossible d'imbriquer une jointure INNER JOIN dans une jointure LEFT JOIN ou RIGHT JOIN. Vous pouvez également relier plusieurs clauses ON dans une instruction JOIN..field2.) ] ON table3. et la table Détail des commandes ne contient pas de données d'employés.field1 compopr table2.  Page 39 .field2 compopr table2.. et l'autre entre les tables Commandes et Employés.field1 compopr table2. La requête aboutit à une liste d'employés et leurs ventes totales.field3) ON table1.field3 compopr tablex.field2) OR ON table1. SELECT DISTINCTROW Sum(Prixunitaire * Quantité) AS Ventes.fieldx)] ON table2. Les deux jointures sont nécessaires car la table Employés ne contient pas de données de ventes.field1 AND ON table1.N° employé = Commandes.  Exemple : L'exemple suivant présente la création de deux équi-jointures : l'une entre les tables Détails des commandes et Commandes.N° commande GROUP BY Prénom & " " & Nom . Prénom & " " & Nom AS Nomcomplet FROM Employés INNER JOIN(Commandes INNER JOIN [Détails commandes] ON Commandes.field3 compopr table2.

Leurs noms peuvent être différents. y compris ceux ne relevant d'aucun service en particulier. vous pouvez utiliser une jointure RIGHT JOIN.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL.field1 compopr table2.  LEFT | RIGHT JOIN Fusionnent des enregistrements de tables source lorsqu'on les utilise dans une clause FROM. Noms des champs reliés entre eux. par exemple. Avec deux tables. field2 Compopr Description Noms des tables depuis lesquelles les enregistrements sont fusionnés. Les champs doivent avoir le même type de données et contenir des données de nature identique. les jointures externes gauches comprennent tous les enregistrements de la première table (celle de gauche) même s'il n'existe aucune valeur correspondante aux enregistrements dans la deuxième table (celle de droite). Avec deux tables.  Remarques Utilisez une opération LEFT JOIN pour créer une jointure externe gauche. Syntaxe FROM table1 [ LEFT | RIGHT ] JOIN table2 ON table1. ">=". table2 field1. Utilisez une opération RIGHT JOIN pour créer une jointure externe droite.  Page 40 ."<". ou "<>". ">". Pour sélectionner tous les employés. "<=".field2 Les opérations LEFT JOIN et RIGHT JOIN comprennent les éléments suivants : Elément table1. Tout opérateur de comparaison relationnelle tel que "=". les jointures externes droites comprennent tous les enregistrements de la deuxième table (celle de droite) même s'il n'existe aucune valeur correspondante aux enregistrements dans la première table (celle de gauche). une jointure LEFT JOIN avec les tables Services (gauche) et Employés (droite) pour sélectionner tous les services y compris ceux auquel aucun employé n'est affecté. Vous pouvez utiliser.

le champ sur lequel se fait la jointure est Nom de catégorie mais il n'est pas visible dans les résultats de la requête car il n'a pas été inclus dans l'instruction SELECT. intégrez son nom à l'instruction SELECT.  Notes  Pour créer une requête ne comprenant que les enregistrements dans lesquels les données des champs reliés sont identiques.  Page 41 . Reportez-vous aux informations données sur la liaison des clauses. SELECT [Nom de catégorie].CodeClient = Commande. pour voir comment procéder.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. Société.[Nom de catégorie] = Produits. La requête produit une liste exhaustive des catégories qui comprend aussi celles ne contenant aucun produit. une erreur se produit. L'exemple qui suit montre comment réaliser une jointure entre les tables Catégories et Produits.  Une jointure LEFT JOIN ou RIGHT JOIN peut être imbriquée dans une jointure INNER JOIN mais il est impossible d'imbriquer une jointure INNER JOIN dans une jointure LEFT JOIN ou RIGHT JOIN.  Si vous tentez d'établir une jointure entre des champs contenant des données de type Memo ou OLE Object . sur la base du champ Nom de catégorie.  Exemple : L'exemple suivant présente la sélection de tous les clients. Dans cet exemple. dans la section consacrée à la jointure INNER JOIN. pour voir comment imbriquer des jointures les unes dans les autres.[Nom de catégorie].CodeClient ORDER BY N° commande . N° commande FROM Clients LEFT JOIN Commandes ON Clients. dans le cas présent. Pour inclure le champ de base de la jointure. [Nom du produit] FROM Catégories LEFT JOIN Produits ON Catégories.[Nom de catégorie]. utilisez une opération INNER JOIN. Catégories. Reportez-vous aux informations données sur l'imbrication.  Vous pouvez relier plusieurs clauses ON.CodeClient. dans la section consacrée à la jointure INNER JOIN. y compris les clients sans commandes : SELECT Clients.

PARAMETERS [Prix bas] Monnaie. Les critères sont ensuite appliqués aux enregistrements de la table Commandes. La création d'une requête Paramètre peut faciliter l'automatisation du processus de modification des critères de requête. Vous pouvez utiliser nom comme une chaîne affichée dans une boîte de dialogue pendant que votre application exécute la requête. .. [Date de commencement] DateHeure. La déclaration PARAMETERS est facultative mais. nom datatype [. Utilisez des crochets ([ ]) pour encadrer les textes contenant des espaces ou des signes de ponctuation. Types de données SQL Microsoft Jet primaires ou leurs synonymes. on doit fournir deux paramètres. les paramètres sont au nombre de deux. [Prix bas] et [Lancer l'état à compter de quel mois ?] sont des arguments de nom valides. Vous pouvez utiliser nom mais pas datatype dans une clause WHERE ou HAVING. Avec une requête Paramètre.]] La déclaration PARAMETERS comprend les éléments suivants : Élément Nom Description Nom du paramètre.  Page 42 .OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. Affecté à la propriété Name de l'objet Parameter et servant à identifier ce paramètre dans la collection Parameters. Dans l'exemple qui suit. Dans l'exemple qui suit. lorsqu'on l'inclut. votre code devra fournir les paramètres à chaque exécution de la requête. Si la déclaration implique plusieurs paramètres. séparez-les par des virgules. vous pouvez utiliser une déclaration PARAMETERS pour créer une requête Paramètre. Par exemple. Remarques Datatype  Pour les requêtes que vous exécutez périodiquement. elle doit se placer avant toute autre instruction y compris l'instruction SELECT. Syntaxe PARAMETERS nom datatype [.  PARAMETERS : Déclare le nom et le type de données de chaque paramètre dans une requête Paramètre..

SELECT [N°commande]. ou encore d'une requête. Syntaxe SELECT field1[. examinez la clause IN. ou pour faire des copies à exporter dans une autre base de données ou à utiliser pour produire des états concernant des données sur une période déterminée. Il peut s'agir d'une ou de plusieurs tables.. vous pouvez produire un état Ventes Mensuelles par Région en exécutant la même requête de création de table chaque mois.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. . Si newtable est identique au nom d'une table existante.. Nom de la table dans laquelle les enregistrements sont sélectionnés. Chemin d’accès d'une base de données externe. Ce nom doit respecter les conventions d'appellation standard.. MontantCommande FROM Commandes WHERE MontantCommande > [Prix bas] AND DateCommande >= [Date de commencement]. Pour obtenir une description du chemin... field2[. faire des copies de sauvegarde des tables..INTO comprend les éléments suivants : Élément field1.]] INTO newtable [IN externaldatabase] FROM source [Where Critère] L'instruction SELECT.. field2 Newtable Externaldatabase Source Description Noms des champs à copier dans la nouvelle table. Par exemple. PARAMETERS [Prix bas] Monnaie. Nom de la table à créer. une erreur récupérable se produit.. [Date de commencement] DateHeure. INTO . : Crée une requête de création de table.  Remarques Vous pouvez utiliser les requêtes de création de tables pour archiver les enregistrements...  Page 43 .  SELECT .

]])] SELECT [source. field2[.]])] VALUES (value1[. Lorsque vous créez la table. les champs de la nouvelle table héritent du type de données et de la taille de champ de chaque champ présent dans les tables sous-jacentes de la requête. . Ajoute un ou plusieurs enregistrements à une table. . value2[.  Notes  Vous souhaiterez peut-être définir une clé primaire pour la nouvelle table..]) L'instruction INSERT INTO comprend les éléments suivants : Elément Target Externaldatabase Source Description Nom de la table ou de la requête à laquelle on souhaite ajouter des enregistrements. Pour obtenir une description du chemin.  INSERT INTO : Requête Ajout. field2[.. Syntaxe Requête Ajout avec plusieurs enregistrements : INSERT INTO target [IN externaldatabase] [(field1[.  Page 44 . . utilisez l'instruction INSERT INTO au lieu de créer une requête Ajout.  Pour savoir quels enregistrements seront sélectionnés avant d'exécuter la requête de création de table..]field1[.. . Aucune autre propriété de champ ou de table n'est transférée. examinez la clause IN.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL.] FROM tableexpression [Where Critère] Requête Ajout avec un seul enregistrement : INSERT INTO target [(field1[.. lancez d'abord une requête Sélection avec les mêmes critères de sélection puis examinez les résultats obtenus..  Pour ajouter des données à une table existante.. field2[.. Nom de la table ou de la requête à partir de laquelle on souhaite copier les enregistrements. Chemin d’accès d'une base de données externe.

OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. ou encore d'une requête sauvegardée. value2 dans le field2 et ainsi de suite.. Si votre table de destination contient une clé primaire. s'ils sont placés à la suite de l’argument source. field1.. Nom de la ou des tables à partir desquelles les enregistrements sont insérés. sans exception.  Remarques Vous pouvez utiliser l'instruction INSERT INTO pour ajouter un enregistrement unique à une table en vous servant de la syntaxe de requête Ajout d'enregistrement unique décrite plus haut. Les enregistrements sont ajoutés à la fin de la table. field2 Tableexpression value1. dans le  Page 45 . conjointement à la clause SELECT . Chaque valeur vient s'insérer dans le champ correspondant à la position de la valeur dans la liste : value1 s'insère dans le field1 du nouvel enregistrement. FROM comme décrit plus haut dans la syntaxe de requête Ajout avec plusieurs enregistrements. Dans ce cas. Cet argument peut être constitué d'un seul nom de table ou d'un composé obtenu par une opération INNER JOIN. Valeurs à insérer dans des champs spécifiques du nouvel enregistrement. ou noms des champs à partir desquels on souhaite extraire les données. La cible source ou target peut spécifier une requête ou une table. Dans le cas d'une requête. INSERT INTO est facultatif mais. Vous devez séparer les valeurs par une virgule et encadrer les zones de texte par des apostrophes (' '). LEFT JOIN ou RIGHT JOIN. Dans ce cas. assurez-vous que vous ajoutez des valeurs uniques et différentes de Null aux champs de clé primaire . la valeur par défaut ou Null s'insère à la place des colonnes manquantes. le moteur de base de données Microsoft ajoute les enregistrements à toutes les tables spécifiées par la requête. Si vous ne spécifiez pas tous les champs. lorsqu'on l'inclut. le code spécifie le nom et la valeur associés à chaque champ de l'enregistrement. la clause SELECT mentionne les champs à ajouter à la table target spécifiée. doit se placer avant l'instruction SELECT. value2 Noms des champs auxquels on souhaite ajouter les données. Vous devez spécifier chacun des champs de l'enregistrement auquel une valeur doit être affectée ainsi qu'une valeur pour chacun d'eux. Vous pouvez aussi utiliser INSERT INTO pour ajouter une série d'enregistrements depuis une autre table ou requête. s'ils sont placés à la suite de l'argument target.

Utilisez une instruction INSERT INTO supplémentaire. la clause VALUES doit comprendre une valeur pour chaque champ de la table. cas contraire. Si les colonnes individuelles ne sont pas désignées. Au lieu d'ajouter des enregistrements existant à partir d'une autre table. Une requête Ajout copie des enregistrements à partir d'une ou de plusieurs tables vers une autre. Si vous omettez la liste des champs. Pour savoir quels enregistrements seront ajoutés avant d'exécuter la requête Ajout. vous pouvez spécifier la valeur de chaque champ dans un nouvel et unique enregistrement en utilisant la clause VALUES. Utilisez la clause IN pour ajouter des enregistrements à une table située dans une autre base de données. créez une copie de la table Clients et nommez-la NouveauxClients. puis examinez les résultats obtenus. Si vous ajoutez des enregistrements à une table dotée d'un champ AutoNumber et que vous désirez changer les numéros des enregistrements ajoutés. lancez d'abord une requête Sélection avec les mêmes critères de sélection. n'intégrez pas le champ AutoNumber à votre requête. La requête Ajout n'a aucun effet sur les tables contenant les enregistrements que vous ajoutez. À défaut.  Page 46 ..OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. INTO au lieu de créer une requête de création de table. associée à une clause VALUES. les noms de colonne de la table SELECT doivent correspondre exactement à ceux de la table INSERT INTO. En revanche. Pour créer une nouvelle table. utilisez l'instruction SELECT. INSERT INTO Clients SELECT * FROM NouveauxClients . pour chaque nouvel enregistrement que vous souhaitez créer. le moteur de base de données Microsoft Jet n'ajoutera pas les enregistrements..  Exemple : Pour tester l'exemple suivant. faites-le si vous souhaitez conserver les valeurs d'origine du champ. l'opération INSERT échouera. Cet exemple présente la sélection de tous les enregistrements de la table NouveauxClients et les ajoute à la table Clients.

Ouvrez le formulaire Employés en mode Formulaire et définissez la propriété AvantMAJ (BeforeUpdate) du formulaire à [Event Procedure]. Nom.copiez la table Employés vers une nouvelle table nommée HistoriqueEmployé en cliquant sur la table. L'exemple suivant présente la sélection. Vous pouvez utiliser la clause INSERT INTO pour sauvegarder les informations de votre base de données avant toute modification. Pour tester l'exemple suivant.30 . Dans la procédure événementielle Avant MAJ. Dans les Options de la boîte de dialogue Coller la table sous. vous pouvez sauvegarder les informations d'une table Employés juste avant qu'un utilisateur introduise une quelconque modification dans cette table. Par exemple. (Prénom. entrez le code suivant : DoCmd. Forms!Employés!Nom. Collez ensuite l'instruction SQL suivante dans une nouvelle requête et enregistrez-la sous SauvegardeRequête : INSERT INTO HistoriqueEmployé(Prénom. à chaque modification de la tables Employés par un utilisateur. à partir de la fenêtre Base de données. cliquez sur Structure seulement. INSERT INTO Employés SELECT Stagiaires.Forms!Employés! Fonction) . Cette copie ne contient que la structure de la table. et ajoute leurs enregistrements à la table Employés. de tous les stagiaires embauchés depuis plus de 30 jours.* FROM Stagiaires WHERE Dated'embauche < Now() . à partir d'une table Stagiaires existante. Cet exemple présente la création d'un nouvel enregistrement dans la table Employés : INSERT INTO Employés 'Washington'. puis sur Copier dans la barre d'outils. les données existantes de la table Employés seront copiées dans la table de sauvegarde. Fonction) VALUES (Forms!Employés!Prénom. sans aucune donnée. Fonction) VALUES ('Harry'.OpenQuery "SauvegardeRequête" Désormais. 'Stagiaire') .  Page 47 .Nom.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. et enfin sur Coller .

Taille.. Remarque  Les mises à jour ne peuvent faire appel aux fonctions AVG. Sum. Min.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL.. Syntaxe Update Tablename Set fields=Newval [Where Criteria] L’instruction Update comprend les elements suivants : Elément Tablename Fields Newval Criteria  Description Nom de la table dans laquelle des enregistrements sont modifier.  La nouvelle valeur doit être compatible avec la definition de la colonne (Type.  Exemples La requête mise à jour suivante va permettre de doubler la quantité en stock pour tous les articles ayant une TVA = 19 % UPDATE ARTICLE SET Stock=Stock * 2 Where TVA=19  Page 48 .).  Update : Requête Mise à jour Permet la mise à jour (modification) de lignes appartenant à une table. Count. Nom du champ de la table pour lequel la valeur va changer Nouvelle valeur du champ Expression qui détermine quels enregistrements seront mis à jour.. Max.

sont conservées. Les opérations de suppression en cascade entraînent la suppression des enregistrements des tables placées du côté "plusieurs" de la relation lorsque l'enregistrement correspondant.*] FROM table [WHERE criteria] L'instruction DELETE comprend les éléments suivants : Elément Table Table Criteria  Description Nom facultatif de la table dans laquelle des enregistrements sont supprimés. vous pouvez utiliser la méthode Execute conjointement à une instruction DROP.  DELETE : Requête suppression Crée une requête Suppression qui supprime des enregistrements dans une ou dans plusieurs des tables mentionnées dans la clause FROM qui correspond à la clause WHERE. Vous pouvez utiliser DELETE pour supprimer des enregistrements impliqués dans une relation un-à-plusieurs avec d'autres tables. Syntaxe DELETE [table. la structure de la table et toutes ses propriétés. Pour supprimer l'ensemble d'une table d'une base de données. seules les données sont supprimées . Remarques DELETE est particulièrement utile lorsque vous désirez supprimer de nombreux enregistrements en même temps. la structure associée est perdue. si vous employez DELETE. dans la relation établie entre les tables Clients et Commandes. Par exemple. Notez que.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. la table Clients se situe du côté "un" tandis que la table Commandes est du côté "plusieurs". est lui même supprimé de la requête. si vous supprimez la table. Nom de la table dans laquelle des enregistrements sont supprimés. En revanche. Supprimer un enregistrement dans Clients  Page 49 . placé du coté "un" de la relation. Expression qui détermine quels enregistrements seront mis à jour. notamment les attributs de champs et les index.

Si vous désirez supprimer des valeurs contenues dans un champ déterminé. Si vous supprimez des enregistrements par inadvertance.  Important  Une fois que vous avez supprimé des enregistrements à l'aide d'une requête Suppression. DELETE * FROM Employés WHERE Fonction = 'Stagiaire' . UPDATE ou DELETE. faites d'abord une requête Sélection avec les mêmes critères. puis exécutez la requête Suppression. Si vous désirez savoir quels enregistrements ont été supprimés. Quand la clause FROM ne s'applique qu'à une seule table. ajoutez quelques enregistrements à la table Employés avec une Fonction de "Stagiaire". entraîne la suppression des enregistrements correspondants dans Commandes si l'option de suppression en cascade a été choisie. vous pourrez les récupérer à partir de vos copies de sauvegarde. Syntaxe SELECT fieldlist FROM tableexpression WHERE criteria  Page 50 .  Conservez toujours des copies de sauvegarde de vos données.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. créez une requête de mise à jour pour remplacer les valeurs par Null. il est inutile de faire figurer le nom de la table dans l'instruction DELETE.  La Clause Where Indique quels enregistrements des tables citées dans la clause FROM sont affectés par l’instruction SELECT. vous ne pouvez pas annuler l'opération. Cet exemple supprime tous les enregistrements d'employés dont la Fonction est Stagiaire. examinez les résultats obtenus. Une requête Suppression efface des enregistrements dans leur intégralité et non seulement les données de certains champs.  Exemple : Pour essayer l'exemple suivant.

Utilisez plusieurs expressions différentes pour déterminer quels seront les enregistrements renvoyés par l'instruction SQL. l'objet Recordset résultant ne pourra pas être mis à jour. elle doit suivre la clause FROM. Une instruction SELECT contenant une clause WHERE se compose des éléments suivants : Élément Fieldlist Tableexpression Criteria Description Nom du ou des champs à extraire . Par exemple. Utilisez la clause WHERE pour éliminer les enregistrements que vous ne souhaitez pas regrouper à l'aide d'une clause GROUP BY. Si vous spécifiez plusieurs tables dans votre requête et que vous n'avez pas inclus de clause WHERE ou JOIN.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. Nom de la ou des tables contenant les données à extraire. Si vous n'utilisez pas de clause JOIN pour effectuer des opérations de jointure SQL sur plusieurs tables. Une clause WHERE peut contenir jusqu'à 40 expressions liées par des opérateurs logiques comme And et Or. Expression que les enregistrements doivent satisfaire pour être inclus dans le résultat de la requête. si elle est présente. Si vous ne spécifiez pas de clause WHERE. votre requête renvoie toutes les lignes de la table. HAVING détermine quels sont les enregistrements à renvoyer. une fois que les enregistrements sont regroupés à l'aide de GROUP BY. votre requête génère un produit cartésien des tables. WHERE détermine quels sont les enregistrements à sélectionner.  Remarques Le moteur de base de données Microsoft Jet sélectionne les enregistrements qui remplissent les conditions répertoriées dans la clause WHERE. La clause WHERE est facultative mais. Salaire FROM Employés WHERE Salaire > 21000.  Page 51 . WHERE est similaire à HAVING. De même. l'instruction SQL suivante sélectionne tous les employés dont le salaire dépasse 21 000 F : SELECT Nom.

vous devez indiquer les littéraux date au format américain. utilisez l'instruction SQL suivante : SELECT * FROM Commandes WHERE [Date envoi] = #5/10/96#. N'oubliez pas d'indiquer vos littéraux date entre deux caractères #. Vous pouvez également utiliser la fonction DateValue qui reconnaît les paramètres régionaux de Microsoft Windows. comme dans l'exemple ci-dessous. Lorsque vous entrez un nom de champ contenant une espace ou un signe de ponctuation.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. Prénom FROM Employés WHERE Nom = 'Leroy' . le 10 mai 1996. pour un code écrit en France : SELECT * FROM Commandes WHERE [Date envoi] = DateValue('10/5/96'). Par exemple : SELECT [Restaurant favori] Si vous spécifiez l'argument criteria. et ce. même si vous n'utilisez pas la version américaine du moteur de base de données Microsoft Jet.  Exemples L'exemple suivant présente la sélection des champs Nom et Prénom de chaque enregistrement dont le nom de famille est Leroy : SELECT Nom. Pour rechercher les enregistrements datés du 10 mai 1996 dans une base de données française. Par exemple. Par exemple. s'écrit sous la forme 10/5/96 en France et 5/10/96 aux Etats-Unis.  Page 52 . pour un code écrit aux Etats-Unis : SELECT * FROM Orders WHERE ShippedDate = DateValue('5/10/96'). placez ce nom entre crochets ([ ]). Par exemple.

PrixUnitaire FROM Produits WHERE (PrixUnitaire >=20. L'exemple suivant présente la sélection des commandes qui se situent durant la première moitié de 1995 : SELECT N°Commande.00) . Par exemple. vous pouvez sélectionner tous les employés du service Ventes : WHERE Dept = 'Ventes' Ou tous les clients qui ont entre 18 et 30 ans : WHERE Age BETWEEN 18 And 30 L'exemple suivant présente la sélection des commandes livrées dans les états de l'Idaho. SELECT NomProduit. L'exemple suivant présente la sélection de tous les produits qui apparaissent par ordre alphabétique entre "Cha" et "Out". RégionLivraison FROM Commandes WHERE RégionLivraison In ('ID'.OFPPT – ISTA BENI MELLAL © RHATAY – BENTALEB Module N° 5 : Système d’information Séquence N° 4 : Accèss : Requêtes Durée : 5 Jours Objectif : Savoir Interroger une base de données à l’aide de requêtes SQL. 'WA') . L'exemple suivant présente la sélection des produits dont les prix unitaires sont compris entre 20 et 50 F inclusivement : SELECT NomProduit.  Page 53 . DateCommande FROM Commandes WHERE DateCommande Between #1-1-95# And #30-6-95# . PrixUnitaire FROM Produits WHERE NomProduit Between 'Cha' And 'Out' .00 And PrixUnitaire<= 50. "Outback Lager" n'est pas retenu parce que "Outback Lager" vient après "Out"et se trouve donc en dehors de la plage spécifiée. 'OR'. inclusivement. L'exemple suivant présente la sélection des champs Nom et Prénom des Employés dont le nom de famille commence par la lettre S : SELECT Nom. Prénom FROM Employés WHERE Nom Like 'S*' . de l'Orégon ou de Washington : SELECT N°Commande.

Sign up to vote on this title
UsefulNot useful