0% ont trouvé ce document utile (0 vote)
6 vues74 pages

Rappel Langage SQL

SQL (Structured Query Language) est un langage standard pour la manipulation des bases de données relationnelles, introduit par IBM et commercialisé par Oracle. Il comprend plusieurs fonctionnalités, telles que la définition, la manipulation et le contrôle des transactions des données, ainsi que des contraintes d'intégrité pour maintenir la cohérence des relations entre les tables. Les SGBD relationnels les plus utilisés incluent Oracle, Microsoft SQL Server, PostgreSQL, MySQL et Access.

Transféré par

Rayan Afofou
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)
6 vues74 pages

Rappel Langage SQL

SQL (Structured Query Language) est un langage standard pour la manipulation des bases de données relationnelles, introduit par IBM et commercialisé par Oracle. Il comprend plusieurs fonctionnalités, telles que la définition, la manipulation et le contrôle des transactions des données, ainsi que des contraintes d'intégrité pour maintenir la cohérence des relations entre les tables. Les SGBD relationnels les plus utilisés incluent Oracle, Microsoft SQL Server, PostgreSQL, MySQL et Access.

Transféré par

Rayan Afofou
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

Rappel

langage sql

1
Introduction
SQL (Structured Query Language)
Est Introduit par IBM, évolution du langage SEQUEL, commercialisé
tout d'abord par ORACLE
Est le langage standard pour décrire et manipuler les BDR
Est implémenter dans de nombreux SGBD

2
Introduction
SQL est l'interface logicielle/logiciel entre les applications et les BDR

3
Introduction
Il existe plusieurs versions de SQL
SQL1 initial, ANSI* __ 1986
SQL1 avec intégrité référentielle, ANSI __1989
SQL2 extension de SQL1 ANSI __1992
SQL3 ANSI __1999 incorpore la notion d’objet

*ANSI = American National Standard Institute

4
Fonctionnalités de SQL
SQL assure plusieurs fonctionnalités au sein des SGBD
Langage de Définition des données (LDD)
 CREATE pour la création des tables et des bases de données
 ALTER pour modifier le schéma d’une relation
 DROP pour la suppression des tables et des bases de données

5
Fonctionnalités de SQL
Langage de Manipulation des données (LMD)
 SELECT pour sélectionner les données d’une table
 INSERT pour insérer les données dans une table
 UPDATE pour mettre à jour les données d’une table
 DELETE pour supprimer les données d’une table

6
Fonctionnalités de SQL
Langage de Contrôle des Transactions (TCL: Transaction
Control Language)
 Gestion des transactions: Permet de gérer les modifications faites
par le langage de manipulation des données (DML)
COMMIT : Pour valider les modifications faites dans une BD
ROOLBACK : Pour annuler les modifications faites dans la BD
SAVEPOINT : Permet de gérer les transactions, en offrant la
possibilité d’annuler les états antérieurs sans annuler l’ensemble de
la transaction

7
Fonctionnalités de SQL
Langage de Protection d’Accès (DCL: Data Control Language)
Contrôle des droits d’accès: Permet de gérer les droits
d’accès aux tables
GRANT : Pour attribuer les droits aux utilisateurs
REVOKE : Pour révoquer les droits des utilisateurs

8
Fonctionnalités de SQL
SQL intégré (embedded SQL): Il permet d’utiliser le SQL dans un langage
de 3ième génération tel que C, Java, Cobol, etc.
 DECLARE : Utile dans la creation des fonctions et procedures stockées, elle
permet de gérer les variables, les curseurs, les conditions, etc.
 CONNECT : Permet de se connecter à la base de données
 PREPARE : Permet d’améliorer la sécurité, la performance et la flexibilité
des applications qui interagissent avec la base de données
 EXECUTE : Permet d’utiliser des paramètres lors de l’execution des
instructions SQL préparées
 OPEN : Permet d’ouvrir un curseur afin de parcourir les résultats d’une
requête ligne par ligne
 FETCH : Est utilisé pour récupérer des lignes d’un curseur ouvert
 CLOSE : Permet de fermer un curseur et de libérer les ressources associées
9
SGBD-Définition
Un SGBD (Système de Gestion de Bases de Données) est un logiciel
qui stocke des données de façon organisées et cohérentes.
Un SGBDR (Système de Gestion de Bases de Données
Relationnelles) est un type particulier de SGBD qui stocke les données
dans des tables à deux dimensions. (Il fera l’objet de ce cours)

10
Objectifs du SGBD
Indépendance physique : La façon dont les données sont définies doit
être indépendante des structures de stockage utilisées.
Indépendance logique : Un même ensemble de données peut être vu
différemment par des utilisateurs différents. Toutes ces visions
personnelles des données doivent être intégrées dans une vision
globale.
Accès aux données : L'accès aux données se fait par l'intermédiaire
d'un Langage de Manipulation de Données (LMD).
Non redondance des données : Afin d'éviter les problèmes lors des
mises à jour, chaque donnée ne doit être présente qu'une seule fois
dans la base.

11
Objectifs du SGBD
Cohérence des données : Les données sont soumises à un certain
nombre de contraintes d'intégrité qui définissent un état cohérent de la
base. Ces contraintes sont décrites dans le Langage de Définition des
Données (LDD)

12
SGBDR les plus utilisés
Quelques SGBDR les plus utilisées
 Oracle considéré comme un des SGBDR les plus performants.
 Microsoft SQL Server la mouture de microsoft, qui est intégré au
framework .NET.
 PostgreSQL est un SGBDR open source réputé pour sa puissance,
sa fiabilité et son extensibilité.
 MySQL logiciel libre fonctionnant souvent de pair avec Apache et
Php, et de ce fait très répandu dans la programmation web.
 Access incorporé à Microsoft Office. Il présente l’énorme avantage
de mettre à disposition de l’utilisateur une interface graphique. En
contrepartie, de faible capacité.

13
Langage de Définition de
Données (LDD)
Le Langage de Définition des Données (LDD) est la partie de SQL
qui permet de décrire les tables et autres objets manipulés par les
SGBD.
Il fait usage des commandes suivantes:
 CREATE
 ALTER
 DROP

14
Commande CREATE
CREATE permet de créer une base de données, les tables et les vues d’une base de données
Pour créer une base de données, on utilise la commande:
CREATE DATABASE nom_base_de_donnees;
Lorsqu’on veut spécifier l’encodage des caractères, on utilise la commande:
CREATE DATABASE nom_base_de_donnees
CHARACTER SET utf8mb4;
 Cet encodage permet de s’assurer que la base de données peut gérer une variété de langues
et de symboles

Ex: Création de la base de données gestion_etudiants


CREATE DATABASE gestion_etudiants
CHARACTER SET utf8mb4;

15
Commande ALTER
ALTER permet de modifier la définition d’une table
Elle utilise les sous commandes suivantes
 ADD
 MODIFY
 DROP
 RENAME
Syntaxe:
ALTER TABLE nom_table
ADD | MODIFY | RENAME | DROP

16
Commande ALTER
Exemples
 Ajout d’un attribut dans une table: ALTER TABLE STAGIAIRE
ADD COLUMN email VARCHAR(20);

 Modification du type d’un attribut: ALTER TABLE STAGIAIRE


MODIFY NomEntr VARCHAR(30);

 Suppression d’un attribut dans une table: ALTER TABLE STAGIAIRE


DROP COLUMN NomEntr;

17
Commande ALTER
Exemples
 Renommer une table: ALTER TABLE STAGIAIRE
RENAME TO POSTULANT;

 Renommer une colonne d’une table: ALTER TABLE STAGIAIRE


RENAME COLUMN NomEntr TO Nom;

18
Commande DROP
DROP permet de supprimer une base de données, une table, une
colonne d’une table.
Syntaxe:
 Pour la base de données: DROP DATABASE nom_BD;

 Pour la table: DROP TABLE nom_table;

 Pour un colonne d’une table: ALTER TABLE nom_table


DROP COLUMN nom_colonne;

19
Les contraintes
Il existe plusieurs types de contraintes:
 Les contraintes de domaine
 Les contraintes d’intégrité d’entité
 Les contraintes d’intégrité référentielle
 Les assertions
 La vérification différée des contraintes
 Les contraintes particulières
Dans le cadre de ce cours, nous ne parlerons que des trois premières
contraintes

20
Contraintes de domaine
Les contraintes de domaine pour un attribut sont l’ensemble des
valeurs que peut prendre cet attribut.
Ces contraintes sont décrites dans la définition de l’attribut, directement
après son type et sa longueur.
On a les contraintes suivantes :
 NOT NULL : Impose que l’attribut possède une valeur
 DEFAULT : Spécifie une valeur par défaut dont le type doit
