Previous Up Next
Université Lille 3-Charles de GaulleUFR de Mathématiques Sciences Économiques et Sociales

Chapitre 37  La commande SELECT, syntaxe de base

La commande de recherche est le verbe SELECT.

L'étude de la commande SELECT et des différentes clauses et fonctions est faite, pour commencer, en considérant une seule table.

Par la suite, l'utilisation de plusieurs tables dans le même SELECT, sera prise en compte.

La syntaxe de base est :

SELECT <colonnes d'une ou plusieurs tables séparées par «,» >
FROM <tables séparées par «,» >
WHERE <conditions logiques séparées par «AND» ou «OR» >
ORDER BY <colonnes séparées par «,» >


Le caractère «*» représente toutes les colonnes d'une table.

Exercice 1   Rechercher toutes les informations concernant les employés.





Exercice 2   Rechercher toutes les informations concernant les départements.





A la place de «*» on peut donner la liste des colonnes souhaitées, dans l'ordre souhaité, en écrivant la requête sur une ou plusieurs lignes. L'écriture sur plusieurs lignes est conseillée en vue de rendre plus simple la relecture et la modification de la requête.

Exercice 3   Rechercher le nom, la date d'embauche, le numéro du supérieur, le numéro de département et le salaire de tous les employés.





Il peut être utile de supprimer les doublons, d'où utilisation de la clause DISTINCT.

Exercice 4   Rechercher le titre de tous les employés.





Exercice 5   Rechercher les différentes valeurs des titres des employés.





Les clauses de restriction s'écrivent derrière WHERE.

Exercice 6   Rechercher le nom, le numéro d'employé et le numéro du département des employés dont le titre est «Secretaire».





Exercice 7   Rechercher le nom et le numéro de département dont le numéro de departement est supérieur à 40.





La restriction peut mettre en jeu la comparaison de deux ou plusieurs colonnes entre elles.

Exercice 8   Rechercher le nom et le prénom des employés dont le nom est alphabétiquement antérieur au prénom.





Exercice 9   Rechercher le nom, le salaire et le numéro du département des employés dont le titre est «Representant», le numéro de département est 35 et le salaire est supérieur à 20000.





Exercice 10   Rechercher le nom, le titre et le salaire des employés dont le titre est «Representant» ou dont le titre est «President».





Exercice 11   Rechercher le nom, le titre, le numéro de département, le salaire des employés du département 34, dont le titre est «Representant» ou «Secretaire».





Exercice 12   Rechercher le nom, le titre, le numéro de département, le salaire des employés dont le titre est Representant, ou dont le titre est Secretaire dans le département numéro 34.





Exercice 13   Rechercher le nom, et le salaire des employés dont le salaire est compris entre 20000 et 30000.





Exercice 14   Rechercher le nom, le titre, le numéro de département des employés dont le titre appartient à la liste : Representant, Secretaire.





Les opérateurs arithmétiques sont niés avec «!» : « non égal » s'écrit «!=» (ou «<>»).

Les autres opérateurs sont niés par «NOT» : « pas dans » s'écrit «NOT IN».

Les caractères jokers sont «%» pour une chaine et «_» pour un caractère.

Exercice 15   Rechercher le nom des employés commençant par la lettre «H».





Exercice 16   Rechercher le nom des employés se terminant par la lettre «n».





Exercice 17   Rechercher le nom des employés contenant la lettre «u» en 3ème position.





Exercice 18   Rechercher le salaire et le nom des employés du service 41 classés par salaire croissant.





Exercice 19   Rechercher le salaire et le nom des employés du service 41 classés par salaire décroissant.





Exercice 20   Rechercher le titre, le salaire et le nom des employés classés par titre croissant et par salaire décroissant.





Les valeurs non renseignées ne sont pas traitées dans un classement.

Exercice 21   Rechercher le taux de commission, le salaire et le nom des employés classés par taux de commission croissante.





Les valeurs non renseignées sont utilisées dans une restriction avec les clauses IS NULL ou IS NOT NULL.

Exercice 22   Rechercher le nom, le salaire, le taux de commission et le titre des employés dont le taux de commission n'est pas renseigné.





