Introduction au langage SQL et ses commandes
Introduction au langage SQL et ses commandes
LE LANGAGE SQL
Dr. A. F. Tandjaoui
ESGEE Oran
Cycle préparatoire
Informatique 4
Structured Query Language
●
Sert à gérer les bases de données relationnelles
●
Basé sur l’algèbre relationnelle
Terminologie
●
Requête : ordre donné à la BDD et ayant comme
résultat un changement d'état de la BDD ou un
affichage de résultats.
●
Clause : partie d'une requête.
●
Contrainte : règle qui permet de limiter le type de
données à insérer dans une table.
Langage de définition de donnée Langage de manipulation de donnée
(LDD) (LMD)
Interroger SELECT
LDD
Modifier ALTER
Supprimer DROP
Syntaxe :
CREATE DATABASE <nom_bdd>; Nom de la base de
données à créer
Exemple :
CREATE DATABASE bac; ●
SQL sensible à la casse ?
✔
Oui : pour les noms de BDDs, tables, attributs
✗
Non : pour ses mots clés
●
Utiliser une BDD : USE <nom_bdd> ;
●
Afficher les BDDs disponibles : SHOW DATABASES; ;
Créer CREATE
LDD
Modifier ALTER
Supprimer DROP
Exemple :
DROP DATABASE bac;
Types de données
Créer CREATE ●
INT : entiers
LDD
●
FLOAT : flottants
Modifier ALTER ●
CHAR(<n>) : chaînes de
caractères de taille fixe
Supprimer DROP
prédéterminée n (n<=255)
●
VARCHAR(<n>) : chaînes
Créer une table de caractères de taille
Nom de la variable avec un maximum
Syntaxe :
CREATE TABLE <nom_table>(
table à créer de n caractères
<att1> <type_att_1>, (n<=65535)
<att2> <type_att_2>, ●
DATE : dates
... ●
TIME : heure
<attn> <type_attn>,
[PRIMARY KEY(<cle_primaire>),]
[FOREIGN KEY(<cle_etrangere_1>) REFERENCES <nom_autre_table_1>(<att_autre_table_1>),]
[FOREIGN KEY(<cle_etrangere_2>) REFERENCES <nom_autre_table_2>(<att_autre_table_2>),]
...
[FOREIGN KEY(<cle_etrangere_m>) REFERENCES <nom_autre_table_m>(<att_autre_table_m>)]
);
Types de données
Créer CREATE ●
INT : entiers
LDD
●
FLOAT : flottants
Modifier ALTER ●
CHAR(<n>) : chaînes de
caractères de taille fixe
Supprimer DROP
prédéterminée n (n<=255)
●
VARCHAR(<n>) : chaînes
Créer une table de caractères de taille
Noms des variables avec un
Syntaxe :
CREATE TABLE <nom_table>(
attributs de la maximum de n caractères
<att1> <type_att_1>, table (n<=65535)
<att2> <type_att_2>, ●
DATE : dates
... ●
TIME : heure
<attn> <type_attn>,
[ PRIMARY KEY(<cle_primaire>) ,]
[ FOREIGN KEY(<cle_etrangere_1>) REFERENCES <nom_autre_table_1>(<att_autre_table_1>),]
[ FOREIGN KEY(<cle_etrangere_2>) REFERENCES <nom_autre_table_2>(<att_autre_table_2>),]
...
[ FOREIGN KEY(<cle_etrangere_m>) REFERENCES <nom_autre_table_m>(<att_autre_table_m>)]
);
Types de données
Créer CREATE ●
INT : entiers
LDD
●
FLOAT : flottants
Modifier ALTER ●
CHAR(<n>) : chaînes de
caractères de taille fixe
Supprimer DROP
prédéterminée n (n<=255)
●
VARCHAR(<n>) : chaînes
Créer une table de caractères de taille
Types des variables avec un
Syntaxe :
CREATE TABLE <nom_table>(
attributs de la maximum de n caractères
<att1> <type_att_1>, table (n<=65535)
<att2> <type_att_2>, ●
DATE : dates
... ●
TIME : heure
<attn> <type_att_n>,
[ PRIMARY KEY(<cle_primaire>),]
[ FOREIGN KEY(<cle_etrangere_1>) REFERENCES <nom_autre_table_1>(<att_autre_table_1>),]
[ FOREIGN KEY(<cle_etrangere_2>) REFERENCES <nom_autre_table_2>(<att_autre_table_2>),]
...
[ FOREIGN KEY(<cle_etrangere_m>) REFERENCES <nom_autre_table_m>(<att_autre_table_m>)]
);
Si la clé primaire est
Créer CREATE composée de plusieurs
attributs, il seront séparés
LDD
Modifier ALTER par des virgules
Supprimer DROP
LDD
Modifier ALTER
Supprimer DROP
LDD
Modifier ALTER
Supprimer DROP
LDD
SHOW TABLES ;
Modifier ALTER ●
Obtention des noms des contraintes d’une table :
SHOW CREATE TABLE <nom_table>;
Supprimer DROP
LDD
●
Bachelier(numBach, nom, prenom, ville, moyenne)
Modifier ALTER ●
Filière(numFilière, intitulé)
●
Postuler(numEta*, numBach*, numFiliere*)
Supprimer DROP
LDD
Modifier ALTER
Supprimer DROP
Exemple :
ALTER TABLE bachelier
RENAME TO etudiant;
●
Le type de l’attribut doit rester inchangé
Créer CREATE
LDD
Modifier ALTER
Supprimer DROP
LDD
Modifier ALTER
Supprimer DROP
LDD
Modifier ALTER
Supprimer DROP
LDD
Modifier ALTER
Supprimer DROP
LDD
Modifier ALTER
Supprimer DROP
LDD
Modifier ALTER
Supprimer DROP
Supprimer un attribut
Nom de la table
Syntaxe :
ALTER TABLE <nom_table>
DROP COLUMN <att> ; Nom de
l’attribut à
Exemple : supprimer
LDD
Modifier ALTER
Supprimer DROP
LDD
Modifier ALTER
Supprimer DROP
Nom de la contrainte
qui décrit la clé
étrangère
Créer CREATE
LDD
Modifier ALTER
Supprimer DROP
LMD
la table
Mettre à jour UPDATE ●
Le séparateur des FLOAT est le point, ex. 3.14
●
Les valeurs de type CHAR et VARCHAR doivent
Supprimer DELETE être mises entre quottes, ex. ’chaine’,
●
Les valeurs de type DATE doivent être mis entre
Interroger SELECT quottes. Leur format est ’aaaa-mm-jj’,
●
Les valeurs de type TIME doivent être mises
entre quottes. Leur format est ’hh:mm:ss’,
Insérer des données Nom de la table
●
Le mot clé NULL permet de laisser la valeur d’un
attribut vide.
Syntaxe : Exemple:
INSERT INTO <nom_table> INSERT INTO Etablissement
VALUES <tuple_1>, VALUES(01,’Univ Alger 1’,’Alger’);
<tuple_2>,
...
<tuple_n>; Tuples à insérer
●
Chaque tuple doit être écrit sous la forme
Insérer INSERT (val_att_1, val_att_2,...val_att_m), en
respectant l’ordre des m attributs du schéma de
LMD
la table
Mettre à jour UPDATE ●
Le séparateur des FLOAT est le point, ex. 3.14
●
Les valeurs de type CHAR et VARCHAR doivent
Supprimer DELETE être mises entre quottes, ex. ’chaine’,
●
Les valeurs de type DATE doivent être mis entre
Interroger SELECT quottes. Leur format est ’aaaa-mm-jj’,
●
Les valeurs de type TIME doivent être mises
entre quottes. Leur format est ’hh:mm:ss’,
Insérer des données Nom de la table
●
Le mot clé NULL pemret de laisser la valeur d’un
attribut vide.
Syntaxe : Exemple:
INSERT INTO <nom_table> INSERT INTO Etablissement
VALUES <tuple_1>, VALUES(02,’ESGEE Oran’,’Oran’),
<tuple_2>, (03,’Univ Oran 1’,’Oran’);
...
<tuple_n>; Tuples à insérer
●
Chaque tuple doit être écrit sous la forme
Insérer INSERT (val_att_1, val_att_2,...val_att_m), en
respectant l’ordre des m attributs du schéma de
LMD
la table
Mettre à jour UPDATE ●
Le séparateur des FLOAT est le point, ex. 3.14
●
Les valeurs de type CHAR et VARCHAR doivent
Supprimer DELETE être mises entre quottes, ex. ’chaine’,
●
Les valeurs de type DATE doivent être mis entre
Interroger SELECT quottes. Leur format est ’aaaa-mm-jj’,
●
Les valeurs de type TIME doivent être mises
entre quottes. Leur format est ’hh:mm:ss’,
Insérer des données Nom de la table
●
Le mot clé NULL pemret de laisser la valeur d’un
attribut vide.
Syntaxe : Exemple:
INSERT INTO <nom_table> INSERT INTO Bachelier
VALUES <tuple_1>, VALUES (01,’Belaid’,’Houda’,
<tuple_2>, ’Mascara’,15.35,’2003-12-03’);
...
<tuple_n>; Tuples à insérer
●
Chaque tuple doit être écrit sous la forme
Insérer INSERT (val_att_1, val_att_2,...val_att_m), en
respectant l’ordre des m attributs du schéma de
LMD
la table
Mettre à jour UPDATE ●
Le séparateur des FLOAT est le point, ex. 3.14
●
Les valeurs de type CHAR et VARCHAR doivent
Supprimer DELETE être mises entre quottes, ex. ’chaine’,
●
Les valeurs de type DATE doivent être mis entre
Interroger SELECT quottes. Leur format est ’aaaa-mm-jj’,
●
Les valeurs de type TIME doivent être mises
entre quottes. Leur format est ’hh:mm:ss’,
Insérer des données Nom de la table
●
Le mot clé NULL pemret de laisser la valeur d’un
attribut vide.
Syntaxe : Exemple:
INSERT INTO <nom_table> INSERT INTO Bachelier
VALUES <tuple_1>, VALUES (02,’Ammar’,’Ali’,’Meliana’,
<tuple_2>, 10.01,NULL);
...
<tuple_n>; Tuples à insérer
Insérer INSERT
LMD
Mettre à jour UPDATE
Supprimer DELETE
Interroger SELECT
LMD
Mettre à jour UPDATE
Supprimer DELETE
Interroger SELECT
LMD
Mettre à jour UPDATE
Supprimer DELETE
Interroger SELECT
LMD
Mettre à jour UPDATE
Supprimer DELETE
Interroger SELECT
LMD
Mettre à jour UPDATE
Supprimer DELETE
Interroger SELECT
LMD
●
Opérateur binaire LIKE pour comparer des chaînes de caractères
Mettre à jour UPDATE à des schémas. Dans ces schémas :
●
le caractère % peut remplacer n’importe quelle chaîne,
Supprimer DELETE ●
le caractère _ peut remplacer n’importe quel caractère.
Interroger SELECT
LMD
●
Opérateur binaire LIKE pour comparer des chaînes de caractères
Mettre à jour UPDATE à des schémas. Dans ces schémas :
●
le caractère % peut remplacer n’importe quelle chaîne,
Supprimer DELETE ●
le caractère _ peut remplacer n’importe quel caractère.
Interroger SELECT
LMD
●
Opérateur binaire LIKE pour comparer des chaînes de caractères
Mettre à jour UPDATE à des schémas. Dans ces schémas :
●
le caractère % peut remplacer n’importe quelle chaîne,
Supprimer DELETE ●
le caractère _ peut remplacer n’importe quel caractère.
●
Opérateurs binaires IN et NOT IN pour vérifier l’appartenance ou
non d’une valeur à un ensemble de valeurs.
Interroger SELECT
LMD
●
Opérateur binaire LIKE pour comparer des chaînes de caractères
Mettre à jour UPDATE à des schémas. Dans ces schémas :
●
le caractère % peut remplacer n’importe quelle chaîne,
Supprimer DELETE ●
le caractère _ peut remplacer n’importe quel caractère.
●
Opérateurs binaires IN et NOT IN pour vérifier l’appartenance ou
non d’une valeur à un ensemble de valeurs.
Interroger SELECT
LMD
●
Opérateur binaire LIKE pour comparer des chaînes de caractères
Mettre à jour UPDATE à des schémas. Dans ces schémas :
●
le caractère % peut remplacer n’importe quelle chaîne,
Supprimer DELETE ●
le caractère _ peut remplacer n’importe quel caractère.
●
Opérateurs binaires IN et NOT IN pour vérifier l’appartenance ou
non d’une valeur à un ensemble de valeurs.
Interroger SELECT ●
Opérateurs unaires IS NULL et IS NOT NULL pour vérifier si une
valeur est NULL ou non.
Mettre à jour des données
Syntaxe : Exemple:
UPDATE <nom_table> Mettre à NULL les noms de famille des bacheliers
dont la date de naissance n’est pas précisée :
SET <att_1>=<val_1>, UPDATE Bachelier
<att_2>=<val_2>, SET prenom = NULL
... WHERE dateNaissance IS NULL ;
<att_n>=<val_n>
[WHERE <condition>];
numBach nom prenom ville moyenne dateNaissance
Table
01 Belaid Houda Mascara 15.35 2000-02-15
Bachelier
02 Ammar Ali Meliana 10.01 2003-05-25
avant la
03 Berrahou Malika Oran 12 NULL
mise à jour
04 Maaziz Houda Tlemcen 11.58 2004-02-29
LMD
●
Opérateur binaire LIKE pour comparer des chaînes de caractères
Mettre à jour UPDATE à des schémas. Dans ces schémas :
●
le caractère % peut remplacer n’importe quelle chaîne,
Supprimer DELETE ●
le caractère _ peut remplacer n’importe quel caractère.
●
Opérateurs binaires IN et NOT IN pour vérifier l’appartenance ou
non d’une valeur à un ensemble de valeurs.
Interroger SELECT ●
Opérateurs unaires IS NULL et IS NOT NULL pour vérifier si une
valeur est NULL ou non.
Plusieurs conditions peuvent être combinées avec AND (et
Mettre à jour des données
●
LMD
classiques : < ,> , <= ,>= , =, !=
Mettre à jour UPDATE ●
Opérateur binaire LIKE pour comparer des
chaînes de caractères à des schémas. Dans ces
schémas :
Supprimer DELETE
●
le caractère % peut remplacer n’importe quelle
chaîne,
Interroger SELECT ●
le caractère _ peut remplacer n’importe quel
caractère.
Condition de la
suppression Nom de la table
●
Clause WHERE optionelle
Insérer INSERT ●
Opérateurs binaires de comparaisons
LMD
classiques : < ,> , <= ,>= , =, !=
Mettre à jour UPDATE ●
Opérateur binaire LIKE pour comparer des
chaînes de caractères à des schémas. Dans ces
schémas :
Supprimer DELETE
●
le caractère % peut remplacer n’importe quelle
chaîne,
Interroger SELECT ●
le caractère _ peut remplacer n’importe quel
caractère.
Exemple :
Supprimer tous les bacheliers d’Oran :
DELETE FROM bachelier
WHERE ville=’Oran’ ;
numBach nom prenom ville moyenne dateNaissance
01 Belaid Houda Mascara 15.35 NULL Table
02 Ammar Ali Meliana 10.01 2002-12-31
Bachelier
03 Berrahou Malika Oran 12 NULL
avant la
suppression
04 Maaziz Houda Tlemcen 11.58 NULL
Table
numBach nom prenom ville moyenne dateNaissance Bachelier
après la
suppression
Exemple :
Supprimer tous les bacheliers :
DELETE FROM bachelier ;
●
SELECT permet d’obtenir une nouvelle table
Insérer INSERT
LMD
Mettre à jour UPDATE
Supprimer DELETE
Interroger SELECT
Attributs/schéma de la
Interroger les données d’une table : nouvelle relation.
Syntaxe :
SELECT [ DISTINCT ] {<att_1>,<att_2>,...,<att_n>|*}
FROM <table> Nom de la table à interroger
[WHERE <condition>]
[ORDER BY <att> {ASC|DESC}];
●
SELECT permet d’obtenir une nouvelle relation
Insérer INSERT
LMD
Mettre à jour UPDATE
Supprimer DELETE
Interroger SELECT
Permet de garder tous les
Interroger les données d’une table : attributs de la table original
Syntaxe :
SELECT [ DISTINCT ] {<att_1>,<att_2>,...,<att_n>|*}
FROM <table> Nom de la table à interroger
[WHERE <condition>]
[ORDER BY <att> {ASC|DESC}];
●
SELECT permet d’obtenir une nouvelle relation
Insérer INSERT
LMD
Mettre à jour UPDATE
Supprimer DELETE
Interroger SELECT
Permet d’éliminer les
Interroger les données d’une table : doublons
Syntaxe :
SELECT [ DISTINCT ] {<att_1>,<att_2>,...,<att_n>|*}
FROM <table> Nom de la table à interroger
[WHERE <condition>]
[ORDER BY <att> {ASC|DESC}];
●
SELECT permet d’obtenir une nouvelle relation
Insérer INSERT
LMD
Mettre à jour UPDATE
Supprimer DELETE
Interroger SELECT
LMD
obtenu est aléatoire et peut différer d’une
exécution à une autre.
Mettre à jour UPDATE
●
Plusieurs attributs peuvent être spécifiés dans la
clause ORDER BY.
Supprimer DELETE
●
Il est possible de renommer les attributs ou les
tables en utilisant le mot clé AS.
Interroger SELECT ●
Le résultat d’une requête SELECT est une
nouvelle table. De ce fait, la requête SELECT
peut être elle même imbriquée dans une autre
Interroger les données d’une table : requête en tant que table
Syntaxe :
SELECT [ DISTINCT ] {<att_1>,<att_2>,...,<att_n>|*}
FROM <table>
[WHERE <condition>]
[ORDER BY <att> {ASC|DESC}];
permet d’ordonner les tuples obtenus par
ordre croissant (ASC) ou décroissant
(DESC) en fonction de l’attribut att.
●
SELECT permet d’obtenir une nouvelle table
Insérer INSERT ●
Sans préciser ORDER BY, l’ordre des tuples
LMD
obtenu est aléatoire et peut différer d’une
exécution à une autre.
Mettre à jour UPDATE
●
Plusieurs attributs peuvent être spécifiés dans la
clause ORDER BY.
Supprimer DELETE
●
Il est possible de renommer les attributs ou les
tables en utilisant le mot clé AS.
Interroger SELECT ●
Le résultat d’une requête SELECT est une
nouvelle table. De ce fait, la requête SELECT
peut être elle même imbriquée dans une autre
Interroger les données d’une table : requête en tant que table
Syntaxe :
SELECT [ DISTINCT ] {<att_1>,<att_2>,...,<att_n>|*}
FROM <table>
[WHERE <condition>]
[ORDER BY <att> {ASC|DESC}];
Exemple : afficher tout le contenu de la table Bachelier :
SELECT *
FROM Bachelier ;
numBach nom prenom ville moyenne dateNaissance
01 Belaid Houda Mascara 15.35 NULL Contenu de
02 Ammar Ali Meliana 10.01 2002-12-31 la table
03 Berrahou Malika Oran 12 NULL
Bachelier
04 Maaziz Houda Tlemcen 11.58 NULL
LMD
obtenu est aléatoire et peut différer d’une
exécution à une autre.
Mettre à jour UPDATE
●
Plusieurs attributs peuvent être spécifiés dans la
clause ORDER BY.
Supprimer DELETE
●
Il est possible de renommer les attributs ou les
tables en utilisant le mot clé AS.
Interroger SELECT ●
Le résultat d’une requête SELECT est une
nouvelle table. De ce fait, la requête SELECT
peut être elle même imbriquée dans une autre
Interroger les données d’une table : requête en tant que table
Syntaxe :
SELECT [ DISTINCT ] {<att_1>,<att_2>,...,<att_n>|*}
FROM <table>
[WHERE <condition>]
[ORDER BY <att> {ASC|DESC}];
Exemple : les prénoms de tous les bacheliers en gardant les doublons
SELECT prenom
FROM Bachelier ;
moyenn dateNaissanc
numBach nom prenom ville
e e
Contenu de
01 Belaid Houda Mascara 15.35 NULL
la table
02 Ammar Ali Meliana 10.01 2002-12-31
Bachelier
03 Berrahou Malika Oran 12 NULL
04 Maaziz Houda Tlemcen 11.58 NULL
prenom
Houda
Ali
Résultat
de la requête
Malika
Houda
LMD
obtenu est aléatoire et peut différer d’une
exécution à une autre.
Mettre à jour UPDATE
●
Plusieurs attributs peuvent être spécifiés dans la
clause ORDER BY.
Supprimer DELETE
●
Il est possible de renommer les attributs ou les
tables en utilisant le mot clé AS.
Interroger SELECT ●
Le résultat d’une requête SELECT est une
nouvelle table. De ce fait, la requête SELECT
peut être elle même imbriquée dans une autre
Interroger les données d’une table : requête en tant que table
Syntaxe :
SELECT [ DISTINCT ] {<att_1>,<att_2>,...,<att_n>|*}
FROM <table>
[WHERE <condition>]
[ORDER BY <att> {ASC|DESC}];
Exemple : les prénoms de tous les bacheliers en supprimant les doublons
SELECT DISTINCT prenom
FROM Bachelier ;
dateNaissanc
numBach nom prenom ville moyenne
e
Contenu de
01 Belaid Houda Mascara 15.35 NULL
la table
02 Ammar Ali Meliana 10.01 2002-12-31
Bachelier
03 Berrahou Malika Oran 12 NULL
04 Maaziz Houda Tlemcen 11.58 NULL
prenom
Houda
Résultat
Ali
de la requête
Malika
LMD
obtenu est aléatoire et peut différer d’une
exécution à une autre.
Mettre à jour UPDATE
●
Plusieurs attributs peuvent être spécifiés dans la
clause ORDER BY.
Supprimer DELETE
●
Il est possible de renommer les attributs ou les
tables en utilisant le mot clé AS.
Interroger SELECT ●
Le résultat d’une requête SELECT est une
nouvelle table. De ce fait, la requête SELECT
peut être elle même imbriquée dans une autre
Interroger les données d’une table : requête en tant que table
Syntaxe :
SELECT [ DISTINCT ] {<att_1>,<att_2>,...,<att_n>|*}
FROM <table>
[WHERE <condition>]
[ORDER BY <att> {ASC|DESC}];
Exemple : les bacheliers dont la moyenne est supérieure ou égale à 12
SELECT *
FROM Bachelier
WHERE moyenne >= 12;
numBach nom prenom ville moyenne dateNaissance
01 Belaid Houda Mascara 15.35 NULL Contenu de
02 Ammar Ali Meliana 10.01 2002-12-31 la table
03 Berrahou Malika Oran 12 NULL Bachelier
04 Maaziz Houda Tlemcen 11.58 NULL
LMD
obtenu est aléatoire et peut différer d’une
exécution à une autre.
Mettre à jour UPDATE
●
Plusieurs attributs peuvent être spécifiés dans la
clause ORDER BY.
Supprimer DELETE
●
Il est possible de renommer les attributs ou les
tables en utilisant le mot clé AS.
Interroger SELECT ●
Le résultat d’une requête SELECT est une
nouvelle table. De ce fait, la requête SELECT
peut être elle même imbriquée dans une autre
Interroger les données d’une table : requête en tant que table
Syntaxe :
SELECT [ DISTINCT ] {<att_1>,<att_2>,...,<att_n>|*}
FROM <table>
[WHERE <condition>]
[ORDER BY <att> {ASC|DESC}];
Exemple : les bachelier dont le prénom se termine par "da" :
SELECT *
FROM Bachelier
WHERE prenom LIKE ’%da’;
numBach nom prenom ville moyenne dateNaissance
01 Belaid Houda Mascara 15.35 NULL
Contenu de
la table
02 Ammar Ali Meliana 10.01 2002-12-31
Bachelier
03 Berrahou Malika Oran 12 NULL
04 Maaziz Houda Tlemcen 11.58 NULL
LMD
obtenu est aléatoire et peut différer d’une
exécution à une autre.
Mettre à jour UPDATE
●
Plusieurs attributs peuvent être spécifiés dans la
clause ORDER BY.
Supprimer DELETE
●
Il est possible de renommer les attributs ou les
tables en utilisant le mot clé AS.
Interroger SELECT ●
Le résultat d’une requête SELECT est une
nouvelle table. De ce fait, la requête SELECT
peut être elle même imbriquée dans une autre
Interroger les données d’une table : requête en tant que table
Syntaxe :
SELECT [ DISTINCT ] {<att_1>,<att_2>,...,<att_n>|*}
FROM <table>
[WHERE <condition>]
[ORDER BY <att> {ASC|DESC}];
Exemple : les bacheliers dont la moyenne est supérieure à 10, ordonnés selon leur prénom par ordre
croissant puis selon leur nom par ordre décroissant :
SELECT * FROM Bachelier
WHERE moyenne > 10
ORDER BY prenom ASC , nom DESC;
numBach nom prenom ville moyenne dateNaissance
01 Belaid Houda Mascara 15.35 NULL Contenu de
02 Ammar Ali Meliana 10.01 2002-12-31 la table
03 Berrahou Malika Oran 12 NULL Bachelier
04 Maaziz Houda Tlemcen 11.58 NULL
Exemple : les bacheliers dont la moyenne est supérieure à 10, ordonnés selon leur prénom par ordre
croissant puis selon leur nom par ordre décroissant :
SELECT * FROM Bachelier
WHERE moyenne > 10
ORDER BY prenom ASC , nom DESC;
●
SELECT permet d’obtenir une nouvelle table
Insérer INSERT ●
Sans préciser ORDER BY, l’ordre des tuples
LMD
obtenu est aléatoire et peut différer d’une
exécution à une autre.
Mettre à jour UPDATE
●
Plusieurs attributs peuvent être spécifiés dans la
clause ORDER BY.
Supprimer DELETE
●
Il est possible de renommer les attributs ou les
tables en utilisant le mot clé AS.
Interroger SELECT ●
Le résultat d’une requête SELECT est une
nouvelle table. De ce fait, la requête SELECT
peut être elle même imbriquée dans une autre
Interroger les données d’une table : requête en tant que table
Syntaxe :
SELECT [ DISTINCT ] {<att_1>,<att_2>,...,<att_n>|*}
FROM <table>
[WHERE <condition>]
[ORDER BY <att> {ASC|DESC}];
Exemple : le nom, prénom et la moyenne des bacheliers sur 10 au lieu de 20 :
SELECT nom , prenom , moyenne/2
FROM Bachelier
numBach nom prenom ville moyenne dateNaissance
01 Belaid Houda Mascara 15.35 NULL Contenu de
02 Ammar Ali Meliana 10.01 2002-12-31 la table
03 Berrahou Malika Oran 12 NULL Bachelier
04 Maaziz Houda Tlemcen 11.58 NULL
LMD
obtenu est aléatoire et peut différer d’une
exécution à une autre.
Mettre à jour UPDATE
●
Plusieurs attributs peuvent être spécifiés dans la
clause ORDER BY.
Supprimer DELETE
●
Il est possible de renommer les attributs ou les
tables en utilisant le mot clé AS.
Interroger SELECT ●
Le résultat d’une requête SELECT est une
nouvelle table. De ce fait, la requête SELECT
peut être elle même imbriquée dans une autre
Interroger les données d’une table : requête en tant que table
Syntaxe :
SELECT [ DISTINCT ] {<att_1>,<att_2>,...,<att_n>|*}
FROM <table>
[WHERE <condition>]
[ORDER BY <att> {ASC|DESC}];
Exemple : le nom, prénom et la moyenne des bacheliers sur 10 au lieu de 20 :
SELECT nom , prenom , (moyenne/2) AS ’moy’
FROM Bachelier
numBach nom prenom ville moyenne dateNaissance
01 Belaid Houda Mascara 15.35 NULL Contenu de
02 Ammar Ali Meliana 10.01 2002-12-31 la table
03 Berrahou Malika Oran 12 NULL Bachelier
04 Maaziz Houda Tlemcen 11.58 NULL
LMD
« table_j.att » dans la requête
Mettre à jour UPDATE
Supprimer DELETE
Interroger SELECT
Produit cartésien :
Syntaxe :
SELECT [ DISTINCT ] {<att_1>,<att_2>,..., <att_n>|*}
FROM <table_1>, <table_2>, ... <table_m>
[WHERE <condition>]
[ORDER BY <att> {ASC|DESC}];
Tables entre lesquelles un
produit cartésien sera appliqué
●
Un attribut commun « att » entre deux tables
Insérer INSERT « table_i » et « table_j » est désigné
respectivement par « table_i.att » et
LMD
« table_j.att » dans la requête
Mettre à jour UPDATE
Supprimer DELETE
Interroger SELECT
Produit cartésien :
Syntaxe :
SELECT [ DISTINCT ] {<att_1>,<att_2>,...,<att_n>|*}
FROM <table_1>, <table_2>, ... <table_m>
[WHERE <condition>]
[ORDER BY <att> {ASC|DESC}];
Exemple : le numéro, le nom et le prénom de tous les bacheliers et le numéro des filières auxquelles
chacun a postulé
SELECT [Link], nom, prenom, numFiliere
FROM Bachelier, Postuler
WHERE [Link] = [Link] ;
Table Bachelier Table Postuler
numBach nom prenom ville moyenne dateNaissance numBach numEta numFiliere
01 Belaid Houda Mascara 15.35 NULL
01 01 01
02 Ammar Ali Meliana 10.01 2002-12-31
01 02 03
03 Berrahou Malika Oran 12 NULL
01 03 04
04 Maaziz Houda Tlemcen 11.58 NULL
02 01 05
Résultat de la requête
03 01 05
[Link] nom prenom numFiliere
03 03 02
01 Belaid Houda 01
01 Belaid Houda 03
01 Belaid Houda 04 Remarque: la bachelière n°4 ne
02 Ammar Ali 05 s’affiche pas dans le résultat
03 Berrahou Malika 05
puisqu’elle n’a postulé à aucune
filière
03 Berrahou Malika 02
Exemple : le numéro, le nom et le prénom de tous les bacheliers et le numéro des filières auxquelles
chacun a postulé
SELECT [Link], nom, prenom, numFiliere
FROM Bachelier, Postuler
WHERE [Link] = [Link] ;
●
Un attribut commun « att » entre deux tables
Insérer INSERT « table_i » et « table_j » est désigné
respectivement par « table_i.att » et
LMD
« table_j.att » dans la requête
Mettre à jour UPDATE
Supprimer DELETE
Interroger SELECT
Jointure :
Syntaxe :
SELECT [ DISTINCT ] {<att_1>,<att_2>,...,<att_n>|*}
FROM <table_1> JOIN <table_2> ON <condition_1>
[WHERE <condition_2>]
[ORDER BY <att> {ASC|DESC}];
Tables de la jointure Condition de la
jointure
●
Un attribut commun « att » entre deux tables
Insérer INSERT « table_i » et « table_j » est désigné
respectivement par « table_i.att » et
LMD
« table_j.att » dans la requête
Mettre à jour UPDATE
Supprimer DELETE
Interroger SELECT
Jointure :
Syntaxe :
SELECT [ DISTINCT ] {<att_1>, <att_2> ,... , <att_n>|*}
FROM <table_1> JOIN <table_2> ON <condition_1>
[WHERE <condition_2>]
[ORDER BY <att> {ASC|DESC}];
Exemple : le numéro, le nom et le prénom de tous les bacheliers et le numéro des filières auxquelles
chacun a postulé :
SELECT [Link] , nom , prenom , numFiliere
FROM Bachelier JOIN Postuler ON [Link] = [Link] ;
Table Bachelier Table Postuler
numBach nom prenom ville moyenne dateNaissance numBach numEta numFiliere
01 Belaid Houda Mascara 15.35 NULL
01 01 01
02 Ammar Ali Meliana 10.01 2002-12-31
01 02 03
03 Berrahou Malika Oran 12 NULL
01 03 04
04 Maaziz Houda Tlemcen 11.58 NULL
02 01 05
Résultat de la requête
03 01 05
[Link] nom prenom numFiliere
03 03 02
01 Belaid Houda 01
01 Belaid Houda 03
01 Belaid Houda 04 Remarque: la bachelière n°4 ne
02 Ammar Ali 05 s’affiche pas dans le résultat
03 Berrahou Malika 05 puisqu’elle n’a postulé à aucune
03 Berrahou Malika 02 filière
Exemple : le numéro, le nom et le prénom de tous les bacheliers et le numéro des filières auxquelles
chacun a postulé
SELECT [Link] , nom , prenom , numFiliere
FROM Bachelier JOIN Postuler ON [Link] = [Link] ;
●
Un attribut commun « att » entre deux tables
Insérer INSERT « table_i » et « table_j » est désigné
respectivement par « table_i.att » et
LMD
« table_j.att » dans la requête
Mettre à jour UPDATE
Supprimer DELETE
Interroger SELECT
Jointure :
Syntaxe :
SELECT [ DISTINCT ] {<att_1>, <att_2> ,... , <att_n>|*}
FROM <table_1> JOIN <table_2> ON <condition_1>
[WHERE <condition_2>]
[ORDER BY <att> {ASC|DESC}];
Exemple : le nom et prénoms des bacheliers avec une moyenne égale à 12 et le numéro des filières
auxquelles chacun a postulé :
SELECT nom , prenom , numFiliere
FROM Bachelier JOIN Postuler ON [Link] = [Link]
WHERE moyenne =12;
Table Bachelier Table Postuler
numBach nom prenom ville moyenne dateNaissance numBach numEta numFiliere
01 Belaid Houda Mascara 15.35 NULL 01 01 01
02 Ammar Ali Meliana 10.01 2002-12-31
01 02 03
03 Berrahou Malika Oran 12 NULL
01 03 04
04 Maaziz Houda Tlemcen 11.58 NULL
02 01 05
03 01 05
Résultat de la requête
03 03 02
nom prenom numFiliere
Berrahou Malika 05
Berrahou Malika 02
Exemple : le nom et prénoms des bacheliers avec une moyenne égale à 12 et le numéro des filières
auxquelles chacun a postulé :
SELECT nom , prenom , numFiliere
FROM Bachelier JOIN Postuler ON [Link] = [Link]
WHERE moyenne =12;
●
Un attribut commun « att » entre deux tables
Insérer INSERT « table_i » et « table_j » est désigné
respectivement par « table_i.att » et
LMD
« table_j.att » dans la requête
Mettre à jour UPDATE
Supprimer DELETE
Interroger SELECT
Jointure naturelle :
Syntaxe :
SELECT [ DISTINCT ] {<att_1>,<att_2>,...,<att_n>|*}
FROM <table_1> NATURAL JOIN <table_2>
[WHERE <condition>]
[ORDER BY <att> {ASC|DESC}];
Tables de la jointure
naturelle
●
Un attribut commun « att » entre deux tables
Insérer INSERT « table_i » et « table_j » est désigné
respectivement par « table_i.att » et
LMD
« table_j.att » dans la requête
Mettre à jour UPDATE
Supprimer DELETE
Interroger SELECT
Jointure naturelle :
Syntaxe :
SELECT [ DISTINCT ] {<att_1>,<att_2>,...,<att_n>|*}
FROM <table_1> NATURAL JOIN <table_2>
[WHERE <condition>]
[ORDER BY <att> {ASC|DESC}];
Exemple : le nom et prénom des bacheliers avec une moyenne égale à 12 et le numéro des filières
auxquelles chacun a postulé :
SELECT nom , prenom , numFiliere
FROM Bachelier NATURAL JOIN Postuler
WHERE moyenne =12;
Table Bachelier Table Postuler
numBach nom prenom ville moyenne dateNaissance numBach numEta numFiliere
01 Belaid Houda Mascara 15.35 NULL
01 01 01
02 Ammar Ali Meliana 10.01 2002-12-31
01 02 03
03 Berrahou Malika Oran 12 NULL
01 03 04
04 Maaziz Houda Tlemcen 11.58 NULL
02 01 05
03 01 05
Résultat de la requête
03 03 02
nom prenom numFiliere
Berrahou Malika 05
Berrahou Malika 02
Exemple : le nom et prénoms des bacheliers avec une moyenne égale à 12 et le numéro des filières
auxquelles chacun a postulé :
SELECT nom , prenom , numFiliere
FROM Bachelier NATURAL JOIN Postuler
WHERE moyenne =12;
●
Un attribut commun « att » entre deux tables
Insérer INSERT « table_i » et « table_j » est désigné
respectivement par « table_i.att » et
LMD
« table_j.att » dans la requête
Mettre à jour UPDATE
Supprimer DELETE
Interroger SELECT
Jointure naturelle :
Syntaxe :
SELECT [ DISTINCT ] {<att_1>,<att_2>,...,<att_n>|*}
FROM <table_1> NATURAL JOIN <table_2>
[WHERE <condition>]
[ORDER BY <att> {ASC|DESC}];
Exemple : le nom et le prénom des bacheliers avec une moyenne égale à 12 et l’intitulé des filières
auxquelles chacun a postulé :
SELECT nom , prenom , intitule
FROM Bachelier NATURAL JOIN Postuler NATURAL JOIN Filiere
WHERE moyenne =12;
Table Bachelier Table Postuler
numBach nom prenom ville moyenne dateNaissance numBach numEta numFiliere
01 Belaid Houda Mascara 15.35 NULL
01 01 01
02 Ammar Ali Meliana 10.01 2002-12-31
01 02 03
03 Berrahou Malika Oran 12 NULL
01 03 04
04 Maaziz Houda Tlemcen 11.58 NULL
02 01 05
03 01 05
Résultat de la requête
03 03 02
nom prenom intitulé
Berrahou Malika Droit Relation Filiere
Berrahou Malika MI numFiliere intitule
01 Architecture
02 MI
03 Prepa ST
Exemple : le nom et le prénom des bacheliers avec une moyenne 04 ST
égale à 12 et l’intitulé des filières auxquelles chacun a postulé :
05 Droit
SELECT nom , prenom , intitule
FROM Bachelier NATURAL JOIN Postuler NATURAL JOIN Filiere
WHERE moyenne =12;
●
L’opérateur de division étudié en algèbre
Insérer INSERT relationnelle n’a pas d’équivalent direct en SQL.
LMD
●
Il est toutefois possible d’obtenir son résultat en
utilisant la double négation.
Mettre à jour UPDATE
Supprimer DELETE
Interroger SELECT
Division
Exemple : numéros des bacheliers qui ont postulé à toutes les universités :
— Obtenir les numéros des bacheliers qui n’ont pas postulé à tous les établissements ;
— Obtenir les numéros des bacheliers qui n’apparaissent pas dans l’étape précédente.
SELECT numBach
FROM Bachelier
WHERE numBach NOT IN (
SELECT numBach
FROM Bachelier , Etablissement
WHERE ( numBach , [Link] ) NOT IN (
SELECT numBach , numEta FROM Postuler ) );
●
Les fonctions d’agrégation : clauses à associer
Insérer INSERT au SELECT afin d’obtenir des résultats
d’opérations statistiques sur un ensemble de
LMD
tuples :
Mettre à jour UPDATE ▶
COUNT() : retourne le nombre de tuples dans
une table ou de valeurs non nulles dans une
colonne ;
Supprimer DELETE
▶
MAX() : retourne la valeur maximum d’une
colonne ;
Interroger SELECT ▶
MIN() : retourne la valeur minimum d’une
colonne ;
Fonctions d’agrégation : ▶
SUM() : retourne la somme sur un ensemble
Syntaxe : de tuple ;
SELECT < fonction >({ < attr >|*}) ▶
AVG() : retourne une moyenne sur un
FROM <table> ensemble de tuples ;
[WHERE <condition>]
[ORDER BY <att> {ASC|DESC}];
Exemple : le nombre d’établissements dans la BDD :
SELECT COUNT(*)
FROM Etablissement ;
Table Etablissement Résultat de la requête
numEta nomEta ville COUNT(*)
Univ Alger 3
01 Alger
1
02 ESGEE Oran Oran
03 Univ Oran 1 Oran
LMD
tuples :
Mettre à jour UPDATE ▶
COUNT() : retourne le nombre de tuples dans
une table ou de valeurs non nulles dans une
colonne ;
Supprimer DELETE
▶
MAX() : retourne la valeur maximum d’une
colonne ;
Interroger SELECT ▶
MIN() : retourne la valeur minimum d’une
colonne ;
Fonctions d’agrégation : ▶
SUM() : retourne la somme sur un ensemble
Syntaxe : de tuple ;
SELECT < fonction >({ < attr >|*}) ▶
AVG() : retourne une moyenne sur un
FROM <table> ensemble de tuples ;
[WHERE <condition>]
[ORDER BY <att> {ASC|DESC}];
Exemple : le nombre d’établissements qui se trouvent à Oran :
SELECT COUNT(*)
FROM Etablissement
WHERE ville=’Oran’ ;
Table Etablissement Résultat de la requête
numEta nomEta ville COUNT(*)
Univ Alger 2
01 Alger
1
02 ESGEE Oran Oran
03 Univ Oran 1 Oran
LMD
tuples :
Mettre à jour UPDATE ▶
COUNT() : retourne le nombre de tuples dans
une table ou de valeurs non nulles dans une
colonne ;
Supprimer DELETE
▶
MAX() : retourne la valeur maximum d’une
colonne ;
Interroger SELECT ▶
MIN() : retourne la valeur minimum d’une
colonne ;
Fonctions d’agrégation : ▶
SUM() : retourne la somme sur un ensemble
Syntaxe : de tuple ;
SELECT < fonction >({ < attr >|*}) ▶
AVG() : retourne une moyenne sur un
FROM <table> ensemble de tuples ;
[WHERE <condition>]
[ORDER BY <att> {ASC|DESC}];
Exemple : la meilleure moyenne entre les bacheliers :
SELECT MAX(moyenne)
FROM Bachelier ;
Table Bachelier Résultat de la requête
numBach nom prenom ville moyenne dateNaissance MAX(moyenne)
01 Belaid Houda Mascara 15.35 NULL 15.35
02 Ammar Ali Meliana 10.01 2002-12-31
03 Berrahou Malika Oran 12 NULL
04 Maaziz Houda Tlemcen 11.58 NULL
LMD
tuples :
Mettre à jour UPDATE ▶
COUNT() : retourne le nombre de tuples dans
une table ou de valeurs non nulles dans une
colonne ;
Supprimer DELETE
▶
MAX() : retourne la valeur maximum d’une
colonne ;
Interroger SELECT ▶
MIN() : retourne la valeur minimum d’une
colonne ;
Fonctions d’agrégation : ▶
SUM() : retourne la somme sur un ensemble
Syntaxe : de tuple ;
SELECT < fonction >({ < attr >|*}) ▶
AVG() : retourne une moyenne sur un
FROM <table> ensemble de tuples ;
[WHERE <condition>]
[ORDER BY <att> {ASC|DESC}];
Exemple : la meilleure moyenne entre les bacheliers ayant postulé à au moins un établissement à
Alger :
Table Postuler
Table Bachelier numBach numEta numFiliere
numBach nom prenom ville moyenne dateNaissance 01 01 01
01 Belaid Houda Mascara 15.35 NULL 01 02 03
02 Ammar Ali Meliana 10.01 2002-12-31
01 03 04
03 Berrahou Malika Oran 12 NULL
02 01 05
04 Maaziz Houda Tlemcen 11.58 NULL
03 01 05
Table Etablissement
03 03 02
numEta nomEta ville
Univ Alger Résultat de la requête
01 Alger
1
MAX(moyenne)
02 ESGEE Oran Oran
15.35
03 Univ Oran 1 Oran
Exemple : la meilleure moyenne entre les bacheliers ayant postulé à au moins un établissement à
Alger :
SELECT MAX (moyenne)
FROM ( Bachelier NATURAL JOIN Postuler )
JOIN Etablissement ON [Link] = [Link]
WHERE [Link] = ‘Alger’ ;
●
La clause GROUP BY permet de regrouper les
Insérer INSERT tuples selon la valeur d’une ou de plusieurs
colonnes,puis d’appliquer les fonctions
LMD
d’agrégation sur chaque groupe.
Mettre à jour UPDATE
Supprimer DELETE
Interroger SELECT
Fonctions d’agrégation :
Syntaxe :
SELECT <att_1>,<att_2>,...,<att_n>,<fonction>({<attr>|*})
FROM <table>
[WHERE <condition>]
[GROUP BY <att_1’>,< att_2’>,...,<att_n’>]
[ORDER BY <att’> {ASC|DESC}];
Exemple : la moyenne des moyennes des bacheliers pour chaque ville, et avec les noms des villes
ordonnées alphabétiquement
Table Bachelier Résultat de la requête
numBach nom prenom ville moyenne dateNaissance ville AVG(moyenne)
01 Belaid Houda Mascara 15.35 NULL Blida 14.5
02 Ammar Ali Meliana 10.01 2002-12-31 Mascara 15.35
03 Berrahou Malika Oran 12 NULL Meliana 10.01
04 Maaziz Houda Tlemcen 11.58 NULL Oran 11
05 Moussa Rahim Blida 14.5 2001-11-20 Tlemcen 11.58
06 Senhadji Maroua Oran 10,00 2002-05-09
Exemple : la moyenne des moyennes des bacheliers pour chaque ville, et avec les noms des villes
ordonnées alphabétiquement :
SELECT ville , AVG(moyenne)
FROM Bachelier
GROUP BY ville
ORDER BY ville ASC ;
Fin !