Le langage SQL Les opérateurs booléens et opérateurs de comparaison

Cours le langage SQL Les opérateurs booléens et opérateurs de comparaison, tutoriel & guide de travaux pratiques en pdf.

L’ordre SELECT

Ordre SELECT (version SQL89)
Permet de consulter les tables et les vues d’une BDD (extraire les données). Les clauses SELECT et FROM sont obligatoires.
SELECT [ALL|DISTINCT] <critères de projection>
FROM <tables>
[WHERE <critères de sélection et/ou de jointure>]
[ORDER BY <critère de classement> [ASC|DESC]]
[GROUP BY <critère de regroupement>]
[HAVING <condition de regroupement>]
[FETCH FIRST n ROWS ONLY]
Les clauses sont exécutées dans cet ordre :
FROM  WHERE  GROUP BY / HAVING  SELECT  ORDER BY
Il est possible de donner un autre libellé aux colonnes projetées avec la clause AS : SELECT nomcli AS nom du client…. On peut également écrire : SELECT nomcli « nom du client »… (admis sous Oracle).
Exemple : affichage de toutes les colonnes d’une table.
Ordre SELECT (version SQL92)
Dans sa version 92 le SQL impose une séparation distincte entre le critère de sélection et le critère de jointure (placé dans la clause WHERE initialement). Avec cette distinction on obtient une plus grande souplesse dans l’utilisation des critères de jointure. On peut d’ailleurs remplacer l’union (clause UNION), l’intersection (clause INTERSECT) ainsi que toutes les autres opérations sur les ensembles (clause MINUS) par la seule clause JOIN.
Cet ordre est très puissant et permet de nombreuses opérations ensemblistes qui nécessitaient auparavant beaucoup de lignes. Les jointures externes sont détaillées à nouveau au point B.12.4)
SELECT <critères de projection> [AS entete1],
FROM <tables> [LEFT|RIGHT|FULL] [INNER|NATURAL|OUTER|EXCEPTION|UNION] JOIN <tables> ON <critères de jointure>
WHERE <critères de sélection>
[ORDER BY <critère de classement> [ASC|DESC]]
[GROUP BY <critère de regroupement>]
[HAVING <condition de regroupement>]
[FETCH FIRST n ROWS ONLY]
La clause JOIN peut avoir les fonctions qui suivent :
– JOIN table2, table2 = uniquement les enregistrements en correspondance (comme les jointures classiques),
– table1 LEFT OUTER JOIN table2 = tous les enregistrements de table1,
– table1 EXCEPTION JOIN table2 = uniquement les enregistrements sans correspondance,
– table1 RIGHT OUTER JOIN table2 = tous les enregistrements de table2,
– table1 RIGHT EXCEPTION JOIN table2 = uniquement les enregistrements sans correspondance de table2.
NB :
ƒ NATURAL JOIN permet d’éviter de préciser les colonnes concernées par la jointure (que l’on peut restreindre à certaines colonnes avec la clause USING).
ƒ INNER JOIN précise une jointure interne, ce qui est le cas par défaut avec la simple utilisation de JOIN.
ƒ UNION permet de joindre deux tables dont la structure est différente.
Exemple : affichage de tous les clients ayant passé au moins une commande.
SELECT numclient, nomclient
FROM client JOIN commande ON client.numclient=commande.numclient;
Exemple : affichage de tous les clients n’ayant pas passé de commande.
SELECT numclient, nomclient
FROM client EXCEPTION JOIN commande ON client.numclient=commande.numclient;

Les prédicats (opérateurs) :

BETWEEN
Permet de rechercher une valeur dans une tranche (AND).
Exemple : affichage de toutes les commandes comprises entre deux dates.
SELECT numcde, datecde
FROM commande
WHERE datecde BETWEEN ‘01/02/01’ AND ‘30/03/01’;
NB: Ou alors en notation Access:
SELECT numcde, datecde
FROM commande
WHERE datecde BETWEEN #01/02/01# AND #30/03/01#;
B.3.2. IN Permet de chercher une valeur dans une liste (OR).
Exemple : affichage de toutes les commandes de 10 ou 20 articles.
SELECT numcde, datecde, qtecde
FROM commande
WHERE qtecde IN (10, 20);
NULL
Permet de tester les valeurs non renseignées dans une colonne.
Exemple : affichage de tous les clients n’ayant pas communiqué leur numéro de téléphone.
SELECT numclient, nomclient
FROM client
WHERE telclient IS NULL;
LIKE
Permet de rechercher dans une colonne une chaîne de caractères avec les caractères jokers _ et%.
Exemple : affichage des clients dont le nom commence par ‘PSO’.
SELECT numclient, nomclient FROM client WHERE nomclient LIKE ‘PSO%’;
Nota : Sous Access la formulation des jokers est différente (proche plus proche de VB d’ailleurs…) :
LIKE permet de chercher une occurrence dans les champs d’une table.
• * = n’importe quelle chaîne de caractères
• ? = n’importe quel caractère # = n’importe quel nombre
• [A-G] = plage de caractères
• [1-8] = plage de nombres
• [!A-G] = hors plage de caractères
• [!1-8] = hors plage de nombres
• En SQL non Access % = * et _ = ?
Les prédicats (existentiel) : EXISTS
Renvoie le booléen “vrai” si le sous-select correspondant retourne au moins une ligne (opération de division). Cf. sous requêtes.
Les opérateurs booléens et opérateurs de comparaison :
NOT (ou !)
Permet de sélectionner des lignes qui ne répondent pas à des critères de recherche.
Exemple : affichage des employés qui ne sont pas cadres.
SELECT matricule, nomemployé, categ
FROM employé
WHERE categ NOT = ‘Cadre’; Ou
SELECT matricule, nomemployé, categ
FROM employé
WHERE categ != ‘Cadre’; Ou
SELECT matricule, nomemployé, categ
FROM employé
WHERE NOT (categ = ‘Cadre’);
Autres opérateurs
AND, OR, =, <, >, <=, >=, <>, !=
NB : Sous Access la négation est notée NOT au lieu de !, donc != n’existe pas pour exprimer la différence uniquement <>.

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *