Langage SQL
Abdellah Abid CPGE charif al idrissi September 29, 2019 1 / 82
PLAN:
1 Introduction
2 Langage de définition de données
Création des table
Modification des table
3 Langage de Manipulation des données
4 Algèbre relationnel
5 Langage d’interrogation des données
6 Manipulation de SQLite à partir de Python
Abdellah Abid CPGE charif al idrissi September 29, 2019 1 / 82
Introduction
1 Introduction
2 Langage de définition de données
Création des table
Modification des table
3 Langage de Manipulation des données
4 Algèbre relationnel
5 Langage d’interrogation des données
6 Manipulation de SQLite à partir de Python
Abdellah Abid CPGE charif al idrissi September 29, 2019 2 / 82
Introduction
SQL:
Le SQL (Structured Query Language) est un langage informatique non
procédurale qui permet d’interagir avec des bases de données relationnelles, il
est fondé sur L’algèbre relationnel.
Crée en 1970.
devenu standard en 1986 (pour la norme ANSI; 1987 en ce qui concerne
la norme ISO).
Abdellah Abid CPGE charif al idrissi September 29, 2019 3 / 82
Introduction
Caractéristique du SQL:
SQL est un langage de définition de données (LDD) : Il permet de créer
des tables dans une base de données relationnelle, ainsi que d’en
modifier ou en supprimer: CREATE, DROP, ALTER.
SQL est un langage de manipulation de données (LMD): Il permet de
sélectionner, insérer, modifier ou supprimer des données dans une table
d’une base de données relationnelle: INSERT, UPDATE, DELETE,
SELECT.
SQL est un langage de contrôle de données (LCD): Il s’occupe de gérer
les droits d’accès aux tables: GRANT et REVOKE.
Abdellah Abid CPGE charif al idrissi September 29, 2019 4 / 82
Introduction
Caractéristique du SQL:
SQL est un langage de contrôle de transaction ( LCT): pour la gestion
des transactions (validation ou annulation de modifications de données
dans la BD). Exemple de commandes : COMMIT, ROLLBACK
Le SQL intégré: Il permet d’utiliser SQL dans un langage de
programmation (C, Java, Cobol, python etc.)
Abdellah Abid CPGE charif al idrissi September 29, 2019 5 / 82
Langage de définition de données
1 Introduction
2 Langage de définition de données
Création des table
Modification des table
3 Langage de Manipulation des données
4 Algèbre relationnel
5 Langage d’interrogation des données
6 Manipulation de SQLite à partir de Python
Abdellah Abid CPGE charif al idrissi September 29, 2019 6 / 82
Langage de définition de données
Langage de définition de données (LDD):
Il permet la modification du schéma d’une base de données, Il propose trois
opérations :
la création (CREATE).
la suppression (DROP).
la modification (ALTER).
Abdellah Abid CPGE charif al idrissi September 29, 2019 7 / 82
Langage de définition de données Création des table
1 Introduction
2 Langage de définition de données
Création des table
Modification des table
3 Langage de Manipulation des données
4 Algèbre relationnel
5 Langage d’interrogation des données
6 Manipulation de SQLite à partir de Python
Abdellah Abid CPGE charif al idrissi September 29, 2019 8 / 82
Langage de définition de données Création des table
Création d’une table:
La commande CREATE TABLE permet de créer une table en SQL.
Nom_ table : est le nom de la table.
Att1, att2 sont les noms des attributs (colonnes) de la table (relation).
Type: correspond au type de la colonne.
Option d’attribut: une contrainte d’attribut est une règle que doit
respecter l’attribut
Option de table: Une contrainte de table est une règle que doivent
respecter un ou plusieurs attributs de la table.
Abdellah Abid CPGE charif al idrissi September 29, 2019 9 / 82
Langage de définition de données Création des table
Les types des colonnes:
Type Chaines de caractères:
CHAR (TAILLE) : chaine de caractères de longueur fixe.
VARCHAR(taille_max) : chaine de caractères de longueur variable.
CLOB(Character Large Object): chaînes de caractères très longues (des
textes, des livres), Permet de stocker un ensemble de caractères, jusqu’à
4 Go.
Abdellah Abid CPGE charif al idrissi September 29, 2019 10 / 82
Langage de définition de données Création des table
Les types des colonnes:
Type numérique:
Pour les entiers:
INTEGER ou INT pour 4 octets.
SMALLINT pour 2 octets.
BIGINT pour 8 octets.
les décimaux:
REAL: à virgule flottante simple précision.
FLOAT: à virgule flottante double précision.
NUMERIC (nb_chiffres, nbr_décimales): à virgule fixe.
Abdellah Abid CPGE charif al idrissi September 29, 2019 11 / 82
Langage de définition de données Création des table
Les types des colonnes:
Type date:
DATE: pour les dates au format AAAA-MM-JJ.
TIME: type heure au format HH:MM:SS.
TIMESTAMP: type date et heure au format: AAAA-MM-JJ
HH:MM:SS.
Abdellah Abid CPGE charif al idrissi September 29, 2019 12 / 82
Langage de définition de données Création des table
Les types des colonnes:
Type binaire:
Ce type permet d’enregistrer des données telles que les images et les sons de
très grande taille et avec divers formats. Les différents SGBD fournissent un
type pour ces données mais les noms varient : BLOB SqliteStudio, LONG
RAW pour ORACLE.
BLOB : Permet de stocker un objet binaire jusqu’à 4 Go.
Abdellah Abid CPGE charif al idrissi September 29, 2019 13 / 82
Langage de définition de données Création des table
Les contraintes d’intégrité: I
Une contrainte d’intégrité est une règle qui permet d’assurer la validité
(cohérence) des données stockées dans une base.
Le SGBD contrôle les contraintes d’intégrité à chaque modification dans les
tables (saisies, modification ou suppression).
Les différentes contraintes que l’on peut définir sont :
NOT NULL: La colonne ne peut pas contenir de valeurs NULL.
UNIQUE: Toutes les valeurs de la (des) colonnes doivent être différentes
ou NULL.
PRIMARY KEY: Chaque ligne de la table doit avoir une valeur
différente pour la ou les colonnes qui font partie de la clé primaire. Les
valeurs NULL sont rejetées.
primary key = unique + not null
DEFAULT: Permet de spécifier une valeur par défaut à la colonne (dans
le cas où aucune valeur n’est explicitement donnée)
Abdellah Abid CPGE charif al idrissi September 29, 2019 14 / 82
Langage de définition de données Création des table
Les contraintes d’intégrité: II
CHECK(intégrité de domaine): Permet de spécifier les valeurs
acceptables pour une colonne.
FOREIGN KEY: Cette colonne fait référence à une colonne clé d’une
autre table.
Abdellah Abid CPGE charif al idrissi September 29, 2019 15 / 82
Langage de définition de données Création des table
Exemple:
Exemple 1:
CREATE TABLE article(
ref VARCHAR(10) PRIMARY KEY,
libellé VARCHAR(30) NOT NULL,
prix NUMERIC(9,2),
datemaj DATE DEFAULT CURRENT_DATE);
Abdellah Abid CPGE charif al idrissi September 29, 2019 16 / 82
Langage de définition de données Création des table
Exemple:
Exemple 2:
film( idfilm , titre, directeur)
acteur( idacteur, nom, prenom )
joue_dans(# idacteur, # idfilm )
CREATE TABLE joue_dans(
idacteur INTEGER NOT NULL,
idfilm INTEGER NOT NULL,
PRIMARY KEY(idacteur, idfilm),
FOREIGN KEY (idacteur) REFERENCES acteur (idacteur),
FOREIGN KEY (idfilm) REFERENCES film(idfilm))
Abdellah Abid CPGE charif al idrissi September 29, 2019 17 / 82
Langage de définition de données Création des table
Exemple:
Exemple 3:
CREATE TABLE etudiant(
id_etudiant int NOT NULL ,
nom varchar( 5 ) NOT NULL ,
prenom varchar( 30 ) NOT NULL ,
moyenne real NOT NULL ,CHECK ( moyenne <20 ),
Email char(50) NOT NULL, CHECK (Email LIKE "%@%")
domicile text NOT NULL ,
PRIMARY KEY ( id_etudiant ) );
Abdellah Abid CPGE charif al idrissi September 29, 2019 18 / 82
Langage de définition de données Création des table
Foreign key: clé étrangère
le SGBD vérifiera pour toute modification pouvant affecter la clé étrangère
correspond bien à un enregistrement dans la table référencée.
Ces modifications sont :
Lors d’une insertion, la valeur des attributs doit exister dans la relation
référencée.
Lors d’une suppression dans la relation référencée les tuples référençant
doivent disparaître.
la modification de la clé primaire et de la clé étrangère.
Abdellah Abid CPGE charif al idrissi September 29, 2019 19 / 82
Langage de définition de données Création des table
Foreign key: clé étrangère
ON DELETE CASCADE / ON UPDATE CASCADE:
en cas de suppression d’un élément, les éléments qui le référence sont aux
aussi supprimés. En cas de modification de la valeur de la clef, les valeurs des
clefs étrangères qui le référence sont elles aussi modifiées afin de maintenir
l’intégrité.
ON DELETE SET NULL / ON UPDATE SET NULL:
en cas de suppression d’un élément, les éléments qui le référence voit leur clef
étrangère posséder le marqueur NULL . De même encas de modification de la
valeur de la clef.
Abdellah Abid CPGE charif al idrissi September 29, 2019 20 / 82
Langage de définition de données Création des table
Foreign key: clé étrangère
Exemple:
CREATE TABLE vols (
No_VOL VARCHAR(5) PRIMARY KEY,
No_AV INTEGER,
No_PIL INTEGER,
V_d VARCHAR(15) NOT NULL,
V_a VARCHAR(15) NOT NULL,
FOREIGN KEY (No_AV) REFERENCES avions(no_av)
ON DELETE CASCADE
ON UPDATE CASCADE,
FOREIGN KEY (No_PIL) REFERENCES
pilotes(no_pil) ON DELETE SET NULL);
Abdellah Abid CPGE charif al idrissi September 29, 2019 21 / 82
Langage de définition de données Modification des table
1 Introduction
2 Langage de définition de données
Création des table
Modification des table
3 Langage de Manipulation des données
4 Algèbre relationnel
5 Langage d’interrogation des données
6 Manipulation de SQLite à partir de Python
Abdellah Abid CPGE charif al idrissi September 29, 2019 22 / 82
Langage de définition de données Modification des table
Ajout d’une colonne:
Syntaxe:
ALTER TABLE table ADD (col1 type1, col2 type2,...)
Exemple:
ALTER TABLE personne ADD email_valide char(1);
Abdellah Abid CPGE charif al idrissi September 29, 2019 23 / 82
Langage de définition de données Modification des table
Modification d’une colonne existante:
Syntaxe:
ALTER TABLE table MODIFY (col1 type1, col2 type2,...)
Exemple:
ALTER TABLE personne MODIFY (prénom NULL, nom
VARCHAR(50))
Abdellah Abid CPGE charif al idrissi September 29, 2019 24 / 82
Langage de définition de données Modification des table
Suppression d’une colonne:
Syntaxe:
ALTER TABLE table DROP COLUMN col ;
la colonne supprimée ne doit pas être référencée par une clé étrangère.
Abdellah Abid CPGE charif al idrissi September 29, 2019 25 / 82
Langage de définition de données Modification des table
Renommer une colonne:
Syntaxe:
ALTER TABLE table RENAME COLUMN ancien_nom TO
nouveau_nom ;
Abdellah Abid CPGE charif al idrissi September 29, 2019 26 / 82
Langage de définition de données Modification des table
Suppression d’une table:
Syntaxe:
DROP TABLE table;
Il n’est pas possible d’utiliser cette commande avec une table référencée par
une contrainte FOREIGN KEY.
Abdellah Abid CPGE charif al idrissi September 29, 2019 27 / 82
Langage de définition de données Modification des table
Renommer une table:
Syntaxe:
ALTER TABLE ancien_nom RENAME TO nouveau_nom ;
Abdellah Abid CPGE charif al idrissi September 29, 2019 28 / 82
Langage de Manipulation des données
1 Introduction
2 Langage de définition de données
Création des table
Modification des table
3 Langage de Manipulation des données
4 Algèbre relationnel
5 Langage d’interrogation des données
6 Manipulation de SQLite à partir de Python
Abdellah Abid CPGE charif al idrissi September 29, 2019 29 / 82
Langage de Manipulation des données
Insertion:
Syntaxe 1:
INSERT INTO table (col1 , ..., coln ) VALUES
(val11 , val12 , ..., val1n ), (val21 , val22 , ..., val2n ), (valm1 , val12 , ..., valmn );
Exemple:
CREATE TABLE Ballon (
taille INTEGER NOT NULL,
couleur VARCHAR(40) );
INSERT INTO Ballon VALUES(20, rouge)
INSERT INTO Ballon VALUES(rouge, 20) faux
INSERT INTO Ballon VALUES(rouge) faux
Abdellah Abid CPGE charif al idrissi September 29, 2019 30 / 82
Langage de Manipulation des données
Insertion:
Syntaxe 2:
INSERT INTO table (col1 , ..., coln ) SELECT....
Exemple:
Enregistrer la participation de MARTIN au groupe de projet numéro 10.
INSERT INTO PARTICIPATION (MATR, CODEP)
SELECT MATR, 10
FROM EMP
WHERE NOME="MARTIN";
Abdellah Abid CPGE charif al idrissi September 29, 2019 31 / 82
Langage de Manipulation des données
Modification:
Syntaxe 1:
UPDATE table SET A1 = expr1 , ..., An = exprn WHERE prédicat;
Exemple 1:
Augmenter de 10% les commerciaux:
UPDATE EMP SET SAL=SAL*1.1
WHERE POSTE="COMMERCIAL";
Abdellah Abid CPGE charif al idrissi September 29, 2019 32 / 82
Langage de Manipulation des données
Modification:
Syntaxe 2:
UPDATE table SET (A1 , ..., AN )=SELECT ... WHERE prédicat;
Exemple 2:
Donner à CLEMENT un salaire 10% au dessus de la moyenne des salaires
des secrétaires :
UPDATE EMP
SET SAL= ( SELECT AVG(SAL)*1.1
FROM EMP
WHERE POSTE="SECRETAIRE")
WHERE NOME=" CLEMENT";
Abdellah Abid CPGE charif al idrissi September 29, 2019 33 / 82
Langage de Manipulation des données
Suppression:
Syntaxe:
DELETE FROM table WHERE prédicat
L’ordre DELETE permet de supprimer des lignes d’une table.
la clause WHERE est facultative; si elle n’est pas précisée, toutes les
lignes de la table sont supprimées.
Exemple:
DELETE FROM dept WHERE iddept=10 ;
Abdellah Abid CPGE charif al idrissi September 29, 2019 34 / 82
Algèbre relationnel
1 Introduction
2 Langage de définition de données
Création des table
Modification des table
3 Langage de Manipulation des données
4 Algèbre relationnel
5 Langage d’interrogation des données
6 Manipulation de SQLite à partir de Python
Abdellah Abid CPGE charif al idrissi September 29, 2019 35 / 82
Algèbre relationnel
Introduction:
Définition
L’algèbre relationnelle est une collection d’opérateurs permettant de réaliser
des opérations sur des relations.
Abdellah Abid CPGE charif al idrissi September 29, 2019 36 / 82
Algèbre relationnel
Types d’opérateurs :
On peut distinguer 2 familles d’opérateurs relationnels :
Opérateurs ensembliste: Union, Intersection, Produit cartésien et
Différence.
Opérateurs propre au base de donnée:
Opérateurs unaire: Renommage, Sélection et Projection.
Opérateurs binaire: Jointure, Division.
Abdellah Abid CPGE charif al idrissi September 29, 2019 37 / 82
Algèbre relationnel
Union:
Opération binaire ensembliste commutative.
Notation : R1 ∪ R2 .
Rôle : L’union génère une relation regroupant exclusivement toutes les
occurrences de la relation R1 et toutes les occurrences de la relation R2 .
Si une même occurrence existe dans R1 et dans R2 , elle n’apparaît
qu’une seule fois dans le résultat de l’union.
Contrainte : R1 et R2 doivent avoir les mêmes attributs.
Le résultat de l’union est une nouvelle relation qui a les mêmes attributs
que R1 et R2 .
Abdellah Abid CPGE charif al idrissi September 29, 2019 38 / 82
Algèbre relationnel
Union: Exemple
Abdellah Abid CPGE charif al idrissi September 29, 2019 39 / 82
Algèbre relationnel
Intersection:
Opération binaire ensembliste commutative.
Notation : R1 ∩ R2 .
Rôle : L’intersection génère une relation regroupant exclusivement toutes
les occurrences qui existent à la fois dans la relation R1 et dans la relation
R2 .
Contrainte : R1 et R2 doivent avoir les mêmes attributs.
Le résultat de l’intersection est une nouvelle relation qui a les mêmes
attributs que R1 et R2 .
Si R1 ou R2 ou les deux sont vides, la relation qui résulte de
l’intersection est vide.
Abdellah Abid CPGE charif al idrissi September 29, 2019 40 / 82
Algèbre relationnel
Intersection: Exemple
Abdellah Abid CPGE charif al idrissi September 29, 2019 41 / 82
Algèbre relationnel
Produit cartésien:
Opération binaire commutative.
Notation : R1 × R2 .
Rôle : Le produit cartésien génère une relation regroupant exclusivement
toutes les possibilités de combinaison des occurrences des relations R1 et
R2 .
Le résultat du produit cartésien est une nouvelle relation qui a tous les
attributs de R1 et tous ceux de R2 .
Le nombre d’occurrences de la relation qui résulte du produit cartésien
est le nombre d’occurrences de R1 multiplié par le nombre d’occurrences
de R2 .
Abdellah Abid CPGE charif al idrissi September 29, 2019 42 / 82
Algèbre relationnel
Produit cartésien: Exemple
Abdellah Abid CPGE charif al idrissi September 29, 2019 43 / 82
Algèbre relationnel
Différence:
Opération binaire ensembliste non commutative.
Notation : R1 − R2 .
Rôle : La différence génère une relation regroupant exclusivement toutes
les occurrences de la relation R1 qui n’existent pas dans la relation R2 .
Contrainte : R1 et R2 doivent avoir les mêmes attributs. Le résultat de la
différence est une nouvelle relation qui a les mêmes attributs que R1 et
R2 .
Abdellah Abid CPGE charif al idrissi September 29, 2019 44 / 82
Algèbre relationnel
Différence: Exemple
Abdellah Abid CPGE charif al idrissi September 29, 2019 45 / 82
Algèbre relationnel
Sélection:
Opération unaire.
Notation : σE R.
Rôle : La sélection génère une relation regroupant exclusivement toutes
les occurrences de la relation R qui satisfont l’expression logique E.
Abdellah Abid CPGE charif al idrissi September 29, 2019 46 / 82
Algèbre relationnel
Sélection: Exemple
Abdellah Abid CPGE charif al idrissi September 29, 2019 47 / 82
Algèbre relationnel
Projection:
Opération unaire.
Notation : uA R.
Rôle : La projection génère une relation regroupant exclusivement toutes
les occurrences de la relation R réduites aux attributs de la liste
d’attributs A.
Abdellah Abid CPGE charif al idrissi September 29, 2019 48 / 82
Algèbre relationnel
Projection: Exemple
Abdellah Abid CPGE charif al idrissi September 29, 2019 49 / 82
Algèbre relationnel
Division:
Opération binaire non commutative.
Notation : R1 ÷ R2 .
Rôle : La division génère une relation regroupant exclusivement toutes
les parties d’occurrence de la relation R1 qui sont associées à toutes les
occurrences de la relation R2 .
Contraintes : R2 ne peut pas être vide. Tous les attributs de R2 doivent
être présents dans R1 . R1 doit posséder au moins un attribut de plus que
R2 .
Le résultat de la division est une nouvelle relation qui a tous les attributs
de R1 sans aucun de ceux de R2 .
Abdellah Abid CPGE charif al idrissi September 29, 2019 50 / 82
Algèbre relationnel
Division: Exemple
Abdellah Abid CPGE charif al idrissi September 29, 2019 51 / 82
Algèbre relationnel
Jointure:
Opération binaire commutative essentielle, également appelée
équi-jointure.
Notation : R1 o
nA R2 si A est l’attribut commun ou R1 o
nA1,A2 R2 .
Rôle : La jointure génère une relation regroupant exclusivement toutes
les possibilités de combinaison des occurrences des relations R1 et R2
pour lesquelles il y a égalité entre l’attribut A (ou A1 ) de la relation R1 et
l’attribut A (ou A2 ) de la relation R2 .
Contrainte : R1 et R2 ne peuvent pas avoir plus d’un attribut commun.
Le résultat de la jointure est une nouvelle relation qui a tous les attributs
de R1 et tous ceux de R2 .
Abdellah Abid CPGE charif al idrissi September 29, 2019 52 / 82
Algèbre relationnel
Jointure: Exemple
Abdellah Abid CPGE charif al idrissi September 29, 2019 53 / 82
Algèbre relationnel
Jointure naturel:
Une jointure naturelle est une jointure dans laquelle l’expression logique est
un test d’égalité entre les attributs qui portent le même nom dans les relations
R1 et R2 . Dans la relation construite, ces attributs ne sont pas dupliqués, mais
fusionnés en une seule colonne par couple d’attributs.
Abdellah Abid CPGE charif al idrissi September 29, 2019 54 / 82
Algèbre relationnel
Jointure externe:
On ajoute au résultat d’une jointure interne, les tuples qui n’ont pas trouvé de
correspondant dans la jointure interne. Il existe trois types de jointures
externes: gauche, droite et complète.
Abdellah Abid CPGE charif al idrissi September 29, 2019 55 / 82
Langage d’interrogation des données
1 Introduction
2 Langage de définition de données
Création des table
Modification des table
3 Langage de Manipulation des données
4 Algèbre relationnel
5 Langage d’interrogation des données
6 Manipulation de SQLite à partir de Python
Abdellah Abid CPGE charif al idrissi September 29, 2019 56 / 82
Langage d’interrogation des données
Requête select:
Syntaxe générale:
SELECT *
FROM table
WHERE condition
GROUP BY expression
HAVING condition
{ UNION | INTERSECT | EXCEPT }
ORDER BY expression
LIMIT count
OFFSET start;
Abdellah Abid CPGE charif al idrissi September 29, 2019 57 / 82
Langage d’interrogation des données
Requête select:
Syntaxe minimal:
SELECT A1 , A2 ...AN
FROM table;
Exemple:
SELECT nom, prenom FROM Client;
Abdellah Abid CPGE charif al idrissi September 29, 2019 58 / 82
Langage d’interrogation des données
Sélectionner Tout:
Syntaxe :
SELECT *
FROM table;
Exemple:
SELECT * FROM Client;
Abdellah Abid CPGE charif al idrissi September 29, 2019 59 / 82
Langage d’interrogation des données
Éliminer les doublons:
Syntaxe :
SELECT DISTINCT ma_colonne
FROM table;
Exemple:
SELECT DISTINCT nom FROM Client;
Abdellah Abid CPGE charif al idrissi September 29, 2019 60 / 82
Langage d’interrogation des données
La clause Where:
Syntaxe :
SELECT *
FROM table
WHERE condition;
Exemple:
SELECT nom, prenom FROM Eleve WHERE note > 10 ;
Abdellah Abid CPGE charif al idrissi September 29, 2019 61 / 82
Langage d’interrogation des données
La clause Where: Les opérateurs de comparaison
Abdellah Abid CPGE charif al idrissi September 29, 2019 62 / 82
Langage d’interrogation des données
La clause Where: Les opérateurs de comparaison
Pour combiner plusieurs conditions, utiliser :
les opérateurs logiques AND, OR et NOT.
de test de valeur manquante (IS NULL, IS NOT NULL).
de recherche textuelle (LIKE); cet opérateur permet de faire une
recherche sur un modèle plutôt que sur une valeur exacte.
de sélection d’intervalle (BETWEEN); cet opérateur permet de chercher
un critère ordonné entre deux valeurs numériques, deux dates et même
deux chaines de caractères.
d’imbrication de blocs (IN, NOT IN, EXISTS, NOT EXISTS, ALL,
ANY).
Abdellah Abid CPGE charif al idrissi September 29, 2019 63 / 82
Langage d’interrogation des données
La clause Where: Exemple
Exemple 1:
SELECT * FROM eleve WHERE nom = ’Michel’ AND prenom <>’Jean’;
Exemple 2:
SELECT * FROM eleve WHERE Note BETWEEN 10 and 19 ;
Exemple 3:
SELECT * FROM élève WHERE classe NOT IN ("MPSI1", "MPSI2");
Exemple 4:
SELECT * FROM élève WHERE Nom like "%t";
Exemple 5:
SELECT * FROM élève WHERE classe =ANY ("MP1","MP2");
Abdellah Abid CPGE charif al idrissi September 29, 2019 64 / 82
Langage d’interrogation des données
Tri des donnée: ORDER BY
Syntaxe :
SELECT *
FROM table
ORDER BY A1 ...AN [ ASC | DESC];
Exemple:
SELECT * FROM Eleve WHERE Classe="MP1" OR Classe="MP2"
ORDER BY nom;
Abdellah Abid CPGE charif al idrissi September 29, 2019 65 / 82
Langage d’interrogation des données
Restreindre les résultats: LIMIT
Syntaxe :
SELECT *
FROM table
LIMIT nombre_de_lignes [OFFSET decalage];
Exemple:
SELECT * FROM Eleve WHERE Classe="MP1" OR Classe="MP2"
ORDER BY nom LIMIT 10 OFFSET 3;
Abdellah Abid CPGE charif al idrissi September 29, 2019 66 / 82
Langage d’interrogation des données
Opération ensembliste : union
Syntaxe:
SELECT * FROM table1
UNION
SELECT * FROM table2;
table1 et table2 doivent avoir les mêmes colonnes.
Abdellah Abid CPGE charif al idrissi September 29, 2019 67 / 82
Langage d’interrogation des données
Opération ensembliste : intersection
Syntaxe:
SELECT * FROM table1
INTERSECT
SELECT * FROM table2;
table1 et table2 doivent avoir les mêmes colonnes.
Abdellah Abid CPGE charif al idrissi September 29, 2019 68 / 82
Langage d’interrogation des données
Opération ensembliste : différence
Syntaxe:
SELECT * FROM table1
EXCEPT
SELECT * FROM table2;
table1 et table2 doivent avoir les mêmes colonnes.
Abdellah Abid CPGE charif al idrissi September 29, 2019 69 / 82
Langage d’interrogation des données
Renommage
Syntaxe:
SELECT A1 AS B1, A2 AS B2 ... FROM table1
Exemple:
SELECT titre AS "Le titre du livre" , auteur AS " Le nom de l’auteur " ,
editeur FROM livres;
Abdellah Abid CPGE charif al idrissi September 29, 2019 70 / 82
Langage d’interrogation des données
Jointure interne:
Syntaxe 1:
SELECT * FROM table1 [INNER] JOIN table2 ON table1.A=table2.B
Syntaxe 2:
SELECT * FROM table1, table2 WHERE table1.A=table2.B
Exemple:
Imaginons une application qui possède une table utilisateur ainsi qu’une table
commande qui contient toutes les commandes effectuées par les utilisateurs.
Pour afficher toutes les commandes associées aux utilisateurs, il est possible
d’utiliser la requête suivante:
SELECT * FROM utilisateur INNER JOIN commande ON
utilisateur.id=commande.utilisateur_id
Abdellah Abid CPGE charif al idrissi September 29, 2019 71 / 82
Langage d’interrogation des données
Jointure externe: LEFT JOIN
Syntaxe:
SELECT * FROM table1 LEFT [OUTER] JOIN table2 ON
table1.A=table2.B
Exemple:
SELECT * FROM utilisateur LEFT JOIN commande ON
utilisateur.id=commande.utilisateur_id
affiche les utilisateurs avec les commandes associé (on affiche aussi les
utilisateurs qui n’ont pas des commandes associé)
Abdellah Abid CPGE charif al idrissi September 29, 2019 72 / 82
Langage d’interrogation des données
Jointure externe: RIGHT JOIN
Syntaxe:
SELECT * FROM table1 RIGHT [OUTER] JOIN table2 ON
table1.A=table2.B
Exemple:
SELECT * FROM utilisateur RIGHT JOIN commande ON
utilisateur.id=commande.utilisateur_id
affiche les utilisateurs avec les commandes associé (on affiche aussi les
commandes qui ne sont pas associé aux utilisateurs)
Abdellah Abid CPGE charif al idrissi September 29, 2019 73 / 82
Langage d’interrogation des données
Jointure externe: FULL JOIN
Syntaxe:
SELECT * FROM table1 FULL [OUTER] JOIN table2 ON
table1.A=table2.B
Abdellah Abid CPGE charif al idrissi September 29, 2019 74 / 82
Langage d’interrogation des données
Produit cartésien : CROSS JOIN
Syntaxe 1:
SELECT * FROM table1 CROSS JOIN table2
Syntaxe 2:
SELECT * FROM table1, table2
Abdellah Abid CPGE charif al idrissi September 29, 2019 75 / 82
Langage d’interrogation des données
Jointure naturel : NATUREL JOIN
Syntaxe:
SELECT * FROM table1 NATUREL JOIN table2
Abdellah Abid CPGE charif al idrissi September 29, 2019 76 / 82
Langage d’interrogation des données
Jointure: Exemple
Soit le modèle relationnel suivant:
ETUDIANT(NE, NOM, PRENOM, AGE)
COURS(NC,CODE_COURS, DEPT)
INSCRIT( #NE, #NC ,ANNEE)
RESULTAT(#NE,NOTE,#NC)
Q1: Noms des étudiants inscrits en IN311 en 2007 ou 2008
SELECT DISTINCT NOM
FROM ETUDIANTS E, COURS C, INSCRIT I
WHERE E.NE = I.NE AND I.NC = C.NC
AND C.CODE_COURS LIKE ’IN311’
AND I.ANNEE IN (2007, 2008)
Abdellah Abid CPGE charif al idrissi September 29, 2019 77 / 82
Langage d’interrogation des données
Jointure: Exemple
Q2: Noms des étudiants inscrits en IN311 en 2011 ou 2012
SELECT DISTINCT NOM
FROM ETUDIANTS E
JOIN INSCRIT I ON E.NE =I.NE
JOIN COURS C ON I.NC=C.NC
WHERE C.CODE_COURS LIKE ’IN311’
AND I.ANNEE IN (2011, 2012)
Abdellah Abid CPGE charif al idrissi September 29, 2019 78 / 82
Langage d’interrogation des données
Fonction d’agrégation:
les fonctions d’agrégation sont:
AVG: Calcule la moyenne d’une colonne (ou de chaque regroupement si
elle est couplée à la clause GROUP BY).
COUNT: Calcule le nombre de lignes d’une table (ou de chaque
regroupement ...).
MAX: Calcule la valeur maximale d’une colonne (ou de chaque
regroupement ...).
MIN: Calcule la valeur minimale colonne (ou de chaque regroupement
...).
SUM: Effectue la somme des valeurs d’une colonne (ou de chaque
regroupement ...).
Abdellah Abid CPGE charif al idrissi September 29, 2019 79 / 82
Langage d’interrogation des données
Fonction d’agrégation: Exemple I
Exemple 1:
SELECT AVG(note) AS note
FROM eleve;
Exemple 2:
SELECT AVG(note) AS note
FROM eleve
WHERE classe="MP1";
Exemple 3:
SELECT AVG(note) AS note
FROM eleve
GROUPE BY classe;
Abdellah Abid CPGE charif al idrissi September 29, 2019 80 / 82
Langage d’interrogation des données
Fonction d’agrégation: Exemple II
Exemple 4:
SELECT classe,COUNT(*)
FROM eleve
GROUPE BY classe
HAVING note > AVG(note);
Abdellah Abid CPGE charif al idrissi September 29, 2019 81 / 82
Manipulation de SQLite à partir de Python
1 Introduction
2 Langage de définition de données
Création des table
Modification des table
3 Langage de Manipulation des données
4 Algèbre relationnel
5 Langage d’interrogation des données
6 Manipulation de SQLite à partir de Python
Abdellah Abid CPGE charif al idrissi September 29, 2019 82 / 82