correspondre au type de l’attribut
 UNIQUE : Interdit qu’une colonne contienne deux valeurs identiques

21
Contraintes de domaine
Ex:

CHECK(condition): est une clause qui permet de spécifier une contrainte


qui doit être vérifiée à tout moment par les tuples de la table.
 Ex:

22
Contraintes d’intégrité
d’entité
Les contraintes d’intégrité d’entité : spécifient la clé primaire d’une
table via la clause PRIMARY KEY.
Une clé primaire doit toujours avoir une valeur déterminée et unique
pour la table.
Quand une clé primaire est constituée de plusieurs attributs (clé
segmentée), la clause PRIMARY KEY est placée après la définition des
attributs, séparée par une virgule.

23
Contraintes d’intégrité
d’entité
Exemple de création de table ayant deux attributs comme clé:
CREATE TABLE Appartement (NumApp INT,
NomAppVARCHAR(30),
PRIMARY KEY(NumApp, NomApp)
);

24
Contraintes d’intégrité
d’entité
PRIMARY KEY peut aussi être séparée de la définition des attributs
même s ’il n’y a qu’un seul attribut
CREATE TABLE Animal (
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
espece VARCHAR(40) NOT NULL,
sexe CHAR(1),
date_naissance DATETIME NOT NULL,
nom VARCHAR(30),
commentaires TEXT,
PRIMARY KEY (id)
);

25
Contraintes d’intégrité
référentielles
Une contrainte d’intégrité référentielle est une règle qui garantit la
cohérence des relations entre les tables d’une base de données
relationnelle. Elle assure que les valeurs d’une clé étrangère (FOREIGN
KEY) correspondent toujours à une clé primaire (PRIMARY KEY) d’une
autre table
Une contrainte d’intégrité à 3 objectifs principaux:
 Empêcher les données orphelines : Une clé étrangère ne peut pas faire
référence à un enregistrement inexistant.
 Maintenir la cohérence des relations : Impossible de supprimer un
enregistrement référencé sans précaution.
 Assurer l’intégrité des données : Les modifications suivent des règles
strictes pour éviter les incohérences.

