5 - Langage SQL
Pr. Abdelhay HAQIQ (abdelhay.haqiq@gmail.com)
Plan
❑ Introduction
❑ Langage de Définition de Données
❑ Définition d’une Base de Données
❑ Définition d’une Table
❑ Types d’attributs
❑ Contraintes des données
1
Plan
❑ Introduction
❑ Langage de Définition de Données
❑ Définition d’une Base de Données
❑ Définition d’une Table
❑ Types d’attributs
❑ Contraintes des données
2
Caractéristiques d'instructions SQL
o Les instructions SQL sont regroupées en catégories en fonction de leur utilité et des entités
manipulées. Nous pouvons distinguer quatre catégories :
– DDL (Data Definition Language - langage de définition de données) : permet de créer, modifier ou
effacer la définition (schéma) d'une BD ou d'une table.
– DML (Data Manipulation Language - langage de manipulation de données) : permet d’interroger et
de modifier l'information contenue dans les tables.
– DCL (Data Control Language - langage de contrôle de données) : permet d’assurer les droits d'accès
aux données.
– TCL (Transaction Control Language - langage de contrôle des transactions) : permet le contrôle
transactionnel dans une base de données, c’est-à-dire les caractéristiques des transactions, la
validation et l’annulation des modifications.
Documentation SQL
o Site utile pour la documentation SQL : https://www.w3schools.com/sql
3
Plan
❑ Introduction
❑ Langage de Définition de Données
❑ Définition d’une Base de Données
❑ Définition d’une Table
❑ Types d’attributs
❑ Contraintes des données
o Il permet de :
4
Plan
❑ Introduction
❑ Langage de Définition de Données
❑ Définition d’une Base de Données
❑ Définition d’une Table
❑ Types d’attributs
❑ Contraintes des données
o Suppression de la base :
DROP DATABASE nom_BASE;
5
Plan
❑ Introduction
❑ Langage de Définition de Données
❑ Définition d’une Base de Données
❑ Définition d’une Table
❑ Types d’attributs
❑ Contraintes des données
o L’option IF NOT EXIST permet de ne créer cette table que si une table de même nom n’existe pas
encore.
o A l’intérieur des parenthèses, il sera listé tous les attributs, clés et indexes de la table.
6
Création d’une table
o Exemple de création d’une table :
Exemple
ALTER TABLE Client RENAME Personne;
o L’instruction DROP TABLE permet de supprimer une table. Toutes les données qu’elle contient
sont supprimées et sa définition aussi.
Syntaxe
DROP TABLE nom_table;
Exemple
DROP TABLE Client;
7
Edition d’une colonne d’une table
o Syntaxe d’ajout d’une colonne
ALTER TABLE nom_table ALTER TABLE Client
-> exemple
ADD nom_colonne type; ADD telephone CHAR(10);
Plan
❑ Introduction
❑ Langage de Définition de Données
❑ Définition d’une Base de Données
❑ Définition d’une Table
❑ Types d’attributs
❑ Contraintes des données
8
Types d’attributs
o Il est important de bien choisir le meilleur type possible pour chaque attribut d’une tables. Un
mauvais type de donnée pourrait entraîner :
– un gaspillage de mémoire (ex. : si vous stockez de toutes petites données dans une colonne
faite pour stocker de grosses quantités de données)
– des problèmes de performance (ex. : il est plus rapide de faire une recherche sur un nombre
que sur une chaîne de caractères)
– un comportement contraire à celui attendu (ex. : trier sur un nombre stocké comme tel, ou
sur un nombre stocké comme une chaîne de caractères ne donnera pas le même résultat)
– l'impossibilité d'utiliser des fonctionnalités propres à un type de données (ex. : stocker une
date comme une chaîne de caractères vous prive des nombreuses fonctions temporelles
disponibles)
o MySQL utilise de nombreux types de données répartis en trois catégories :
– Numériques
– Alphanumériques
– Temporels : Date et heure
– L'attribut UNSIGNED permet de préciser que le type a une valeur positive commençant par 0
9
Types d’attributs: Numériques
o Nombres décimaux : Cinq mots-clés permettent de stocker des nombres décimaux dans une
colonne :
10
Types d’attributs: Temporels
o Il existe cinq types de données temporelles : DATE, DATETIME, TIME, TIMESTAMP et YEAR.
o DATE : sous format AAAA-MM-JJ
o DATETIME : sous format AAAA-MM-JJ HH:MM
o TIME : sous format HH:MM
o YEAR : sous format AAAA
o TIMESTAMP : sous format AAAAMMJJHHMMSS
– Par définition, le timestamp d'une date est le nombre de secondes écoulées depuis le 1er janvier
1970, 0 h 0 min 0 s (TUC) et la date en question.
– Les timestamps étant stockés sur 4 octets, il existe une limite supérieure : le 19 janvier 2038 à 3 h 14
min 7 s.
– Le TIMESTAMP SQL n'a de timestamp que le nom. Il ne sert pas à stocker un nombre de secondes,
mais bien une date sous format numérique AAAAMMJJHHMMSS
11
Plan
❑ Introduction
❑ Langage de Définition de Données
❑ Définition d’une Base de Données
❑ Définition d’une Table
❑ Types d’attributs
❑ Contraintes des données
12
Contraintes des données
o AUTO_INCREMENT : Incrémentation automatique pour cet attribut si l’utilisateur ne spécifie pas de valeur
pour cet attribut à l’insertion.
o DEFAULT : spécifie la valeur utilisée par défaut si l’utilisateur ne spécifie pas de valeur pour cet attribut à
l’insertion du tuple
o NOT NULL : spécifie que l’attribut ne peut avoir de valeurs nulles
o UNIQUE : spécifie que les valeurs de cet attribut doivent être distinctes pour chaque couple d’enregistrement
o PRIMARY KEY : désigne l’attribut comme la clé primaire de la table
o FOREIGN KEY : désigne l’attribut comme la clé étrangère de la table
CREATE TABLE Client
(
numeroClient INT PRIMARY KEY AUTO_INCREMENT,
Exemple : nom VARCHAR(100) NOT NULL,
prenom VARCHAR(100) DEFAULT 'Hello',
email VARCHAR(255) UNIQUE,
date_naissance DATE
)
AUTO_INCREMENT/DEFAULT
o Il est possible d’ajouter des options après la création d’une table.
➢ Option AUTO_INCREMENT : Par défaut, la valeur de départ pour AUTO_INCREMENT est 1.
o Pour que la séquence AUTO_INCREMENT commence par une autre valeur, utilisez
l'instruction SQL suivante :
ALTER TABLE Client AUTO_INCREMENT = 3;
➢ Option DEFAULT :
o Instruction pour ajouter une valeur par défaut à la colonne « prenom » dans le cas où
l’utilisateur ne donne pas une valeur.
ALTER TABLE Client
ALTER prenom SET DEFAULT 'Hello';
13
NOT NULL
o Création d’un colonne NOT NULL :
UNIQUE
o Création d’une colonne UNIQUE : CREATE TABLE Client
CREATE TABLE Client (
( numeroClient INT,
numeroClient INT UNIQUE, nom VARCHAR(100),
nom VARCHAR(100), OU prenom VARCHAR(100),
prenom VARCHAR(100), date_naissance DATE,
email VARCHAR(255) UNIQUE,
date_naissance DATE CONSTRAINT UC_Client UNIQUE (nom, prenom)
) )
14
Clé primaire
o Dans une base de données relationnelle, une clé primaire est une contrainte d'unicité qui
permet d'identifier de manière unique un enregistrement dans une table. Une clé primaire
peut être composée d'un ou de plusieurs attributs de la table.
o Cet attribut devra ne jamais être vide, il faut donc préciser l’option NOT NULL pour le forcer à
prendre une valeur de son domaine.
o Il devra aussi être unique, c’est-à-dire que deux enregistrements ne pourront pas avoir une
valeur identique. Il faut alors faire la déclaration suivante : UNIQUE (cle) à la suite de la liste
des attributs.
o Pour simplifier, on utilisera l’option PRIMARY KEY qui regroupe NOT NULL et UNIQUE en
remplacement des deux dernières déclarations.
o Et pour finir, il faut signifier que cette valeur doit s’incrémenter automatiquement à chaque
insertion d’un enregistrement grâce à l’option AUTO_INCREMENT.
Clé primaire
o Une clé primaire peut être ajouté avec l’attribut ou avec une contrainte
15
Clé primaire
o Ajouter une clé primaire après la création de la table
o Sans nommé la contrainte :
ALTER TABLE Client
ADD PRIMARY KEY (numeroClient);
Clé étrangère
CREATE TABLE Commande
(
numeroCommande INT,
dateCommande DATE
numeroClient INT,
16
Clé étrangère
o Ajouter une clé étrangère après la création de la table
– Sans nommé la contrainte :
Clé étrangère
o La commande SHOW CREATE affiche la requête SQL permettant de créer une table :
Syntaxe : SHOW CREATE TABLE nom_table;
17
Index
o Un index est un objet complémentaire (mais non indispensable) à la base de données
permettant d'indexer certaines colonnes dans le but d'améliorer l'accès aux données par le
SGBDR
– Au même titre qu'un index dans un livre ne vous est pas indispensable mais vous permet souvent
d'économiser du temps lorsque vous recherchez une partie spécifique de ce dernier...
o Les indexes doivent toutefois être utilisés avec parcimonie car ils pénalisent les temps
d'insertion et de suppression des données dans la table.
– La création d'index utilise de l'espace mémoire dans la base de données, et, un index est mis à jour à
chaque modification de la table à laquelle il est rattaché
Index
o Syntaxe :
CREATE INDEX index_Table ON nom_table(colonne1, colonne1,…);
18
Check
o La contrainte CHECK est utilisée pour limiter la plage de valeurs pouvant être placée dans une
colonne
CREATE TABLE ClientA
(
numeroClient INT PRIMARY KEY,
nom VARCHAR(100),
prenom VARCHAR(100),
date_naissance DATE,
Age INT,
genre CHAR,
CONSTRAINT Chk_Client CHECK (Age >=18 AND genre IN ('M', 'F'))
)
Plan
❑ Introduction
❑ Langage de Définition de Données
❑ Définition d’une Base de Données
❑ Définition d’une Table
❑ Types d’attributs
❑ Contraintes des données
19
Langage de Manipulation des Données
o Un Langage de Manipulation de Données (LMD ; en anglais Data Manipulation Language,
DML) est l'ensemble des commandes concernant la manipulation des données dans une base
de données.
o Le LMD permet l'ajout, la suppression et la modification de lignes et la visualisation du
contenu des tables .
o Les commandes principales de LMD sont :
– INSERT pour ajouter les données
– UPDATE pour modifier les données
– DELETE pour supprimer les données
– SELECT pour consulter les données
o Ces commandes doivent être validés par une transaction pour qu'ils soient pris en compte.
Plan
❑ Introduction
❑ Langage de Définition de Données
❑ Définition d’une Base de Données
❑ Définition d’une Table
❑ Types d’attributs
❑ Contraintes des données
20
INSERT : Insertion des données
o L'instruction INSERT INTO est utilisée pour insérer de nouveaux enregistrements dans une table.
Syntaxe :
INSERT INTO nom_table (colonne1, colonne2, …)
VALUES ('valeur1', 'valeur2', …);
Exemple :
o Si vous ajoutez des valeurs pour toutes les colonnes de la table, vous n'avez pas besoin de
spécifier les noms de colonne dans la requête SQL.
INSERT INTO Client VALUES (2, 'Sara', 'Rani', '2001-02-05', NULL);
o Il est possible d'insérer des données uniquement dans des colonnes spécifiques.
INSERT INTO Client (nom, prenom, date_naissance)
VALUES ('Ahmed', 'Said', '2001-06-08');
UPDATE Client
SET nom = 'Mourad', prenom = 'Said', date_naissance = '2012-06-08'
WHERE numeroClient = 1;
o Soyez prudent lors de la mise à jour des enregistrements. Si vous omettez la clause WHERE,
TOUS les enregistrements seront mis à jour!
UPDATE Client
SET nom = 'Mourad', prenom = 'Said', date_naissance = '2012-06-08';
21
DELETE : Suppression des données
o L'instruction DELETE est utilisée pour supprimer des enregistrements existants dans une table.
Syntaxe :
DELETE FROM nom_table WHERE condition;
Exemple :
o Il est possible de supprimer toutes les lignes d'une table sans la supprimer. Cela signifie que la
structure de la table, les attributs et les index seront intacts:
Plan
❑ Introduction
❑ Langage de Définition de Données
❑ Définition d’une Base de Données
❑ Définition d’une Table
❑ Types d’attributs
❑ Contraintes des données
22
Contraintes d'intégrité référentielle
o Dans un modèle physique de données, les tables sont liés entre elles par le biais d'une clé
étrangère.
o La clé étrangère d'une table permet de lier la table à la clé primaire de l'autre table.
o Lors de la sélection des données, l'association entre les deux tables est effectuée grâce à une
jointure entre ces deux tables.
o Exemple : Ici, chaque référence à une adresse est respectée.
o Lors de la création des tables, il est possible de confier ce contrôle au moteur de la base de
données.
Note : Sur MySql, cette fonctionnalité n'est disponible qu'avec le moteur des tables : InnoDB
23
Contraintes d'intégrité référentielle
o Pour déclarer une référence il faut ajouter une clause lors d'un « CREATE TABLE » ou avec un
« ALTER TABLE » :
CONSTRAINT nom_contrainte
FOREIGN KEY (champ1, […, champN])
REFERENCES table(champ1, […, champN])
[ON UPDATE action]
[ON DELETE action]
ON UPDATE RESTRICT
o Exemple avec ON UPDATE RESTRICT :
24
ON UPDATE CASCADE (1/2)
o Exemple avec ON UPDATE CASCADE :
o Action :
Update adresse set id = 5 where id = 3
25
ON UPDATE SET NULL (1/2)
o Exemple avec ON UPDATE SET NULL :
o Action :
Update adresse set id = 5 where id = 3
26
ON UPDATE NO ACTION
o Exemple avec ON UPDATE NO ACTION :
ON DELETE RESTRICT
o Exemple avec ON DELETE RESTRICT :
27
ON DELETE CASCADE (1/2)
o Exemple avec ON DELETE CASCADE :
o Action :
Delete adresse where id = 3
28
ON DELETE SET NULL (1/2)
o Exemple avec ON DELETE SET NULL :
o Action :
Delete adresse where id = 3
29
ON DELETE NO ACTION
o Exemple avec ON DELETE NO ACTION :
Plan
❑ Introduction
❑ Langage de Définition de Données
❑ Définition d’une Base de Données
❑ Définition d’une Table
❑ Types d’attributs
❑ Contraintes des données
30
SELECT : Sélection des données
o L'instruction SELECT permet de sélectionner des données dans une base de données.
o Voici la syntaxe générale d'une commande SELECT :
Exemples :
o Sélectionner tous les champs disponibles dans la table Client : SELECT * FROM Client;
o Sélectionner les champs nom et prénom dans la table Client : SELECT nom, prenom FROM Client;
31
Sélection des données : Exemple (2/2)
o Le mot-clé OFFSET indique à partir de quelle ligne on récupère les résultats. Ce paramètre est
facultatif. S'il n'est pas précisé, il est mis à 0
Exemple :
SELECT *
FROM Client
LIMIT 100 OFFSET 50;
32
Plan
❑ Introduction
❑ Langage de Définition de Données
❑ Définition d’une Base de Données
❑ Définition d’une Table
❑ Types d’attributs
❑ Contraintes des données
Exemple :
33
DISTINCT : Elimination des doublons (2/2)
Alias
o Les alias SQL sont utilisés pour donner un nom temporaire à une table ou à une colonne d'une
table.
o Ils sont souvent utilisés pour rendre les noms de colonnes plus lisibles.
o Un alias n'existe que pour la durée de la requête. Il est définit par le mot clé « AS ».
Syntaxe :
SELECT colonne1 AS alias_col_1, colonne2 AS alias_col_2, …
FROM nom_table AS alias_table;
34
Plan
❑ Introduction
❑ Langage de Définition de Données
❑ Définition d’une Base de Données
❑ Définition d’une Table
❑ Types d’attributs
❑ Contraintes des données
Fonctions : MIN()/MAX()
o La fonction MIN () renvoie la plus petite valeur de la colonne sélectionnée.
Syntaxe :
SELECT MIN(colonne1)
FROM nom_table WHERE condition;
Exemples :
SELECT MIN(age) SELECT MAX(age)
FROM Client; FROM Client;
35
Fonctions : COUNT(), AVG() and SUM()
o La fonction COUNT () renvoie le nombre de lignes correspondant à un critère spécifié.
SELECT COUNT(numeroClient)
FROM Client WHERE prenom = 'Said' ;
SELECT AVG(prix)
FROM Produit;
SELECT SUM(quantite)
FROM Ligne_Commande;
Exemples
36
Fonctions Mathématiques
SELECT nom
o Cet exemple affiche dans un ordre aléatoire le nom des
FROM filiales
filiales dont le chiffre d’affaire est négatif.
WHERE SIGN(chiffeAffaire) = -1 o A noter que : SIGN(chiffeAffaire) = -1 chiffeAffaire < 0
o On affiche en majuscules le nom de tous les clients dont le nom ressemble à « Ahmed »
SELECT UPPER(nom)
FROM clients
WHERE SOUNDEX(nom) = SOUNDEX('Ahmed');
37
Fonctions de Dates et Heures
SELECT titre
FROM article
WHERE (TO_DAYS(NOW()) – TO_DAYS(parution)) < 30;
Plan
❑ Introduction
❑ Langage de Définition de Données
❑ Définition d’une Base de Données
❑ Définition d’une Table
❑ Types d’attributs
❑ Contraintes des données
38
Clause WHERE
La clause WHERE est utilisée pour filtrer les enregistrements.
o Syntaxe :
SELECT colonne1, colonne2, …
SELECT * FROM nom_table WHERE condition;
FROM nom_table WHERE condition;
Exemples :
o Sélectionner tous les champs disponibles dans la table Client dont le prénom est « Said » :
SELECT *
FROM Client WHERE prenom = 'Said';
o Sélectionner les champs nom et prénom dans la table Client dont le prénom est « Ahmed »
et age > 18.
SELECT nom, prenom,age
FROM Client WHERE prenom = 'Ahmed' AND age > 18;
39
Clause WHERE : Combinaisons de critères
o Il est possible d’utiliser de combinaisons de critères pour obtenir un résultat raffiné
Opérateur Symbole Signification
AND && ET
OR || OU
XOR OU exclusif
NOT ! NON
o Exemples :
SELECT * FROM Client WHERE date_naissance >= '2001-01-01' AND sexe = 'M';
SELECT * FROM Client WHERE prenom = 'Said' AND NOT nom = 'Kadir';
SELECT *
FROM Animal
WHERE date_naissance > '2016-12-31'
OR
( espece = 'chat'
AND
( sexe = 'M'
OR
( sexe = 'F' AND date_naissance < '2017-06-01' )
)
);
40
Opérateur NULL
o Il n'est pas possible de tester les valeurs NULL avec des opérateurs de comparaison tels que =,
< ou <>.
o Il faut plutôt utiliser les opérateurs IS NULL et IS NOT NULL.
Syntaxe :
Exemples :
SELECT * FROM Client WHERE prenom IS NULL;
41
LIKE : Recherche approximative (2/2)
o Voici quelques exemples montrant différents opérateurs LIKE avec des caractères génériques
'%' et '_' :
Exemples :
42
IN : Ensemble de critères
o L'opérateur IN permet de spécifier plusieurs valeurs dans une clause WHERE.
o L'opérateur IN est un raccourci pour plusieurs conditions OU.
Syntaxe :
SELECT colonne1, colonne2, …
FROM nom_table WHERE colonne IN (valeur1, valeur2,…);
OU
SELECT colonne1, colonne2, …
FROM nom_table WHERE colonne IN (SELECT STATEMENT);
Exemple :
SELECT * FROM Client
WHERE ville IN ('Rabat', 'Casablanca', 'Tanger');
Plan
❑ Introduction
❑ Langage de Définition de Données
❑ Définition d’une Base de Données
❑ Définition d’une Table
❑ Types d’attributs
❑ Contraintes des données
43
ORDER BY : Tri des données
o Le mot clé ORDER BY trie les enregistrements par défaut par ordre croissant (ASC : Ascendant)
o Pour trier les enregistrements par ordre décroissant, utilisez le mot-clé DESC (Descendant)
Syntaxe :
SELECT colonne1, colonne2, …
FROM nom_table WHERE condition;
ORDER BY colonne1, colonne2,… ASC|DESC;
Exemples :
44
GROUP BY
o La condition GROUP BY est souvent utilisée avec des fonctions d'agrégation (COUNT, MAX,
MIN, SUM, AVG) pour regrouper l'ensemble de résultats en une ou plusieurs colonnes.
o A noter : GROUP BY doit toujours être utilisée après la commande WHERE et avant la
commande HAVING.
o Exemple : Obtenir la quantité totale des produits de chaque client en regroupant les
commandes des mêmes clients
numeroClient Quantite
SELECT numeroClient, SUM(quantite) 1 20
FROM Commande
2 44
GROUP BY numeroClient;
3 85
HAVING
o La condition HAVING en SQL est presque similaire à WHERE à la seule différence que HAVING
permet de filtrer en utilisant des fonctions telles que SUM(), COUNT(), AVG(), MIN() ou MAX().
o Exemple :
SELECT numeroClient, SUM(quantite)
FROM Commande numeroClient Quantite
2 44
GROUP BY numeroClient
3 85
45
Plan
❑ Introduction
❑ Langage de Définition de Données
❑ Définition d’une Base de Données
❑ Définition d’une Table
❑ Types d’attributs
❑ Contraintes des données
Jointures
o Les jointures permettent de sélectionner les données se trouvant dans plusieurs tables.
o Il est indispensable de savoir les utiliser car elles permettent de préciser les données sur
lesquelles travailler lors d'un :
– Select (lecture)
– Update (mise à jour)
– Delete (suppression)
o Une clause JOIN est utilisée pour combiner des lignes de deux ou plusieurs tables, en fonction
d'une colonne liée entre elles.
46
Jointures
o Exemple : On veut afficher les nom , prénom et ville des personnes
Jointures
o Problèmes de la jointure par « = »
– Mélange des critères de sélection et des jointures
– Mise en relation des données uniquement quand les deux attributs sont remplis (jointure
fermée)
o Exemple :
– On désire lire toutes les personnes et optionnellement donner leur adresse si celle-ci est
connue.
– La requête :
SELECT *
FROM Personne, Adresse
WHERE Personne.Id_adresse = Adresse.Id
47
Jointures fermées et ouvertes
o Il existe une autre syntaxe permettant de séparer les clauses dédiées à la jointure des critères
de sélection.
o Il y a quatre type d'associations :
– INNER JOIN : jointure fermée, les données doivent être à la fois dans les 2 tables
– LEFT JOIN : jointure ouverte, on lit les données de la table de gauche en y associant
éventuellement celle de la table de droite.
– RIGHT JOIN : jointure ouverte, on lit les données de la table de droite en y associant
éventuellement celle de la table de gauche.
– FULL JOIN : jointure ouverte, on lit les données des deux tables, et on remplit par NULL les
colonnes vides.
INNER JOIN
o La commande INNER JOIN permet de retourner les enregistrements lorsqu’il y a au moins une
ligne dans chaque colonne qui correspond à la condition.
SELECT *
FROM tableA
INNER JOIN tableB ON tableA.id = tableB.fk_id
48
Exemple : INNER JOIN
Client Commande
id prenom nom email ville num_commande numeroClient date_achat
A00106 2 2017-02-21
4 Meryem Rolland lucrolland@example.com Casablanca
A00107 5 2018-03-02
LEFT JOIN
o La commande LEFT JOIN (aussi appelée LEFT OUTER JOIN) permet de lister tous les résultats
de la table de gauche (left = gauche) même s’il n’y a pas de correspondance dans la deuxième
tables.
SELECT *
FROM tableA
LEFT JOIN tableB ON tableA.id = tableB.fk_id
49
LEFT JOIN : Exemple
o On veut lister tous les clients avec leurs commandes et afficher également les client qui n’ont
pas effectuées d’achats :
id prenom nom num_commande
o On veut lister tous les client qui n’ont pas effectuées d’achats :
SELECT id, prenom, nom, num_commande id prenom nom num_commande
FROM Client 3 Nabil Prevost NULL
LEFT JOIN Commande ON Client.id = Commande.numeroClient
WHERE num_commande IS NULL; 4 Meryem Rolland NULL
RIGHT JOIN
o La commande RIGHT JOIN (ou RIGHT OUTER JOIN) est un type de jointure entre 2 tables.
o Elle permet de retourner tous les enregistrements de la table de droite (right = droite) même
s’il n’y a pas de correspondance avec la table de gauche.
SELECT *
FROM tableA
RIGHT JOIN tableB ON tableA.id = tableB.fk_id
50
RIGHT JOIN : Exemple
o On veut lister toutes les commandes avec leurs clients même s’il n’y a pas de clients :
FULL JOIN
o La commande FULL JOIN (ou FULL OUTER JOIN) permet de combiner les résultats deux tables,
les associer entre eux grâce à une condition, et remplir avec des valeurs NULL si la condition
n’est pas respectée.
SELECT *
FROM tableA
FULL JOIN tableB ON tableA.id = tableB.fk_id
51
FULL JOIN : Exemple
o On veut lister tous les clients ayant effectué ou non une commande, et de lister toutes les
commandes qui sont associées ou non à un client.
Plan
❑ Introduction
❑ Langage de Définition de Données
❑ Définition d’une Base de Données
❑ Définition d’une Table
❑ Types d’attributs
❑ Contraintes des données
52
Union, Intersection et Différence
o La commande UNION permet de concaténer les résultats de 2 requêtes ou plus
53
Plan
❑ Introduction
❑ Langage de Définition de Données
❑ Définition d’une Base de Données
❑ Définition d’une Table
❑ Types d’attributs
❑ Contraintes des données
Vue
o Une vue est une table virtuelle, c'est-à-dire dont les données ne sont pas stockées dans une
table de la base de données, et dans laquelle il est possible de rassembler des informations
provenant de plusieurs tables.
o On parle de "vue" car il s'agit simplement d'une représentation des données dans le but d'une
exploitation visuelle.
o Les données présentes dans une vue sont définies grâce à une clause SELECT.
o Syntaxe : CREATE VIEW Nom_de_la_Vue DROP VIEW Nom_de_la_Vue ALTER VIEW Nom_de_la_Vue
AS SELECT ... AS SELECT ...
o Exemple :
CREATE VIEW TotalCommandes Afficher la vue :
AS
SELECT num_commande, SUM(quantite) AS total SELECT * From TotalCommandes;
FROM Commande
GROUP BY num_commande
ORDER BY total DESC;
54