Vous êtes sur la page 1sur 34

1. Le langage SQL-DDL 1.1 Introduction 1.

5 Les structures physiques


2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1. LE LANGAGE SQL DDL

Version 2 - Janvier 2012

Support du chapitre 6, Le langage SQL DDL


de l'ouvrage Bases de donnes, J-L Hainaut, Dunod 2009.

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 1
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1. LE LANGAGE SQL DDL


Contenu

1.1 Introduction
1.2 Cration d'un schma
1.3 Cration d'une table
1.4 Modification d'une table
1.5 Les structures physiques
1.6 Exemple

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 2
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.1 INTRODUCTION

Le sous-langage DDL de SQL permet de crer des structures de


donnes et de les modifier.

Etude de SQL92 ou SQL2 (pour SQL3, voir chapitre 4)

Langage standardis mais les diteurs de SGBD ont pris


beaucoup de liberts :
concepts non repris
concept additionnels non standard
interprtation personnelle de certains concepts
Certains concepts sont ignors par le standard

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 3
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.1 Introduction

Les oprations du DDL :


Cration dun schma
Cration dune table
colonnes (obligatoire)
domaine
identifiants primaire et secondaire
cl trangre
Suppression dune table
Ajout, suppression, modification dune colonne
Ajout, suppression dune contrainte
Ajout, suppression dun index
Cration dun espace de stockage
autres (voir chapitre 4)

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 4
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.2 CREATION D'UN SCHEMA

CLICOM

Cration d'un schma


create schema CLICOM;

Connexion une base de donnes


connect to ADMIN\SERV01 as CON_21Dec2009_002
user 'jlh' password 'jlhclicom';

Dconnexion
disconnect CON_21Dec2009_002;

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 5
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.3 CREATION D'UNE TABLE

Contenu

a) Tables, colonnes et domaines

b) Les identifiants

c) Les cls trangres

d) Suppression d'une table

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 6
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.3 Cration d'une table - Tables, colonnes et domaines

Cration d'une table et de ses colonnes

CLIENT
NCLI: char (10)
NOM: char (32)
ADRESSE: char (60)
LOCALITE: char (30)
CAT[0-1]: char (2)
COMPTE: num (9,2)

create table CLIENT ( NCLI char(10),


NOM char(32),
ADRESSE char(60),
LOCALITE char(30),
CAT char(2),
COMPTE decimal(9,2) );

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 7
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.3 Cration d'une table - Tables, colonnes et domaines

Les types de base

numrique exact smallint, integer, decimal, numeric


approch real, float, double
chane de bits longueur fixe bit
longueur variable bit varying
longueur indfinie BLOB
caractres longueur fixe char
longueur variable character varying
longueur indfinie CLOB
temps date date
instant time
instant dat timestamp
intervalle interval
boolen boolean

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 8
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.3 Cration d'une table - Tables, colonnes et domaines

Les domaines

Dfinition d'un domaine :


create domain MONTANT decimal(9,2);
create domain MATRICULE char(10);
create domain LIBELLE char(32);

Utilisation d'un domaine :


create table CLIENT ( NCLI MATRICULE,
NOM LIBELLE,
ADRESSE char(60),
LOCALITE LIBELLE,
CAT char(2),
COMPTE MONTANT );

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 9
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.3 Cration d'une table - Tables, colonnes et domaines

Les colonnes obligatoires

Une colonne est facultative par dfaut.


Il faut dclarer explicitement les colonnes obligatoires

create table CLIENT ( NCLI char(10) not null,


NOM char(32) not null,
ADRESSE char(60) not null,
LOCALITE char(30) not null,
CAT char(2),
COMPTE decimal(9,2) not null
);

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 10
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.3 Cration d'une table - Tables, colonnes et domaines

Valeur par dfaut d'une colonne

Sera assigne la colonne si on ne spcifie pas de valeur


lors de la cration d'une ligne

create table CLIENT (


NCLI char(10) not null,
NOM char(32) not null,
ADRESSE char(60) not null,
LOCALITE char(30) not null default 'Paris',
CAT char(2) default 'B1',
COMPTE decimal(9,2) not null default 0.0
);

create domain MONTANT decimal(9,2) default 0.0;

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 11
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.3 Cration d'une table - Les identifiants

Les identifiants primaires (primary key)

CLIENT
NCLI
NOM
ADRESSE
LOCALITE
CAT[0-1]
COMPTE
id: NCLI

