SQL - Free

publicité
SQL
Instruction SELECT
Utilisez l'instruction SELECT pour interroger des tables existantes.
Syntaxe
SELECT [attribut] { * | table.* | [table.]champ1 [, [table.]champ2.[, ...]]}
[AS pseudonyme1 [, pseudonyme2 [, ...]]]
FROM expression_de_table [, ...] [IN base_de_données_externe]
[WHERE... ]
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]
L'instruction SELECT utilise les arguments suivants :
attribut
Un des attributs suivants: ALL, DISTINCT. Vous utilisez l'attribut pour réduire le nombre
d'enregistrements communiqués.
table Le nom de la table dans laquelle vous sélectionnez des enregistrements.
champ1, champ2
Les noms des champs d'où il faut extraire des données. Si vous incluez plusieurs champs, elles
seront extraites dans l'ordre indiqué.
pseudonyme1, pseudonyme2 Les noms de colonne à utiliser lorsque vous affichez les données extraites en mode
Feuille de données.
expression_de_table Le nom de la table ou des tables qui contiennent les données que vous voulez extraire.
base_de_données_externe
Le nom de la base de données qui contient les tables dans expression_de_table, si pas
dans la base de données en cours.
Une instruction SQL commence généralement par SELECT.La syntaxe minimale pour une instruction SELECT est :
SELECT champs FROM table
Vous pouvez utiliser un astérisque (*) pour sélectionner tous les champs dans une table. L'exemple suivant
sélectionne tous les champs dans la table Employés :
SELECT * FROM Employés;
Si un nom de champ apparaît plusieurs fois dans une table dont le nom figure dans la clause FROM, faites-le
précéder du nom de la table et de l'opérateur . (point). Dans l'exemple suivant, le champ Dépt apparaît à la fois dans la table
Employés et dans la table Directeurs. L'instruction SQL sélectionne le champ Dépt de la table Employés et le champ
NomDirecteur de la table Directeurs :
SELECT Employés.Dépt, NomDirecteur
FROM Directeurs, Employés
WHERE Employés.Dépt = Directeurs.Dépt;
En mode Feuille de données, Microsoft Access utilise le nom de champ comme en-tête de colonne. Si vous souhaitez
employer un autre en-tête, utilisez le mot réservé AS. Dans l'exemple suivant, le titre Naissance fait office d'en-tête de
colonne dans la feuille de données qui en résulte :
SELECT [Date de naissance] AS Naissance
FROM Employés;
1
L'utilisation de la clause AS équivaut à paramétrer la propriété Pseudonyme (Alias) dans la feuille des propriétés de
la liste des champs en mode Création d'une requête.
Vous pouvez utiliser les autres clauses dans une instruction SELECT pour limiter davantage et organiser les
données qui en résultent. Pour plus d'informations, voir la rubrique qui porte sur chacune de ces clauses.
Clause FROM (SQL)
FROM spécifie les tables ou les requêtes qui contiennent les champs repris dans l'instruction SELECT.
Syntaxe
SELECT liste_de_champs
FROM expression_de_table [IN base_de_données_externe]
Une instruction SELECT qui contient une clause FROM utilise les arguments suivants :
liste_de_champs
Le nom du ou des champ(s) à extraire ainsi que les pseudonymes de noms de champ, les fonctions
de regroupements SQL, les attributs de sélection (ALL, DISTINCT) ou d'autres options pour l'instruction SELECT.
expression_de_table Une expression qui identifie une ou plusieurs tables d'où il faut extraire des données. L'expression
peut être le nom d'une seule table ou une combinaison provenant d'une JOINTURE ou d'une
sous-requête.
base_de_données_externe
Le nom d'une base de données externe qui contient toutes les tables dans
expression_de_table.
FROM est requis et suit chaque SELECT.
L'ordre des noms de table dans expression_de_table est sans importance.
Pour améliorer les performances et la facilité d'emploi, il est recommandé d'utiliser une table attachée au lieu d'une
clause IN
pour extraire des données provenant d'une base de données externe.
SELECT [Nom de famille], [Prénom]
FROM Employés;
L'inclusion d'une clause FROM équivaut à paramétrer la propriété Source données dans la feuille des propriétés de la liste
des champs en mode Création d'une requête.
Clause WHERE (SQL)
Vous pouvez utiliser la clause WHERE pour déterminer quels enregistrements des tables reprises dans la clause FROM,
apparaîtront dans les résultats de l'instruction SELECT. Microsoft Access sélectionne les enregistrements qui répondent aux
conditions énumérées dans la clause WHERE. Ces conditions sont identiques à celles que vous pourriez entrer dans le
champ Critères de la grille d'interrogation.
Syntaxe
SELECT liste_de_champs
FROM expression_de_table
WHERE critère
Une instruction SELECT qui contient une clause WHERE utilise les arguments suivants :
liste_de_champs
Le nom du ou des champ(s) à extraire ainsi que les pseudonymes de noms de champ, les attributs
de sélection (ALL, DISTINCT) ou d'autres options pour l'instruction SELECT.
expression_de_table Le nom de la table ou des tables d'où les données seront extraites
2
critère Une expression à laquelle des enregistrements doivent répondre pour être inclus dans les résultats de la requête
La clause WHERE est facultative, mais la clause FROM doit la précéder lorsque vous l'utilisez. Par exemple, vous
pouvez sélectionner tous les employés du département des ventes (WHERE Dépt = 'Ventes') ou tous les clients dont l'âge
se situe entre 18 et 30 ans (WHERE Age Between 18 And 30).
La clause WHERE est semblable à HAVING. WHERE détermine les enregistrements qui sont sélectionnés.
Similairement, une fois les enregistrements regroupés au moyen de GROUP BY, HAVING détermine ceux qui seront
affichés.
Utilisez la clause WHERE pour éliminer les enregistrements qui ne doivent pas être regroupés par une clause
GROUP BY.
Utilisez les différentes expressions pour déterminer quels enregistrements sont retournés par l'instruction SQL. Par
exemple,
l'instruction SQL ci-dessous sélectionne tous les employés dont les salaires sont supérieurs à 21 000 F :
SELECT [Nom de famille], Salaire
FROM Employés
WHERE Salaire > 21000;
La clause WHERE peut contenir jusqu'à 40 expressions liées par des opérateurs logiques, comme And ou Or.
Quand vous entrez un nom de champ qui contient un espace ou un signe de ponctuation, entourez-le de crochets droits ([ ]) :
SELECT [Réf. produit], [Unités en stock]
FROM Produits
WHERE [Unités en stock] <= [Niveau de réapprovisionnement];
Lorsque vous spécifiez l'argument critère, les dates doivent être saisies dans le format américain, même si vous
n'utilisez pas la version américaine de Microsoft Access. Par exemple, 10 mai 1994 s'écrit 10/5/94 en France et 5/10/94 aux
Etats-Unis. Pour trouver les enregistrements qui contiennent cette date dans une base de données française, vous devrez
utilisez l'instruction SQL suivante :
SELECT *
FROM Commandes
WHERE [Date envoi] = #5/10/94#
Clause GROUP BY (SQL)
La clause GROUP BY regroupe, en un seul enregistrement, des enregistrements qui possèdent des valeurs identiques dans
la
liste de champs spécifiée. Une valeur de synthèse est créée pour chaque enregistrement si vous insérez une fonction de
regroupement SQL, telle que Somme (Sum) ou Compte (Count) dans l'instruction SELECT.
Syntaxe
SELECT liste_de_champs
FROM table
WHERE critère
GROUP BY liste_de_champs_de_groupe
Une instruction SELECT qui contient une clause GROUP BY utilise les arguments suivants :
liste_de_champs
Le nom du ou des champ(s) à extraire ainsi que les pseudonymes de noms de champ, les fonctions
de regroupements SQL, les attributs de sélection (ALL, DISTINCT) ou d'autres options pour l'instruction SELECT.
table Le nom de la table d'où les enregistrements seront extraits. Pour plus d'informations, voir la clause FROM.
3
critère Critère de sélection. Si l'instruction contient une clause WHERE, Microsoft Access regroupe les valeurs après
avoir appliqué les conditions WHERE aux enregistrements.
liste_de_champs_de_groupe Les noms de maximum 10 champs utilisés pour regrouper les enregistrements. L'ordre
des noms de champ dans liste_de_champs_de_groupe détermine les niveaux de regroupement, du plus élevé au plus
bas.
La clause GROUP BY est facultative.
Les valeurs de synthèse sont omises en l'absence de fonction de regroupement SQL dans l'instruction SELECT.
Dans les champs GROUP BY, les valeurs de type Null sont regroupées et ne sont pas omises. Toutefois, elles ne
sont évaluées dans aucune fonction de regroupement SQL.
Utilisez la clause WHERE pour exclure les lignes que vous ne souhaitez pas regrouper et utilisez la clause
HAVING pour filtrer les enregistrements une fois qu'ils ont été regroupés. Sauf s'il contient des données de type Mémo ou
Liaison OLE, un champ dans la liste de champs GROUP BY peut se référer à n'importe quel champ repris dans la clause
FROM, même si le champ n'est pas inclus dans l'instruction SELECT, à condition que l'instruction SELECT comprenne au
moins une fonction de regroupement SQL. Microsoft Access ne peut pas effectuer de regroupement sur des champs Mémo
ou Liaison OLE.
Si vous utilisez une clause GROUP BY, tous les champs dans la liste de champs SELECT doivent être inclus dans
la clause GROUP BY ou être inclus comme arguments dans une fonction de regroupement SQL.
Quand vous tapez un nom de champ qui contient un espace ou un signe de ponctuation, entourez-le de crochets droits ([ ]) :
SELECT [Nom du produit], Sum([Unités en stock])
FROM Produits
GROUP BY [Nom du produit];
Clause HAVING (SQL)
Utilisez la clause HAVING pour spécifier quels enregistrements regroupés sont affichés. Une fois que les enregistrements
ont
été combinés au moyen de GROUP BY, la clause HAVING les affiche pour autant qu'ils répondent aux conditions qu'elle
définit.
Syntaxe
SELECT liste_de_champs
FROM table
WHERE critère_de_sélection
GROUP BY liste_de_champs_de_groupe
HAVING critère_de_groupe
Une instruction SELECT qui contient une clause HAVING utilise les arguments suivants :
liste_de_champs
Le nom du ou des champ(s) à extraire ainsi que les pseudonymes de noms de champ, les fonctions
de regroupements SQL, les attributs de sélection (ALL, DISTINCT) ou d'autres options pour l'instruction SELECT.
table Le nom de la table d'où les enregistrements seront extraits. Pour plus d'informations, voir la clause FROM.
critère_de_sélection Critère de sélection. Si l'instruction contient une clause WHERE, Microsoft Access regroupe les
valeurs après avoir appliqué aux enregistrements les conditions définies dans WHERE.
liste_de_champs_de_groupe Les noms de maximum 10 champs utilisés pour regrouper des enregistrements. L'ordre
des noms de champ dans liste_de_champs_de_groupe détermine les niveaux de regroupement, du plus
élevé au plus bas.
critère_de_groupe
Une expression qui détermine les enregistrements regroupés qui seront affichés.
La clause HAVING est facultative.
La clause HAVING est semblable à WHERE. WHERE détermine les enregistrements qui sont sélectionnés. Une
fois les enregistrements regroupés par GROUP BY, HAVING détermine les enregistrements qui seront affichés.
4
La clause HAVING peut contenir jusqu'à 40 expressions liées par des opérateurs logiques, comme And ou Or.
5
Clause ORDER BY (SQL)
La clause ORDER BY trie les données affichées sur un ou plusieurs champs spécifiés, dans l'ordre croissant ou décroissant.
Syntaxe
SELECT liste_de_champs
FROM table
WHERE critère_de_sélection
ORDER BY champ1 [ASC | DESC ][, champ2 [ASC | DESC ][, ...]]
Une instruction SELECT qui contient une clause ORDER BY utilise les arguments suivants :
Argument
Description
liste_de_champs
Le nom du ou des champ(s) à, extraire ainsi que les pseudonymes de noms de champ, les
fonctions de regroupements SQL, les attributs de sélection (ALL DISTINCT) ou d'autres options pour l'instruction
SELECT.
table Le nom de la table d'où les enregistrements seront extraits. Pour plus d'informations, voir la clause FROM.
critère_de_sélection Critère de sélection. Si l'instruction contient une clause WHERE, Microsoft Access regroupe les
valeurs après avoir appliqué aux enregistrements les conditions définies dans WHERE .
champ1, champ2
Les noms des champs sur lesquels les enregistrements vont être triés.
La clause ORDER BY est facultative (sauf si vous utilisez l'attribut TOP ou TOP n PERCENT dans la liste de
champs SELECT). Si vous ne spécifiez pas de clause ORDER BY, les données ne sont pas triées.
L'ordre de tri par défaut est croissant (A-Z, 0-9). Toutefois, vous pouvez inclure le mot réservé ASC à la fin de
chaque champ que vous souhaitez trier dans l'ordre croissant. Les deux exemples ci-dessous trient les noms des employés
dans l'ordre alphabétique de leur nom de famille :
SELECT [Nom de famille], [Prénom]
FROM Employés
ORDER BY [Nom de famille];
SELECT [Nom de famille], [Prénom]
FROM Employés
ORDER BY [Nom de famille] ASC;
Pour trier dans l'ordre décroissant (Z-A, 9-0), ajoutez le mot réservé DESC à la fin de chaque champ que vous
désirez trier dans l'ordre décroissant. L'exemple ci-dessous sélectionne les salaires et les trie dans l'ordre décroissant :
SELECT [Nom de famille], Salaire
FROM Employés
ORDER BY Salaire DESC, [Nom de famille];
Si vous spécifiez un champ qui contient des données du type Mémo ou Liaison OLE dans la clause ORDER BY,
une erreur se produit. Microsoft Access ne trie pas sur des champs de ce type.
La clause ORDER BY est généralement le dernier élément d'une instruction SQL.
Vous pouvez inclure des champs supplémentaires dans la clause ORDER BY. Les enregistrements sont d'abord
triés par le premier champ indiqué après ORDER BY. Les enregistrements qui possèdent des valeurs identiques dans ce
champ sont ensuite triés par la valeur contenue dans le deuxième champ indiqué, et ainsi de suite.
L'utilisation d'une clause ORDER BY équivaut à sélectionner Croissant ou Décroissant dans la cellule Tri de la
grille d'interrogation.
6
Téléchargement