Академический Документы
Профессиональный Документы
Культура Документы
-1- Généralités
Le langage SQL (Structured Query Language) peut être considéré comme le langage d’accès
normalisé aux bases de données. Il est aujourd’hui supporté par la plupart des produits
commerciaux que ce soit par les systèmes de gestion de bases de données micro tel que
Access ou par les produits plus professionnels tels que Oracle ou Sybase.
Il possède 3 parties :
Nous avons vu que la plupart des SGBD offrent la possibilité d'effectuer des recherches
directement dans les tables. Les possibilités de formuler des critères de recherche sont
cependant souvent assez limitées. Heureusement, la plupart des SGBD nous offrent également
la possibilité de poser pratiquement n'importe quelle "question" à nos tables, sous forme de
requêtes.
Les requêtes servent donc à répondre aux questions basées sur le contenu d'une ou de
plusieurs tables.
la clause FROM liste les relations utilisées pour évaluer les requêtes;
la clause WHERE qui est facultative énonce une condition que doivent respecter les
enregistrements sélectionnés.
3- La projection et la sélection
La projection consiste à choisir certaines colonnes d’une table (la clause WHERE n’est pas
utilisée alors), mais toutes les occurrences de la table sont affichées :
LA CLAUSE SELECT
1- Quelques généralités
Les critères de sélection constituent une expression logique qui peut prendre la valeur
'Vrai' ou 'Faux'.
= "est égal"
> "strictement supérieur"
< "strictement inférieur"
>= "supérieur ou égal"
<= "inférieur ou égal"
<> "est différent"
Exercice 1 : quels sont les jours pour lesquels le taux de remise est supérieur à 10% ?
L'opérateur AND nous permet de combiner plusieurs conditions dans une expression
logique. L'expression logique retourne uniquement la valeur 'Vrai' lorsque toutes les
conditions sont remplies.
3. OR (Ou logique)
Lorsqu'on combine plusieurs conditions par des opérateurs logiques, le résultat final de
l'expression logique dépend de l'ordre d'exécution des différentes conditions. Cet ordre est
déterminé par la priorité des opérateurs logiques. Voici l'ordre prédéfini en SQL:
1. Déterminer le résultat logique ('Vrai','Faux') des comparaisons (=, <, > etc.)
2. Effectuer les négations (NOT)
3. Effectuer les AND
4. Effectuer les OR
Exercice 3 : quels sont les élèves nés en 1986 ou en 1987 et n’habitant pas Paris ?
Elle sert juste à omettre les enregistrements qui stockent un doublon dans le (ou les) champs
spécifié(s).
Seules les valeurs uniques des champs listés dans l’instruction SELECT apparaissent dans le
résultat de la requête.
3- La clause BETWEEN
-4- La clause IN
L'opérateur LIKE permet d’effectuer une comparaison partielle. Il est surtout employé avec
les colonnes contenant des données de type alpha. Il utilise les jokers % et _ (‘pour cent’ et
‘blanc souligné’).
Le joker % remplace n'importe quelle chaîne de caractères, y compris la chaîne vide.
Pour les manipulations pratiques, il faut comprendre que certains SGBD utilisent des
caractères spéciaux différents pour représenter une séquence de caractères respectivement un
caractère quelconque. MS-Access par exemple utilise les caractères suivants:
SQL MS-Access
Exercice 8 : quels sont les élèves qui possèdent un”r” en 2ème lettre de leur prénom?
NOM_ELEVE PRENOM_ELEVE
Bernardot Eric
PETITPIED Arthur
Dans une requête on a la possibilité de définir des champs à valeur calculée. On, peut utiliser
les opérateurs mathématiques de base pour combiner différentes colonnes. La colonne
obtenue n’est pas le champ d’une table. On peut lui donner un nom grâce au mot-clé AS.
Une valeur nulle ne correspond pas à zéro, ni à la chaîne vide. C’est une donnée indéterminée,
ou qui n’est pas encore renseignée.
Pour tester une valeur nulle, il suffit de rajouter « Where nom champ is NULL ».
-8- L’ordre de la requête
Cette clause permet de définir le tri des colonnes de la réponse, soit en précisant le nom
littéral de la colonne, soit en précisant son n° d'ordre dans l'énumération qui suit le mot clef
SELECT.
ASC spécifie l’ordre ascendant et DESC l’ordre descendant du tri. ASC ou DESC peuvent
être omis, dans ce cas c'est l'ordre ascendant qui est utilisé par défaut.
Exercice 11: donner la liste des véhicules tries par modèle et par date de mise en service
décroissante.
Derrière ce mot compliqué se cachent quelques fonctions qui peuvent être utilisées à
l'intérieur des requêtes de sélection pour faire des calculs sur le résultat de la requête.
Imaginons la requête suivante:
SELECT NOM_ELEVE, PRENOM_ELEVE, DATE_NAIS_ELEVE, ADR_VILLE_ELEVE
FROM ELEVE WHERE ADR_VILLE_ELEVE <>"Paris";
Cette requête nous retourne tous les élèves n’habitant pas Paris. Il se peut très bien que
l'utilisateur ne soit pas intéressé dans le détail, mais veuille uniquement connaître le nombre
d’élèves n’habitant pas Paris pour réaliser des statistiques. La requête correspondante est:
compte
4
Voici les fonctions d'agrégations les plus répandues:
maxitaux
20
2- Le regroupement
La clause GROUP BY intervient sur le résultat d'un SELECT. En fait, les enregistrements
résultant d'une requête de sélection sont groupés, de façon qu'à l'intérieur de chaque groupe,
les valeurs pour la liste des champs de groupe soient identiques.
MODELE compte
Honda 500 CB 1
Peugeot 206 1
Renault Clio 2
Renault Scenic 1
Suzuki 600 Bandit 1
Par exemple, dans l’exemple précédent, je souhaite n’obtenir que les modèles dont le nombre
de véhicules est supérieur à 1 :
La plupart des BD réelles ne sont pas constituées d'une seule table, mais d'un ensemble de
tables liées entre elles via certains champs. Par conséquent, les requêtes correspondantes ne
sont pas ciblées sur une, mais sur plusieurs tables.
La jointure permet de relier plusieurs tables entre elles via des champs communs (clé
étrangère / clé primaire).
La clause WHERE contient ce qu'on appelle la condition de jointure. Dans notre exemple, la
condition de jointure demande l'égalité des valeurs pour les champs num_imac de eleve et
num_immac de vehicule.
Exercice 14: Afficher pour chaque leçon, le nom du moniteur et le nom de l’élève:
NOM_ELEVE Compte
Bernardot 5