26
Contraintes d’intégrité
référentielles
On utilise les mots clés REFERENCES et FOREIGN KEY pour
spécifier une contrainte d’intégrité référentielle.
 FOREIGN KEY indique qu’un attribut est une clé étrangère
 REFERENCES indique l’origine de la clé étrangère (table et attribut
référencés)
La syntaxe est la suivante:
CREATE TABLE Nom_table (
Attribut1 description1,
[…]
[ [CONSTRAINT [nom_contrainte]]
FOREIGN KEY (Attrib_clé_étrangère) REFERENCES table_référencé (Attrib_référencé)
);

27
Contraintes d’intégrité
référentielles
Exemple de création de table avec clé étrangère
CREATE TABLE clients (
id_client INT PRIMARY KEY,
nom VARCHAR(100)
);
CREATE TABLE commandes (
id_commande INT PRIMARY KEY,
id_cli INT,
montant DECIMAL(10,2),
FOREIGN KEY (id_cli) REFERENCES clients(id_client)
);
Le champ id_cli de la table “commandes” est une clé étrangère qui fait reference au
champs id_client de la table “clients”
NOTEZ BIEN
 Une insertion d'une commande avec un client inexistant est impossible
 Une suppression d'un client avec des commandes associées bloquée

28
Contraintes d’intégrité
référentielles
Il peut arriver que lors de la création de la table « commande », on
oublie de préciser que l’attribut « id_client » est une clé étrangère, pour
résoudre le problème, on utilisera la commande « ALTER »
ALTER TABLE Commande
ADD CONSTRAINT fk_client_com FOREIGN KEY (id_client) REFERENCES
Client(id_client);
Pour supprimer cette clé étrangère, on utilise la commande
ALTER TABLE Commande
DROP FOREIGN KEY fk_client_com;

29
Actions liées au contraintes
d’intégrité
Lors de la suppression ou modification d’un enregistrement référencé,
plusieurs options existent :
Action Effet

CASCADE Supprime ou met à jour les enregistrements liés automatiquement
SET NULL Remplace la clé étrangère par NULL si la référence est supprimée
RESTRICT Empêche la suppression/modification si les références existent
NO ACTION Se comporte comme RESTRICT (par défaut si aucune action n’est précisée)

30
Action CASCADE
En cas de suppression, l’action ON DELETE CASCADE supprime
automatiquement tous les enregistrements liés,
En cas de mise à jour, l’action ON UPDATE CASCADE met à jour automatiquement
toutes les clés étrangères
Exemple:
CREATE TABLE clients (
id_client INT PRIMARY KEY,
nom VARCHAR(100)
);
CREATE TABLE commandes (
id_commande INT PRIMARY KEY,
id_client INT,
montant DECIMAL(10,2),
FOREIGN KEY (id_client) REFERENCES clients(id_client)
ON DELETE CASCADE
ON UPDATE CASCADE
);

31
Action CASCADE
En se basant sur l’exemple ci-dessus,
 Si on supprime de la table « clients » le client dont id_client=1, toutes
les commandes pour lesquelles l’id_client=1 seront automatiquement
supprimées
 Si on remplace dans la table « clients » id_client=1 par id_client=2,
toutes les lignes de la table « commandes » ayant l’id_client=1 seront mises
à jour à id_client=2

32
Action SET NULL
En cas de suppression, l’action ON DELETE SET NULL remplace la clé étrangère
par NULL
En cas de mise à jour, l’action ON UPDATE SET NULL remplace la clé étrangère
par NULL
Exemple
CREATE TABLE clients (
id_client INT PRIMARY KEY,
nom VARCHAR(100)
);
CREATE TABLE commandes (
id_commande INT PRIMARY KEY,
id_client INT,
montant DECIMAL(10,2),
FOREIGN KEY (id_client) REFERENCES clients(id_client)
ON DELETE SET NULL
ON UPDATE SET NULL
);

33
Action SET NULL
En se basant sur l’exemple ci-dessus,
 Si on supprime de la table « clients » le client dont id_client=1, tous les
id_client=1 de la table « commandes » prennent la valeur NULL au lieu
d’être supprimés
 Si on remplace dans la table « clients » id_client=1 par id_client=2, tous
les id_client=1 de la table « commandes » prennent la valeur NULL

34
Action RESTRICT
En cas de suppression, l’action ON DELETE RESTRICT empêche la suppression si des
enregistrements liés existent
En cas de mise à jour, l’action ON UPDATE RESTRICT empêche la modification de la
clé primaire si elle est référencée
Exemple
CREATE TABLE clients (
id_client INT PRIMARY KEY,
nom VARCHAR(100)
);

CREATE TABLE commandes (


id_commande INT PRIMARY KEY,
id_client INT,
montant DECIMAL(10,2),
FOREIGN KEY (id_client) REFERENCES clients(id_client)
ON DELETE RESTRICT
ON UPDATE RESTRICT
);

35
Action RESTRICT
En se basant sur l’exemple ci-dessus,
 Si on essaye de supprimer de la table « clients » le client dont
id_client=1, on reçoit un message d’erreur (Impossible de supprimer le
client 1 car il a des commandes associées)
 Si on essaye de remplacer dans la table « clients » id_client=1 par
id_client=2, on reçoit un message d’erreur (Impossible de modifier id_client
car il est référencé dans commandes)

36
Action NO ACTION
En cas de suppression ou de mise à jour, les action ON DELETE NO ACTION et ON UPDATE NO
ACTION ont le même comportement que ON DELETE RESTRICT et ON UPDATE RESTICT
respectivement
Exemple
CREATE TABLE clients (
id_client INT PRIMARY KEY,
nom VARCHAR(100)
);

CREATE TABLE commandes (


id_commande INT PRIMARY KEY,
id_client INT,
montant DECIMAL(10,2),
FOREIGN KEY (id_client) REFERENCES clients(id_client)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);
 Aucune suppression ou mise à jour n’est possible

37
RECAPITULATIF DES
COMPORTEMENTS
CASCADE et SET NULL automatisent la gestion des relations
RESTRICT et NO ACTION bloquent les modifications si les
dépendances existent

38
Langage de manipulation
des données
Le Langage de Manipulation des Données (LMD ou DML-Data
Manipulation Language) est une partie du SQL permettant d’interagir
avec les données stockées dans une base de données
Les principales commandes LMD sont:
 SELECT pour récupérer les données
 INSERT pour ajouter les données
 UPDATE pour modifier les données
 DELETE pour supprimer les données

39
Commande SELECT
SELECT est utilisée pour interroger une base de données et récupérer les
données depuis une ou plusieurs tables.
Elle permet de réaliser les opérations suivantes:
 Les projections
 Les sélections
 Les tri des tuples
 Les fonctions et expressions
 Les requêtes sur les groupes

40
Commande SELECT
La syntaxe globale d’une commande SELECT est la suivante:
SELECT …
Partie obligatoire
FROM …
WHERE …
GROUP BY …
HAVING … Clauses
ORDER BY ...
LIMIT…
L’ordre des différentes clauses est à respecter

41
SELECT - Projection
En SQL, une projection fait référence à l'opération qui consiste à
sélectionner certaines colonnes d'une table
La syntaxe est la suivante
 SELECT colonne1, colonne2, ... FROM nom_table;
Exemples:
 SELECT * FROM client; (*) signifie que toutes les colonnes seront affichées
 SELECT nom FROM client; toutes les lignes de la table client sont affichées
 SELECT nom, ville FROM client; les colonnes ‘nom’ et ‘ville’ seront affichées
 SELECT nom AS nom_client FROM client; la colonne ‘nom’ sera renommée en
‘nom_client’ avant d’être affichée

42
SELECT - Projection
Si on veut éviter que les lignes issue d’une projection ne se répètent
pas, on va utiliser la clause DISTINCT
Exemple
 SELECT Type_Stage FROM stage;

 SELECT DISTINCT Type_Stage AS nature du stage FROM stage;


 Remarque: Si on indique plusieurs noms de tables derrière le FROM,
on obtient un produit cartésien

43
SELECT - Sélection
En SQL, une sélection est une opération qui permet de spécifier en plus des
colonnes, les lignes qui devront s’afficher à l’issue d’une requête. Cela se fait avec la
clause WHERE
La syntaxe est la suivante:
SELECT colonne1, colonne2, ...
FROM nom_table;
WHERE (condition)
La clause WHERE permet de spécifier quelles sont les lignes à sélectionner dans une
table ou dans le produit cartésien de plusieurs tables.
WHERE est suivie d’une expression logique prenant la valeur vrai ou faux et qui sera
évalué pour chaque ligne. Seules les lignes pour lesquelles l’expression logique est
évalué à vrai sont sélectionnées.

44
SELECT - Sélection
Les expressions logiques peuvent être composées d’une suite de conditions
combinées entre elles par les opérateurs AND, OR, NOT.
Des parenthèses peuvent être utilisées pour imposer une priorité dans l ’évaluation de
l’expression logique. L’opérateur NOT placé devant un prédicat en inverse le sens.
Les différentes formes d’expressions logiques:
 Comparaison à une valeur,
 Comparaison à une fourchette de valeurs,
 Comparaison à une liste de valeurs,
 Comparaison à un filtre,
 Test sur l’indétermination d’une valeur,
 Test ‘ tous ’ ou ‘ au moins un ’,
 Test existentiel,
 Test d’unicité
45
SELECT - Sélection
Quelques cas d’expressions logiques
WHERE exp1 = exp2
WHERE exp1 != exp2
WHERE exp1 < exp2
WHERE exp1 > exp2
WHERE exp1 <= exp2
WHERE exp1 >= exp2
WHERE exp1 is NULL
WHERE exp1 is NOT NULL

Exp2 peut être une constante. Les chaînes de caractères doivent apparaître sous
forme d ’une séquence de caractères entre apostrophes.
Exp2 peut être une expression obtenue par application d ’opérateurs (+, -, x, /) sur des
noms d ’attributs ou des constantes

46
SELECT – Comparaison à une
valeur
Exemples
SELECT Num_St, Nom_St FROM STAGIAIRE WHERE Adr= 'Paris';
SELECT Num-Stage FROM STAGE WHERE Nb-jours > 4;
SELECT Num-Stage FROM STAGE WHERE (Prix* nb-jours) > 5000;
SELECT Num-Stage, Libellé-Stage, Type-Stage, Num-Cat
FROM STAGE
WHERE Type-Stage = ’TP ’ AND Num-Cat = 1;
SELECT Num-Stage, Libellé-Stage, Type-Stage, Num-Cat
FROM STAGE
WHERE NOT(Type-Stage = ’TP ’ OR Num-Cat = 1);

47
SELECT – Comparaison à une
fourchette de valeurs
La comparaison sur une fourchette de valeurs se faite à l’aide la clause
BETWEEN…AND…
Syntaxe:
SELECT … FROM … WHERE Cond1 [NOT] BETWEEN val1 AND val2;

Exemple
SELECT Num-Stage, Libellé-Stage, Num-Cat
FROM STAGE
WHERE Num-Cat BETWEEN 1 AND 3;

48
SELECT – Comparaison à une
liste de valeurs
La comparaison sur une liste de valeurs se faite à l’aide la clause IN
Syntaxe:
SELECT … FROM … WHERE nom_colonne [NOT] IN (liste_valeurs);
Exemple
SELECT Num-Stage, Libellé-Stage, Num-Cat
FROM STAGE
WHERE Num-Cat IN (1,3);
 NOT IN sert à sélectionner les lignes dont l’attribut dans la clause
WHERE contient une valeur autre que celle de la liste

49
SELECT – Comparaison à
un filtre
La comparaison sur un filtre est faite à l’aide la clause LIKE. Cette
clause s’utilise uniquement sur les chaines de caractères
Syntaxe:
SELECT … FROM … WHERE nom_colonne [NOT] LIKE ‘Modèle_de_chaine’;

Cette clause teste l’égalité de deux chaînes en tenant compte des


caractères jokers dans la 2ème chaîne.
 « _ » remplace 1 caractère exactement,
 « % » remplace une chaîne de caractères de longueur quelconque.
 ’%objet%’ sélectionne toutes les chaines contenant objet à n ’importe quelle
place dans la chaîne
 ’%a_’ sélectionne toutes les chaines ayant a à l’avant-dernière place
 ’%@%%’ sélection toutes les chaines ayant % n’importe où dans la chaîne.
50
SELECT – Comparaison à
un filtre
Exemples
 Liste des stagiaires dont les noms commencent par ‘Var’
SELECT Num-St, Nom-St, Prénom-St
FROM STAGIAIRE
WHERE Nom-St LIKE ’Var%’;
 Liste des stagiaires dont les noms tiennent sur 8 caractères, commençant par PE puis se
terminant par N
SELECT Num-St, Nom-St, Prénom-St
FROM STAGIAIRE
WHERE Nom-St LIKE ’PE_____N’;
 Liste des stagiaires dont les noms tiennent sur 3 caractères et se terminant par AR
SELECT Num-St, Nom-St, Prénom-St
FROM STAGIAIRE
WHERE Nom-St LIKE ’_AR%’;

51
SELECT – Tri des tuples
L ’ordre dans lequel les lignes d’une table résultat apparaissent est
indéterminé. Pour imposer un ordre d’affichage, on utilise la clause
ORDER BY.
Syntaxe :
SELECT … FROM … ORDER BY colonne1 [DESC|ASC], colonne2 [DESC|ASC],.. ;

On peut trier selon la valeur d’un ou de plusieurs attributs.


Les attributs selon lesquels le tri est demandé doivent obligatoirement
faire partie de la clause SELECT.
DESC donne un tri par ordre décroissant, et ASC donne un tri
croissant. Par défaut, l’ordre est croissant.

52
SELECT – Tri des tuples
Le tri se fait d ’abord selon le premier attribut, puis les lignes ayant la même valeur pour ce
premier attribut sont triées selon le 2ème attribut, etc. Les valeurs nulles sont toujours en tête.
Exemples
 Tri par ordre croissant de Num_Stage
 SELECT Num-Stage, Libellé-Stage //
FROM STAGE
ORDER BY Num-Stage;
 Tri par ordre croissant sur la 1ière colonne
 SELECT Num-Stage, Libellé-Stage // Tri par ordre croissant sur la 1ière colonne
FROM STAGE
ORDER BY 1;
 Tri par ordre croissant sur Num_Cat et par ordre décroissant sur Num_Stage
 SELECT Num-Stage, Libellé-Stage, Nom-Cat
FROM STAGE
WHERE NOT(Type-Stage = ’Cours’)
ORDER BY Num-Cat, Num-Stage DESC;

53
Clause GROUP BY
GROUP BY est utilisée pour regrouper les lignes ayant des valeurs identiques dans
une ou plusieurs colonnes. Cette clause permet d’effectuer des opérations d’agrégation
(COUNT, SUM, AVG, etc.)
Syntaxe :
SELECT COUNT | SUM | AVG | MIN | MAX
FROM nom_table;
[WHERE condition]
GROUP BY nom_colonne
[HAVING condition]
NOTEZ BIEN:
En présence d’un GROUP BY, tout attribut dans la clause SELECT doit figurer dans
la clause GROUP BY.

54
Fonctions de groupes
Un groupe est un ensemble de tuples d’une table pour lesquels la
valeur d’un attribut est constante.
Les fonctions de groupe effectuent un calcul sur l’ensemble des
valeurs d’un attribut pour un groupe de tuples.
Il existe 5 fonctions de groupes:
 COUNT,
 SUM,
 AVG,
 MIN,
 MAX

55
Fonctions de groupes
Une fonction peut apparaître dans une clause SELECT, elle sera
affichée comme un attribut ou une expression MAIS, en l’absence de
clause GROUP BY, on ne peut mettre ensemble des fonctions de groupe
et des attributs dans un même SELECT.
Une fonction de groupe s’emploie uniquement dans les clauses
SELECT ou HAVING.

56
Fonction COUNT
COUNT permet de compter le nombre de ligne dans un ensemble de
résultats qui répondent à des critères spécifiques
Syntaxe :
SELECT COUNT(* | [DISTINCT] nom_colonne)
FROM nom_table;
[WHERE condition]
[GROUP BY nom_colonne]
[HAVING condition]

57
Fonction COUNT
Exemples
 SELECT COUNT(*) FROM Employes // Nombre de lignes dans la table Employes

 SELECT COUNT(*) // Nombre d’employés dont le salaire est supérieur à 100000


FROM Employes
WHERE salaire > 100000;

 SELECT poste, COUNT(*) // Nombre d’employés par poste


FROM Employes
GROUP BY poste;

 SELECT COUNT(DISTINCT salaire) // Nombre de valeurs possibles prises par la


colonne “salaire”

58
Fonction SUM
SUM est utilisé pour calculer la somme des valeurs d’une colonne
numérique dans un ensemble de résultats.
Syntaxe :
SELECT SUM(colonne)
FROM nom_table;
[WHERE condition]
[GROUP BY]
[HAVING]

59
Fonction SUM
Exemples
 La somme des salaires dans une table employes
SELECT SUM(salaire) FROM Employes;
 La somme des ventes du produit dont le code est 123
SELECT SUM(montant)
FROM Ventes
WHERE produit_id = 123;
 La somme des salaires par poste
SELECT poste, SUM(salaire)
FROM Employes
GROUP BY poste;

60
Fonction AVG
AVG est utilisé pour calculer la moyenne des valeurs d’une colonne
numérique dans un ensemble de résultats
Syntaxe :
SELECT AVG(nom_colonne)
FROM nom_table;
[WHERE condition]
[GROUP BY]
[HAVING]

61
Fonction AVG
Exemples
 La somme des salaires dans une table employes
SELECT AVG(salaire) FROM Employes;
 La moyenne des ventes du produit dont le code est 123
SELECT AVG(montant)
FROM Ventes
WHERE produit_id = 123;
 La moyenne des salaires par poste
SELECT poste, AVG(salaire)
FROM Employes
GROUP BY poste;

62
Fonctions MIN et MAX
MIN et MAX sont utilisés pour obtenir les valeurs minimale et maximale
respectivement d’une colonne spécifiée dans un ensemble de résultats.
Syntaxe :
SELECT MIN(nom_colonne) | MAX (nom_colonne)
FROM nom_table;
[WHERE condition]
[GROUP BY]
[HAVING (condition)]

63
Fonctions MIN et MAX
Exemples
 Les salaire minimum et maximum dans la table Employes
SELECT MIN(salaire), MAX(salaire) FROM Employes;

 La date la plus ancienne et la plus récente dans une table Commandes


SELECT MIN(date_commande), MAX(date_commande) FROM Commandes;

 Les salaires mimimun et maximum des employés par département


SELECT departement, MIN(salaire), MAX(salaire)
FROM Employes
GROUP BY departement;

64
Clause HAVING
HAVING est utilisé pour filtrer les résultats d’une requête après que les
données aient été regroupées par la clause GROUP BY
Syntaxe :
SELECT SUM | AVG | COUNT | MIN | MAX
FROM nom_table;
[WHERE condition]
GROUP BY
HAVING (condition)

65
Clause HAVING
Exemples
 Compter les départements ayant plus de 5 employés
SELECT departement, COUNT(*)
FROM Employes
GROUP BY departement
HAVING COUNT(*) > 5;

 Les codes de produits dont la somme des ventes est supérieure à 10000
SELECT produit_id, SUM(montant)
FROM Ventes
GROUP BY produit_id
HAVING SUM(montant) > 10000;

66
Clause LIMIT
LIMIT est utilisé pour restreindre le nombre de résultats renvoyés par une
requête. Cette clause est particulièrement utile lorsqu’on souhaite recupérer un
sous ensemble de résultats
Syntaxe :
SELECT
FROM nom_table;
[WHERE condition]
[GROUP BY]
[HAVING (condition)]
LIMIT valeur [OFFSET valeur]

67
Clause LIMIT
Exemples
 Les 5 premières lignes de la table Employes
SELECT * FROM Employes LIMIT 5;

 Les 10 produits ayant les prix les plus élevés


SELECT *
FROM Produits
ORDER BY prix DESC
LIMIT 10;

 Les 10 employés suivants (du 6ième au 15ième)


SELECT *
FROM Employes
LIMIT 5 OFFSET 10;
68
Commande INSERT
INSERT est utilisé pour ajouter de nouvelles lignes dans une table. Elle
présente deux syntaxe, selon que l’on souhaite insérer une ligne ou plus d’une
ligne
Insertion d’une ligne
INSERT INTO nom_table (colonne1, colonne2, colonne3)
VALUES (valeur1, valeur2, valeur3);
Insertion de plus d’une ligne
INSERT INTO nom_table (colonne1, colonne2, colonne3)
VALUES (valeur1a, valeur2a, valeur3a),
(valeur1b, valeur2b, valeur3b),
(valeur1c, valeur2c, valeur3c);

69
Commande INSERT
Exemples
 Insérer une ligne dans la table Employes
INSERT INTO Employes (nom, prenom, salaire)
VALUES ('Dupont', 'Jean', 3000);
 Insérer 3 lignes dans la table Produits
INSERT INTO Produits (nom, prix, quantite)
VALUES ('Produit A', 10.50, 100),
('Produit B', 20.00, 200),
('Produit C', 15.75, 150);
 Insérer sans spécifier de colonnes
INSERT INTO Employes
VALUES (NULL, 'Martin', 'Sophie', 2500);
Dans cet exemple, NULL est utilisé pour indiquer que l’id sera auto-incrémenté

70
Commande UPDATE
UPDATE est utilisé pour modifier des enregistrements existants dans une
table.
Syntaxe :
UPDATE nom_table
SET colonne1 = valeur1, colonne2 = valeur2, ...
WHERE condition;

 SET est utilisé pour spécifier les colonnes à mettre à jour et à leurs nouvelles
valeurs
 WHERE indiquent quelles lignes doivent être mise à jour. En cas d’omission
de cette clause, ce sont toutes les lignes de la table qui sont mise à jour

71
Commande UPDATE
Exemples
 Modifier le salaire de l’employé dont l’id est 1
UPDATE Employes
SET salaire = 3500
WHERE id = 1;
 Modifier le nom et le salaire d’un employé dont l’id est 2
UPDATE Employes
SET nom = 'Durand', salaire = 4000
WHERE id = 2;
 Augmenter le salaire de tous les employés du département de vente
UPDATE Employes
SET salaire = salaire * 1.10
WHERE departement = 'Vente';
72
Commande DELETE
DELETE est utilisé pour supprimer des enregistrements d’une table
Syntaxe :
DELETE FROM nom_table
WHERE condition;

 WHERE indiquent quelles lignes doivent être supprimées. En cas


d’omission de cette clause, ce sont toutes les lignes de la table qui sont
supprimées
NB: Avant d’effectuer des suppressions massives, il est judicieux de faire
une sauvegarde de données, surtout lorsqu’on n’est pas sûr de la
commande

73
Commande DELETE
Exemples
 Supprimer l’employé dont l’id est 1
DELETE FROM Employes
WHERE id = 1;

 Supprimer tous les employés du département de vente


DELETE FROM Employes
WHERE departement = 'Vente';

 Supprimer l’employé Dupont Jean


DELETE FROM Employes
WHERE nom = 'Dupont' AND prenom = 'Jean';

 Supprimer tous les employés d’une table


DELETE FROM Employes;
74

Vous aimerez peut-être aussi