Vous êtes sur la page 1sur 56

Ministère de l’Enseignement Supérieur et de recherche scientifique

Université de Sousse

Séance de Cours

Chapitre1
Rappel sur SQL

2022-2023
I. Présentation de SQL (Structured Query Language)
SQL est un langage normalisé de gestion de bases de données relationnelles.
C'est à la fois :

Un Langage de Définition des Données (LDD): permet de modifier la structure de la


base de données (ordres CREATE, ALTER, DROP),

Un langage d’Interrogation de la base (ordre SELECT)

Un Langage de Manipulation des Données (LMD) : permet de consulter / modifier le


contenu de la base de données (ordres UPDATE, INSERT, DELETE)

Un Langage de contrôle de l'accès aux données (LCD): permet de gérer les privilèges,
(ordres GRANT, REVOKE).
……. 2
II. Le langage de définition des données (LDD)
Permet de définir et de manipuler les concepts du modèle relationnel liés au schéma :
relation, attribut, clé, contraintes d’intégrité, vues ainsi que certains éléments liés à
l’administration de la base de données : index, droits des utilisateurs.
1) Création d'une table :
Syntaxe :
CREATE TABLE <nom_de_relation> ( <nom_d’attribut> <type_de_données> [NOT NULL], [,
...]
[, PRIMARY KEY (<nom_d’attribut> [, ...] ) ]
[, FOREIGN KEY (<nom_d’attribut>) REFERENCES <nom_de_relation> [, ...] ]
[CHECK (<condition>)]);

<nom_de_relation> : est le nom que l'on donne à la table ;


<type_de_données> : présente les types des données qui seront contenues dans
les colonnes.

3
II. Le langage de définition des données (LDD)
Exemple
CREATE TABLE article (
code VARCHAR(10) primary key,
nom VARCHAR(30) NOT NULL,
prix Number(9,2),
datemaj DATE DEFAULT CURRENT_DATE);

Remarque :
On peut donner une valeur par défaut pour une colonne si la colonne n'est pas
renseignée.

4
II. Le langage de définition des données (LDD)
2. Types de données
SMALLINT (sur 2 octets, de -32.768 à 32.767),
INTEGER (sur 4 octets, de -2.147.483.648 à 2.147.483.647).
NUMBER [(précision, échelle)] où précision est le nombre entier de chiffres
significatifs, de 1 à 38 (38 par défaut) et échelle est le nombre de chiffres à droite de la
marque décimale;
Exemple : NUMBER (8,2) : 8 chiffres significatifs dont deux après la virgule.
DECIMAL (p, d) correspond à des nombres décimaux qui ont p chiffres significatifs
et d chiffres après la virgule
REAL (simple précision, avec au moins 7 chiffres significatifs allant de 10-38 à 1038) ,
FLOAT (double précision, avec au moins 15 chiffres significatifs).
 BIT permet de ranger une valeur booléenne (un bit) en SQL-2.

5
II. Le langage de définition des données (LDD)
2. Types de données
 CHAR (longueur) : pour les colonnes qui contiennent des chaînes de longueur
constante. Par défaut, longueur est égale à 1.
 VARCHAR[2] (longueur ) : pour les colonnes qui contiennent des chaînes de
longueurs
variables.
 DATE : réserve 2 chiffres pour le mois et le jour et 4 pour l'année ;
 TIME pour les heures, minutes et secondes
Remarque :
Une colonne qui n'est pas renseignée, et donc vide, est dite "content la valeur NULL".
Cette valeur n'est pas égale à zéro, c'est une absence de valeur.

6
II. Le langage de définition des données (LDD)
3) Contrainte d'intégrité
Dans la définition d'une table, on peut indiquer des contraintes d'intégrité portant sur
une ou plusieurs colonnes. Les contraintes possibles sont :
PRIMARY KEY, UNIQUE, FOREIGN KEY...REFERENCES, CHECK

a) Contrainte de clé primaire :


définit la clé primaire de la table. Aucune des colonnes qui forment cette clé ne
doit avoir une valeur NULL.

Si la clé primaire est composé d'un seul attribut, on place la contrainte de clé
primaire devant l'attribut lors de la création de la table.