Exercice 23   Rechercher le nom, le salaire, le taux de commission et le titre des employés dont le taux de commission est renseigné.





Exercice 24   Rechercher le nom, le salaire, le taux de commission, le titre des employés dont le taux de commission est inférieur à 15.





Des expressions arithmétiques peuvent être utilisées après : SELECT, WHERE, et ORDER BY.

Exercice 25   Rechercher le nom, le salaire, le taux de commission et la commission d employés dont le taux de commission n'est pas nul.





Exercice 26   Rechercher le nom, le salaire, le taux de commission, la commission des employés dont le taux de commission n'est pas nul, classé par taux de commission croissant.





La prise en compte des valeurs non renseignées (NULL) se fait par l'utilisation de la fonction COALESCE.

COALESCE(arg1,arg2,...) : La première des valeurs non NULL est renvoyée.

Exercice 27   Rechercher le nom, la rémunération totale des employés.





Exercice 28   Rechercher le nom, la rémunération totale, en tenant compte des taux de commission non renseignés des employés.





La fonction ROUND(arg1 ,arg2) permet de faire l'arrondi mathématique de arg1 avec arg2 décimales.

Exercice 29   Rechercher le nom, le salaire et le salaire horaire arrondi à deux décimales des employés du département 35. Renommer les colonnes.


La fonction TRUNC(arg1 ,arg2) permet de tronquer arg1 avec arg2 décimales.




La fonction concaténation de chaines de caractères : «||» (2 caractères pipe)

Exercice 30   Rechercher le nom et le prénom (concaténés) des employés. Renommer les colonnes.





La fonction de codification du SQL standard n'existe pas en PostgreSQL :
DECODE(arg1 , arg20,arg21 , arg30,arg31, ..., .. ., arg40)
Mais on dispose de la structure CASE qui donne le même résultat (et avec plus de possibilités) :

CASE WHEN arg1=arg20 THEN arg21 WHEN arg1=arg30 THEN arg31 ... ELSE arg40 END


Exercice 31   Rechercher le nom, le numéro de département, le numéro de département décodé des départements.
Ou, pour simplifier : pour le département de numéro 10, afficher
Vu, pour le département de numéro 50, afficher Pas vu, pour les autres départements, afficher En cours....





Exercice 32   Rechercher le prénom si le département est 41 sinon le nom des employés, le numéro de département, et le salaire des employés classé par numéro de département.





La fonction extraction de chaine de caractères SUBSTR(arg1 ,arg2,arg3) permet d'extraire de arg1 à partir de la position arg2, les arg3 caractères .

Exercice 33   Rechercher les 5 premières lettres du nom des employés.





La fonction de retour du rang d'une chaîne dans une autre chaîne, STRPOS (arg1 , arg2) permet de retourner le rang de la chaîne arg2 dans la chaîne arg1.

Exercice 34   Rechercher le nom et le rang dans le nom de la lettre «r» à partir de la 3ème lettre des employés.





Les fonctions UPPER(arg1) et LOWER(arg1) permettent de forcer à la majuscule ou à la minuscule.

Exercice 35   Rechercher le nom, le nom en majuscule et le nom en minuscule de l'employé dont le nom est Vrante.





La fonction LENGTH(arg1) permet d'obtenir le nombre de caractères d'une chaîne de caractères.

Exercice 36   Rechercher le nom et le nombre de caractères du nom des employés.





Utilisation des opérateurs ensemblistes : UNION, INTERSECT, EXCEPT.

Exercice 37   Rechercher le nom, le type de rémunération (salaire ou commission) et le montant de ce salaire ou de cette commission, des employés dont le TX_COMMISSION n'est pas vide.





Exercice 38   Rechercher les numéros de département communs à la table EMP et à la table DEPT.





Exercice 39   Rechercher les numéros de département auxquels aucun employé n'est affecté.



Remarque.
UNION seul prend les données distinctes uniquement.

Si on veut toutes les données : UNION ALL.
D.Gonzalez (gonzalez@univ-lille3.fr) en date du th , 

Previous Up Next