Académique Documents
Professionnel Documents
Culture Documents
HARZALLAH
Le langage SQL est un ensemble de commandes permettant la définition et la manipulation des bases de
données relationnelles.
Type Définition
CHAR(n) ou VARCHAR(n) chaîne de n caractères, n ne dépasse pas 240.
DATE date dont le format standard est JJ-MM-AA
NUMBER(n) nombre entier de taille n, n ne dépasse pas 105
NUMBER(n,m) nombre réel pouvant avoir n chiffres avant la virgule et m chiffres après la
virgule
Exemple :
1) création de la table Filière
CREATE TABLE Filiere
( CodeFiliere VARCHAR(2),
Definition VARCHAR(20),
NbreAnnee NUMBER(1),
DateCreat DATE,
Diplôme VARCHAR(40));
Or codeFiliere est une clé primaire donc lors de la création on doit :
▪ Préciser qu'il doit avoir toujours une valeur dans chaque tuple
▪ ajouter une contrainte indiquant qu'il s'agit d'une clé primaire pour la table.
1/10
ISIT’COM M.HARZALLAH
Or codeFil est une clé étrangère donc lors de la création on doit ajouter une contrainte indiquant qu'il s'agit
d'une clé étrangère et que cet attribut fait référence à la clé primaire codeFilière dans la table Filiere.
2/10
ISIT’COM M.HARZALLAH
II.2- Modification d'attributs
Les modifications possibles sont :
▪ Accroître la taille : toujours possible
▪ Réduire la taille : seulement si la colonne ne contient que des valeurs nulles,
▪ Modifier le type : seulement si la colonne ne contient que des valeurs nulles,
▪ Supprimer l'interdiction de présence de valeurs nulles ( passage de NOT NULL à NULL) : toujours
possible
Syntaxe :
ALTER TABLE nomTable MODIFY (définition_Attr, …);
Définition_Attr est de même forme que celle utilisée dans la commande CREATE.
Exemple :
1) Modifier le type et accroître la taille : représenter les numéros de téléphone sous la forme 71 234 567 et
non pas sous la forme 71234567
ALTER TABLE Etudiant MODIFY (NumTel VARCHAR(10));
2) Supprimer l'interdiction de présence de valeurs nulles : supposons que pour des besoins on accepte une
valeur null pour l'attribut année
ALTER TABLE Etudiant MODIFY (annee NUMBER(1));
3/10
ISIT’COM M.HARZALLAH
Dans la pratique, on se limite souvent à quelques-uns des attributs. Dans ce cas, la clause SELECT prend la
forme suivante :
4/10
ISIT’COM M.HARZALLAH
▪ Une constante, un nom d'attribut ou une liste de valeur. La liste de valeurs peut être le résultat d'une
sous-requête
Opérateur Signification
= Egal
> Supérieur
>= Supérieur ou égal
< Inférieur
<= Inférieur ou égal
<> ou != Différent
AND Le résultat retourne Vrai si les deux conditions retourne vrai
OR Le résultat retourne Vrai si l'une des deux conditions retourne Vrai
NOT Permet d'inverser une condition
Opérateur Signification
[NOT] BETWEEN b1 AND b2 Teste si la variable est [Non] comprise entre b1 et b2
[NOT] IN (liste de valeur) Teste si la variable est [non] présente dans la liste
IS [NOT] NULL Teste si la variable est [non] null
[NOT] LIKE chaîne générique Teste la [non] ressemblance avec une chaîne de caractère obtenu à
partir de la chaîne générique
% : remplace un ou plusieurs caractères
_ : remplace un seul caractère
Exemple :
1) Sélectionner tous les étudiants (Numéro, nom et prénom ) dont le codeFil est "TM"
SELECT NumEtud, Nom, Prenom
FROM Etudiant
WHERE CodeFil = "TM";
2) Sélectionner toutes les filières dont le nombre d'années est compris entre 3 et 4
SELECT *
FROM Filiere
WHERE nbreAnnee BETWEEN 3 AND 4;
3) Sélectionner tous les étudiants (Numero, nom et prénom ) dont le codeFil est "TM" et le nom commence
par "B"
SELECT NumEtud, Nom, Prenom
FROM Etudiant
WHERE CodeFil = "TM"
AND nom LIKE "B%";
c) Expression Arithmétique
Des expressions arithmétiques peuvent être utilisées dans la clause SELECT ou WHERE.
▪ Les opérateurs arithmétiques : +, -, *, et /
▪ Les fonctions arithmétiques :
o ABS(n) : valeur absolue de n
o MOD(m,n) : reste de la division de m par n
o POWER(m,n) : m à la puissance de n
o SQRT(n) racine carrée de n
5/10
ISIT’COM M.HARZALLAH
o Etc.
▪ Les fonctions agrégat : se sont des fonctions qui s'appliquent à un ensemble de valeurs d'un attribut.
Chacune des fonctions suivantes a comme argument un nom de colonne ou une expression.
o AVG: moyenne arithmétique
o COUNT : nombre d'attribut
o MAX : Valeur maximale
o MIN : Valeur minimale
o STDDEV : écart type
o SUM : Somme
o VARIANCE : variance
Exemple :
1) Trouver le nombre d'étudiants
SELECT COUNT(*)
FROM Etudiant;
2) Trouver le nombre d'étudiants de nom différent
SELECT COUNT(DISTINCT nom)
FROM etudiant;
▪ LENGTH(ch) : longueur de ch
▪ LOWER(ch) : met en minuscule ch
▪ UPPER(ch) : met en majuscule ch
▪ etc.
Syntaxe :
SELECT [ * | liste attributs]
FROM nomTable
[WHERE Condition]
6/10
ISIT’COM M.HARZALLAH
GROUP BY attribut1, …;
NB : les attributs de GROUP BY doivent être mentionnés dans SELECT
Exemple : Trouver le nombre d'étudiant par codeFil
SELECT CodeFil, COUNT(NumEtud)
FROM Etudiant
GROUP BY CodeFil;
Dans la clause GROUP BY nous pouvons effectuer une sélection. Cette sélection permet d'éliminer
quelques-uns des groupes ne vérifiant pas une condition donnée et elle s'effectue avec la clause HAVING.
Syntaxe :
SELECT [ * | liste attributs]
FROM nomTable
[WHERE Condition]
GROUP BY attribut1, …
HAVING condition;
NB : Il faut bien faire la différence entre la clause WHERE qui s'applique à toutes les lignes de la table et la clause
HAVING qui s'applique à un groupe.
Exemple : Supposons on a la table moyenne contenant les moyennes des matières de chaque étudiant :
CREATE TABLE Moyenne
(NumEtud NUMBER(5) NOT NULL
CONSTRAINT pk_Moyenne PRIMARY KEY,
Groupe NUMBER(2),
Maths NUMBER(2,2),
Info NUMBER(2,2),
Traitement NUMBER(2,2),
Elect NUMBER(2,2),
Français NUMBER(2,2),
Anglais NUMBER(2,2));
7/10
ISIT’COM M.HARZALLAH
entre des données se trouvant dans des tables différentes pourrait être nécessaire. Les opérations permettant
d'effectuer ce rapprochement sont le produit cartésien et la jointure.
a) le produit cartésien
Le produit cartésien consiste à croiser toutes les données d'une table avec celui d'une autre. Tous les
enregistrements de la première table sont liés avec l'enregistrement de la seconde table.
Syntaxe :
SELECT listeAttr_table1, listeAttr_Table2, …
FROM Table1 [alias1] , Table2[alias2], ….;
NB :
▪ Quand on écrit un ordre SELECT qui lie plusieurs tables, il est préférable de :
o Définir un alias pour chaque table qui n'est autre qu'une abréviation du nom de la table (pour besoin de clarté
des requêtes)
o préfixé le nom de l'attribut par le nom de la table ou l'alias de la table pour la clarté.
▪ Si le même nom d'attribut est présent dans plus d'une table de la clause FROM, cet attribut doit être préfixé par le
nom de la table ou de l'alias dans la clause SELECT.
Exemple : Afficher chaque étudiant avec la définition de filière
SELECT NumEtud, Nom, Prenom, CodeFil, Definition
FROM Etudiant, Filiere;
Le problème est que CodeFil se trouve dans Etudiant et Filiere. Il faut donc corriger la requête
SELECT E.NumEtud, E.Nom, E.Prenom, E.CodeFil, F.Definition
FROM Etudiant E, Filiere F;
NB : Un produit cartésien est susceptible de gérer un grand nombre d'enregistrements, sont résultat est rarement exploitable. De
plus cette requête est pénalisante à la fois au niveau du temps de réponse et au niveau espace mémoire nécessaire à son exécution.
Il faut donc toujours ajouter une condition de jointure dans la clause WHERE.
b) Jointure
Les enregistrements d'une table sont reliés avec les enregistrements d'une autre table grâce aux valeurs
communes contenues dans les attributs correspondants : clés primaires et clé étrangères.
La plus part de temps les colonnes qui participent dans la condition de jointure sont une clé primaire et une
clé étrangère et l’opérateur de la condition de jointure est "=".
Syntaxe :
SELECT listeAttr_table1, listeAttr_Table2, …
FROM Table1 [alias1] , Table2[alias2], ….
WHERE table1.Attr = table2.Attr;
Exemple : Afficher les étudiants (NumEtud, nom, prenom, codeFil) et définition de Filière (Definition,
Diplôme)
SELECT E.NumEtud, E.Nom, E.Prenom, E.CodeFil, F.Definition, F.Diplome
FROM Etudiant E, Filiere F
WHERE E.CodeFil = F.CodeFil;
I.6- Union
Cette operation consiste à faire l'union des resultants de deux requetes à condition que ces resultants soient
compatibles, c'est à dire qu'ils aient le même nombre de colonne et les mêmes types de données pour les
colonnes de même position
8/10
ISIT’COM M.HARZALLAH
Syntaxe :
Requête 1
UNION
Requête2;
I.7- Intersection
L'intersection permet d'avoir les lignes communes aux résultats de deux requetes. Les resultants doivent être
compatibles en ce qui concerne leurs structures.
Syntaxe :
Requête 1
INTERSECT
Requête2;
I.8- Différence
L'opérateur MINUS permet d'avoir les lignes qui apparaissent dans le résultat de la première requête et non
dans le résultat de la deuxième.
Syntaxe :
Requête 1
MINUS
Requête2;
10/10