Create table journal (code_j number (4) primary key,


titre varchar2(20),
prix number(2,3),…);

7
II. Le langage de définition des données (LDD)
3) Contrainte d'intégrité
a) Contrainte de clé primaire :
Si la clé est composé de plus qu'un attribut, on place cette contrainte vers la fin.

Exemple
create table livraison ( n_dep number (6) references depot(n_dep),
code_j number(4) references journal(code_j),
date_l date,
qte_l number(10),
primary key (code_j, n_dep, date_l));

b) Contrainte d'unicité

UNIQUE : interdit qu'une colonne (ou la concaténation de plusieurs colonnes)


contienne deux valeurs identiques.

8
II. Le langage de définition des données (LDD)
3) Contrainte d'intégrité
c) Contrainte d’intégrité référentielle (clé étrangère)

Syntaxe 1: pour une contrainte sur une colonne :


FOREIGN KEY REFERENCES tableref [(col1 )]
[ON DELETE CASCADE ]
Exemple
create table livraison (
n_dep number (6) FOREIGN KEY references depot(n_dep),
code_j number(4) references journal(code_j),
date_l date,
qte_l number(10),
primary key (code_j, n_dep, date_l));

9
II. Le langage de définition des données (LDD)
3) Contrainte d'intégrité
c) Contrainte d’intégrité référentielle (clé étrangère)
Syntaxe 2 : pour une contrainte sur une table :
FOREIGN KEY (colonne1, colonne2,...) REFERENCES tableref [(col1, col2,...)]
[ON DELETE CASCADE]
Exemple :
create table Ligne_entree( An_entr number (4),
num_entr number(4)
cod_art number(4) references ARTICLE,
date_fab date,
primary key (An_entr, num_entr, cod_art,)
FOREIGN KEY (An_entr, num_entr) REFERENCES Entree (An_entr, num_entr));

indique que la concaténation de An_entr et num_entr est une clé étrangère qui
fait référence à la concaténation des colonnes An_entr et num_entr de la table
Entree . 10
II. Le langage de définition des données (LDD)
3) Contrainte d'intégrité
c) Contrainte d’intégrité référentielle (clé étrangère)

ON DELETE CASCADE:

indique que la suppression d'une ligne de tableref va entraîner automatiquement la


suppression des lignes qui la référencent dans la table. Si cette option n'est pas
indiquée, il est impossible de supprimer des lignes de tableref qui sont référencées
par des lignes de la table.

A la place de ON DELETE CASCADE on peut donner l'option ON DELETE SET


NULL. Dans ce cas, la clé étrangère sera mise à NULL si la ligne qu'elle référence
dans tableref est supprimée.
ON DELETE SET DEFAULT met une valeur par défaut dans la clé étrangère
quand la clé primaire référencée est supprimée.

11
II. Le langage de définition des données (LDD)
3) Contrainte d'intégrité
d) Contrainte CHECK

Syntaxe : CHECK(condition )
impose que les colonnes de chaque ligne à insérer doivent vérifier la condition
indiquée

Exemple
create table depot (n_dep number(6) primary key,
nom_dep varchar2(20) not null,
adr varchar2(20) not null,
check(nom_dep = upper(nom_dep)),
check(adr = upper(adr)));

Les deux contraintes check imposent que les valeurs de adr et de nom_dep à insérer
dans la table depot soit en majuscule.
12
II. Le langage de définition des données (LDD)
4) Contraintes nommées
Une contrainte peut être nommée afin de pouvoir la gérer (supprimer, modifier, renomer).
Syntaxe : Constraint nom_contrainte contrainte

Exemple :
create table journal(code_j number(4),
titre varchar2(20),
prix number(2,3),
constraint pk_journal primary key(code));
5) Ajouter, supprimer ou renommer une contrainte

Après avoir créer une table, on peut modifier sa structure en y ajoutant, supprimant
ou renommant une contrainte. On doit dans ce cas en premier lieu, utiliser la
commande ALTER TABLE.

