Vous êtes sur la page 1sur 52

Base de Données - SQL

Objectifs

Découvrir les concepts et instructions de base du langages SQL

• Présentation SQL
Base de Données - SQL

• Définition de Données (Tables)

• Modification / destruction d’une table


(Tables)

• Interrogation (Données)

• Insertion et Modification (Données)

• Privilèges d'accès à la base (Utilisateurs)


Présentation
SQL (Structured Query Language) :

• Une syntaxe simple


Base de Données - SQL

• Basée sur l’algèbre relationnelle


(opérations ensemblistes et relationnelles)

• Un seul langage pour l’Interrogation, la


Manipulation, la Définition et de le
Contrôle des données
Présentation

Définition des données


Interrogation de données ALTER
Base de Données - SQL

SELECT CREATE
DROP
RENAME
Modification de données
INSERT
UPDATE DELETE Contrôle des données
Gestion des transactions GRANT REVOKE
COMMIT ROLLBACK
Exemple de Base de Données Relationnelle
Soit la base de données relationnelle suivante concernant la gestion des
commandes de livres pour la bibliothèque des facultés
Base de Données
Représentation Textuelle

Faculte (code_l, Nom, ville, tel, nbeleve)


Base de Données - SQL

Commande (ncmd, Date, #code_l)


Livre (isbn, titre, PU, stock)
Ligne_commande (#ncmd, #isbn, qte)
• Présentation SQL

• Définition de Données (Tables)


Base de Données - SQL

• Modification / destruction d’une table


(Tables)

• Interrogation (Données)

• Insertion et Modification (Données)

• Privilèges d'accès à la base (Utilisateurs)


langage de définition de données
1/ Création d’une table:
La création de tables se fait à l'aide du couple de mots-clés :

CREATE TABLE nom_table


Base de Données - SQL

(colonne1 Type [Contrainte de colonne],


Colonne2 Type [Contrainte de colonne],

colonneN Type [Contrainte de colonne],

[Contrainte de relation], …)[Type = Type_table] ;

Si vous omettez l'option TYPE , le type de table par sera défaut MyISAM.
langage de définition de données
Type Table :
Type = InnoDB

Pourquoi InnoDB ?
Base de Données - SQL

Les tables InnoDB sont les premières tables MySQL


qui supportent les contraintes de clés étrangères
(FOREIGN KEY).

• InnoDB : ne crée pas automatiquement les


index nécessaires pour les clés étrangères.
Vous devez les créer vous-même.
• Les index sont nécessaires pour accélérer les
vérifications de contrainte.
langage de définition de données
Contraintes d’intégrité :
1. domaine: Il s’agit de contraintes liées à la valeur d’une colonne
dans un domaine.

nom_colonne type CONSTRAINT [nom_contrainte] Type_contrainte


Base de Données - SQL

NOT NULL : pas d’éléments indéfinis


UNIQUE : chaque ligne a une valeur différente ou indéfinie pour
cette colonne.
PRIMARY KEY : chaque ligne a une valeur différente et définie
pour cette colonne.
FOREIGN KEY : fait référence à une colonne clé d’une autre table.
DEFAULT: attribuer une valeur par défaut
CHECK : permet de spécifier les valeurs acceptables pour une
colonne
langage de définition de données
Contraintes d’intégrité :
2. Référentielle: Il s’agit de contraintes liées aux relations entre les tables.
Base de Données - SQL
langage de définition de données
Spécification de types de données :
Les champs numériques :

TINYINT Entier très petit

SMALLINT Entier petit compris entre -32768 et 32767.

MEDIUMINT Entier moyen compris entre -8388608 et 8388607


Base de Données - SQL

INT Entier standard compris entre 2 147 483 648 et 2 147 483 647.

BIGINT Entier grand

FLOAT Décimal de simple précision

DOUBLE, REAL Décimal de double précision

DECIMAL (entier,décimal) Réel, définissez la longueur de chacune des deux parties.


Les chaînes de caractères :

CHAR (n) Chaîne de n caractère, taille fixe

VARCHAR(M) Chaîne de caractères variable. M peut être compris entre 1 et 255.

Les champs de Types date et heure :

DATE Date (ex: 2000-08-24)

TIME Heure (ex: 23:44:05)

Date et heure (ex: 2000-08-24


DATETIME
23:44:05)
Langage de Définition de Données
Création de la table FACULTE sans définir sa clé Primaire.

CREATE TABLE faculte


(code_l VARCHAR(4) NOT NULL,
nom VARCHAR(50)NOT NULL,
ville VARCHAR(15)NOT NULL,
Tel VARCHAR(20)
Nbeleve int (4))type=Innodb;
Langage de Définition de Données
Création de la table Commande avec la clé Primaire.

CREATE TABLE Commande


(ncmd VARCHAR(4) Primary Key,
DateCmd DATE NOT NULL,
Code_l VARCHAR(4)NOT NULL) type=Innodb;
Langage de Définition de Données
Création de la table livre en définissant :
• la contrainte pk_isbn de clé primaire.
• Ne pas définir la colonne stock.

CREATE TABLE livre


(isbn VARCHAR(20) CONSTRAINT pk_ISBN
PRIMARY KEY,
Titre VARCHAR Not NULL(50),
PU decimal(6,3) Not NULL) type = InnoDB;
Langage de Définition de Données
Création de la table Ligne_Commande en spécifiant la
contrainte de clé primaire et l’une des contraintes de clé
étrangère.

CREATE TABLE ligne_commande


(ncmd VARCHAR(4),
isbn VARCHAR(20),
Qte Int(5),
CONSTRAINT pk_LCMD PRIMARY KEY (ncmd, isbn),
CONSTRAINT fk_isbn FOREIGN KEY (isbn)
REFERENCES livre(isbn)) type=Innodb;
• Présentation SQL

• Définition de Données (Tables)


Base de Données - SQL

• Modification / destruction d’une table


(Tables)

• Interrogation (Données)

• Insertion et Modification (Données)

• Privilèges d'accès à la base (Utilisateurs)


Langage de Définition de Données
2/ Modification de la structure d’une table :
La clause ALTER permet l’ajout, la modification, et la suppression des
colonnes d'une table.

Ajout d’une colonne: Permet d’ajouter une colonne à la structure


initiale de la table

ALTER TABLE Nom_Table


ADD Colonne Type;
Ajouter la colonne stock à la table Produit.

ALTER TABLE Produit


ADD stock INT (5);
Langage de Définition de Données
2/ Modification de la structure d’une table :
Modification d’un attribut : Associée avec la clause MODIFY, la clause
ALTER permet la modification du type de données d'un attribut. On ne
peut qu’agrandir la taille d’un attribut.

ALTER TABLE Nom_Table


MODIFY Colonne Type;
Modification de la taille du colonne titre à VARCHAR(20).

ALTER TABLE livre


MODIFY titre VARCHAR(20);
Langage de Définition de Données
2/ Modification de la structure d’une table :
Suppression d’un attribut : Permet de supprimer un attribut d’une table.

ALTER TABLE Nom_Table


DROP colonne ;
Il faut noter que la suppression d’une colonne n'est possible
que dans le cas où :la colonne n'est pas l'objet d'une contrainte
d'intégrité.

Supprimer la colonne nbeleve de la table faculte.

ALTER TABLE faculte


drop nbelenve;
Langage de Définition de Données
2/ Modification de la structure d’une table :
Ajout de contrainte : Permet d’ajouter une contrainte au
niveau d’une table.

ALTER TABLE Nom_Table


ADD CONSTRAINT Nom_Contrainte
Définition_Contrainte;

Ajouter de la contrainte PRIMARY KEY sur l’attribut ncmd de la


table faculte.

ALTER TABLE Faculte


ADD CONSTRAINT pk_isbn
PRIMARY KEY (isbn);
Langage de Définition de Données
• Ajout des contraintes de clés étrangères sur la table Commande:
• Ajout des contraintes de clés étrangères sur la table Ligne_commande:
• Ajout de la contrainte CHECK sur l’attribut Qte (Qte > 0) de la table
Ligne_Commande:

ALTER TABLE Commande


ADD CONSTRAINT fk_code_l
FOREIGN KEY (code_l)
REFERENCES faculte(code_l);

ALTER TABLE Ligne_commande


ADD CONSTRAINT fk_NCMD FOREIGN
KEY (ncmd) REFERENCES
Commande(ncmd);

ALTER TABLE Ligne_commande


ADD CONSTRAINT ck_QTE CHECK
(Qte > 0);
Langage de Définition de Données
2/ Modification de la structure d’une table :

Suppression de contrainte : Permet de supprimer une contrainte.


Syntaxe :
ALTER TABLE Nom_Table
DROP CONSTRAINT Nom_Contrainte;

Désactivation d’une contrainte : Permet de désactiver une


contrainte, elle est par défaut active (au moment de sa
création).
Syntaxe :
ALTER TABLE Nom_Table
DISABLE CONSTRAINT Nom_Contrainte;

Activation d’une contrainte : Permet d’activer une contrainte désactivée.


Syntaxe :
ALTER TABLE Nom_Table
ENABLE CONSTRAINT Nom_Contrainte;
Langage de Définition de Données
3/ Suppression d’une table

La clause DROP permet d'éliminer des vues, des index et même des tables.
Cette clause est
toutefois à utiliser avec précaution dans la mesure où elle est irréversible.
Syntaxe : Pour supprimer une table :

DROP TABLE Nom_table ;


• Présentation SQL

• Définition de Données (Tables)


Base de Données - SQL

• Modification / destruction d’une table


(Tables)

• Interrogation (Données)

• Insertion et Modification (Données)

• Privilèges d'accès à la base (Utilisateurs)


Langage d’Interrogation de Données

Ce langage permet de rechercher et afficher des


informations utiles en interrogeant la base de
Base de Données

données.
Langage d’Interrogation de Données
L’obtension des données se fait exclusivement par l’ordre SELECT, la
syntaxe minimal est :
SELECT <liste des colonnes>
From <liste des noms des tables>
Nous verrons qu’elle peut s’enrichie de très nombreuse clauses permettant
Base de Données

notamment d’exprimer:

Projection : sélection de colonnes

Restriction de lignes (nuples) (SELECT … WHERE)

Les Expression, et Fonctions de groupement

Jointure de plusieurs tables

Tri des données

Groupement (GROUP BY)


Langage d’Interrogation de Données
A. Projection
Une projection est une instruction permettant de sélectionner un ensemble de
colonnes dans une table.
Base de Données Commandes_lycee

Syntaxe :

SELECT [ALL] | [DISTINCT] <liste des colonnes> | *


FROM <la table> ;
Langage d’Interrogation de Données
RQ1 Donner la liste des facultes on code_l nom ville téléphone

orientant le résultat vers c:\rq1.xls: C876 IBN CHARAF BEJA 78 67 890

SELECT * L136 ISI ARIANA 71 236 543


L306 IPNA NABEUL 73 233 760
Into outfile
L415 ENIS SFAX 74 650 399
‘c:\rq1.xls’
Base de Données Commandes_lycee

FROMDonner
RQ2 faculte la liste des différentes livres (isbn )qui ont été
commandés:
Select isbn Select DISTINCT isbn
From ligne_commande; From ligne _commande;

ncmd isbn qte

C123 233-371 10
C123 978 234 24
C124 233-371 3
isbn
C125 233-371 30
233-371
C125 560-677 10 isbn
978 234
C143 560-677 2 233-371
233-371
233-371 560-677

560-677 978 234

560-677
Langage d’Interrogation de Données

B. Restrictions
Base de Données Commandes_lycee

Une restriction consiste à sélectionner les lignes satisfaisant à une condition


logique effectuée sur leurs colonnes s'expriment à l'aide de la clause WHERE
suivie d'une condition logique exprimée à l'aide:
 d'opérateurs logiques (AND, OR, NOT),
d'opérateurs arithmétiques (+, -, *, /, %, &, |, ^, ~),
de comparateurs arithmétiques (=, !=, >, <, >=, <=)
et des prédicats (NULL, IN, BETWEEN, LIKE, ALL, SOME, ANY,…).

Ces opérateurs s’appliquent aux valeurs numériques, aux chaînes de caractères


et aux dates.

Syntaxe :
SELECT [ALL] | [DISTINCT] <liste des colonnes> | *
FROM <la table>
WHERE <condition> ;
Langage d’Interrogation de Données
RQ3 Donner les codes et les noms des facultes de la ville de Sousse :
code_l nom ville téléphone
C876 ISETBJ BEJA 78 67 890
Base de Données Commandes_lycee

L121 FST TUNIS


L124 ENIT TUNIS
L136 ISI ARIANA 71 236 543
L156 IBNCHARAF TUNIS
L306 IPENA NABEUL 73 233 760
L320 TAHAR SAFAR
ENISO SOUSSE 73
73 650
650 650
650
L326 SIDI BOU ALI
FSS SOUSSE 73
73 698
698 432
432
L330 FSM MONASTIR 73 230 129
L415 ENIS SFAX 74 650 399

Select code_l, nom code_l nom


L320 ENISO
From faculte L326 FSS

Where ville=‘soussse’;
Langage d’Interrogation de Données
RQ4 la liste les titres des livres qui ont un stock qui dépasse 100.

isbn titre pu stock

233-371 ALGORITHMES 3.96 100


Base de Données Commandes_lycee

233-688
233-688 ABC DU
ABC BD BAC 2.20
2.20 234
234

377-655 BUREATIQUE ET EXERCICES 2.59 10

560-677 BASES DE DONNEES 5.50


5.50 185

978-234 ORACLE DATA BASES 7.15


7.15 350

Select titre titre


ORACLE DATA BASES
From livre BASES DE DONNEES

Where stock >100 ABC BD


Langage d’Interrogation de Données
RQ5 la liste des livres dont le prix est compris entre 3 et 5 dinars.

isbn titre pu stock


Base de Données Commandes_lycee

isbn
233-371 titre
ALGORITHMES pu 3.96 stock 100

233-371
233-688 ALGORITHMES
ABC DU BAC 3.96
2.20 100
234

560-677
377-655 BASES DE DONNEES
BUREATIQUE ET EXERCICES 5.50
2.59 185
10

978-234 ORACLE DATA BASES 7.15 350


560-677 BASES DE DONNEES 5.50 185

978-234 ORACLE DATA BASES 7.15 350

SELECT * SELECT *
FROM livre FROM livre
WHERE (PU >= 3) AND WHERE PU BETWEEN 3 AND 5;
(PU <= 5);
Langage d’Interrogation de Données
RQ6 la liste des livres dont les titres commencent par B

SELECT titre
titre
FROM LIVRE
Base de Données Commandes_lycee

BASES DE DONNEES
WHERE titre LIKE "B%"; BUREATIQUE ET EXERCICES

Le prédicat LIKE permet de faire des comparaisons sur des chaînes grâce à des
caractères, appelés caractères jokers :
• Le * (éventuellement nulle).
•Le ?
•Les caractères [-] permettent de définir un intervalle de caractères
Langage d’Interrogation de Données
RQ7 Donner les noms des facultés qui n’ont pas téléphone:
code_l nom ville téléphone
Lorsqu'un champ n'est
C876 ISETBJ BEJA 78 67 890 pas renseigné, le SGBD
lui attribue une valeur
L121 FST TUNIS
Base de Données Commandes_lycee

spéciale que l'on note


L124 ENIT TUNIS NULL.
L136 ISI ARIANA 71 236 543
L156 IBNCHARAF TUNIS
L306 IPENA NABEUL 73 233 760
L320 ENISO SOUSSE 73 650 650
L326 FSS SOUSSE 73 698 432
L330 FSM MONASTIR 73 230 129
L415 ENIS SFAX 74 650 399

nom
SELECT nom FST
FROM faculte ENIT
WHERE tel Is Null; IBNCHARAF
Langage d’Interrogation de Données
Utilisation des Alias: permettent de renommer des colonnes ou des tables.

Pour les colonnes, l’alias correspond aux titres affichées dans le résultat
de la requête.
Base de Données Commandes_lycee

Il est souvent utilisé lorsqu’il s’agit :


• de comparer les valeurs d’un champ du même table
• d’un champ calculés (expression)
• d’un champ de jointure de plusieurs tables

SELECT col1 AS alias1, col2 AS alias2, …


FROM table1 aliast1, table2 aliast2… ;
Langage d’Interrogation de Données
RQ8 les titres des livres qui ont un stocke supérieur à celui du livre
BASE DE DONNEES. V2
V1
Base de Données Commandes_lycee

isbn titre pu stock isbn titre pu stock

233-371 ALGORITHMES 3.96 100 233-371 ALGORITHMES 3.96 100

233-688
isbn ABCtitre
DU BD 2.20
pu 234
stock 233-688 ABC BD 2.20 234

377-655
233-688 BUREATIQUE
ABC BD ET EXERCICES 2.592.20 10 234 377-655 BUREATIQUE ET EXERCICES 2.59 10

978-234 BASES
560-677 ORACLE DATA BASES
DE DONNEES 5.507.15 185 350 560-677 BASES DE DONNEES
DONNEES 5.50
5.50 185

978-234 ORACLE DATA BASES 7.15 350 978-234 ORACLE DATA BASES 7.15 350

SELECT V1.titre
Auto jointure titre
FROM livre AS V1, livre AS V2
ORACLE DATA BASES
WHERE (V1.stock > V2.stock)
ABC BD
AND(V2.titre ="BASES DE DONNEES")
Langage d’Interrogation de Données
Les Expressions:

Peuvent être reliés par des opérateurs arithmétiques (+, -, *, /).


Les expressions peuvent figurer :
Base de Données Commandes_lycee

En tant que :

Colonne résultat d’un ordre SELECT.

Dans une clause WHERE.

Dans une clause ORDER BY.


Langage d’Interrogation de Données
RQ8 Donner la valeur de chaque livre en stock

isbn titre pu stock


Base de Données Commandes_lycee

233-371 ALGORITHMES 3,60 100

233-688 ABC BD 2,00 234

377-655 BUREATIQUE ET EXERCICES 2,35 0

560-677 BASES DE DONNEES 4,90 185

978-234 ORACLE DATA BASES 3,50 350

isbn Valeur
233-371 360,00

SELECT isbn, (pu*stock) AS valeur 233-688 468,00

FROM livre; 377-655 0,00

560-677 906,50

978-234 1 225,00
Langage d’Interrogation de Données
Les Fonction:
Des fonctions peuvent être utilisées sur chaque valeurs
sélectionner d’un nuplet:
Base de Données Commandes_lycee

Fonctions de Dates: CURRENT DATE, DAY, MONTH, YEAR

Fonctions relatives aux caractères: LEFT, RIGHT, SUBSTR, …

Des fonction peuvent manipuler un groupement de


nuplets:

Fonctions Mathématiques et statistiques: COUNT, SUM, MIN, MAX, AVG, …


Langage d’Interrogation de Données
RQ9 donner la moyenne des prix unitaires des livres:

SELECT AvG(pu) Expr1


Base de Données Commandes_lycee

FROM livre; 3,27

RQ10 donner la Liste des commande du mois de janvier 2018

SELECT ncmd
FROM commande ncmd

WHERE ((Month(date_cmd)=1) AND C124

(Year(date_cmd)=2018)); C319
C356
Langage d’Interrogation de Données
C. Jointure
Il s’agit ici de sélectionner les données provenant de plusieurs tables
ayant un ou plusieurs colonne communs.
Base de Données Commandes_lycee

Cette jointure sera assurée grâce aux conditions spécifiées dans : WHERE
Syntaxe :

SELECT <table1.colonne1, table2.colonne2…>


FROM < table1 , table2… >
WHERE Nom_Table1.colonnej = Nom_Table2.colonnej AND …
AND <condition> ;
Langage d’Interrogation de Données
RQ11 Donner les titres des livres de la commande numéro C123.
qt stoc
ncmd ligne_commandes.isbn livre.isbn titre pu
e k
C123 978-234 24 978-234 ORACLE DATA BASES 7.15 350
C123 978-234 24 978-234 ORACLE DATA BASES 7.15 350
C121 978-234 3 978-234 ORACLE DATA BASES 7.15 350

C156 978-234 10 978-234 ORACLE DATA BASES 7.15 350


Base de Données Commandes_lycee

C256 978-234 12 978-234 ORACLE DATA BASES 7.15 350


C123 233-371 10 233-371 ALGORITHMES 3.96 100
C123 233-371 10 233-371 ALGORITHMES 3.96 100
commande

C124 233-371 3 233-371 ALGORITHMES 3.96 100

C125 233-371 30 233-371 ALGORITHMES 3.96 100

C126 233-371 23 233-371 ALGORITHMES 3.96 100

livre
C133 233-371 15 233-371 ALGORITHMES 3.96 100

C143 233-371 11 233-371 ALGORITHMES 3.96 100

C310 233-371 7 233-371 ALGORITHMES 3.96 100

C319 233-371 23 233-371 ALGORITHMES 3.96 100

C442 233-371 30 233-371 ALGORITHMES 3.96 100

C214 233-371 3 233-371 ALGORITHMES 3.96 100

C356 233-371 7 233-371 ALGORITHMES 3.96 100

C143 560-677 2 560-677 BASES DE DONNEES 5.50 185

C125 560-677 10 560-677 BASES DE DONNEES 5.50 185

C133 560-677 3 560-677 BASES DE DONNEES 5.50 185


C123 560-677 14 560-677 BASES DE DONNEES 5.50 185
C123 560-677 14 560-677 BASES DE DONNEES 5.50 185
C215 560-677 30 560-677 BASES DE DONNEES 5.50 185

C256 560-677 10 560-677 BASES DE DONNEES 5.50 185

C310 233-688 20 233-688 ABC BD 2.20 234

C319 233-688 5 233-688 ABC BD 2.20 234

Résultat de la jointure commande livre


Langage d’Interrogation de Données
RQ11 Donner les titres des livres de la commande numéro C123.
Base de Données Commandes_lycee

SELECT titre
FROM livre,ligne_commandes
WHERE livre.isbn = ligne_commandes.isbn
livre.isbn = ligne_commandes.isbn
And ncmd ="C123";

Titre
ORACLE DATA BASES
ALGORITHMES
BASES DE DONNEES
Langage d’Interrogation de Données
D. Groupement
Base de Données Commandes_lycee

Il est possible de grouper des lignes de données ayant une valeur commune à
l’aide de la clause GROUP BY et des fonctions de groupe ( SUM, COUNT,… ).

Syntaxe :

SELECT colonne1, colonne2,…,


FROM Nom_Table1, Nom_Table2,…
WHERE Liste_Condition
GROUP BY Liste_Groupe
Langage d’Interrogation de Données
RQ13 Donner pour chaque numéro livre la quantité totale commandée:
Base de Données Commandes_lycee

ncmd isbn qte

C123 233-371
233-371 10
10
C124 233-371
233-371 3

C125 233-371
233-371 30
30 Somme
C126 233-371
233-371 23
23
Quantite_tot
isbn
C133 233-371
233-371 15
15 al

C143 233-371
233-371 11
11 233-371
isbn 162
Quantite_total
C310 233-371
233-371 7
233-371 162
C319 233-371
233-371 23
23
C442 233-371
233-371 30
30
233-688 45
C214 233-371
233-371 3
3
isbn Quantite_total
C356 233-371
233-371 7
C310 233-688 20
233-371 162

C319 233-688 5
Somme
233-688 45
C121 233-688 7

C214 233-688 10

C356 233-688 3

SELECT isbn, SUM (qte) as Quantite_total


FROM Ligne_commandes
GROUP BY isbn;
Langage d’Interrogation de Données
RQ14 Donner le nombre des livres par commande :
Base de Données Commandes_lycee

ncmd isbn qte

C121 233-688 7
C121 377-655 12
C121 978-234 3 ncmd Nblivre
C123 233-371 10 C121 3

C123 560-677 14 C123 3


C125 2
C123 978-234 24
C214 3
C125 233-371 30
C256 2
C125 560-677 10
C214 233-371 3
C214 233-688 10
C214 377-655 1
C256 560-677 10
C256 978-234 12

SELECT ncmd, COUNT (isbn) Nblivre


FROM Ligne_commandes
GROUP BY ncmd;
Langage d’Interrogation de Données
RQ15 Donner le total des montants par commande :
Base de Données Commandes_lycee

ncmd isbn qte pu


ncmd isbn qte pu Somme
C121 233-688 7 2.20
C121 233-688 7 2.20 7 * 2.20 ncmd Total_cmd
C121 978-234 3 7.15
C121 978-234 3 7.15 3*715 C121 67.810
C121 377-655 12 2.59 C123 288.200
C121 377-655 12 2.59 12*2.59
groupement
C123 978-234 24 7.15 C125 173.800
C123 560-677 14 5.50 C126 91.080

C123 233-371 10 3.96 C133 75.900

C125 560-677 10 5.50 C143 54.560

C125 233-371 30 3.96 C156 71.500

C214 33.880
C214 233-371 3 3.96
C215 165.000
C214 233-688 10 2.20
C256 140.800
C214 377-655 1 2.59
C215 560-677 30 5.50
SELECTC256 ligne_commandes.ncmd,
978-234 12 7.15

Sum(livre.pu*ligne_commandes.qte)
C256 560-677 10 5.50 AS
total_cmd
Ligne_commandes Livre
FROM livre ,ligne_commandes
WHERE livre.isbn = ligne_commandes.isbn
GROUP BY ligne_commandes.ncmd;
Langage d’Interrogation de Données
Donner la liste des livres en pénurie et la quantité à acheter.
SELECT L.isbn, stock, ( sum( qte ) - stock) AS
acheter
Base de Données Commandes_lycee

FROM Lignes_commandes L, livre V


WHERE L.isbn = V.isbn
GROUP BY L.isbn
Quantité total commandé par livre
HAVING
livre ( sum( qte ) > stock);
isbn totqte
isbn titre pu stock
233-371 162
233-371 ALGORITHME 3.960 100

233-688 ABC BD 2.200 234 233-688 45

377-655 13
377-655 BUREAUTIQUE 2.580 10

560-677 BASES DE DONNEES 5.500 155 560-677 69

978-234 ORACLE DATE BASES 7.150 350


978-234 49

isbn stock acheter

233-371 100 62

377-655 10 3

La clause "HAVING " permet de sélectionner les groupes qui satisfont une condition.
Attention, contrairement à la clause "WHERE ", la condition ne porte pas sur un tuple
mais sur l'ensemble des tuples d'un groupe.
Langage d’Interrogation de Données
E. Tri
Base de Données Commandes_lycee

Les lignes constituant le résultat d’un SELECT sont obtenues dans un


ordre quelconque.
La clause ORDER BY précise l’ordre dans lequel la liste des lignes
sélectionnées sera donnée.
Syntaxe :

SELECT coln1, coln2,…, Fonction_Groupe


FROM Nom_Table1, Nom_Table2,…
WHERE Liste_Condition
ORDER BY <liste des colonnes de tri> [ASC|DESC];
Langage d’Interrogation de Données
RQ16 Afficher les lycées triés sur ville décroissant et nom croissant :
Base de Données Commandes_lycee

SELECT *
FROM faculte
ORDER BY ville ASC , Nom DESC

code_l Nom ville tel

L136 ISI ARIANA 71 641 332

C876 ISET BEJA BEJA 78 654123

L330 FSM MONASTI 73 442 221


R

L306 IPENA NABEUL NULL

L415 ENIS SFAX 74 677213

L320 ENISO SOUSSE 73 432 677

L326 FSS SOUSSE NULL

L156 IBN CHARAF TUNIS (216) 71 850 310

L121 FST TUNIS NULL

L124 ENIT TUNIS NULL


Langage d’Interrogation de Données
Donner le nombre de livres et la quantité totale par commande suivant
l’ordre décroissant du nombre de livres et l’ordre croissant de la quantité
totale:
Base de Données Commandes_lycee

SELECT ncmd, Count(ligne_commandes.isbn) as


NBlivre, Sum(ligne_commandes.qte) as SomQte
FROM ligne_commandes
GROUP BY ncmd
ORDER BY Count(ligne_commandes.isbn) DESC ,
Sum(ligne_commandes.qte) ASC;