0% ont trouvé ce document utile (0 vote)
49 vues12 pages

Guide SQL : Syntaxe et Jointures

Transféré par

Auguste Elvis Ouattara
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
49 vues12 pages

Guide SQL : Syntaxe et Jointures

Transféré par

Auguste Elvis Ouattara
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

SQL : Structured Query Language

Introduction
SQL est un langage déclaratif qui permet d’interroger une base de données sans se
soucier de la représentation interne. Il est composé en :
 Langage de récupération des données
 Langage de manipulation des données
 Langage de définition des données
 Langage de contrôle des transactions
 Langage contrôle des données
Le Langage de récupération des données permet d’interroger une base de données
c’est-à-dire fournit l’ensemble de commandes qui permet de récupérer les données
contenues dans une ou plusieurs tables de la bases. Sa commande principale est un
ordre SELECT.

1. Syntaxe générale de la commande SELECT


SELECT [ DISTINCT ] { * | expression [ AS nom_renome ] } [, ...]
FROM nom_table [ [ AS ] alias ] [, ...]
[ WHERE prédicat ]
[ GROUP BY expression [, ...] ]
[ HAVING condition [, ...] ]
[ {UNION [ALL] | INTERSECT | MINUS} requête ]
[ ORDER BY expression [ ASC | DESC ] [, ...] ]

2. SQL : Projection
SELECT <col1, col2, ...>
FROM <nom_table>;
ou
SELECT *
FROM <nom_table>;
Exemple :
SELECT solde, nom, NumCompte
FROM COMPTE;

Page 1 sur 12
3. SQL : Restriction
SELECT *
FROM <nom_table>
WHERE <condition_sélection>;

Exemple :
SELECT Matricule, nom, prenom, CodeClasse
FROM Etudiant
WHERE CodeClasse='C01' ;

4. Jointure Relationnelle
4.1. SQL : Jointure Equijointure
SELECT table1.colonne1, table2.colonn1 table2.colonne3, table2.colonne5,
FROM table1 ,table2
WHERE table1.colonne = table2.colonne
Exemple :

SELECT Etudiant.matricule , Etudiant.nom, Etudiant.prenom,


Classe.libelleclasse
FROM Etudiant, Classe
WHERE Etudiant.codeclasse= Classe.codeclasse

4.2. SQL : Jointure avec AND


SELECT table1.colonne1, table1.colonne2 table2.colonne3,
table2.colonne5,
FROM table1 ,table2
WHERE table1.colonne = table2.colonne
[AND (search_condition)]

Exemple :

SELECT Etudiant.matricule , Etudiant.nom, Etudiant.prenom,


Classe.libelleclasse
FROM Etudiant E, Classe C
WHERE Etudiant.codeclasse = Classe.codeclasse
AND Etudiant.sexe='M';

Page 2 sur 12
4.3. SQL : Utilisation des alias de tables
SELECT T1.colonne1, T2.colonne2,T2.colonne3, T2.colonne5
FROM table1 T1 ,table2 T2
WHERE T1.colonne = T2.colonne
[AND (search_condition)]
Exemple :
SELECT E.matricule, E.nom, E.prenom, C.libelleclasse
FROM Etudiant E, classe C
WHERE E.codeclasse=C.codeclasse
AND E.sexe='M';

4.4. SQL : Relier plus de deux tables


SELECT T1.colonne1, T2.colonne2 T2.colonne3, T2.colonne5
FROM table1 T1 ,table2 T2, Table3 T3
WHERE T1.colonne = T2.colonne
AND T1.colonne = T3.colonne

Pour joindre n tables ensemble, au moins ( n-1) conditions sont nécessaires

Exemple : SELECT m.codematiere,m.libellematiere


FROM matiere m, dispense d , classe c
where m.codematiere=d.codematiere and c.codeclasse=d.codeclasse
and c.libelleclasse='SIR2' ;

4.5. SQL : Auto jointure


SELECT E1.Matricule,E1.nom,E1.prenom
FROM Etudiant E1, Etudiant E2
WHERE E1.codeclasse = E2.CODEclasse
AND E2.Matricule = '1060'

5. SQL : Jointure SQL2

Cette écriture est moins utilisée que la syntaxe relationnelle. Bien que plus concise
pour des jointures à deux tables, elle se complique pour des jointures plus
complexes.

SELECT [ DISTINCT ] { * | expression [ AS nom_renome ] } [, ...]


FROM nomTable1 [{ INNER | { LEFT | RIGHT } [OUTER] }] JOIN nomTable2{
ON condition | USING ( colonne1 [, colonne2]... )}
| { CROSS JOIN | NATURAL [{ LEFT | RIGHT } [OUTER] ] JOIN nomTable2 } …
[ WHERE condition ];

Page 3 sur 12
 Les jointures internes (inner joins) :