create table CLIENT ( NCLI char(10) not null,


NOM char(32) not null,
ADRESSE char(60) not null,
LOCALITE char(30) not null,
CAT char(2),
COMPTE decimal(9,2) not null,
primary key (NCLI) );

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 12
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.3 Cration d'une table - Les identifiants

Les identifiants secondaires (candidate key)

CLIENT
NCLI
NOM
ADRESSE
LOCALITE
CAT[0-1]
COMPTE
id: NCLI
id': NOM

create table CLIENT ( NCLI char(10) not null,


NOM char(32) not null,
ADRESSE char(60) not null,
LOCALITE char(30) not null,
CAT char(2),
COMPTE decimal(9,2) not null,
primary key (NCLI),
unique (NOM) );

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 13
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.3 Cration d'une table - Les cls trangres

Les cls trangres (foreign key)


CLIENT
NCLI
COMMANDE NOM
NCOM ADRESSE
DATECOM LOCALITE
NCLI CAT[0-1]
id: NCOM COMPTE
ref: NCLI id: NCLI

create table COMMANDE (NCOM char(12) not null,


NCLI char(10) not null,
DATECOM date not null,
primary key (NCOM),
foreign key (NCLI) references CLIENT);

Si l'identifiant cible est secondaire (possible mais dconseill) :


foreign key (NOM) references CLIENT(NOM)

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 14
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.3 Cration d'une table - Les cls trangres

Les cls trangres mixtes

Cas dlicat : cl trangre multi-composants dont certains composants


sont facultatifs.

create table ETUDIANT (NINSCR char(12) not null,


ANNEE date not null,
TITRE char(48),
primary key (NINSCR),
foreign key (ANNEE, TITRE) references MEMOIRE);

Comment grer les valeurs null ?

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 15
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.3 Cration d'une table - Les cls trangres

Les cls trangres mixtes


match simple : si toutes les colonnes de la cl trangre possdent une valeur,
la contrainte rfrentielle est value, sinon elle est ignore.

foreign key (ANNEE, TITRE) references MEMOIRE match simple

match full : si les colonnes sont toutes null, la contrainte est ignore. Si elles sont
toutes non null, elle est value. Dans les autres cas, elle nest pas satisfaite.

foreign key (ANNEE, TITRE) references MEMOIRE match full

match partial : la contrainte est value pour les colonnes non null. La table cible doit
contenir au moins une ligne dont lidentifiant comporte les valeurs non null
de la cl trangre.

foreign key (ANNEE, TITRE) references MEMOIRE match partial

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 16
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.3 Cration d'une table - Les cls trangres

Variante : contraintes de colonne

create table CLIENT (


NCLI char(10) not null primary key,
. . .
);

create table CLIENT (


NCLI char(10) not null,
NOM char(32) not null unique,
. . .
);

create table COMMANDE (


NCOM char(12) not null,
NCLI char(10) not null references CLIENT,
. . . );

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 17
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.3 Cration d'une table - Les cls trangres

Variante : contraintes nommes

create table COMMANDE (NCOM char(12) not null,


NCLI char(10) not null,
DATECOM date not null,
constraint COMPK primary key (NCOM),
constraint COMFK foreign key (NCLI)
references CLIENT);

create table COMMANDE (


NCOM char(12) constraint COMPK not null,
NCLI char(10) not null constraint COMFK
references CLIENT,
. . . );

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 18
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.3 Cration d'une table - Suppression d'une table

Suppression d'une table

drop table COMMANDE;

Attention, opration sous haute surveillance !


la table ne doit plus tre rfrence par une cl trangre; la table
DETAIL (ou sa cl trangre vers COMMANDE) doit avoir t
supprime

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 19
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.4 MODIFICATION D'UNE TABLE

Contenu

a) Ajout, retrait et modification d'une colonne

b) Ajout et retrait d'une contrainte

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 20
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.4 Modification d'une table - Colonnes

Ajout, retrait et modification d'une colonne

alter table PRODUIT add column POIDS smallint;

alter table PRODUIT drop column PRIX;

alter table CLIENT modify column CAT set '00';

alter table CLIENT modify column CAT drop default;

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 21
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.4 Modification d'une table - Contraintes

Ajout et retrait d'une contrainte

alter table PROSPECT add primary key (NCLI);

alter table CLIENT add unique (NOM,ADRESSE,LOCALITE);

alter table CLIENT modify CAT not null;


alter table CLIENT modify ADRESSE null;

