Vous êtes sur la page 1sur 8

10/03/2015

SQL / langage de dfinition des donnes

Le sous-langage DDL de SQL permet la cration et la modification des structures


de donnes.
Langage standardis (ISO/CEI 9075:)

Les diteurs de SGBD ont pris beaucoup de liberts :


concepts non repris
concept additionnels non standard

PLAY

interprtation personnelle de certains concepts


Certains concepts sont ignors par le standard

1. LE LANGAGE SQL DDL

Cration d'un schma


Cration d'une table
Modification d'une table
Les structures physiques

PLAY

10/03/2015

1.3 CREATION D'UNE TABLE

Tables, colonnes et domaines


Les identifiants
Les cls trangres
Suppression d'une table

PLAY

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

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


NOM
ADRESSE
LOCALITE
CAT
COMPTE

PLAY

char(10),
char(32),
char(60),
char(30),
char(2),
decimal(9,2) );

10/03/2015

Les diffrents types de base

smallint, integer, decimal, numeric


real, float, double

numrique

exact
approch

chane de

bits

longueur fixe
longueur variable
longueur indfinie

bit
bit varying
BLOB

caractres

longueur fixe
longueur variable
longueur indfinie

char
character varying
CLOB

temps

boolen

date
instant
instant dat
intervalle

PLAY

date
time
timestamp
interval
boolean

Les colonnes obligatoires et valeurs par dfaut

create table CLIENT (


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

null,
null,
null,
null,

PLAY

not null

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

10/03/2015

Les identifiants primaires (primary key)

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

create table CLIENT ( NCLI


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

null,
null,
null,
null,

PLAY

not null,

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
NOM
char(32) not
ADRESSE char(60) not
LOCALITE char(30) not
CAT
char(2),
COMPTE
decimal(9,2)
primary key (NCLI),
unique (NOM) );

null,
null,
null,
null,

PLAY

not null,

10/03/2015

Les cls trangres

COMMANDE
NCOM
DATECOM
NCLI
id: NCOM
ref : NCLI

CLIENT
NCLI
NOM
ADRESSE
LOCALITE
CAT[0-1]
COMPTE
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);

PLAY

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


foreign key (NOM) references CLIENT(NOM)

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);

PLAY

create table COMMANDE (


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

10/03/2015

Suppression d'une table

drop table COMMANDE;

la table ne doit plus tre rfrence par une cl trangre.

PLAY

Ex craton

MODIFICATION D'UNE TABLE

a) Ajout, retrait et modification d'une colonne


b) Ajout et retrait d'une contrainte

PLAY

10/03/2015

Ajout, retrait et modification d'une colonne

alter table ETUDIANT add column NAISSANCE date;

alter table ETUDIANT drop column Age;

PLAY
alter table ETUDIANT modify column Pays set Maroc';

alter table ETUDIANT modify column Pays drop default;

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 ;

PLAY

10/03/2015

Exemple - Les tables


create table CLIENT (

NCLI
NOM
ADRESSE
LOCALITE
CAT
COMPTE
primary key

char(10) not null,


char(32) not null,
char(60) not null,
char(30) not null,
char(2),
decimal(9,2) not null,
(NCLI) ) in CLI_PRO_DAT;

create table PRODUIT ( NPRO


LIBELLE
PRIX
QSTOCK
primary key

char(15) not null,


char(60) not null,
decimal(6) not null,
decimal(8) not null,
(NPRO) ) in CLI_PRO_DAT;

create table COMMANDE (NCOM


NCLI
DATECOM
primary key
foreign key

char(12) not null,


char(10) not null,
date not null,
(NCOM),
(NCLI) references CLIENT) in COM_DAT;

PLAY

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;