Вы находитесь на странице: 1из 32

1. Le langage SQL-DDL 1.1 Introduction 1.

5 Les structures physiques


2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création d'une table
4. Le langage SQL avancé 1.4 Modification d'une table

1. LE LANGAGE SQL DDL

Version 1 - Mai 2009

Support du chapitre 6, Le langage SQL DDL


de l'ouvrage Bases de données, J-L Hainaut, Dunod 2009.

azerty
II. Utilisation des bases de données Bases de données   J-L Hainaut 2009 1
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création 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 Création d'un schéma
1.3 Création d'une table
1.4 Modification d'une table
1.5 Les structures physiques
1.6 Exemple

azerty
II. Utilisation des bases de données Bases de données   J-L Hainaut 2009 2
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création 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 créer des structures de


données 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 libertés :
 concepts non repris
 concept additionnels non standard
 interprétation personnelle de certains concepts
 Certains concepts sont ignorés par le standard

azerty
II. Utilisation des bases de données Bases de données   J-L Hainaut 2009 3
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création d'une table
4. Le langage SQL avancé 1.4 Modification d'une table

1.1 Introduction

Les opérations du DDL :


Création d’un schéma
Création d’une table
colonnes (obligatoire)
domaine
identifiants primaire et secondaire
clé étrangère
Suppression d’une table
Ajout, suppression, modification d’une colonne
Ajout, suppression d’une contrainte
Ajout, suppression d’un index
Création d’un espace de stockage
autres (voir chapitre 4)

azerty
II. Utilisation des bases de données Bases de données   J-L Hainaut 2009 4
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création d'une table
4. Le langage SQL avancé 1.4 Modification d'une table

1.2 CREATION D'UN SCHEMA

CLICOM

Création d'un schéma


create schema CLICOM;

Connexion à une base de données


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

Déconnexion
disconnect CON_21Dec2009_002;

azerty
II. Utilisation des bases de données Bases de données   J-L Hainaut 2009 5
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création 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 clés étrangères

d) Suppression d'une table

azerty
II. Utilisation des bases de données Bases de données   J-L Hainaut 2009 6
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création d'une table
4. Le langage SQL avancé 1.4 Modification d'une table

1.3 Création d'une table - Tables, colonnes et domaines

Création 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 données Bases de données   J-L Hainaut 2009 7
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création d'une table
4. Le langage SQL avancé 1.4 Modification d'une table

1.3 Création d'une table - Tables, colonnes et domaines

Les types de base

numérique exact smallint, integer, decimal, numeric


approché real, float, double
chaîne de bits longueur fixe bit
longueur variable bit varying
longueur indéfinie BLOB
caractères longueur fixe char
longueur variable character varying
longueur indéfinie CLOB
temps date date
instant time
instant daté timestamp
intervalle interval
booléen boolean

azerty
II. Utilisation des bases de données Bases de données   J-L Hainaut 2009 8
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création d'une table
4. Le langage SQL avancé 1.4 Modification d'une table

1.3 Création d'une table - Tables, colonnes et domaines

Les domaines

Définition 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 données Bases de données   J-L Hainaut 2009 9
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création d'une table
4. Le langage SQL avancé 1.4 Modification d'une table

1.3 Création d'une table - Tables, colonnes et domaines

Les colonnes obligatoires

Une colonne est facultative par défaut.


Il faut déclarer 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 données Bases de données   J-L Hainaut 2009 10
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création d'une table
4. Le langage SQL avancé 1.4 Modification d'une table

1.3 Création d'une table - Tables, colonnes et domaines

Valeur par défaut d'une colonne

Sera assignée à la colonne si on ne spécifie pas de valeur


lors de la création 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 données Bases de données   J-L Hainaut 2009 11
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création d'une table
4. Le langage SQL avancé 1.4 Modification d'une table

1.3 Création 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 données Bases de données   J-L Hainaut 2009 12
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création d'une table
4. Le langage SQL avancé 1.4 Modification d'une table

1.3 Création 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 données Bases de données   J-L Hainaut 2009 13
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création d'une table
4. Le langage SQL avancé 1.4 Modification d'une table