13
II. Le langage de définition des données (LDD)
5) Ajouter, supprimer ou renommer une contrainte
a) Ajout d'une contrainte
Syntaxe : ALTER TABLE nom_table
ADD CONSTRAINT nom_contrainte contrainte;
Exemple :
ALTER TABLE journal
ADD CONSTRAINT cktitre check (titre = upper(titre) and titre is not null)
ADD CONSTRAINT cktype check (type in ('INFO', 'SCIENCE', 'TELE', 'FEMININ') );

b) Suppression d'une contrainte


Syntaxe : ALTER TABLE nom_table DROP CONSTRAINT nom de contrainte;

Exemple :
ALTER TABLE journal
DROP CONSTRAINT cktitre ;
14
II. Le langage de définition des données (LDD)
5) Suppressions d'une table

Syntaxe : DROP TABLE <nom_de_relation> [CASCADE CONSTRAINTS]

6) Modifier le schéma de relation.

ALTER TABLE <nom_de_relation> ADD ( <nom_d'attribut> <type_de_données> )


[CASCADE CONSTRAINS]

15
III. Langage de manipulation des Données
permet de modifier les informations contenues dans la base.

Il existe trois commandes SQL permettant d'effectuer les trois types de modification
des données :

INSERT ajout de lignes


UPDATE mise à jour de lignes
DELETE suppression de lignes

16
III. Langage de manipulation des Données
1) Insertion
Syntaxe : INSERT INTO nom_table (col1,..., coln ) VALUES (val1,...,valn )

Exemples
Insert into journal values (110,'LE MONDE', 4.5, 'INFO', 'QUOTIDIEN', 'PARIS')

Insert into journal (code_j, titre , prix , type, periode, adresse)values (110,'LE
MONDE', 4.5, 'INFO', 'QUOTIDIEN', 'PARIS‘)
2) Modification
Syntaxe : UPDATE table
SET col1 = exp1, col2 = exp2, ...
WHERE prédicat

Exemples
UPDATE journal
SET prix= 5
WHERE prix = 4.5; 17
III. Langage de manipulation des Données
3) Suppression

Syntaxe : DELETE FROM table


WHERE prédicat

La clause WHERE indique quelles lignes doivent être supprimées. Cette clause
est facultative ; si elle n'est pas précisée, toutes les lignes de la table sont
supprimées.

Exemple :
DELETE FROM journal
WHERE type = 'INFO ‘;

µPermet de supprimer tous les journaux dont le type est 'INFO ‘

18
IV. Langage d’interrogation des Données
1. L’Ordre Select

 Utilisé pour retrouver des informations stockées dans une BD

 Possède six clauses différentes, dont seules les deux premières sont obligatoires.

SELECT [DISTINCT ou ALL] * ou liste de colonnes


FROM nom de table ou de la vue
[WHERE prédicats]
[GROUP BY ordre des groupes]
[HAVING condition]
[ORDER BY ] liste de colonnes

19
IV. Langage d’interrogation des Données
1. L’Ordre Select

a) L'opérateur * (étoile)

Récupère le contenu de toutes les colonnes de la table précisée dans la clause


FROM de la requête.

Exemple
Soit la table journal :
code_j titre prix type periode adr_j
110 LE MONDE 4.5 INFO QUOTIDIEN PARIS
111 LIBERATION 4.5 INFO QUOTIDIEN PARIS
112 LA RECHERCHE 32 SCIENCE MENSUEL PARIS
113 TELERAMA 15 TELE HEBDO MONTROUGE

Pour afficher le contenu de toutes les colonnes on doit taper la requête suivante :

Select * from journal;


20
IV. Langage d’interrogation des Données
1. L’Ordre Select
b) La Projection :

Limiter l’affichage à une ou à quelques colonnes de la table précisée dans la clause


FROM de la requête.
Exemple :

Pour afficher seulement les types : Pour afficher le titre et le prix de chaque journal :

Select type from journal; Select titre, prix from journal;


TYPE
---------- titre prix
INFO ------- ------
INFO LE MONDE 4.5
SCIENCE LIBERATION 4.5
TELE LA RECHERCHE 32
TELERAMA 15
21
IV. Langage d’interrogation des Données
1. L’Ordre Select
c) L'opérateur DISTINCT:
Permet d'éliminer les duplications :
Si dans le résultat, plusieurs lignes sont identiques une seule sera conservée.
Exemple :
Select type from journal;
select distinct type from journal;
TYPE
TYPE
----------
Pour éliminer une telle ----------
INFO
redondance on utilise INFO
INFO
l’opérateur DISTNCT SCIENCE
SCIENCE
TELE
TELE

