comptabilite1_chapitre2_DGC
comptabilite1_chapitre2_DGC
comptabilite1_chapitre2_DGC
Déroulement : Cours/TD/TP
Filière : COMPTABILITE & GESTION
Niveau : 1 ère année
Semestre : 3
Prof : TATI LAMBERT
Tél: 06 643 85 23
Année académique 2019-2020
Chapitre 2 : Les requêtes
(SQL)
Objectif :
- Maîtriser la manipulation des données
- Maîtriser l’analyse et la technique qui prévalent à la création d’une
base de donnée (SGBDR Microsoft Access)
I- Les requêtes : syntaxe de base
Une requête (en anglais query) est une question posée à une base de données concernant les informations qu’elle contient.
Toute requête se comprend sur la base d’un raisonnement à 3 temps:
1: exprimer un besoin d’information
Quels sont les professeurs de DGC qui habitent à POINTE NOIRE?
2: programmer grâce au langage SQL le moyen de satisfaire ce besoin
SELECT NomProf, PrenomProf, Ville
FROM PROFESSEUR
WHERE Ville=‘’POINTE NOIRE’’ ;
3: obtenir la réponse formelle
NomProf PrenomProf Ville
TATI LAMBERT POINTE NOIRE
MAZONZA GASTON POINTE NOIRE
Lors d’une évaluation, la phase la plus importante est la phase 2 dans laquelle l’étudiant doit exprimer en SQL les éléments qui
Lui sont proposés
Les règles de base reposent sur les instructions et mots-clés fondamentaux suivants:
- l’ordre SELECT suivi des champs à afficher
- Le mot FROM permettant d’indiquer la ou les table(s) concernée(s)
- L’expression WHERE (pas nécessairement présente) qui exprime à la fois des restrictions et des éléments purement techniques
Exemple :
Voici une requête permettant d’établir une liste d’étudiant (nom, prenom , Tél) restreinte à ceux inscrits à l’UE 118 : système
d’information de gestion, de sexe féminin, habitants POINTE NOIRE et ayant une note au moins égale à 14
SELECT Nom, Prenom, Tel
FROM ETUDIANT, INSCRIRE, UE
WHERE Sexe =‘’F’’
AND Note >=14
AND Ville =‘’POINTE NOIRE’’
AND LibelleUE=‘’SIG’’
AND ETUDIANT.CodeEtud=INSCRIRE.#CodeEtud
AND INSCRIRE.#CodeUE=UE.CodeUE;
Les deux dernières lignes sont des éléments purement technique de la requête permettant de vérifier la jointure entre les
Tables invoquées
La jointure a pour but d’exprimer le lien entre la table ETUDIANT, la table INSCRIRE et la table UE
Les différentes conditions de jointure ou de sélection dans la clause WHERE sont liées par l’opérateur AND pour indiquer que
toutes les conditions doivent être vérifiées
A. LE SELECT
L’instruction SELECT permet la projection qui réduit le nombre de colonnes d’une relation pour n’en garder que certaines
Colonnes
SELECT attribut1, attribut2
FROM table;
Si l’on souhaite éliminer les doublons, il faut utiliser en plus la clause DISTINCT
SELECT DISTINCT attribut2 AS alias1
FROM table;
L’instruction AS permet d’attribuer un nouveau nom à l’attribut projeté. On parle d’alias. Le nom initial de l’attribut sera
Remplacé par l’alias retenu
B. LE FROM
L’instruction FROM a pour objet d’indiquer la ou les table(s) nécessaire(s) à la réalisation de la requête. Certaines requêtes
Peuvent être monotable, mais la plupart sont multitables, ce qui nécessite alors de prévoir la formalité procédurale : la jointure
Règle d’écriture :
SELECT table1.attribut1, table2.attribut2
FROM table1, table2
WHERE critère de jointure ;
Exemple :
SELECT ETUDIANT.Nom, ETUDIANT.Prenom, FILIERE. NomF
FROM ETUDIANT, FILIERE
WHERE FILIERE.CodeF=ETUDIANT.#CodeF;
C. Le WHERE
La clause WHERE exprime la restriction, qui retient seulement les occurrences remplissant les critères exprimés.
Toute condition à vérifier est introduite par la clause WHERE après la clause FROM
Règle d’écriture :
SELECT attribut1, attribut2
FROM table
WHERE condition de sélection;
La condition de sélection exprimée derrière la clause WHERE peut être spécifiée à l’aide :
Des opérateurs de = Égal
comparaison < Inférieur
> Supérieur
<= Inférieur ou égal
>= Supérieur ou égal
<> différent
La société LADORE est spécialisée dans la fabrication et la vente des articles de music.
Son activité a été mobilisée au travers du MCD suivant :
CLIENT ARTICLE
RELATION
SOURCE DESTINATION
SELECT Client.*
FROM Client
WHERE Client.datecréation >=#01/09/2014#;
Les champs de type date sont entourés de dièses ou de guillemets
F- Liste des factures (N°Facture, N°Client) établies en octobre 2014
Ou
SELECT Facture.N°Facture, Facture.N°Client
FROM Facture
WHERE Facture.datefacture >=#1/10/2014#
AND Facture.datefacture <=#31/10/2014# ;
Ou
SELECT Facture.N°Facture, Facture.N°Client
FROM Facture
WHERE MONTH(Facture.datefacture) =10
AND YEAR(Facture.datefacture) = 2014 ;
G. Liste des produits (N°Article, libellé et PVTTC) dont le libellé commence par « etui »
Un client qui a commandé est un client dont le numéro figure dans la table Facture
Ici il ne faut garder qu’une seule fois le nom et le prénom des clients qui ont fait plusieurs commandes ( et dont les numéros se
trouvent donc plusieurs fois dans la table Facture) d’où la clause DISTINCT
B. Liste des clients (nom, prenom ) ayant commandé au premier semestre 2014
B. On souhaite connaître tous les montants des lignes de commande (N°Facture, N°Article, Qte, PVTTC, MontantLC)
SELECT [LIGNE FACTURE].N°Facture, [LIGNE FACTURE].N°Article, [LIGNE FACTURE].Qte, Article.PVTTC, [Article].[PVTTC]*[LIGNE
FACTURE].[Qte] AS MontantLC
FROM Article, [LIGNE FACTURE]
VIII- Requêtes avec agrégats
A. Agrégats simples
1. Combien y a-t-il de client dans la base?
Ou bien
Un client qui a acheté plusieurs fois est un client dont le numéro figure plusieurs fois dans la table facture
1. Ajouter l’article OV-35, HOHNER PIA NOIR dont le prix de vente TTC est 1500 € de marque Hohner et dont le code famille
est OV
C. Mise à jour
1. Ecrire la requête SQL permettant d’augmenter de 5% le prix TTC des articles qui valent moins de 7 €
UPDATE Article
SET PVTTC = PVTTC*1,05
WHERE PVTTC < 7;
2. Ecrire la requête SQL permettant d’augmenter de 2% le prix TTC des articles qui valent plus de 7 € et qui ont été vendus
l’an passé (2013)
UPDATE Article
SET PVTTC = PVTTC*1,02
WHERE PVTTC >7
AND N°Article IN ( SELECT N°Article FROM [LIGNE Facture], Facture
WHERE Facture.N°Facture=[LIGNE Facture].#N°Facture
AND YEAR(datefacture)= 2013 ) ;
Il est nécessaire de recourir à une sous-requête pour connaître les articles vendus l’an passé
3. Ecrire la requête SQL permettant de diminuer de 30 € le prix TTC des articles qui coûtent plus de 3000 €
UPDATE Article
SET PVTTC=PVTTC*0,80
WHERE PVTTC > 3000 ;