1.3 Création d'une table - Les clés étrangères

Les clés étrangères (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 déconseillé) :

foreign key (NOM) references CLIENT(NOM)


azerty
II. Utilisation des bases de données Bases de données   J-L Hainaut 2009 14
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création d'une table
4. Le langage SQL avancé 1.4 Modification d'une table

1.3 Création d'une table - Les clés étrangères

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 données Bases de données   J-L Hainaut 2009 15
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création d'une table
4. Le langage SQL avancé 1.4 Modification d'une table

1.3 Création d'une table - Les clés étrangères

Variante : contraintes nommées

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 données Bases de données   J-L Hainaut 2009 16
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création d'une table
4. Le langage SQL avancé 1.4 Modification d'une table

1.3 Création d'une table - Suppression d'une table

Suppression d'une table

drop table COMMANDE;

Attention, opération sous haute surveillance !


• la table ne doit plus être référencée par une clé étrangère; la table
DETAIL (ou sa clé étrangère vers COMMANDE) doit avoir été
supprimée

azerty
II. Utilisation des bases de données Bases de données   J-L Hainaut 2009 17
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création 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 données Bases de données   J-L Hainaut 2009 18
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création 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; uter


ajo

r
alter table PRODUIT drop column PRIX; ri me
upp
s

ur
vale
r t
alter table CLIENT modify column CAT set '00'; difie éfau
mo a r d
p

ur
v ale
r
alter table CLIENT modify column CAT drop default; ri me faut
pp dé
su par

azerty
II. Utilisation des bases de données Bases de données   J-L Hainaut 2009 19
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création 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 données Bases de données   J-L Hainaut 2009 20
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création d'une table
4. Le langage SQL avancé 1.4 Modification d'une table

1.4 Modification d'une table - Contraintes

Variantes : contraintes nommées

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 données Bases de données   J-L Hainaut 2009 21
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création 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 nommée

alter table PROSPECT


drop constraint PROPK;

azerty
II. Utilisation des bases de données Bases de données   J-L Hainaut 2009 22
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création 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 données Bases de données   J-L Hainaut 2009 23
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création 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;
NOM
ADRESSE
LOCALITE
CAT[0-1]
COMPTE
id: NCLI
acc
acc: LOCALITE create index XCLI_LOC on CLIENT (LOCALITE);

é
o nn
create index XCLI_LOC on CLIENT (LOCALITE asc); x ord
i n de
si

drop index XCLI_LOC;

azerty
II. Utilisation des bases de données Bases de données   J-L Hainaut 2009 24
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création 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

CLI_PRO_DAT
create dbspace CLI_PRO_DAT;
CLIENT
PRODUIT

create table CLIENT ( . . . ) in CLI_PRO_DAT;

v ide
drop dbspace CLI_PRO_DAT; ce
s pa
e
si

azerty
II. Utilisation des bases de données Bases de données   J-L Hainaut 2009 25
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création d'une table
4. Le langage SQL avancé 1.4 Modification d'une table

1.6 EXEMPLE

azerty
II. Utilisation des bases de données Bases de données   J-L Hainaut 2009 26
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création d'une table
4. Le langage SQL avancé 1.4 Modification d'une table

1.6 Exemple - Le schéma

Traduire ce schéma 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 données Bases de données   J-L Hainaut 2009 27
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création d'une table
4. Le langage SQL avancé 1.4 Modification d'une table

1.6 Exemple - Le schéma et les espaces de stockage

create schema CLICOM;

create dbspace CLI_PRO_DAT;

create dbspace COM_DAT;

azerty
II. Utilisation des bases de données Bases de données   J-L Hainaut 2009 28
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création 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 données Bases de données   J-L Hainaut 2009 29
1. Le langage SQL-DDL 1.1 Introduction 1.5 Les structures physiques
2. Le langage SQL DML (1) 1.2 Création d'un schéma 1.6 Exemple
3. Le langage SQL DML (2) 1.3 Création 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 données Bases de données   J-L Hainaut 2009 30
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 données Bases de données   J-L Hainaut 2009 31
azerty Bases de données   J-L Hainaut 2009 32

Вам также может понравиться