22
1. L’Ordre Select

d) L'opérateur AS:
Permet de donner un nom à de nouvelles colonnes créées par la requête.

Exemple :
Select distinct type Select distinct type as "LES TYPES"
From journal; from journal;

type
LES TYPES
----------
----------
INFO
INFO
SCIENCE
SCIENCE
TELE
TELE
23
IV. Langage d’interrogation des Données
2. La Clause FROM
 Donne la liste des tables participant à l'interrogation.
 Il est possible de lancer des interrogations utilisant plusieurs tables à la fois
FROM table1 [synonyme1 ] , table2 [synonyme2 ] , ...
synonyme1, synonyme2,... sont des synonymes attribués facultativement
aux tables.
Utilisé pour lever certaines ambiguïtés, quand la même table est utilisée
de plusieurs façons différentes dans une même interrogation.

Exemple : Select distinct type


From journal Jour;

Si un synonyme est attribué à une table dans une requête, elle n'est plus
reconnue sous son nom d'origine dans cette requête. 24
IV. Langage d’interrogation des Données
3. La Clause WHERE
 Permet de spécifier quelles sont les lignes à sélectionner dans une table ou dans le
produit cartésien de plusieurs tables.
 Elle est suivie d'un prédicat qui sera évalué pour chaque ligne.
 Les lignes pour lesquelles le prédicat est vrai seront sélectionnées.

WHERE exp1 = exp2 WHERE exp1 IN (exp2, exp3,...)

WHERE exp1 != exp2 WHERE exp1 NOT IN (exp2, exp3,...)

WHERE exp1 < exp2 WHERE exp IS NULL

WHERE exp1 > exp2 WHERE exp IS NOT NULL

WHERE exp1 <= exp2


WHERE exp1 >= exp2
WHERE exp1 BETWEEN exp2 AND exp3
WHERE exp1 LIKE (NOT LIKE) exp2 25
IV. Langage d’interrogation des Données
3. La Clause WHERE
Exemples :

R1 : Liste des journaux (toutes les colonnes) dont le code est supérieur à 111
Select *
From journal
Where code_j > 111;

R2 : Titres et prix des journaux dont le prix est dans l’intervalle [15, 20]

Select titre, prix


From journal
Where prix between 15 and 20;

26
IV. Langage d’interrogation des Données
3. La Clause WHERE

LIKE : teste l'égalité de deux chaînes en tenant compte des caractères jokers
dans la 2ème chaîne :
'-' remplace exactement 1 caractère
'%' remplace une chaîne de caractères de longueur quelconque
R3 : Titres des journaux dont le titre commence par ‘T ’ et contient ‘M’
Select titre
From journal
Where upper(titre) like 'T%M%';

R4 : Titres des journaux dont la deuxième lettre est ‘E ’ et se termine par ‘A’
Select titre
From journal
Where upper(titre) like '-E%A'; 27
IV. Langage d’interrogation des Données
3. La Clause WHERE
IS NULL permet de tester la valeur NULL
exp IS [NOT] NULL : est vrai si l'expression a la valeur NULL (ou l'inverse
avec NOT).
Exemple :
R5 : Liste des journaux ayant un type (type n’est pas NULL).

Select *
From journal
Where type IS NOT NULL

R6 : Liste des journaux n’ayant pas un type (type est NULL).

Select *
From journal
Where type IS NULL
28
IV. Langage d’interrogation des Données
4. La Clause ORDER BY
Permet de définir un tri des colonnes de la réponse
ORDER BY colonne1 [ASC ou DESC ] [, colonne2 [ASC ou DESC ] ..].
Le tri se fait d'abord selon la première expression, puis les lignes ayant la même
valeur pour la première expression sont triées selon la deuxième expression, etc.
Exemple :
R7 : Afficher la liste des journaux dont l’adresse n’est pas ‘PARIS’ trié par ordre
décroissant des types :
Select * From journal
Where upper (adr_j) Not like 'PARIS'
ORDER BY type DESC;
R8 : Liste des journaux trié par ordre croissant des prix
Select *
From journal
ORDER BY prix ASC; 29
IV. Langage d’interrogation des Données
5. Opérateurs logiques
AND et OR peuvent être utilisés pour combiner plusieurs prédicats.

