Académique Documents
Professionnel Documents
Culture Documents
2
Partie I :
Définition BD/SGBD/SQL
Base de Données (BD)
Définition de Base de Données (BD)
Est un ensemble de données structurées modélisant un univers
précis et accessible à plusieurs utilisateurs en même temps.
4
BD : Le modèle relationnel
Introduction
Il consiste à percevoir l'ensemble de données comme des tableaux
où chaque table représente une relation, au sens mathématique
d'ensemble. L'ensemble des valeurs des tableaux représente le
contenu de la base de données. Ce contenu peut être modifié en
ajoutant des lignes, en supprimant des lignes ou en modifiant le
contenu des lignes.
Définitions
Modèle : une représentation du monde réel. Cette représentation
doit être simple et fiable.
Domaine : un ensemble de valeurs caractérisées par un nom.
5
BD : Le modèle relationnel
Degré d’une relation : c’est le nombre de colonne (domaines)
dans une relation
Ex. Degré de PRODUIT=3
Cardinalité d’une relation : c’est le nombre de lignes dans une
relation
Ex. Cardinalité de PRODUIT = 2
Enregistrement P1 D1 C1
P2 D2 C2
Domaine
6
BD : Le modèle relationnel
Caractéristiques des relations
Attribut : nom d'une colonne d'une relation.
Ex.
NUM_PDT
DES_PDT attributs de la relation PRODUIT.
COUL_PDT
7
BD : Le modèle relationnel
Clé primaire : un attribut (ou plusieurs) permettant d'identifier
d'une façon unique un tuple d'une relation. Cet attribut doit avoir
toutes ses valeurs différentes dans la relation R.
Ex. : PRODUIT (NUM_PDT, DES_PDT, COUL_PDT)
ETUDIANT (NUM_ET, NOM_ET, DATNAIS_ET, ADR_ET)
8
BD : Le modèle relationnel
Contraintes d'intégrité
Une Contrainte d'Intégrité (CI) est une règle qui doit être vérifiée au
moment de la manipulation de données afin que le résultat considéré
soit correct et cohérent.
A tout instant, on doit pouvoir ajouter, modifier ou supprimer une
contrainte d'intégrité et le SGBD doit être capable de vérifier que la
base est toujours cohérente vis à vis du changement apporté à son
environnement; dans le cas contraire, il doit rejeter l’intervention.
9
BD : Le modèle relationnel
Il existe plusieurs types de contraintes d'intégrité :
Unicité de la clé d'une relation
CI individuelles :
Ex. : 200 SALAIRE 10000
COULEUR {bleu, rouge, jaune}
Objectifs
La définition et la manipulation des données,
11
Système de Gestion de Base de Données
Exemples
Oracle : SGBD relationnel (et objet-relationnel dans ses
dernières versions) à très connu pour les applications
professionnelles.
12
Oracle en bref
Oracle est un SGBD édité par la société Oracle Corporation
(http://www.oracle.com).
13
Oracle en bref
Une couche SQL permettant d’interpréter les commandes SQL.
Une couche PL/SQL permettant d’interpréter les commandes
PL/SQL.
14
SQL : Structured Query Language
SQL est un langage pour les BDR. Créé en 1970 par IBM.
Principales caractéristiques de SQL :
Normalisation : SQL implémente le modèle relationnel.
Standard : Du fait de cette normalisation, la plupart des éditeurs
de SGBDR intègrent SQL à leurs produits (Oracle, Informix,
Sybase, Ingres, MS SQL Server, DB2, etc.). Ainsi, les données,
requêtes et applications sont assez facilement portables d’une
base à une autre.
Non procédural : SQL est un langage de requêtes qui permet à
l’utilisateur de demander un résultat sans se préoccuper des
moyens techniques pour trouver ce résultat. C’est l’optimiseur du
SGBD (composant du moteur) qui se charge de cette tâche.
Universel : SQL peut être utilisé à tous les niveaux dans la
gestion d’une BDR.
15
SQL : Structured Query Language
16
Partie II :
Définition de Données dans SQL
Langage de Définition de Données : LDD
18
1. Création de tables
Syntaxe de Création des tables
Celle-ci consiste à définir son nom, les noms et types des colonnes qui la
composent et les contraintes nécessaires.
Syntaxe :
19
1. Création de tables
Définition des colonnes :
La taille indique la valeur maximale de la longueur du champ.
Les types de données les plus utilisés sont :
NUMBER : nombre entier ou décimal de 40 positions maximum.
NUMBER(n) ou NUMBER(n,m)
Exemple :
NUMBER(2) : la valeur maximale du champ est 99
NUMBER(5,3) : la valeur maximale du champ est 99.999
20
1. Création de tables
21
1. Création de tables
Exemple : Créer la table Ordinateur ayant le schéma suivant :
Ordinateur (Ref, Marque, Qte_stk, Couleur, Date_Entree, Prix), avec
Ref : de type chaine de caractères de taille 25,
Marque : de type chaine de caractères de taille 15,
Qte_stk : de type numérique de taille 3,
Couleur : de type caractère sur une position,
Date_Entree : de type date prenant par défaut la date courante,
Prix : de type numérique sur sept positions dont trois chiffres après la
virgule.
22
1. Création de tables
23
1. Création de tables : les contraintes
Une contrainte d'intégrité est une règle
Qui définit la cohérence d'une donnée ou d'un ensemble de
données de la base de données.
Vérifiée automatiquement par le SGBD lors de la manipulation
de données.
Types de CI Oracle :
NULL / NOT NULL : seulement niveau colonne
24
1. Création de tables : les contraintes
Non nullité des valeurs d'un attribut : L'utilisateur est obligé de
saisir la valeur de l'attribut. La commande est : NOT NULL
Exemple :
On suppose que la marque d’un ordinateur doit être renseignée.
CREATE TABLE Ordinateur
(Ref varchar2(25),
Marque varchar2(15) Not null ,
Qte_stk number(3),
Couleur char,
Date_entree date default sysdate,
Prix number(7,3));
25
1. Création de tables : les contraintes
Unicité de la valeur d'un attribut ou d'un groupe d'attributs : la
valeur doit être unique. La commande est : UNIQUE. Elle peut être
définie comme contrainte de table ou comme contrainte de colonne.
Unique comme contrainte de table selon la syntaxe :
[CONSTRAINT nom_contrainte] UNIQUE (att1, …, attn) ;
Unique comme contrainte de colonne :
[CONSTRAINT nom_contrainte] UNIQUE ;
Exemple
On suppose que deux ordinateurs ne peuvent pas avoir la même
référence.
26
1. Création de tables : les contraintes
Unique comme contrainte de table :
27
1. Création de tables : les contraintes
Unique comme contrainte de colonne:
28
1. Création de tables : les contraintes
Clé primaire (un attribut ou un groupe) : indique que l'attribut est
une clé primaire. Elle peut être définie comme contrainte de table
ou comme contrainte de colonne.
Clé primaire comme contrainte de table selon la syntaxe :
[CONSTRAINT nom_contrainte] PRIMARY KEY(att1, …, attn) ;
Clé primaire comme contrainte de colonne :
[CONSTRAINT nom_contrainte] PRIMARY KEY;
Exemple
Déclarer la colonne Ref comme clé primaire de la table ordinateur.
29
1. Création de tables : les contraintes
Clé primaire comme contrainte de table :
30
1. Création de tables : les contraintes
Clé primaire comme contrainte de colonne :
31
1. Création de tables : les contraintes
Exemple : Déclarer la contrainte clé primaire de la table
LigneCommande suivante : LigneCommande (NumCde, Ref,
QteCde)
Dans le cas de clé primaire multiple, la contrainte clé primaire ne peut être
créée que sous forme de contrainte de table.
32
1. Création de tables : les contraintes
Clé étrangère (intégrité référentielle) : lorsque la clé primaire
figure dans une autre table en tant qu'un attribut non clé. La clé
étrangère peut être définie comme contrainte de table ou comme
contrainte de colonne.
Clé étrangère comme contrainte de table selon la syntaxe :
[CONSTRAINT nom_contrainte] FOREIGN KEY(nom_att)
references nom_table(nom_att);
Clé étrangère comme contrainte de colonne :
[CONSTRAINT nom_contrainte] references
nom_table(nom_att);
33
1. Création de tables : les contraintes
On considère le schéma suivant :
MAGASIN(NumMag, Adresse)
Ordinateur (Ref, Marque, Qte_stk, Couleur, Date_Entree, Prix, mag#)
34
1. Création de tables : les contraintes
Clé étrangère comme contrainte de table :
35
1. Création de tables : les contraintes
Clé étrangère comme contrainte de colonne :
36
1. Création de tables : les contraintes
Contrainte de valeur avec la clause CHECK : Permet de limiter les
valeurs possibles pour une colonne en vérifiant une certaine
condition. Le contrôle se fera lors des insertions des données.
[Constraint nom_contrainte] CHECK (condition)
37
1. Création de tables : les contraintes
38
1. Création de tables : les contraintes
CREATE TABLE Ordinateur
(Ref varchar2(25) constraint PK_ord primary key,
Marque varchar2(15) not null ,
Qte_stk number(3),
Couleur char,
Date_entree date default sysdate,
Prix number(7,3)
Constraint Ck1_ord CHECK (prix >= 0),
Constraint Ck2_ord CHECK (Qte_stk between 0 and
999),
Constraint Ck3_ord CHECK (Couleur IN (‘N’, ‘G’,
‘B’)));
39
1. Création de tables : Exemple
Pilote (NPil, Nom, NbHvol, #Compa)
Compagnie(NComp, NomComp, AdrComp, Ville )
Créer les deux tables avec les contraintes nécessaires.
Le NbHvol doit être entre 0 et 2000.
40
1. Création de tables : Correction
CREATE Table Compagnie
(NComp char(4),
NomComp varchar2(15),
AdrComp varchar2(20),
Ville varchar2(15),
Constraint pk_Compagnie PRIMARY KEY (NComp));
41
1. Création de tables : Correction
CREATE Table Pilote
(NPil CHAR(6),
Nom CHAR(15) NOT NULL,
NbHvol NUMBER(7,2),
Compa CHAR (4),
Constraint pk_Pilote PRIMARY KEY (NPil),
Constraint ck_NbHvol CHECK (NbHvol BETWEEN 0 And 2000),
Constraint un_nom UNIQUE (nom),
Constraint FK_Pil_Compa FOREIGN KEY (Compa) REFERENCES
Compagnie (NComp));
42
2. Modification de la structure de table
Les trois possibilités de modification de la structure de table sous
ORACLE permettent soit d'ajouter, modifier ou supprimer des
colonnes, soit d'ajouter ou supprimer des contraintes.
1ère forme : Ajout de nouvelles colonnes à une table
Syntaxe :
ALTER TABLE nom_table
ADD (col1 type [(taille)] [null / not null] ,
col2 type [(taille)] [null / not null] ,
...
coln type [(taille)] [null / not null] ) ;
Exemple :
Supposons qu'on veut ajouter une colonne offre à la table ordinateur:
ALTER TABLE ordinateur
ADD offre varchar2(3) ;
43
2. Modification de la structure de table
2ère forme : Modification de colonnes
Syntaxe :
ALTER TABLE nom_table
MODIFY (col1 type [(taille)] [null / not null] ,
col2 type [(taille)] [null / not null] ,
...
coln type [(taille)] [null / not null] ) ;
Exemple :
Supposons qu'on veut changer le type de la colonne offre de
varchar2(3) en varchar2(5) :
ALTER TABLE ordinateur
MODIFY offre varchar2(5);
44
2. Modification de la structure de table
3ème forme : Suppression de colonnes existantes
Syntaxe :
ALTER TABLE nom_table
DROP COLUMN < nom_colonne >
Exemple :
Supprimer la colonne offre de la table ordinateur :
ALTER TABLR ordinateur
DROP COLUMN offre
45
2. Modification de la structure de table
4ème forme : Ajout d'une contrainte
Syntaxe :
ALTER TABLE nom_table
ADD Constraint Def_de_contrainte ;
Exemple :
Ajouter à la table Ordinateur la contrainte suivante : la couleur doit
être en majuscule.
ALTER TABLE ordinateur
ADD constraint ck4_ord check(couleur=upper(couleur))
46
2. Modification de la structure de table
Exemple :
Supprimer la contrainte spécifiant les couleurs possibles pour les
ordinateurs
ALTER TABLE ordinateur DROP CONSTRAINT Ck3_ord ;
47
2. Modification de la structure de table
Remarque :
On peut effacer une clé primaire sans indiquer le nom de la
contrainte. La commande est :
ALTER TABLE nom_table DROP PRIMARY KEY [CASCADE] ;
L'option cascade est ajoutée pour pouvoir supprimer une clé
primaire référencée.
Exemple :
Supprimer la contrainte clé primaire de la table magasin
ALTER TABLE magasin DROP PRIMARY KEY CASCADE ;
48
2. Modification de la structure de table
Remarque :
Pour retrouver les différentes contraintes avec leur propriétés, on
peut utiliser la commande suivante :
49
3. Suppression de tables
Syntaxe :
DROP TABLE nom_table ;
Exemple :
Supposons qu'on veut supprimer la table Magasin :
DROP TABLE magasin ;
Remarque :
Contrainte de suppression de table : permet de supprimer toutes les
contraintes d'intégrité référentielles qui se reflètent aux clés uniques
ou primaires de la table à supprimer. La commande est :
DROP TABLE nom_table CASCADE CONSTRAINTS;
50
4. Renommage et
création de synonymes de tables
Pour changer le nom d'une table existante la commande est :
Syntaxe :
RENAME ancien_nom TO nouveau_nom ;
Il est également possible de donner à une même table plusieurs noms
différents appelés synonymes.
Syntaxe :
CREATE SYNONYM nom_synonyme FOR nom_table ;
Pour supprimer un synonyme donné, on utilise la commande :
Syntaxe :
DROP SYNONYM nom_synonym ;
Remarque :
La suppression d'une table implique la suppression des synonymes
correspondants.
51
Partie III :
Manipulation des données dans
SQL
Langage de manipulation de données (LMD)
Langage de Manipulation de Données : LMD
53
1. Insertion de données
54
1.1. Insertion par ligne
Syntaxe :
INSERT INTO nom_table [(les champs de la table)] VALUES
(liste des valeurs) ;
Les valeurs des colonnes de type caractère, chaîne de caractère et
date doivent apparaître entre deux cotes ( ' ' ).
Remarque :
Il est possible d’insérer un enregistrement en connaissant seulement
les valeurs de quelques champs. Pour cela , il faut
Soit indiquer la liste des champs à insérer et leurs valeurs
respectives
Soit mettre NULL dans la liste de valeurs pour les champs vides.
Les champs ayant été créés avec la contrainte Not Null devront,
obligatoirement, avoir des valeurs.
55
1.1. Insertion par ligne
Soit la table Ordinateur (Ref, Marque, Couleur, Qte_stk, Prix)
56
1.1. Insertion par ligne
Dans le cas précédent toutes les colonnes sont à saisir, on peut donc
ne pas spécifier les noms des colonnes après le nom de la table. La
commande devient :
57
1.1. Insertion par ligne
58
1.2. Insertion à travers la copie des
valeurs des colonnes d'une autre table
Syntaxe :
INSERT INTO nom_table [(les champs de la table)] Requête;
Exemple :
Soit la table Ordinateur_Dell (Ref, Couleur, Qte_stk, Prix) contenant
seulement les ordinateurs Dell.
Remplir cette table à partir de la table Ordinateur :
59
2. Modification de données
L'opération de modification consiste à mettre à jour les colonnes
d'une table par de nouvelles valeurs.
Syntaxe :
UPDATE nom_table
SET col1 = val1 , … , coln = valn
[WHERE condition] ;
Remarques :
Il n'est pas possible de mettre à jour plus qu'une table à la fois.
La modification des données n’est pas autorisée que si les
contraintes sont toujours valides.
Les valeurs peuvent être des constantes, des expressions, des
résultats de sous-requêtes ou NULL (pour supprimer la valeur
initiale du champ).
Si la clause where n’apparaît pas dans la commande, il s’agit de
mettre à jour tous les enregistrements de la table.
60
2. Modification de données
Affecter la couleur 'R' à l’ordinateur "Inspiron 3521-1007U"
UPDATE ordinateur
SET couleur = 'R'
WHERE ref = 'Inspiron 3521-1007U';
61
3. Suppression de données
La commande DELETE permet de supprimer un ou plusieurs
enregistrements d’une table tout en gardant la base cohérente. Les
enregistrements à supprimer sont spécifiés par la condition de la
clause WHERE.
Syntaxe :
DELETE FROM nom_table
[WHERE condition];
Exemple :
Supprimer tous les ordinateurs de couleurs Blanche
DELETE FROM ordinateur
Where Couleur = 'B';
Supprimer toutes les lignes de la table ordinateur
DELETE FROM ordinateur;
62
Partie IV :
Consultation de Données dans SQL
BD exemple :
Table Ordinateur
REF Marque Pro QteStk Couleur Date_entree Offre Mag# Prix
Table Magasin
NumMag adresse
Table Commande
NumCommande Date Cde
Table LigneCommande
64
1. Introduction
La commande utilisée pour extraire des données à partir de la base est
composée des clauses SELECT-FROM-WHERE (SFW) :
SELECT : permet de définir la liste des colonnes que l'on peut obtenir.
FROM : indique les noms des tables nécessaires pour obtenir le résultat
souhaité.
WHERE : définit la condition que doit vérifier un n-uplet donné pour qu'il
fasse partie du résultat.
Syntaxe :
SELECT col1, col2, … ,coln
FROM nom_table
[WHERE condition];
Remarque
Si on souhaite avoir toutes les colonnes de la table, on mettra après SELECT *.
Si on souhaite avoir toutes les lignes de la table, on ne met pas la clause WHERE.
65
Exemples
Afficher tout le contenu de la table ordinateur
SELECT *
FROM Ordinateur;
66
2. Tri des résultats
Pour obtenir un résultat trié, il suffit d'ajouter à la requête SQL la
clause :
ORDER BY expression [asc / desc]
Exemples :
Donner la liste des ordinateurs ordonnés par ordre croissant de leurs prix.
SELECT * FROM Ordinateur
ORDER BY prix;
67
3. Opérateurs de comparaison
La condition est composée généralement de trois termes :
un nom de colonne,
un opérateur de comparaison,
et une constante, une colonne, une liste de valeurs, une expression ou une
requête.
En plus des opérateurs classiques de comparaison ( = , <> , < , > , >= , <= )
ORACLE dispose d'un certain nombre d'opérateurs spécifiques dont
principalement :
68
3. Opérateurs de comparaison
[NOT] LIKE chaîne générique : permet de tester si le contenu d'une
colonne ressemble à une chaîne de caractères obtenue à partir de la
chaîne générique. Cette dernière peut contenir l'un des caractères
suivants :
% : remplace une autre chaîne de caractères qui peut être même une
chaîne vide.
_ : remplace un seul caractère.
69
Exemples
Afficher ordinateurs sans offre
SELECT * FROM Ordinateur
WHERE offre is NULL;
70
Exemples
Afficher les ordinateurs dont la marque commence par 'T'
SELECT * FROM Ordinateurs
WHERE marque LIKE 'T%';
Afficher les ordinateurs dont la marque commence par 'T' ou par 'D'
SELECT * FROM Ordinateurs
WHERE marque LIKE 'T%' or marque LIKE 'D%';
71
4. La jointure simple
Elle permet de combiner des enregistrements issues à partir de deux ou
plusieurs tables en vue de retrouver des données associées.
Pour effectuer une jointure, il faut spécifier :
Les noms des tables, dans la clause FROM, séparés par des virgules.
La condition de jointure dans la clause WHERE.
Les noms de colonnes doivent être préfixé par les noms de tables pour
éviter toute ambiguïté.
Pour réaliser la condition de jointure, les deux tables doivent avoir deux
colonnes comparables .
La forme générale d'une requête de jointure est :
SELECT col1 , col2 , …. , coln
FROM table1 ,… . , tablen
WHERE condition ;
72
Exemples
Afficher les références des ordinateurs ainsi que leur adresse de stockage
SELECT ref, adresse
FROM Ordinateur, Magasin
WHERE mag = NumMag;
73
Exemples
Afficher date et les marques vendues dans la commande C1320
SELECT Marque, datecde
FROM Ordinateur o, Commande C, LigneCommande LC
WHERE C.numcommande = 'C1320'
And C.numcommande = LC.numcommande
And LC.ref = O.ref
74
4.1. L'autojointure
Elle consiste à faire une jointure d'une table avec elle-même dans le but de
construire un enregistrement contenant des attributs en provenance de deux
lignes, inter-reliées, cherchées dans la même table.
Exemple
Trouver la marque et le prix des ordinateurs I3 dont le prix est supérieur à
celui des ordinateurs I3 lenovo
Solution avec synonyme
CREATE SYNONYM ord FOR ordinateur;
75
4.1. L'autojointure
Solution avec ALIAS
SELECT O1.marque, O1.prix
FROM Ordinateur O1, Ordinateur O2
WHERE O2.marque='lenovo'
and O2.pro='I3' and O1.pro='I3'
and O1.prix > O2.prix;
76
5. Les requêtes imbriquées
77
5.1. Les requêtes imbriquées simples
Syntaxe
SELECT col1, col2, …, coln
FROM table-name
WHERE (col1, col2, …, coln ) opérateur ( SELECT col1, col2, …, coln
FROM table-name
WHERE . . . . . ) ;
78
Exemples
Afficher les adresses des magasins contenant des ordinateurs Toshiba
SELECT adresse
FROM Magasin
WHERE nummag in (SELECT mag
FROM Ordinateur
WHERE marque = 'Toshiba');
Afficher les dates pour lesquelles la marque Lenovo a été vendue
SELECT datecde
FROM Commande
WHERE numcommande in (SELECT numcommande
FROM LigneCommande
WHERE ref in (SELECT ref
FROM Ordinateur
WHERE marque='lenovo')
79
Exemples
Trouver la marque et le prix des ordinateurs I3 dont le prix est supérieur à
celui des ordinateurs I3 lenovo
80
Exemples
Afficher références des ordinateurs de même couleur que l’ordinateur
G580AI3-N
SELECT ref
FROM Ordinateur
Where couleur = (SELECT couleur
FROM Ordinateur
WHERE ref = 'G580AI3-N');
Afficher références et marques des ordinateurs de même couleur qu’un
ordinateur Dell
SELECT ref, marque
FROM Ordinateur
Where couleur IN (SELECT couleur
FROM Ordinateur
WHERE marque = 'Dell');
81
REQUETE
INTERNE
82
6. Les opérateurs ensemblistes
Oracle offre trois opérateurs ensemblistes pour réaliser des opérations
d’union, d’intersection et de différence.
Syntaxe
SELECT ......
FROM ......
[WHERE . . . . . . ]
{ UNION | INTERSECT | MINUS }
SELECT .... ..
FROM ..... .
[WHERE . . . . . .] ;
83
6. Les opérateurs ensemblistes
Union : Elle permet d'avoir les résultats de la première requête suivis de
ceux de la deuxième requête.
T1 union T2
84
6. Les opérateurs ensemblistes
Intersect : Elle permet d'avoir les lignes communes aux résultats des deux
requêtes.
T1
T1 Intersect T2
T2
85
6. Les opérateurs ensemblistes
Minus : Elle permet d'avoir les lignes qui apparaissent dans la première
requête et qui n'apparaissent pas dans la seconde.
T1 minus T2 T2
86
Exemple
Afficher les numéros des magasins ne contenant aucun ordinateurs
SELECT nummag
FROM Magasin
MINUS
SELECT mag
FROM Ordinateur
Remarque : on peut utiliser les blocs imbriqués
SELECT nummag
FROM Magasin
WHERE nummag Not in (SELECT mag
!= all FROM Ordinateur
87
7. Les fonctions de groupe
colonne.
MAX ([distinct] col) : Valeur maximale non nulle de la colonne.
colonne.
88
7. Les fonctions de groupe
89
Exemples
Donner le nombre total d’ordinateurs
SELECT Count(*) "Nombre"
FROM Ordinateur;
Afficher le nombre total d’ordinateurs I3
SELECT Count(*) "Nombre"
FROM Ordinateur
WHERE pro = 'I3';
Afficher la quantité moyenne en stock des ordinateurs de couleur Rouge
SELECT avg(qtestk) "quantité"
FROM ordinateur
Where Couleur = 'R';
Afficher les prix minimums et maximums des ordinateurs I3
SELECT max(prix) "maximum",min(prix) "minimum"
FROM ordinateur
WHERE pro = 'I3';
90
Exemples
Donner le nombre d’ordinateurs avec offre
SELECT Count(*) "Nombre"
FROM Ordinateur
WHERE offre is not null;
Ou bien
SELECT Count(offre) "Nombre"
FROM Ordinateur;
91
7. Les fonctions de groupe :
classification de résultat
Il est possible de regrouper (classifier, diviser) les données d’une table en
groupes.
Syntaxe
SELECT Permet de définir le critère de classement
FROM
WHERE
GROUP BY expression
HAVING condition
92
Exemples
Afficher la quantité en stock des ordinateurs selon le type du processeur
SELECT pro, sum(Qtestk) "Qte totale"
FROM Ordinateur
GROUP BY pro;
Afficher les prix min et max des ordinateurs selon le type du processeur
SELECT pro, min(prix)"P MIN", max(prix)"P MAX"
FROM Ordinateur
GROUP BY pro;
Afficher la quantité en stock des ordinateurs par couleur et type du processeur
SELECT pro, couleur, sum(Qtestk) "Qte totale"
FROM Ordinateur
GROUP BY pro, couleur;
Remarque : avec la clause GROUP BY, on ne peut mettre dans la clause
SELECT qu’une caractéristique du groupe : critère de groupement et/ou
fonction de groupe
93
7. Les fonctions de groupe :
classification de résultat
Pour définir une condition portant sur un groupe et ayant une fonction de
groupe comme prédicat, il faut utiliser la clause HAVING.
94
7. Les fonctions de groupe :
classification de résultat
Afficher adresses des magasins ayant au moins deux types d’ordinateurs I3
SELECT adresse
FROM Magasin, Ordinateur
WHERE mag = nummag
and pro = 'I3'
GROUP BY adresse
HAVING count(*)>= 2 ;
Afficher marques ayant un prix moyen < au prix moyen total
SELECT marque, avg(prix)
FROM Ordinateur
GROUP BY marque
HAVING avg(prix)<(SELECT avg(prix)
FROM Ordinateur);
95
8. Les fonctions de chaînes de caractères
96
Exemples
Afficher processeur et qtestk des ordinateurs Dell
SELECT ref, qtestk FROM Ordinateur
WHERE upper(ltrim(rtrim(marque)))='DELL';
Supprimer les ordinateurs dont la marque est composée au maximum de 6
caractères.
DELETE FROM Ordinateur
WHERE length (marque) <= 6;
Afficher les marques avec la première lettre en majuscule
SELECT distinct initcap(lower(marque))
FROM Ordinateur;
Afficher les numéros et couleurs des produits dont la désignation contient
"sh" à partir de la 3ème position.
SELECT ref, couleur FROM ordinateur
WHERE Lower(substr(marque,3,2))=‘sh';
97
Exemple
update ordinateur
set ref=ref||'-'||substr(marque,1,3)||'-'||couleur
98
9. Les fonctions de conversion
TO_CHAR(valeur-date,format-date) /
TO_CHAR(nombre[,format]) : convertit une date ou une valeur
numérique à une chaîne de caractères.
99
Quelques formats de dates
YYYY : Année sans virgule
YY : 2 derniers chiffres de l’année
YEAR : Année en toute lettre
Q : Numéro de trimestre de l’année (1 à 4)
MM : Numéro de mois (1 à 12).
MON : Nom du mois abrégé en 3 lettre
WW : Numéro de semaine de l’année (1 à 52)
W : Numéro de semaine dans le mois
DDD : Numéro du jour dans l’année (1 à 366)
DD : Numéro du jour dans le mois (1 à 31)
D : Numéro du jour dans la semaine (1 à 7)
DAY : Nom du jour sur 9 caractères
DY : Nom du jour abrége en 3 lettres
HH12 : Heure sur 12 heures (1 à 12)
HH24 : Heure sur 24 heures (1 à 24)
M : Minutes (1 à 60)
SS : Secondes (1 à 60)
SSSS : Secondes après minuit
100
Exemple
101
10. La pseudo-colonne ROWNUM
102
Syntaxe Complète de la commande SELECT
103