Académique Documents
Professionnel Documents
Culture Documents
Ordre Select :
Opérateurs de concaténation :
Clause WHERE :
Opérateurs de comparaison :
Opérateur BETWEEN : SELECT nom, age FROM etudiant WHERE age BETWEEN 20 AND 22;
Opérateur LIKE : SELECT nom, age FROM etudiant WHERE nom LIKE ’moha%’ ;
o % Représente une série de caractères
o _ Représente un caractère quelconque
Opérateur IN : SELECT nom, age FROM etudiant WHERE age IN(20, 21, 22);
Opérateur IS NULL : SELECT nom, age FROM etudiant WHERE adresse IS NULL;
Opérateur AND : SELECT nom, prenom, age FROM etudiant WHERE prénom=‘Mohamed’
AND age=20;
Opérateur OR : SELECT nom, prenom, age FROM etudiant WHERE prénom=‘mohamed’ OR
age=20;
Opérateur NOT: SELECT nom, prenom, age FROM etudiant WHERE age NOT IN (20,21,22);
Ordonner la clause SELECT : SELECT nom, prenom, age FROM etudiant ORDER BY age;
o Possibilité de trier sur plusieurs colonnes : SELECT nom, prénom, age FROM etudiant
ORDER BY prénom, age DESC;
Fonctions SQL :
INITCAP(col | expr) : convetit la premiere lettre e chaque mot d’une chaine en Maj et les autres on
Min.
SUBSTR(col | exp) : Permet d'extraire une chaîne de caractères de la chaîne de caractère col(ou expr)
sur une longueur n à partir de la position m.
RPAD(col | expr,n,’String’) : Permet de compléter une chaîne de caractère jusqu’à ce qu’elle atteigne
la taille souhaitée (n), en ajoutant des caractères à la fin de cette chaîne.
ROUND(col| expr,n) : Permet d'arrondir une valeur de col (ou expr) à n décimales près.
TRUNC(col | expr,n) : Permet de tronquer la valeur de col (ou expr) à n décimales près.
Fonction SYSDATE :
ROUND(date,’format’) : Retourne la date arrondie à l'unité spécifiée par format. Si le format est omis,
date est arrondie au jour le plus près.
TRUNC(date ,’format’) : Retourne la date tronquée à l'unité spécifiée par format. Si le format est
omis, date est tronquée au jour le plus près.
NEXT_DAY(date, 'day of week'): Trouve la date du prochain jour de la semaine (day of week) suivant
date. La valeur de “day of week” doit être un nombre représentant le jour ou une chaine.
Fonctions de conversion :
La fonction NVL :
La fonction NULLIF : Compare deux expressions, si elles sont identiques la fonction retourne NULL,
dans le cas contraire la fonction retourne la première expression.
La fonction: COALESCE :Retourne la première expression non nulle rencontré dans la liste.
Expression: CASE :
Jointures de tables :
Produit cartésien :
Types de jointures :
Equi-jointure:
o Utilisée pour afficher des données provenant de plusieurs tables lorsqu’une valeur
dans une colonne d’une table correspond directement à une valeur d’une autre
colonne dans une autre table.
o Les noms des colonnes doivent être qualifiés avec le nom de la table ou l’alias de la
table à laquelle elles appartiennent afin d’éviter toute ambiguïté.
o Syntaxe: La condition de jointure doit être réalisée dans la clause WHERE. SELECT
table1.colonne, table2.colonne, table3.colonne FROM table1, table2, table3 WHERE
table1.colonne1 = table2.colonne2 [AND table2.colonne2=table3.colonne3];
Non equi-jointure :
o Une condition de non équi-jointure est utilisée lorsque deux tables n’ont pas de
colonnes qui correspondent directement.
o Exemple: SELECT e.nom, e.salaire, g.id_grade FROM employe e, grade g WHERE
e.salaire BETWEEN g.salaire_inf AND g.salaire_sup;
Jointure externe :
o La condition (outer join) est utilisée pour afficher tous les enregistrements incluant
ceux qui ne respectent pas la condition de jointure .
o L’opérateur de jointure externe est le signe plus (+).
o Syntaxe: SELECT table1.column, table2.column FROM table1, table2 WHERE table1.
column(+) = table2.column ;( Cette requête affiche tous les enregistrements de la
colonne de table1 même s’ils ne respectent pas la condition de jointure)
Auto-Jointure :
o Une condition d’auto-jointure permet de faire une jointure sur deux colonnes liées
appartenant à la même table.
o Syntaxe: SELECT alias1.column, alias2.column FROM table1 alias1, table1 alias2
WHERE alais1.column = alias2.column ;
o Pour simuler deux tables dans la clause FROM on utilise les alias.
Jointure CROSS JOIN :
o Une condition de jointure croisée permet de retourner chaque ligne d’une table avec
chaque ligne d’une autre table.
o Identique au produit cartésien de deux tables.
o Syntaxe: SELECT table1.colonne, table2.colonne FROM table1 CROSS JOIN table2;
o Exemple 1: SELECT e.enom, d.dnom FROM employé e CROSS JOIN département d;
Jointure NATURAL JOIN :
o La jointure naturelle 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.
o Syntaxe: SELECT table1.colonne1, table2.colonne2 FROM table1 NATURAL JOIN table
2;
Jointure avec la clause USING :
o Certaines colonnes possèdent les mêmes noms, mais les types de données ne
correspondent pas;
o La clause USING est utilisée pour spécifier explicitement une colonne qui sera utilisé
pour faire la jointure.
o Syntaxe: SELECT table1.col, table2.col FROM table1 JOIN table 2; USING
(col_similaire);
Jointure avec la clause ON :
o Avec la clause ON, on spécifie explicitement la condition de la jointure;
o Syntaxe: SELECT table1.col, table2.col FROM table1 JOIN table 2
Triple jointure avec la clause ON (3) :
o Permet de relier trois tables.
o L’utilisation de cette clause est identique à l’utilisation des clauses WHERE et AND
lorsqu’on relie plusieurs tables.
o Syntaxe: SELECT table1.col1, table2.col2, table3.col3 FROM table1 JOIN table 2 On
(table1.col_similaire= table2.col_similaire) JOIN table 3 On (table2.col_similaire=
table3.col_similaire);
Jointure: RIGHT OUTER JOIN :
o Alternative de la jointure externe avec le signe plus (+) placé à droite dans la clause
WHERE.
o Syntaxe: SELECT table1.col1, table2.col2 FROM table1 RIGHT OUTER JOIN table2 ON
(table1.col_similaire= table2.col_similaire); / SELECT table1.col1, table2.col2 FROM
table1, table2 WHERE table1. col1 = table2.col2 (+) ;
Fonctions de groupe :
Les fonctions de groupe sont utilisées pour afficher des informations sur un groupe
d’enregistrements.
Syntaxe: SELECT [colonne,] fonction_groupe(argument) FROM table [ WHERE condition(s) ]
[ GROUP BY colonne] [ORDER BY fontion_group(argument)];
L’argument peut-être un nom de colonne, une expression ou une constante.
Les fonctions de groupe ne peuvent pas être utilisées dans les clauses FROM, WHERE et
GROUP BY.
SUM( [DISTINCT | ALL] : Retourne la somme de toutes les valeurs du groupe n.
MIN( [DISTINCT | ALL] expr) : Retourne la plus grande valeur du groupe expr.
MAX( [DISTINCT | ALL] expr : | ALL] expr ) Retourne la plus petite valeur du groupe expr .
COUNT( { * | [DISTINCT | ALL] expr } ) : Retourne le nombre d’enregistrements contenus
dans le groupe expr. -COUNT(*) retourne le nombre total d'enregistrements retournés en
incluant les valeurs nulles et les doublons.
AVG( [DISTINCT | ALL] n ) : Retourne la moyenne des valeurs du groupe n.
STDDEV( [DISTINCT | ALL] x ) : Retourne la déviance standard (l’écart type) de x.
VARIANCE( [DISTINCT | ALL] x ) : Retourne la variance de x.
Les fonctions de groupe ignorent les valeurs nulles sauf la fonction COUNT(*).
Le type de données des arguments peuvent être CHAR, VARCHAR2, NUMBER, DATE sauf pour
les fonctions AVG, SUM, VARIANCE et STDDEV qui ne peuvent être utilisées qu’avec des
données de type numérique.
Pour substituer les valeurs nulles dans un groupe, il faut utiliser la fonction single-row : «
NVL>>
o La clause WHERE n’acceptant pas les fonctions de groupe. La restriction du
résultat des fonctions de groupe se fera dans la clause HAVING.
o Syntaxe: SELECT [colonne,] fonction_groupe(argument) FROM table [WHERE
condition(s) ] [GROUP BY colonne] [HAVING condition_condition] [ORDER BY
fontion_group(argument)];
o Comme dans les clauses WHERE et GROUP BY, les alias de colonne ne peuvent pas
être utilisés dans la clause HAVING.
o La clause HAVING peut être utilisée sans présence de fonctions de groupe dans la
clause SELECT.
o WHERE restreint les enregistrements.
o HAVING restreint les groupes d’enregistrements et peutêtre utilisée pour restreindre
les enregistrements
Sous-requêtes Single-row :
Plusieurs sous-requêtes peuvent être mises en place dans une requête.
Des fonctions de groupes ainsi que la clause HAVING peuvent être utilisées dans une sous-
requête.
Ex: SELECT ename, fonction FROM employe WHERE fonction = ( SELECT fonction FROM
employe WHERE empno=1230);
SELECT ename, empno FROM employe WHERE sal IN (SELECT MIN(sal) FROM employe
GROUP BY deptno);
SELECT ename, empno FROM employe WHERE sal IN (800, 900, 1100);
SELECT ename, empno FROM employe WHERE fonction <>’ingénieur’ AND sal < ANY(SELECT
sal FROM employe WHERE fonction=‘ingénieur’);
Création des tables :REATE TABLE [ schema. ] nom_table ( Nom_colonne type , …);
Types de données :
EX : CREATE TABLE EMP( id_emp NUMBER(6), nom VARCHAR2(50) NOT NULL, CONSTRAINT
emp_dept_fk FOREIGN KEY(id_dep) REFERENCES department(id_dep) ON DELETE CASCADE
(ou ON DELETE SET NULL), …)