L'opérateur NOT placé devant un prédicat en inverse le sens.


Exemple :

R9 : Sélectionner les journaux de PARIS ayant un prix supérieur à 5


Select *
From journal
Where prix>5 and upper (ADR_j) = 'PARIS';

30
IV. Langage d’interrogation des Données
6. Clause GROUP BY

SELECT [DISTINCT ou ALL] * ou liste de colonnes


FROM nom de table ou de la vue
[WHERE prédicats]
[GROUP BY exp1, exp2,…]
[HAVING condition]
[ORDER BY ] liste de colonnes

 Permet de subdiviser la table en groupes, chaque groupe étant l'ensemble des


lignes ayant une valeur commune.

 Groupe en une seule ligne toutes les lignes qui ont la même valeur de exp1

31
IV. Langage d’interrogation des Données
6. Clause GROUP BY

Fonctions de groupes
S'utilisent avec la clause GROUP BY

 Peuvent apparaître dans le Select ou le Having

AVG : moyenne
SUM : somme
MIN : plus petite des valeurs
MAX : plus grande des valeurs
VARIANCE : variance
STDDEV : écart type (déviation standard)
COUNT(*) : nombre de lignes retournées par le select
COUNT(col ) : nombre de valeurs non nulles de la colonne retournées par le select
32
IV. Langage d’interrogation des Données
6. Clause GROUP BY
Exemple
R10 : Donner le nombre de journaux par type de journal,

Select type, count(*)


From journal
Group by type;

R11: Donner pour chaque ville le nombre de journaux et leur prix moyen,

Select adr_j, count(*) as "Nombre" , AVG(prix) as "Prix Moyen"


From journal
Group by adr_j;

33
IV. Langage d’interrogation des Données
6. Clause GROUP BY
Tous les attribut qui se trouvent dans un ordre select (sauf Fonctions de groupes)
doivent figurer dans la clause group by.

Exemple
Select code_j, adr_j
From journal
Where lower(titre) like ('%r%')
Group by adr_j

l'erreur suivante est affichée par SQL


ERREUR à la ligne 1:
ORA-00979: N'est pas une expression GROUP BY

34
IV. Langage d’interrogation des Données
6. Clause GROUP BY
Clause HAVING
HAVING prédicat : sert à préciser quels groupes doivent être sélectionnés
Elle se place après la clause GROUP BY.
Le prédicat suit la même syntaxe que celui de la clause WHERE.
Cependant, il ne peut porter que sur des caractéristiques de groupe :
fonction de groupe ou expression figurant dans la clause GROUP BY.
Exemple
Select count(*), adr_j
From journal
Where lower(titre) like ('%r%')
Group by adr_j
Having count (*)>1
Les valeurs NULL sont ignorées par les fonctions de groupe. 35
IV. Langage d’interrogation des Données
6. Clause GROUP BY
Exemple

SELECT dept, AVG(salaire)


FROM employes
GROUP BY dept
HAVING COUNT(*) >= 3

36
IV. Langage d’interrogation des Données
7. Expressions et fonctions
 Une expression est la combinaison de variables (contenu de colonnes), des
constantes et des fonctions au moyen d’opérateurs.

 Les fonctions sont des procédures définies prenant une valeur dépendant de leurs
arguments
Les expressions peuvent figurer :
En tant qu’attributs résultats d’un ordre select ;
Dans la clause where ;
Dans une clause order by ;
Dans une clause having.

37
IV. Langage d’interrogation des Données
7. Expressions et fonctions
a) Opérateur de concaténation ||
Sert à concaténer deux chaines de caractères

Exemple :

Select code_j, adr_j || type select code_j, adr_j, type