- L’équijointure (equi join) est la plus connue, elle utilise l’opérateur d’égalité
dans la clause de jointure.
- La jointure naturelle est conditionnée en plus par le nom des colonnes. Elles
doivent être identiques
- La non équijointure utilise l’opérateur d’inégalité dans la clause de jointure.
- L’autojointure (self join) est un cas particulier de l’équijointure, qui met en
œuvre deux fois la même
 La jointure externe (outer join) : favorise une table (dite « dominante ») par
rapport à l’autre (dite « subordonnée »). Les lignes de la table dominante sont
retournées même si elles ne satisfont pas aux conditions de jointure

5.1. SQL : Jointure interne avec INNER

Jointure SQL2
SELECT E1 . * , C.*
FROM Etudiant E1
INNER JOIN
Classe C ON ( E1.codeclasse = C.codeclasse )
WHERE sexe='M'
OU
Jointure relationnelle
SELECT E1 . * , C.*
FROM Etudiant E1, Classe C
WHERE E1.codeclasse = C.codeclasse AND sexe='M'

Jointure SQL2
SELECT E1 . * , C.*
FROM Etudiant E1
INNER JOIN
Classe C ON ( E1.codeclasse = C.codeclasse )
WHERE sexe='M'
OU

Page 4 sur 12
Jointure relationnelle
SELECT E1 . * , C.*
FROM Etudiant E1, Classe C
WHERE E1.codeclasse = C.codeclasse AND sexe='M'
5.2. SQL : INÉQUIJOINTURES
Jointure SQL2
SELECT p1.brevet, p1.nom,
p1.nbHVol, p2.nbHVol "Référence"
FROM Pilote p1 JOIN Pilote p2 ON p1.nbHVol > p2.nbHVol
WHERE p2.brevet = 'PL-2';
OU
Jointure relationnelle
SELECT p1.brevet, p1.nom,p1.nbHVol,
p2.nbHVol "Référence"
FROM Pilote p1, Pilote p2
WHERE p1.nbHVol > p2.nbHVol AND p2.brevet = 'PL-2';

5.3. SQL : Jointure naturelle


Elle se base sur toutes les colonnes de deux tables qui possèdent le même nom et
sélectionne les lignes qui possèdent les mêmes valeurs

SELECT nom
FROM Etudiant
NATURAL JOIN Classe

5.4. SQL : Jointure externe à droite


SELECT E1 . * , C.*
FROM Etudiant E1
RIGHT OUTER JOIN
Classe C ON ( E1.codeclasse = C.codeclasse )

Ou

SELECT E1 . * , C.*
FROM Etudiant E1, Classe C
WHERE E1.codeclasse = C.codeclasse(+ )

Page 5 sur 12
5.5. SQL : Jointure externe à gauche
SELECT E1. * , C . *
FROM Classe C
LETF OUTER JOIN
Etudiant E1 ON ( E1.codeclasse = C.codeclasse )

Ou

SELECT E1 . * , C.*
FROM Etudiant E1, Classe C
WHERE E1.codeclasse(+ )= C.codeclasse

6. SQL : Opérateurs arithmétiques


Ces opérateurs ne tiennent pas compte des valeurs nulles (NULL VALUE )
Operateur : = , <,>,<,<=,>=, <> ou !=

SELECT Matricule, nom, prenom


FROM Etudiant
WHERE Nom = 'PARE'

SELECT Matricule, nom, prenom


FROM Etudiant
WHERE Matricule <1400

7. SQL : les opérateurs logiques : AND, OR , NOT


8. SQL : l’opérateur between

SELECT Matricule,nom,prenom
FROM Etudiant
WHERE Matricule between 1000 and 1005
9. SQL : l’opérateur like
Le symbole % représente une série de zéro ou de caractères et le symbbole _ représente
un seul caractère
Cette requête affiche les noms dont le deuxième caractère est un A et le nom est par
exemple KABORE
SELECT Matricule,nom,prenom
FROM Etudiant
WHERE nom like '_ABORE';

SELECT Matricule,nom,prenom
FROM Etudiant
WHERE nom like 'SA_AD_GA'

Page 6 sur 12
Cette requête affiche les noms qui commencent par 'OUE'
SELECT Matricule,nom,prenom
FROM Etudiant
WHERE nom like 'OUE%';

Cette requête affiche les noms qui contiennent par 'OUE'


SELECT Matricule,nom,prenom
FROM Etudiant
WHERE nom like '%OUE%';

Affichez les noms dont le deuxième caractère commence par A


SELECT Matricule,nom,prenom
FROM Etudiant
WHERE nom like '_A%';

Le mot clé ESCAPE sert à rechercher un caractère spécial


SELECT Matricule,nom,prenom
FROM Etudiant
WHERE nom like '%PARE\_%' ESCAPE '\';

10. SQL : l’operateur IN


SELECT Matricule, nom, prenom
FROM Etudiant
WHERE matricule IN ('1001', '1002', '1008');

SELECT Matricule,nom,prenom
FROM Etudiant
WHERE matricule NOT IN ('1001', '1002', '1008');