alter table CLIENT


add foreign key (CAT) references CATEGORIE ;

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 22
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.4 Modification d'une table - Contraintes

Variantes : contraintes nommes

alter table PROSPECT


add constraint PROPK primary key (NCLI);

alter table CLIENT


add constraint CLIUN unique (NOM,ADRESSE,LOCALITE);

alter table CLIENT


add constraint CLIFK1 foreign key (CAT)
references CATEGORIE ;

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 23
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.4 Modification d'une table - Contraintes

Suppression d'une contrainte nomme

alter table PROSPECT


drop constraint PROPK;

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 24
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.5 LES STRUCTURES PHYSIQUES

Contenu

a) Les index

b) Les espaces de stockage

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 25
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.5 Les structures physiques - Les index

CLIENT
NCLI Les index
create unique index XCLI_NCLI on CLIENT(NCLI);
NOM
ADRESSE
LOCALITE
CAT[0-1]
COMPTE
id: NCLI
acc
acc: LOCALITE
create index XCLI_LOC on CLIENT (LOCALITE);

create index XCLI_LOC on CLIENT (LOCALITE asc);

drop index XCLI_LOC;

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 26
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.5 Les structures physiques - Les espaces de stockage

Les espaces de stockage

create dbspace CLI_PRO_DAT;


CLI_PRO_DAT

CLIENT
PRODUIT

create table CLIENT ( . . . ) in CLI_PRO_DAT;

drop dbspace CLI_PRO_DAT;

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 27
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.6 EXEMPLE

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 28
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.6 Exemple - Le schma

Traduire ce schma en SQL

CLICOM/SQL2

CLIENT
NCLI
NOM PRODUIT CLI_PRO_DAT
ADRESSE NPRO
LOCALITE LIBELLE CLIENT
COMMANDE
CAT[0-1] PRIX PRODUIT
NCOM
COMPTE DETAIL QSTOCK
DATECOM
id: NCLI NCLI id: NPRO
NCOM COM_DAT
acc acc
id: NCOM NPRO
acc: NOM acc QCOM COMMANDE
acc: LOCALITE ref: NCLI id: NCOM DETAIL
acc NPRO
acc: DATECOM acc
ref: NCOM
ref: NPRO
acc

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 29
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.6 Exemple - Le schma et les espaces de stockage

create schema CLICOM;

create dbspace CLI_PRO_DAT;

create dbspace COM_DAT;

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 30
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.6 Exemple - Les tables

create table CLIENT ( NCLI char(10) not null,


NOM char(32) not null,
ADRESSE char(60) not null,
LOCALITE char(30) not null,
CAT char(2),
COMPTE decimal(9,2) not null,
primary key (NCLI) ) in CLI_PRO_DAT;

create table PRODUIT ( NPRO char(15) not null,


LIBELLE char(60) not null,
PRIX decimal(6) not null,
QSTOCK decimal(8) not null,
primary key (NPRO) ) in CLI_PRO_DAT;

create table COMMANDE (NCOM char(12) not null,


NCLI char(10) not null,
DATECOM date not null,
primary key (NCOM),
foreign key (NCLI) references CLIENT) in COM_DAT;

create table DETAIL ( NCOM char(12) not null,


NPRO char(15) not null,
QCOM decimal(8) not null,
primary key (NCOM,NPRO),
foreign key (NCOM) references COMMANDE,
foreign key (NPRO) references PRODUIT) in COM_DAT;

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 31
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Cration d'un schma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Cration d'une table
4. Le langage SQL avanc 1.4 Modification d'une table

1.6 Exemple - Les index

create index CLINCLI on CLIENT (NCLI);

create index CLINOM on CLIENT (NOM);

create index CLILOC on CLIENT (LOCALITE);

create index COMNCOM on COMMANDE (NCOM);

create index COMNOM on COMMANDE (NCLI);

create index PRONPRO on PRODUIT (NPRO);

create index DETCOMPRO on DETAIL (NCOM,NPRO);

create index DETPRO on DETAIL (NPRO);

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 32
1. Le langage SQL-DDL
2. Le langage SQL DML (1)
3. Le langage SQL DML (2)
4. Le langage SQL avanc

Fin du chapitre 1

Chapitre suivant :
2. Le langage SQL DML (1)

azerty
II. Utilisation des bases de donnes Bases de donnes J-L Hainaut 2012 33
azerty Bases de donnes J-L Hainaut 2012 34