from journal; from journal;
CODE_J ADR_J||TYPE
--------- -------------------- CODE_J ADR_J TYPE
110 PARISINFO -------- ---------- ----------
115 PARISINFO 110 PARIS INFO
120 PARISSCIENCE 115 PARIS INFO
142 MONTROUGETELE 120 PARIS SCIENCE
142 MONTROUGE TELE

38
IV. Langage d’interrogation des Données
7. Expressions et fonctions
b) LENGTH(chaîne) :
 Renvoie la longueur de la chaîne.
Exemple
1) Codes et titres des journaux dont la longueur de titre est supérieur à 10

2) Codes, titres et longueurs des titres des journaux


1) select code_j, titre 2) select code_j, titre, length(titre)
from journal from journal;
where length(titre)>10; CODE_J TITRE LENGTH(TITRE)
CODE_J TITRE --------- -------------------- -------------
--------- -------------------- 110 LE MONDE 8
120 LA RECHERCHE 115 LIBERATION 10
145 TELE 7 JOURS 120 LA RECHERCHE 12
156 SCIENCE ET VIE 145 TELE 7 JOURS 12
156 SCIENCE ET VIE 14
160 ELLE 4 39
IV. Langage d’interrogation des Données
7. Expressions et fonctions
c)TO_CHAR (nombre, format)
 Permet de convertir un nombre ou une date en chaîne de caractère en fonction d'un
format :
 nombre est une expression de type numérique

 format est une chaîne de caractère pouvant contenir les caractères de


substitution,

9 : représente un chiffre (non représenté s'il est égale à 0 )


0 : représente un chiffre (présent même s'il est égale à 0 )
. point décimal apparent
, une virgule apparaîtra à cet endroit

40
IV. Langage d’interrogation des Données
7. Expressions et fonctions
c)TO_CHAR (nombre, format)
Exemple
SELECT prix, TO_CHAR(PRIX,'999.99'), TO_CHAR(PRIX,'999'),
TO_CHAR(PRIX,'000.99') ,TO_CHAR(PRIX,'90.00')
from journal;
PRIX TO_CHAR(PRIX,'999.99') TO_CHAR(PRIX,'999') TO_CHAR(PRIX,'000.99') TO_CHAR(PRIX,'90.00')
------ ------- ---- ------- ------
4,5 4.50 5 004.50 4.50
32 32.00 32 032.00 32.00
15 15.00 15 015.00 15.00
5,6 5.60 6 005.60 5.60
20 20.00 20 020.00 20.00
20,42 20.42 20 020.42 20.42
222,42 222.42 222 222.42 ######
,42 .42 0 000.42 0.42
,3 .30 0 000.30 0.30
41
IV. Langage d’interrogation des Données
7. Expressions et fonctions
c)TO_CHAR (nombre, format)
Pour les dates : TO_CHAR (date, format)
 Convertie une valeur de type date en une chaine de caractère.
format indique le format sous lequel sera affichée date
 C'est une combinaison de codes
YYYY : année DY : abréviation du nom du jour
YY : deux derniers chiffres de l'année D : numéro du jour dans la semaine
MM numéro du mois HH ou HH12 : heure (sur 12 heures)
DDD : numéro du jour dans l'année MONTH : nom du mois
DD : numéro du jour dans le mois MON : abréviation du nom du mois
Exemple
SELECT TO_CHAR(sysdate, 'DD/MM/YY HH24') from dual;
TO_CHAR(SYS)
-----------
42
12/02/08 17
IV. Langage d’interrogation des Données
7. Expressions et fonctions
d) Expression de type date
Deux opérations sont permises
Ajout d'une durée : date + nb
select DATE_L + 5 from LIVRAISON;

Obtention du nombre de jours séparant deux dates : date2 – date 1

select code_j, date_l, sysdate - date_l


from livraison;

CODE_J DATE_L SYSDATE-DATE_L


------- -------- --------------
147 23/01/06 752,90241
149 22/02/06 722,90241

43
IV. Langage d’interrogation des Données
7. Expressions et fonctions
e) Fonction applicables aux dates
 TO_DATE(chaîne, format)

 Permet de convertir une chaîne de caractères en donnée de type date.

 MONTHS_BETWEEN(date1, date2)
 Renvoi le nombre de mois entre deux dates
 LAST_DAY(date)
 Renvoie le n° du dernier jour d’un mois d’une date.