11. SQL : l’operateur IS NULL


Permet de tester si une valeur a été renseigner dans un champ
SELECT Matricule, nom, prenom
FROM Etudiant
WHERE adresse IS NULL;

SELECT Matricule, nom, prenom


FROM Etudiant
WHERE adresse IS NOT NULL;

12. SQL : La clause ORDER BY

Page 7 sur 12
Cette clause permet de trier le contenu d’une colonne par ordre croissant ou décroissant

SELECT Matricule,nom,prenom
FROM Etudiant
WHERE adresse IS NULL
ORDER BY nom DESC ;

SELECT Matricule,nom,prenom,sexe
FROM Etudiant
WHERE adresse IS NULL
ORDER BY 1 ASC
======================================================
SELECT Matricule,nom,prenom,sexe
FROM Etudiant
WHERE adresse IS NULL
ORDER BY sexe
ou
SELECT Matricule,nom,prenom,sexe
FROM Etudiant
WHERE adresse IS NULL
ORDER BY 4
===================================================

SELECT Matricule,nom,prenom,sexe
FROM Etudiant
WHERE adresse IS NULL
ORDER BY sexe,nom
Ou
SELECT Matricule,nom,prenom,sexe
FROM Etudiant
WHERE adresse IS NULL
ORDER BY 4,2

Classer en fonction de la troisième colonne de la table


SELECT *
FROM classe
order by 3

Page 8 sur 12
13. SQL : Agrégat : fonctions de groupe
Partitionnement horizontal d’une relation en fonction des valeurs d’un groupe
d’attributs, suivit d’un regroupement par application d’une fonction de calcul sur
ensemble
 SUM() : la somme;
 MIN() : minimum
 MAX(): maximum
 COUNT() : compte
 AVG () : moyenne

SELECT MAX(DateNais)
FROM Etudiant;

SELECT COUNT(matricule)
FROM Etudiant;

SELECT COUNT(distinct sexe)


FROM Etudiant;

SELECT SUM(Salaire)
FROM Employe;

13.1. SQL : Utilisation de GROUP BY


Cette requête affiche le nombre d’étudiants par classe
SELECT sexe, COUNT(matricule)
FROM Etudiant
GROUP BY sexe ;

SELECT sexe, COUNT(matricule)


FROM Etudiant
WHERE codeclasse='C01'
GROUP BY sexe;

Cette requête affiche le nombre d’étudiants par classe


SELECT libelleclasse, COUNT(matricule)
FROM Etudiant E, classe C
WHERE E.codeclasse=C.codeclasse
GROUP BY libelleclasse;
13.2. SQL : Utilisation de HAVING

Page 9 sur 12
Cette requête affiche le nombre d’étudiants par classe dont l’effectif est supérieur à
15 étudiants

SELECT libelleclasse, COUNT(matricule)


FROM Etudiant E, classe C
WHERE E.codeclasse=C.codeclasse
GROUP BY libelleclasse
HAVING COUNT(matricule)>15;

Page 10 sur 12
14. Les operations ensemblistes
 SQL : UNION
SELECT matricule, nom, prenom
FROM etudiant_2017
UNION
SELECT matricule, nom, prenom
FROM etudiant_2018;

SELECT matricule, nom, prenom, codeclasse


FROM etudiant
WHERE codeclasse='C01'
UNION
SELECT matricule, nom, prenom, codeclasse
FROM etudiant
WHERE codeclasse='C02';

 SQL : INTERSECTION
SELECT matricule, nom, prenom
FROM etudiant_2017
INTERSECT
SELECT matricule, nom, prenom
FROM etudiant_2018

 SQL : DIFFERENCE
SELECT matricule, nom, prenom
FROM etudiant_2017
MINUS
SELECT matricule, nom, prenom
FROM etudiant_2018

Page 11 sur 12
15. SQL : Les sous requêtes
SELECT list_de_colonnes
FROM table
WHERE expression_operateur(SELECT list_de_colonnes
FROM table

Exemple : cette requête affiche tous les étudiants de la première année


SELECT matricule, nom, prenom
FROM Etudiant
WHERE codeclasse IN
(SELECT C.codeclasse
FROM Classe C, NiveauEtude NV
WHERE C.CodeNiveau =NV.CodeNiveau AND codeNiveau='L1') ;

SELECT matricule, nom, prenom


FROM Etudiant
WHERE codeclasse =(SELECT codeclasse
FROM Classe
WHERE libelleclasse ='SIR1') ;

+++++++++++++++++++++++++++++++++++++++++++++++++++++
Client(codecli, prenom, ville)
Clientdebiteur( codecli, prenom, ville)
Vente(NumVente, Lib_article)

Client X ClientDebiteut = (σ codecli=codecli (Client x ClientDebiteut ))


Client X ClientDebiteut = (σ client.codecli= ClientDebiteut.codecli (Client X
ClientDebiteut ))

Page 12 sur 12

Vous aimerez peut-être aussi