Sunteți pe pagina 1din 34

Apprendre le langage SQL - Le DDL - 1 / 34 -

Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
Apprendre le langage SQL par lexemple
Partie 1 : le DDL
Ce document est publi sous licence Creative Commons CC-by-nc-nd. Il ne
peut ni tre modifi, ni faire lobet dune e!ploitation commerciale par un
centre de formation, une collectivit territoriale, une association ou une
entreprise.
Apprendre le langage SQL - Le DDL - ) / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
Historique
1*+*-1*,' : "d#ar $ran% Codd, salari dI&' dfinit les principes du
mod(le relationnel.
1*,+ : cration du )"*+", par I&'
-.// :*+", 0*+"ry ,an#ua#e1, par 2oo% en -.//
*&" 0*uery &y "!ample1, par 2loof
1*-1 : )*, 0)tructured *uery ,an#ua#e 1, par I&'
Apprendre le langage SQL - Le DDL - 3 / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
Normalisation du SQL
-.34 : )*, 34 - 56)I
-.3. : I)7 et 56)I
-..8 : )*, 8 - I)7 et 56)I
1*** : )*, 9 - I)7
Apprendre le langage SQL - Le DDL - 4 / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
Les 3 sous-langages
,e )*, est un lan#a#e dont lobet principal est de pouvoir manipuler les
donnes dun syst(me dinformations.
LDD 0,an#a#e de :finition de :onnes1 ou DDL 0:ata :efinition
,an#ua#e1
Cration, modification et suppression des obets 0tables, inde!, s;uences, dclencheurs
ou tri##ers, vues, tri##ers, synonymes, liens de bases de donnes, etc.1
C./A0/, AL0/., D.12
L3D 0,an#a#e de 'anipulation de :onnes1 ou D3L 0:ata 'anipulation
,an#ua#e1
5out, modification, suppression et e!traction des donnes
45S/.0, 62DA0/, D/L/0/, S/L/C0
LCD 0,an#a#e de Contr<le de :onnes1 ou CDL 0Control :ata ,an#ua#e1
=estion des droits, validation des donnes
7.A50, ./%18/, C13340, .1LL9AC8
Apprendre le langage SQL - Le DDL - ( / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
Dinition dune !ase de donnes
+ne base de donnes est un dispositif de stoc%a#e des donnes - total ou
partiel - du syst(me dinformation de lentreprise.
Les o!"e#tis $liste non ex%austi&e'
-. 5ssurer la !o:;ren!e des donnes
8. /"iter la redondan!e des informations
9. /<traire les informations
>. S;!uriser lacc(s au! donnes
?. 5ssurer l=ind;pendan!e totale entre les donn;es et les traitements
,es bases de donnes relationnelles obissent @ lal#(bre relationnel. ,es
bases 6o)*, se diffrencient par un stoc%a#e en mode colonne.
Apprendre le langage SQL - Le DDL - + / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
(ar#% de la !ase de donnes relationnelles
6ous ne disposons ;ue de vieilles donnes sur les parts de march des bases
de donnes relationnelles commerciales A

Bableau e!trait de 2dnet
Apprendre le langage SQL - Le DDL - , / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
Les !ases )pen Sour#e
Il est touours de comparer sur la base de leurs pri! des produits
commerciau! @ des produits 7pen )ource dont la valeur dachat est nulle A
'y)*,, ;ui ne #(re touours pas @ ce our les contraintes de type CC"CD A
Eost#re)*,, un for% de I6=F"), ;ui a su prendre beaucoup dautonomie
In#res, un des tout meilleurs moteurs de bases de donnes relationnelles
$irebird, un for% de Interbase
Apprendre le langage SQL - Le DDL - - / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
Les usages en mati*re de !ases de donnes
,e site :&eaver a rcemment un
sonda#e or#anis sur les usa#es en
mati(re de bases de donnes. Il en
ressort ;ue 'y)*, serait en -
(re

position, devant 7racle, puis e!
ae;uo 'icrosoft )*, )erver et
Eost#re)*,.

Apprendre le langage SQL - Le DDL - * / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
Appro#%e s+stmique
Systme de pilotage ou de gestion
Systme dinformation
Systme oprant
Flux
entrants
Biens
et services
Flux
sortants
Biens
et services
Fournisseurs Clients
Flux
dinformations
Flux
dinformations
Systme de pilotage ou de gestion
Systme dinformation
Systme oprant
Flux
entrants
Biens
et services
Flux
sortants
Biens
et services
Fournisseurs Clients
Flux
dinformations
Flux
dinformations

Apprendre le langage SQL - Le DDL - 1' / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
(,-.S,
,a mthode '"FI)" est une mthode danalyse du fonctionnement des
or#anisations ;ui sinspire en tr(s #rande partie de lapproche systmi;ue.
Initie par lI6FI5, elle a vu le our en -./..
-. 1#>e!ti?s assi#ns par la direction
8. Fecueil des donnes par des inter"iews des oprationnels
9. $ormalisation par un di!tionnaire des donn;es
>. 3od@le Con!eptuel des Donn;es
?. 3od@le LogiAue des Donn;es
4. 3od@le 2:$siAue des Donn;es
Eour plus dinformation @ ce suet, vous pouveG consulter mon support de
cours relatif @ 'erise.
Apprendre le langage SQL - Le DDL - 11 / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
Pr-requis
Eour pouvoir mettre en Huvre les e!ercices prsents dans ce document,
vous devreG installer le moteur de base de donnes 7racle :atabase --#,
ainsi ;ue )*, :eveloper 9. Ces lo#iciels sont tlchar#eables, apr(s vous
tre inscrit, @ partir des liens suivants :
7racle )*, :eveloper
7racle :atabase )oftware :ownloads
7racle I:D
Bous les lo#iciels 7racle sinstallent indiffremment sur Jindows ou sur
,inu!.
Do#umentation
Internet re#or#e dinformations sur le )*,. Ie vous recommande, pour ma
part, daller @ la source : :ocumentation )*, 7racle :atabase --#F8 )*,
Apprendre le langage SQL - Le DDL - 1) / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
Distri!utions Linux supportes par )ra#le
7racle ne prend en char#e le support ;ue sur trois distributions ,inu! :
1ra!le /nterprise Linu<, base sur Fed Cat
.ed Bat
S6S/ Linu< /nterprise Ser"er : 7racle :atabase -K # et -- # sont
certifies pour la ),") -K
)ource : Linu< 1ra!le FAQ
Apprendre le langage SQL - Le DDL - 13 / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
(ise en /u&re de SQL De&eloper
SQL De"eloper 9 e!i#e ;ue vous disposieG du CD8 4 0Iava )" :evelopment
Dit fourni par 7racle1 sur votre syst(me de!ploitation. 7racle propose un
pac%a#e complet comprenant )*, :eveloper et le I:D, uni;uement pour la
version 98 bits.
Apprendre le langage SQL - Le DDL - 14 / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
0onnexion SQL De&eloper
5pr(s avoir installe la base 7racle, vous deveG lancer 7racle )*, :eveloper.

Lous deveG reprendre lidentificateur de linstance ;ue vous aveG choisi lors
de linstallation d7racle. ,utilisateur )M) contrairement @ )M)B"' doit se
connecter avec le r<le )M):&5.
Apprendre le langage SQL - Le DDL - 1( / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
Le (od*le P%+sique des Donnes
,e!emple sur le;uel nous nous appuierons est une application de =estion
de la Felation Client(le, base sur deu! entits dans le 'od(le Conceptuel
des :onnes, transformes en tables dans le 'od(le Ehysi;ue des :onnes.

Apprendre le langage SQL - Le DDL - 1+ / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
0ration dun ta!lespa#e
,e tablespace est un espace de dis;ue lo#i;ue. Conformment au mod(le I)7
relatif au! bases de donnes, son obet est disoler le niveau utilisateur
0::,1 du niveau physi;ue 0syst(me de fichiers1.
CREATE TABLESPACE crm CREATE TABLESPACE crm CREATE TABLESPACE crm CREATE TABLESPACE crm
DATAFILE 'd: DATAFILE 'd: DATAFILE 'd: DATAFILE 'd:\ \\ \oracle oracle oracle oracle\ \\ \oradata oradata oradata oradata\ \\ \orcl orcl orcl orcl\ \\ \crm01.dbf' SIZE 1! crm01.dbf' SIZE 1! crm01.dbf' SIZE 1! crm01.dbf' SIZE 1!
,e moteur Inno:& sous 'y)*, emploie le concept despace de dis;ue
lo#i;ue. 'ais il est uni;ue.
Apprendre le langage SQL - Le DDL - 1, / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
0ration dun s#%ma $utilisateur'
+n schma est lensemble des obets de lapplication. )ous 7racle, le schma
est aussi un utilisateur. +ne fois les obets de lapplication cre, le compte
de lutilisateur sera dsactiv.
CREATE "SER crm IDE#TIFIED B$ crm CREATE "SER crm IDE#TIFIED B$ crm CREATE "SER crm IDE#TIFIED B$ crm CREATE "SER crm IDE#TIFIED B$ crm
DEFA"LT TABLESPACE CR DEFA"LT TABLESPACE CR DEFA"LT TABLESPACE CR DEFA"LT TABLESPACE CR
TEP%RAR$ TABLESPACE TEP TEP%RAR$ TABLESPACE TEP TEP%RAR$ TABLESPACE TEP TEP%RAR$ TABLESPACE TEP
&"%TA "#LIITED %# crm! &"%TA "#LIITED %# crm! &"%TA "#LIITED %# crm! &"%TA "#LIITED %# crm!
:ans dautres moteurs tels ;ue 'y)*,, il faut crer une base de donnes @
laide de linstruction C./A0/ DA0A9AS/. )ous 7racle, la base, cest
linstance, le service N ou dmon - ;ui lui est associ A ,a notion de )CC"'5
introduite rcemment dans 'y)*, est proche de la notion de :5B5&5)".
Apprendre le langage SQL - Le DDL - 1- / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
Les pri&il*ges s+st*me
Eour pouvoir crer des obets, il faut disposer de privil(#es.
'RA#T CREATE SESSI%# T% crm ! 'RA#T CREATE SESSI%# T% crm ! 'RA#T CREATE SESSI%# T% crm ! 'RA#T CREATE SESSI%# T% crm !
'RA#T CREATE TABLE T% crm ! 'RA#T CREATE TABLE T% crm ! 'RA#T CREATE TABLE T% crm ! 'RA#T CREATE TABLE T% crm !
'RA#T CREATE SE&"E#CE T% crm ! 'RA#T CREATE SE&"E#CE T% crm ! 'RA#T CREATE SE&"E#CE T% crm ! 'RA#T CREATE SE&"E#CE T% crm !
'RA#T CREATE TRI''ER T% crm ! 'RA#T CREATE TRI''ER T% crm ! 'RA#T CREATE TRI''ER T% crm ! 'RA#T CREATE TRI''ER T% crm !
'RA#T CREATE S$#%#$ T% crm ! 'RA#T CREATE S$#%#$ T% crm ! 'RA#T CREATE S$#%#$ T% crm ! 'RA#T CREATE S$#%#$ T% crm !
'RA#T CREATE (IE) T% crm ! 'RA#T CREATE (IE) T% crm ! 'RA#T CREATE (IE) T% crm ! 'RA#T CREATE (IE) T% crm !
'RA#T CREATE DATABASE LI#* T% crm ! 'RA#T CREATE DATABASE LI#* T% crm ! 'RA#T CREATE DATABASE LI#* T% crm ! 'RA#T CREATE DATABASE LI#* T% crm !
Lous pouveG aussi passer par un r<le, ;ui permet dassocier des privil(#es @
plusieurs utilisateurs.
Apprendre le langage SQL - Le DDL - 1* / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
Prin#ipaux t+pe de donnes
Datat$pe 0$pe 0aille ma<imale
&,7& &inaire 08
98
-- octets1 O 0taille bloc1
CC5F P0siGe P&MB" Q CC5FR1R Caract(re 8KKK octets
,76= Caract(re 8
9-
-- octets
6CC5FP0siGe1R Caract(re - @ 8KKK octets
L5FCC5F80siGe P&MB" Q CC5FR1 Caract(re >KKK octets
6L5FCC5F80siGe1
Caract(re
+B$
>KKK octets.
:5B" :ate / octets
6+'&"FP0precision P, scaleRR1 6umri;ue
Ercision : - @ 93
"chelle : -3> to -8/.
Apprendre le langage SQL - Le DDL - )' / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
0ontraintes
"lles sont issues de lanalyse 3erise et des r@gles de gestion du
dictionnaire de donnes.
-. ,a !l; primaire
"lle identifie la li#ne de mani(re uni;ue dans la mise en relation de
lenre#istrement avec les li#nes dune autre table
8. ,a !ontrainte d=uni!it;
"lle vite davoir des doublons sur le contenu des champs, en dehors de
ceu! ;ui constituent la cl primaire.
9. ,es !ontraintes CB/C8
"lles permettent dassurer la cohrence des donnes saisies.
>. ,es !ontraintes d=int;grit; r;?;rentielle
"lles vitent dinscrire des donnes dans une table S fille T, si la rfrence
ne!iste pas pralablement dans la table S parent T.
Apprendre le langage SQL - Le DDL - )1 / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
0ration de ta!le
CREATE TABLE cl+e,t CREATE TABLE cl+e,t CREATE TABLE cl+e,t CREATE TABLE cl+e,t
- -- -
cl+e,t.+d #"BER-/0 010 cl+e,t.+d #"BER-/0 010 cl+e,t.+d #"BER-/0 010 cl+e,t.+d #"BER-/0 010
cl+e,t.ra+2o,2oc+ale (ARC3AR4-5010 cl+e,t.ra+2o,2oc+ale (ARC3AR4-5010 cl+e,t.ra+2o,2oc+ale (ARC3AR4-5010 cl+e,t.ra+2o,2oc+ale (ARC3AR4-5010
cl+e,t.adre22e (ARC3AR4-5010 cl+e,t.adre22e (ARC3AR4-5010 cl+e,t.adre22e (ARC3AR4-5010 cl+e,t.adre22e (ARC3AR4-5010
cl+e,t.c6 #"BER-50 010 cl+e,t.c6 #"BER-50 010 cl+e,t.c6 #"BER-50 010 cl+e,t.c6 #"BER-50 010
cl+e,t cl+e,t cl+e,t cl+e,t.7+lle (ARC3AR4-5010 .7+lle (ARC3AR4-5010 .7+lle (ARC3AR4-5010 .7+lle (ARC3AR4-5010
C%#STRAI#T cl+e,t.68 PRIAR$ *E$-cl+e,t.+d10 C%#STRAI#T cl+e,t.68 PRIAR$ *E$-cl+e,t.+d10 C%#STRAI#T cl+e,t.68 PRIAR$ *E$-cl+e,t.+d10 C%#STRAI#T cl+e,t.68 PRIAR$ *E$-cl+e,t.+d10
C%#STRAI#T cl+e,t.98 "#I&"E-cl+e,t.ra+2o,2oc+ale0cl+e,t.c610 C%#STRAI#T cl+e,t.98 "#I&"E-cl+e,t.ra+2o,2oc+ale0cl+e,t.c610 C%#STRAI#T cl+e,t.98 "#I&"E-cl+e,t.ra+2o,2oc+ale0cl+e,t.c610 C%#STRAI#T cl+e,t.98 "#I&"E-cl+e,t.ra+2o,2oc+ale0cl+e,t.c610
C%#STRAI#T cl+e,t.c:8.c6 C3EC*-cl+e,t.c6 BET)EE# 1000 A#D ;5;;;10 C%#STRAI#T cl+e,t.c:8.c6 C3EC*-cl+e,t.c6 BET)EE# 1000 A#D ;5;;;10 C%#STRAI#T cl+e,t.c:8.c6 C3EC*-cl+e,t.c6 BET)EE# 1000 A#D ;5;;;10 C%#STRAI#T cl+e,t.c:8.c6 C3EC*-cl+e,t.c6 BET)EE# 1000 A#D ;5;;;10
C%#STRAI#T cl+e,t.c:8.+d C3EC*-CLIE#T.CP IS #%T #"LL10 C%#STRAI#T cl+e,t.c:8.+d C3EC*-CLIE#T.CP IS #%T #"LL10 C%#STRAI#T cl+e,t.c:8.+d C3EC*-CLIE#T.CP IS #%T #"LL10 C%#STRAI#T cl+e,t.c:8.+d C3EC*-CLIE#T.CP IS #%T #"LL10
C%# C%# C%# C%#STRAI#T cl+e,t.c:8.ra+2o,2oc+ale C3EC*-cl+e,t.ra+2o,2oc+ale IS #%T #"LL10 STRAI#T cl+e,t.c:8.ra+2o,2oc+ale C3EC*-cl+e,t.ra+2o,2oc+ale IS #%T #"LL10 STRAI#T cl+e,t.c:8.ra+2o,2oc+ale C3EC*-cl+e,t.ra+2o,2oc+ale IS #%T #"LL10 STRAI#T cl+e,t.c:8.ra+2o,2oc+ale C3EC*-cl+e,t.ra+2o,2oc+ale IS #%T #"LL10
C%#STRAI#T cl+e,t.c:8.7+lle C3EC*-cl+e,t.7+lle IS #%T #"LL1 C%#STRAI#T cl+e,t.c:8.7+lle C3EC*-cl+e,t.7+lle IS #%T #"LL1 C%#STRAI#T cl+e,t.c:8.7+lle C3EC*-cl+e,t.7+lle IS #%T #"LL1 C%#STRAI#T cl+e,t.c:8.7+lle C3EC*-cl+e,t.7+lle IS #%T #"LL1
1! 1! 1! 1!
Apprendre le langage SQL - Le DDL - )) / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
Numrotation automatique
Contrairement @ la plupart des moteurs de base de donnes, 7racle ne
poss(de pas de type de donnes ;ui permet la numrotation automati;ue de
la colonne ;ui constitue la cl primaire dune table A
-. Il faut dabord !r;er une s;Auen!e.
8. Il faut ensuite !r;er un trigger 0un dclencheur1 N un pro#ramme
vnementiel N ;ui incrmentera la colonne avec la valeur de la
s;uence.
Apprendre le langage SQL - Le DDL - )3 / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
0ration de squen#e
Lous deveG fi!er la valeur minimale, lincrment et, au besoin, la valeur
ma!imale 0'5UL5,+"1.
CREATE SE&"E#CE cl+e,t.2e< I#CREE#T B$ 1 I#(AL"E CREATE SE&"E#CE cl+e,t.2e< I#CREE#T B$ 1 I#(AL"E CREATE SE&"E#CE cl+e,t.2e< I#CREE#T B$ 1 I#(AL"E CREATE SE&"E#CE cl+e,t.2e< I#CREE#T B$ 1 I#(AL"E
1! 1! 1! 1!
Apprendre le langage SQL - Le DDL - )4 / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
0ration dun d#len#%eur $trigger'
CREATE %R REPLACE CREATE %R REPLACE CREATE %R REPLACE CREATE %R REPLACE
TRI''ER TRI''ER TRI''ER TRI''ER cl+e,t.tr= BEF%RE I#SERT %# cl+e,t cl+e,t.tr= BEF%RE I#SERT %# cl+e,t cl+e,t.tr= BEF%RE I#SERT %# cl+e,t cl+e,t.tr= BEF%RE I#SERT %# cl+e,t
F%R EAC3 R%) F%R EAC3 R%) F%R EAC3 R%) F%R EAC3 R%)
BE'I# BE'I# BE'I# BE'I#
IF :#E).cl+e,t.+d IS #"LL T3E# IF :#E).cl+e,t.+d IS #"LL T3E# IF :#E).cl+e,t.+d IS #"LL T3E# IF :#E).cl+e,t.+d IS #"LL T3E#
SELECT cl+e,t.2e<.#E>T(AL I#T% :#E).cl+e,t.+d SELECT cl+e,t.2e<.#E>T(AL I#T% :#E).cl+e,t.+d SELECT cl+e,t.2e<.#E>T(AL I#T% :#E).cl+e,t.+d SELECT cl+e,t.2e<.#E>T(AL I#T% :#E).cl+e,t.+d
FR% D"AL! FR% D"AL! FR% D"AL! FR% D"AL!
E#D IF! E#D IF! E#D IF! E#D IF!
E#D! E#D! E#D! E#D!
Apprendre le langage SQL - Le DDL - )( / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
0ration dun index
,e r<le dun inde! est avant tout dacclrer la recherche.
CREATE I#D CREATE I#D CREATE I#D CREATE I#DE> cl+e,t.+d? %# CLIE#T -cl+e,t.7+lle1! E> cl+e,t.+d? %# CLIE#T -cl+e,t.7+lle1! E> cl+e,t.+d? %# CLIE#T -cl+e,t.7+lle1! E> cl+e,t.+d? %# CLIE#T -cl+e,t.7+lle1!
Apprendre le langage SQL - Le DDL - )+ / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
0ontrainte dintgrit rrentielle
CREATE TABLE co,tact CREATE TABLE co,tact CREATE TABLE co,tact CREATE TABLE co,tact
- -- -
co,tact.+d #"BER-/0 010 co,tact.+d #"BER-/0 010 co,tact.+d #"BER-/0 010 co,tact.+d #"BER-/0 010
co,tact.,om (ARC3AR4-@010 co,tact.,om (ARC3AR4-@010 co,tact.,om (ARC3AR4-@010 co,tact.,om (ARC3AR4-@010
co,tact.6re,om (ARC3AR4-401 0 co,tact.6re,om (ARC3AR4-401 0 co,tact.6re,om (ARC3AR4-401 0 co,tact.6re,om (ARC3AR4-401 0
co,tact.fo,ct+o, (ARC3AR4-5010 co,tact.fo,ct+o, (ARC3AR4-5010 co,tact.fo,ct+o, (ARC3AR4-5010 co,tact.fo,ct+o, (ARC3AR4-5010
cl+e,t.+d #"BER-/0 010 cl+e,t.+d #"BER-/0 010 cl+e,t.+d #"BER-/0 010 cl+e,t.+d #"BER-/0 010
C%#STRAI#T co,tact C%#STRAI#T co,tact C%#STRAI#T co,tact C%#STRAI#T co,tact.68 PRIAR$ *E$-co,tact.+d10 .68 PRIAR$ *E$-co,tact.+d10 .68 PRIAR$ *E$-co,tact.+d10 .68 PRIAR$ *E$-co,tact.+d10
C%#STRAI#T co,tact.98 C%#STRAI#T co,tact.98 C%#STRAI#T co,tact.98 C%#STRAI#T co,tact.98
"#I&"E-co,tact.,om0co,tact.6re,om0co,tact.fo,ct+o,0cl+e,t.+d10 "#I&"E-co,tact.,om0co,tact.6re,om0co,tact.fo,ct+o,0cl+e,t.+d10 "#I&"E-co,tact.,om0co,tact.6re,om0co,tact.fo,ct+o,0cl+e,t.+d10 "#I&"E-co,tact.,om0co,tact.6re,om0co,tact.fo,ct+o,0cl+e,t.+d10
C%#STRAI#T co,tact.f8.cl+e,t F%REI'# *E$-cl+e,t.+d1 REFERE#CES CLIE#T C%#STRAI#T co,tact.f8.cl+e,t F%REI'# *E$-cl+e,t.+d1 REFERE#CES CLIE#T C%#STRAI#T co,tact.f8.cl+e,t F%REI'# *E$-cl+e,t.+d1 REFERE#CES CLIE#T C%#STRAI#T co,tact.f8.cl+e,t F%REI'# *E$-cl+e,t.+d1 REFERE#CES CLIE#T
-cl+e,t.+d10 -cl+e,t.+d10 -cl+e,t.+d10 -cl+e,t.+d10
C%#STRAI#T co,tact.c:8.+d C3EC*-co,tact.+d IS #%T #"LL10 C%#STRAI#T co,tact.c:8.+d C3EC*-co,tact.+d IS #%T #"LL10 C%#STRAI#T co,tact.c:8.+d C3EC*-co,tact.+d IS #%T #"LL10 C%#STRAI#T co,tact.c:8.+d C3EC*-co,tact.+d IS #%T #"LL10
C% C% C% C%#STRAI#T co,tact.c:8.,om C3EC*-co,tact.,om IS #%T #"LL10 #STRAI#T co,tact.c:8.,om C3EC*-co,tact.,om IS #%T #"LL10 #STRAI#T co,tact.c:8.,om C3EC*-co,tact.,om IS #%T #"LL10 #STRAI#T co,tact.c:8.,om C3EC*-co,tact.,om IS #%T #"LL10
C%#STRAI#T co,tact.c:8.6re,om C3EC*-co,tact.6re,om IS #%T #"LL1 C%#STRAI#T co,tact.c:8.6re,om C3EC*-co,tact.6re,om IS #%T #"LL1 C%#STRAI#T co,tact.c:8.6re,om C3EC*-co,tact.6re,om IS #%T #"LL1 C%#STRAI#T co,tact.c:8.6re,om C3EC*-co,tact.6re,om IS #%T #"LL1
1! 1! 1! 1!
Apprendre le langage SQL - Le DDL - ), / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
(odii#ation de ta!le
A"out de #%amp
ALTER TABLE co,tact ALTER TABLE co,tact ALTER TABLE co,tact ALTER TABLE co,tact
ADD -co,tact.ema+l (ARC3AR4-1001 1! ADD -co,tact.ema+l (ARC3AR4-1001 1! ADD -co,tact.ema+l (ARC3AR4-1001 1! ADD -co,tact.ema+l (ARC3AR4-1001 1!
A"out de #ontrainte
ALTER TABLE co,tac ALTER TABLE co,tac ALTER TABLE co,tac ALTER TABLE co,tact tt t
ADD C%#STRAI#T co,tact.c:8.ema+l C3EC* ADD C%#STRAI#T co,tact.c:8.ema+l C3EC* ADD C%#STRAI#T co,tact.c:8.ema+l C3EC* ADD C%#STRAI#T co,tact.c:8.ema+l C3EC*
-RE'E>P.LI*E-co,tact.ema+l0'Aa -RE'E>P.LI*E-co,tact.ema+l0'Aa -RE'E>P.LI*E-co,tact.ema+l0'Aa -RE'E>P.LI*E-co,tact.ema+l0'AaB BB BZ0 Z0 Z0 Z0B BB B; ;; ;B BB B. .. .\ \\ \.CDAa .CDAa .CDAa .CDAaB BB BZ0 Z0 Z0 Z0B BB B; ;; ;B BB B
. .. .\ \\ \.C .C .C .C\ \\ \.-frEor=EcomE,et1F'0 '+'11! .-frEor=EcomE,et1F'0 '+'11! .-frEor=EcomE,et1F'0 '+'11! .-frEor=EcomE,et1F'0 '+'11!
Apprendre le langage SQL - Le DDL - )- / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
-enommer une #olonne
,e fait de renommer une colonne peut amener @ supprimer les contraintes
;ui en dpendent pralablement.
ALTER T ALTER T ALTER T ALTER TABLE co,tact ABLE co,tact ABLE co,tact ABLE co,tact
DR%P C%#STRAI#T co,tact.c:8.ema+l! DR%P C%#STRAI#T co,tact.c:8.ema+l! DR%P C%#STRAI#T co,tact.c:8.ema+l! DR%P C%#STRAI#T co,tact.c:8.ema+l!

ALTER TABLE co,tact RE#AE C%L"# co,tact.ema+l T% ALTER TABLE co,tact RE#AE C%L"# co,tact.ema+l T% ALTER TABLE co,tact RE#AE C%L"# co,tact.ema+l T% ALTER TABLE co,tact RE#AE C%L"# co,tact.ema+l T%
co,tact.ma+l! co,tact.ma+l! co,tact.ma+l! co,tact.ma+l!

ALTER TABLE co,tact ALTER TABLE co,tact ALTER TABLE co,tact ALTER TABLE co,tact
ADD C%#STRAI#T co,tact.c:8.ema+l C3EC* ADD C%#STRAI#T co,tact.c:8.ema+l C3EC* ADD C%#STRAI#T co,tact.c:8.ema+l C3EC* ADD C%#STRAI#T co,tact.c:8.ema+l C3EC*
-RE'E>P.LI*E-co,tact.ma+l0 'Aa -RE'E>P.LI*E-co,tact.ma+l0 'Aa -RE'E>P.LI*E-co,tact.ma+l0 'Aa -RE'E>P.LI*E-co,tact.ma+l0 'AaB BB BZ0 Z0 Z0 Z0B BB B; ;; ;B BB B. .. .\ \\ \.CDAa .CDAa .CDAa .CDAaB BB BZ0 Z0 Z0 Z0B BB B; ;; ;B BB B
. .. .\ \\ \.C .C .C .C\ \\ \.-frEor=EcomE,et1F'0 '+'11 .-frEor=EcomE,et1F'0 '+'11 .-frEor=EcomE,et1F'0 '+'11 .-frEor=EcomE,et1F'0 '+'11! !! !
Apprendre le langage SQL - Le DDL - )* / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
Autres usages de la #ommande AL1,-
,a commande 5,B"F vous permet, @ titre de!emple, de rduire la place
occupe par une table. Il faut autoriser pralablement le dplacement des
li#nes.
ALTER TABLE cl+e,t E#ABLE R%) %(EE#T! ALTER TABLE cl+e,t E#ABLE R%) %(EE#T! ALTER TABLE cl+e,t E#ABLE R%) %(EE#T! ALTER TABLE cl+e,t E#ABLE R%) %(EE#T!
ALTER TABLE cl+e,t S3RI#* S ALTER TABLE cl+e,t S3RI#* S ALTER TABLE cl+e,t S3RI#* S ALTER TABLE cl+e,t S3RI#* SPACE C%PACT! PACE C%PACT! PACE C%PACT! PACE C%PACT!
ALTER TABLE cl+e,t DISABLE R%) %(EE#T! ALTER TABLE cl+e,t DISABLE R%) %(EE#T! ALTER TABLE cl+e,t DISABLE R%) %(EE#T! ALTER TABLE cl+e,t DISABLE R%) %(EE#T!
"lle permet aussi de reconstruire les inde!.
ALTER I#DE> cl+e,t.68 REB"ILD! ALTER I#DE> cl+e,t.68 REB"ILD! ALTER I#DE> cl+e,t.68 REB"ILD! ALTER I#DE> cl+e,t.68 REB"ILD!
Apprendre le langage SQL - Le DDL - 3' / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
Suppression
,a suppression dune colonne de table se fait par la commande 5,B"F.
ALTER TABLE co,tact ALTER TABLE co,tact ALTER TABLE co,tact ALTER TABLE co,tact
DR%P C%L"# co,tact.ema+ DR%P C%L"# co,tact.ema+ DR%P C%L"# co,tact.ema+ DR%P C%L"# co,tact.ema+l! l! l! l!
,a suppression dune table entraVne celle des obets ;ui lui sont associs, @
savoir les dclencheurs et les inde!.
DR%P TABLE cl+e,t! DR%P TABLE cl+e,t! DR%P TABLE cl+e,t! DR%P TABLE cl+e,t!
,a suppression de la s;uence devra se faire manuellement.
DR%P SE&"E#CE cl+e,t.2e<! DR%P SE&"E#CE cl+e,t.2e<! DR%P SE&"E#CE cl+e,t.2e<! DR%P SE&"E#CE cl+e,t.2e<!
Apprendre le langage SQL - Le DDL - 31 / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
-#upration d2une ta!le supprime
:ans lWenvironnement de lWutilisateur, sous )*, :eveloper, vous disposeG
simplement de la possibilit de rcupration dWune table supprime @ partir
de la corbeille :
Pour &isualiser tous les o!"ets de la #or!eille en SQL:
SELECT G FR% dba.recHcleb+,! SELECT G FR% dba.recHcleb+,! SELECT G FR% dba.recHcleb+,! SELECT G FR% dba.recHcleb+,!
Pour r#uprer les donnes d2une ta!le supprime
FLAS3BAC* TABLE crm.IBI#FC+3>EJ%=R94obK#+IIr%7JLLF0I FLAS3BAC* TABLE crm.IBI#FC+3>EJ%=R94obK#+IIr%7JLLF0I FLAS3BAC* TABLE crm.IBI#FC+3>EJ%=R94obK#+IIr%7JLLF0I FLAS3BAC* TABLE crm.IBI#FC+3>EJ%=R94obK#+IIr%7JLLF0I
T% BEF%RE DR%P RE#AE T% C%#TACT T% BEF%RE DR%P RE#AE T% C%#TACT T% BEF%RE DR%P RE#AE T% C%#TACT T% BEF%RE DR%P RE#AE T% C%#TACT! !! !
Apprendre le langage SQL - Le DDL - 3) / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
Purge
Suppression a&e# purge
)i vous ne souhaiteG pas ;ue votre table aille @ la corbeille :
DR%P TABLE crm.co,tact DR%P TABLE crm.co,tact DR%P TABLE crm.co,tact DR%P TABLE crm.co,tact P"R P"R P"R P"R'E 'E 'E 'E! !! !
Purge d2une ta!le en deux temps
Lous pouveG aussi procder en deu! temps.
DR%P TABLE crm.co,tact! DR%P TABLE crm.co,tact! DR%P TABLE crm.co,tact! DR%P TABLE crm.co,tact!
P"R'E TABLE crm.IBI#Fdf'M)NHNSS%ObEPPC+"6(ALLF0I! P"R'E TABLE crm.IBI#Fdf'M)NHNSS%ObEPPC+"6(ALLF0I! P"R'E TABLE crm.IBI#Fdf'M)NHNSS%ObEPPC+"6(ALLF0I! P"R'E TABLE crm.IBI#Fdf'M)NHNSS%ObEPPC+"6(ALLF0I!
Apprendre le langage SQL - Le DDL - 33 / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
3ider la #or!eille
Purge des o!"ets d2un utilisateur
P"R'E recHcleb+,! P"R'E recHcleb+,! P"R'E recHcleb+,! P"R'E recHcleb+,!
Purge de la #or!eille
P"R'E dba. P"R'E dba. P"R'E dba. P"R'E dba.recHcleb+,! recHcleb+,! recHcleb+,! recHcleb+,!
Apprendre le langage SQL - Le DDL - 34 / 34 -
Denis Szalkowski Formateur Consultant http://www.dsfc.net Li!en!e Creati"e Commons CC-#$-n!-nd %ersion 1&' - 1(/')/)'1)
A#ti&er 4 Dsa#ti&er la #or!eille
Dsa#ti&er la #or!eille
ALTE ALTE ALTE ALTER SESSI%# SET recHcleb+, L %FF! R SESSI%# SET recHcleb+, L %FF! R SESSI%# SET recHcleb+, L %FF! R SESSI%# SET recHcleb+, L %FF!
ALTER S$STE SET recHcleb+, L %FF! ALTER S$STE SET recHcleb+, L %FF! ALTER S$STE SET recHcleb+, L %FF! ALTER S$STE SET recHcleb+, L %FF!
A#ti&er la #or!eille
ALTER SESSI%# SET recHcleb+, L %#! ALTER SESSI%# SET recHcleb+, L %#! ALTER SESSI%# SET recHcleb+, L %#! ALTER SESSI%# SET recHcleb+, L %#!
AL AL AL ALTER S$STE SET recHcleb+, L %#! TER S$STE SET recHcleb+, L %#! TER S$STE SET recHcleb+, L %#! TER S$STE SET recHcleb+, L %#!