Exemple select code_j, date_l, months_between(sysdate,date_l)


from livraison;
CODE_J DATE_L MONTHS_BETWEEN(SYSDATE,DATE_L)
------ -------- ------------------------------
147 23/01/06 24,73895
149 22/02/06 23,771208 44
f) Fonctions statistiques et Fonctions de comptage

Il est possible de réaliser des comptages statistiques sur les colonnes et sur les groupes.
 COUNT(* | [DISTINCT | ALL] expression)
 Renvoie le nombre de lignes du résultat de la requête.
 Si expression est présent, on ne compte que les lignes pour lesquelles cette
expression n'est pas NULL.
Exemples :
Donner le nombre de journaux
SELECT count(*) as "Nombre de journaux" FROM journal;
Donner le nombre de type de journaux

SELECT count(distinct type) FROM journal;


Donner pour chaque type de journal, le nombre de journaux

SELECT type, count(*) as "Nombre de journaux


FROM journal
Group by type; 45
f) Fonctions statistiques et Fonctions de comptage

 AVG([DISTINCT | ALL] expression)] : Renvoie la moyenne des valeurs d'expression.

 MAX([DISTINCT | ALL] expression) : Renvoie la plus grande des valeurs d'expression.

 MIN([DISTINCT | ALL] expression) : Renvoie la plus petite des valeurs d'expression

 SUM([DISTINCT | ALL] expression) : Renvoie la somme des valeurs


Exemple :

Donner le prix minimal, le prix maximale le prix moyen et la somme des prix des journaux

SELECT min(prix), max(prix), avg(prix), sum(prix) from journal;


Donner le prix minimal, le prix maximale le prix moyen et la somme des prix par type
de journal

SELECT type, min(prix), max(prix), avg(prix), sum(prix)


from journal
Groupe by type; 46
IV. Langage d’interrogation des Données
8. Les pseudo-colonnes
rownum
Renvoie les numéros des lignes sélectionnées par une clause where.
Le rownum de la première ligne a la valeur 1, celui de la deuxième la valeur 2

Elle permet de :
1) Numéroter les lignes

Exemple : select code_j, titre, prix, rownum from journal


where prix between 6 and 21;
CODE_J TITRE PRIX ROWNUM
-------- -------------------- --------- ---------
142 TELERAMA 15 1
145 TELE 7 JOURS 15 2
149 L EXPRESS 20 3
156 SCIENCE ET VIE 20 4
………. 47
IV. Langage d’interrogation des Données
8. Les pseudo-colonnes

2) Restreindre le nombre de lignes renvoyées

Exemple : donner les 2 premier journaux dont le prix est dans [6, 21]
select code_j, titre, prix, rownum
from journal
where prix between 6 and 21 and rownum <3;

CODE_J TITRE PRIX ROWNUM


-------- -------------------- --------- ---------
142 TELERAMA 15 1
145 TELE 7 JOURS 15 2

48
IV. Langage d’interrogation des Données
8. Les pseudo-colonnes
Attention :
la requête suivante ne renvoie aucune ligne
select code_j, titre, prix, rownum
from journal
where prix between 6 and 21 and rownum >3;
On peut s'en sortir avec une sous-interrogation :
select code_j, titre, prix
from (select rownum RANG, code_j, titre, prix from journal
where prix between 6 and 21 )
where RANG > 3;

49
IV. Langage d’interrogation des Données
8. Les pseudo-colonnes

3)Récupérer les lignes numérotées entre deux nombres


select code_j, titre, prix
from (select rownum RANG, code_j, titre, prix from journal
where prix between 6 and 21 )
where RANG between 3 and 8;

Attention :
La valeur ROWNUM est associée à chaque ligne avant la prise en compte d’une
éventuelle clause ORDER BY.
les deux requêtes suivantes donnent le même ordre:
select rownum, titre from journal order by code_j;
select rownum, titre from journal;
50
AUTRES FONCTIONS SQL
Les tableaux ci-dessous résument les fonction utilisable dans SQL

51
52
AUTRES FONCTIONS SQL

53
54
55
Merci pour votre
Attention

Vous aimerez peut-être aussi