Cours_SGBDR_chap1&2
description
Transcript of Cours_SGBDR_chap1&2
-
1
Universit Mohammed V- Rabat
Facult des Sciences Juridiques, Economiques et Sociales- Agdal
Professeur : Karim DOUMI
Matire : Informatique applique
Niveau : Semestre 4
Les systmes de Gestion
de Bases de Donnes
relationnels
Niveau 1
Anne universitaire 2014-2015
-
2
-
3
Chapitre 1 : Les tables
-
4
Les Systmes de Gestion de Base de Donnes
1- La Base de Donnes :
Une base de donnes est un ensemble structur de donnes enregistres sur des supports
accessibles par lordinateur pour satisfaire simultanment plusieurs utilisateurs de faon
slective et en un temps convenable. Elle doit avoir un certain nombre de caractristiques :
Donnes structures : les informations contenues dans une base de donnes sont rparties en
enregistrements, chaque enregistrement ayant une structure bien dfinie.
Donnes non redondantes : Une mme information ne sera pas rpte plusieurs fois dans la
base de donnes.
Donnes cohrentes : Il ne doit pas tre permis denregistrer dans une base des informations
incohrentes entre elles.
Donnes accessibles directement selon de multiples critres.
Indpendance des programmes et des donnes : La base de donnes doit tre indpendante
des programmes qui y ont accs, on doit pouvoir utiliser un autre programme pour traiter
diffremment ces donnes sans avoir toucher ces donnes.
Scurit des donnes stockes : la base de donnes doit permettre un systme de scurit
permettant de grer les droits daccs aux informations par les utilisateurs.
2- Le Systme de Gestion de Bases de Donnes
Un Systme de Gestion de Bases de Donnes (S.G.B.D.) reprsente un ensemble coordonn de
logiciels qui permet de dcrire, manipuler, traiter les ensembles de donnes formant la base. Il
doit galement assurer la scurit et la confidentialit des donnes dans un environnement o de
nombreux utilisateurs ayant des besoins varis peuvent interagir simultanment sur ces donnes.
Il doit pouvoir tre utilis par des non informaticiens. Il doit assurer la dfinition des structures
de stockage et des structures de donnes et le suivi de leurs volutions ; cest ce quon appelle
ladministration des donnes. Il doit pouvoir au maximum vrifier la cohrence des donnes. Le
SGBD sert donc dinterface entre les programmes dapplication des utilisateurs dune part, et la
base de donnes dautre part.
-
5
- Lorganisation des donnes dans un SGBD :
-
Microsoft Access est un SGBD dont nous allons tudier le fonctionnement.
Base de donnes Microsoft Access
Une base de donnes est une collection d'informations relatives un sujet ou un objectif
particulier, tels que le suivi des commandes ou la gestion d'une collection. Si votre base de
donnes n'est pas stocke ou ne l'est que partiellement sur un ordinateur, vous pouvez suivre les
informations partir de diffrentes sources que vous devez coordonner et vous organiser en
consquence.
Microsoft Access vous permet de grer toutes vos informations partir d'un seul fichier de
base de donnes. Dans ce fichier, vous divisez vos donnes en lots distincts appels tables.
Ensuite, vous pouvez afficher, complter ou mettre jour des donnes de table l'aide de
formulaires en ligne ; rechercher et rcuprer les donnes de votre choix l'aide de requtes ;
analyser ou imprimer des donnes en les disposants de faon spcifique dans des tats. Vous
pouvez galement permettre d'autres utilisateurs d'afficher, mettre jour, ou analyser les
donnes de la base de donnes sur Internet ou dans un intranet en crant des pages d'accs aux
donnes.
Pour stocker vos donnes, crez une table pour chaque type d'information que vous voulez
suivre. Pour rassembler les donnes de plusieurs tables dans une requte, un formulaire, un tat
ou une page d'accs aux donnes, dfinissez des relations entre les tables.
-
6
Pour ne rechercher et n'extraire que les donnes runissant les conditions que vous spcifiez,
notamment des donnes de plusieurs tables, crez une requte. Une requte peut galement
mettre jour ou supprimer plusieurs enregistrements simultanment, et effectuer des calculs
prdfinis ou personnaliss sur vos donnes.
Pour afficher, saisir et modifier aisment des donnes directement dans une table, crez un
formulaire. Lorsque vous ouvrez un formulaire, Microsoft Access extrait les donnes d'une ou
plusieurs tables, puis les affiches l'cran avec la disposition que vous avez choisie dans
l'Assistant Formulaire, ou une disposition que vous crez de toutes pices.
Pour analyser vos donnes ou les prsenter d'une certaine manire l'impression, crez un
tat. Par exemple, vous pouvez imprimer un tat qui regroupe des donnes et calcule des totaux,
et un autre contenant diverses donnes mises en forme pour l'impression d'tiquettes de
publipostage.
Pour rendre des donnes disponibles sur Internet ou dans un intranet afin de permettre
l'dition d'tats, la saisie de donnes et l'analyse de donnes en mode interactif, utilisez une page
d'accs aux donnes. Microsoft Access extrait des donnes d'une ou plusieurs tables et les
affiche l'cran avec une disposition que vous slectionnez dans l'Assistant Page, ou que vous
crez de toutes pices. Les utilisateurs peuvent interagir avec les donnes l'aide des fonctions
de la page d'accs aux donnes.
Ouverture Et Fermeture Dune Base De Donnes
1. Ouverture
Fichier/Ouvrir une base de donnes
Choisir la base dans la zone Nom fichier
Cliquer OK . Microsoft Access affiche la fentre relative la base de donnes
2. Fermeture
Fichier/fermer base de donnes.
Les tables
Une table est une collection de donnes relatives un sujet spcifique tel qu'un produit ou
des fournisseurs. L'utilisation d'une table distincte pour chaque sujet signifie que vous ne stockez
des donnes qu'une fois, ce qui renforce l'efficacit de votre base de donnes et rduit les erreurs
de saisie.
-
7
Les tables organisent les donnes en colonnes (appeles champs) et lignes (appeles
enregistrements). Un champ courant met deux tables en relation afin que Microsoft Access
puisse rassembler les donnes que ces dernires contiennent pour les afficher, les modifier ou les
imprimer.
En mode Cration de table, vous pouvez crer toute une table de toutes pices ou ajouter,
supprimer ou personnaliser les champs d'une table existante.
En mode Feuille de donnes de table, vous pouvez ajouter, modifier, afficher ou manipuler
autrement les donnes d'une table.
1. Cration dune base de donnes
Pour crer une base de donnes Microsoft Access:
Choisir Fichier/Nouvelle base de donnes .
Choisir Crer Base de donnes vide dans la boite de dialogue qui saffiche a droit.
Choisir le rpertoire dans la boite de dialogue.
Saisir le nom dans la zone Nom de fichier .
Cliquer Crer .
MS.Access crer le fichier base de donnes (.MDB) sur lunit spcifie et affiche la fentre
base de donnes.
-
8
2. Cration dune table
Cliquer sur le bouton table ...
Cliquer sur le bouton Nouveau Crer une nouvelle table . M.Access affiche la fentre
table en mode cration. Cliquer sur OK
Fentre table en mode cration
Saisir le nom du champ dans la colonne Nom du champ .
Choisir le type du champ dans la colonne Type de donnes .
Saisir le texte descriptif du champ dans la colonne Description
La barre doutils est l pour vous faciliter la tche, utilisez la !
-
9
3. Dfinition dune cl primaire
Cl primaire: facilite la recherche et lexcution de requte
Cliquer sur le champ dfinir comme tel
Cliquer sur le bouton cl primaire
On peut dfinir une cl primaire compose
Slectionner les champs en question
Cliquer sur le bouton cl primaire
4. Dfinition des proprits de champs
Dfinir les proprits dun champ cest optimiser son fonctionnement. Une fois dfinies, M Access
applique ces proprits dans les feuilles de donnes des tables et des requtes:
Taille du champ Limite la taille dun champ texte, ou la fourchette
de valeurs numrique
Format Afficher les dates, normes sous un format dfini
Dcimales Nombre de dcimales pour un champ numrique
ou montaire.
Lgende Spcifier une tiquette lgende autre que
ltiquette par dfaut.
Valeur par dfaut Remplir automatiquement ce champ dune
certaine valeur lors de lajout dun nouvel
enregistrement
Valide si, Message derreur Contrle de validit des donnes avec message
derreur
Index Acclrer la recherche des champs frquemment
consults
5. Enregistrement dune table
Choisir fichier/enregistrement
Entrer le nom de la table si cest une nouvelle.
-
10
6. Ajout denregistrement
Cliquer sur le bouton Feuille de donnes dans la barre doutils.
Ms.Access affiche la feuille de donnes.
Taper les donnes dans leurs champs respectifs, M.Access cre automatiquement un nouvel
enregistrement vide.
Chaque enregistrement valid est enregistr directement dans la table.
7. Impression dune table
Slectionner la table
Choisir Fichier/imprimer
Choisir OK .
On ne peut imprimer quune partie de la table, slectionner la dans la feuille de donnes,
choisir Fichier/Imprimer puis OK .
-
11
8. Restriction de la taille dun champ
Proprits Taille
du champ
Fourchette de
la valeur
Nombre
dcimales
Espace de
stockage
Octet 0 255 Aucune 1 Octet
Entier -32 768 32 767 !!! 2 Octet
Entier long -2 147 483
2 147 483
!!! 4 Octet
Rel simple -3,4* 10-38
-3,4*1038
7 4 Octet
Rel double -1,797* 10308
1,797* 10308
15 8 Octet
9. Dfinition format daffichage
Dans ce format Ce nombre Saffiche
Nombre gnral 1234,5 1234,5
Montaire 1234,5 1234,50 Dh
Fixe 1234,5 1234,50
Standard 1234,5 1234,50
Pourcentage 0,123 12,30%
Scientifique 1234,5 1,23E+03
Et pour les dates voici les formats prdfinie :
Ce format Saffiche
Date, gnral 31/12/1992 16:30:00
Date, complet jeudi 31 dcembre 1992
Date, rduit 31-jan-92
Heure, complet 16:30:00
Heure, rduit 04:30pm
Heure abrg 16:30
-
12
Oui/Non :
Le modifier par Vrai/Faux/Inactif
Si vous le supprimez, Ms.Access affiche -1 Oui, 0 Nom
10. Format personnaliss
Avec ce format Cette valeur Saffiche
0000 123 0123
Mmm aaaa 31-jan-92 jan 1992
hh hnn 12:45 12h45
11. Rgle de validation
Permet M.Access daccepter ou de rejeter une entre dans un champ selon quil satisfait la
condition dans Valider .
Valide si Message derreur
0 Entrez une valeur non nulle
0 Ou >100 Valeur doit tre gale 0 ou suprieur 100
Comme K??? La valeur doit commencer par K et comporter 4
caractres
< # 01/01/1992# Saisissez une date antrieure 1992
> = #01/01/1991 #Et < #31/12/1991# la date doit se situer en 1991
>= Date () la date doit tre postrieure ou gale la date du
jour
12. Dfinition de Relations Entre Tables
Une relation permet de relier deux tables qui contiennent des donnes connexes.
Il est recommand de crer des relations par dfaut des tables, avant de crer les autres objets,
M.Access les utilise pour.
Crer des jointures dans la requte
Afficher les enregistrements dans les sous formulaire
Appliquer les rgles dintgrit rfrentielle lors de lajout ou de la suppression dun
enregistrement.
-
13
Types de relation :
Un plusieurs
Une catgorie peut avoir plusieurs produits. Et un produit ne peut appartenir qu une seule
catgorie.
Chaque enregistrement de la table source peut tre associs plusieurs enregistrements de la
table destination.
Un - Un
Une catgorie ne peut avoir quun seul produit, et un produit ne peut appartenir qu une seule
catgorie.
Chaque enregistrement de la table source est associ un et un seul enregistrement de la table
destination.
La relation plusieurs plusieurs ( n m )
Un enregistrement de la table primaire peut tre en relation avec plusieurs enregistrements de la
table relie et inversement, un enregistrement de la table relie peut tre en relation avec
plusieurs enregistrements de la table primaire. Pour grer ce type de relation, il faut la scinder en
deux relations :
Une relation un plusieurs et une relation plusieurs un .
Rgles dintgrit rfrentielle :
Permettent de garantir le lien logique entre les donnes.
Empchent la suppression accidentelle de donnes relies.
Pour ajouter un enregistrement une table relie, assurez-vous que son correspondant existe
dans la table primaire.
Vous ne pouvez pas supprimer un enregistrement de la table primaire sil a des enregistrements
correspondants dans une table relie.
Cration dune relation
Choisir Outils /Relation
Slectionner la table source
Slectionner la table destination laide de licne Afficher table de la barre doutils
Cliquer Ajouter pour crer la relation
-
14
Slectionner le type de relation
Slectionner le champ cl dans la liste champ correspondant
Si on veut appliquer lintgrit rfrentielle: activer la case correspondante
Cela fait la fentre relation se prsente sous cette forme.
-
15
Chapitre 2 : Requtes SQL
-
16
1. Qu'est-ce que SQL ?
2. La maintenance des bases de donnes
2.1 La commande CREATE TABLE
2.2 La commande ALTER TABLE
2.3 La commande CREATE INDEX
3. Les manipulations des bases de donnes
3.1 La commande INSERT
3.1.1 Prsentation & syntaxe
3.1.2 Insrer tout ou une partie d'un enregistrement
3.1.3 Insrer plusieurs enregistrements ou plusieurs parties d'enregistrements
3.2 La commande UPDATE
3.3 La commande DELETE
3.4 La commande SELECT
3.4.1 Prsentation & Syntaxe
3.4.2 Les oprateurs de condition
3.4.3 Oprateurs logiques
3.4.4 Clauses IN et BETWEEN
3.4.5 La clause LIKE
3.4.6 Les jointures
3.4.7 Supprimer les doubles avec DISTINCT
3.4.8 Les fonctions d'ensemble
3.4.9 La clause GROUP BY
3.4.10 Les sous-requtes
3.4.11 Les UNIONs
4. Les commandes de contrle des bases de donnes
-
17
Jusqu' prsent, nous avons vu comment crer une requte en utilisant la fentre requte
d'ACCESS. Il existe une autre faon de faire les requtes : en passant directement par le langage
SQL. D'ailleurs, ACCESS utilise aussi ce langage pour faire ses requtes, il traduit ce que vous avez
entr en SQL, puis excute la requte SQL.
1. Qu'est-ce que SQL ?
SQL est un langage de manipulation de bases de donnes mis au point dans les annes
70 par IBM. Il permet, pour rsumer, trois types de manipulations sur les bases de
donnes :
La maintenance des tables : cration, suppression, modification de la structure des tables.
Les manipulations des bases de donnes : Slection, modification, suppression
d'enregistrements.
La gestion des droits d'accs aux tables : Contrle des donnes : droits d'accs, validation des
modifications.
L'intrt de SQL est que c'est un langage de manipulation de bases de donnes standard,
vous pourrez l'utiliser sur n'importe quelle base de donnes, mme si, priori, vous ne
connaissez pas son utilisation. Ainsi, avec SQL, vous pouvez grer une base de donnes
Access, mais aussi Paradox, dBase, SQL Server, Oracle ou Informix par exemple (les bases
de donnes les plus utilises).
Attention : Le langage SQL a souvent t implment de faon diffrente. Les commandes
de base sont toujours les mmes mais ont parfois des variantes ou des extensions. La
version de SQL implmente dans Access peut parfois tre un peu diffrente de la version
ANSI qui est la version standardise.
2. La maintenance des bases de donnes
La premire srie de commandes sert la maintenance de la base de donnes : cration
des tables et des indexes, modification de la structure d'une table ou suppression d'une table
ou d'un index.
Attention : La maintenance des bases de donnes dpend troitement de la base de
donnes utilise, notamment en ce qui concerne les types de donnes, vrifiez donc
toujours les types de donnes supports par votre SGBD avant de crer une table avec
SQL. Il se peut qu'il en supporte plus que ceux indiqus plus bas.
SQL dispose pour cela des instructio ns suivantes: ALTER TABLE, CREATE TABLE et
CREATE INDEX
-
18
2.1 La commande CREATE TABLE
La commande CREATE TABLE permet de crer une table dans la base de
donnes courante. Sa syntaxe est la suivante :
CREATE TABLE table
(champ type CONSTRAINT champ proprits,
... );
Paramtre Signification
Champ Nom du champ
Type Type de donnes, dans la plupart des versions de SQL, vous aurez droit
aux types de donnes suivants :
Char(x) : chane de caractres, x est le nombre maximum de
caractres autoriss dans le champ.
Integer : Nombre entier, positif ou ngatif
Decimal (x,y) : Nombre dcimal, x est le nombre maximum de
chiffres et y le nombre maximum de chiffres aprs la virgule. Decimal
ne fonctionne pas avec Access, il ne supporte que le type
'float' (flottant), le type float ne permet pas d'indiquer le nombre de
chiffres aprs ou avant la virgule
Date : Une date et/ou heure
Logical Deux valeurs possibles : oui / non
proprits Proprits du champ :
NULL ou NOT NULL : autorise ou non que le champ puisse tre
vide.
UNIQUE : indique que deux enregistrements ne pourront avoir la
mme valeur dans ce champ.
PRIMARY KEY : indique que ce champ est la clef primaire CHECK
(condition) : quivaut la proprit "ValideSi" d'Access, va forcer
SQL a faire une vrificatio n de la condition avant de valider la saisie,
exemple : CHECK (prix > 100) interdira la saisie dans ce champ si la
valeur contenue dans le champ prix est infrieure 100.
CHECK ne fonctionne pas avec Access.
DEFAULT = valeur, place une valeur par dfaut dans le champ
(ne fonctionne pas avec Access)
DEFAULT ne fonctionne pas avec Access
-
19
Exemple: Crer la nouvelle table "table_test" contenant deux champs : un champ
avec un entier qui doit toujours tre saisi et un champ contenant une chane de 5
caractres :
CREATE TABLE table_test (champ1 integer CONSTRAINT
champ1 NOT NULL, champ2 char(5))
2.2 la commande ALTER TABLE
La commande ALTER TABLE permet de modifier la structure d'une table, sa
syntaxe est la suivante :
ALTER TABLE table
Action (spcifications du champ);
ALTER TABLE permet trois actions, ces actions sont :
ADD Ajoute un champ a une table
DROP Supprime un champ d'une table
MODIFY Modifie les caractristiques d'un champ
Aprs l'action, on indique, entre parenthses, les spcifications du champ d e la
mme faon que pour la commande CREATE TABLE. On ne peut faire qu'une
action la fois (ajout, suppression ou modification dans la mme commande).
Exemple :
Ajout d'un champ Date :
ALTER TABLE table_test ADD champ3 Date;
Suppression du champ2 :
ALTER TABLE table_test DROP champ2;
-
20
2.3 La commande CREATE INDEX
La commande CREATE INDEX permet de crer un index sur une table, sa syntaxe est :
CREATE UNIQUE INDEX nom_index
ON table (liste de champs);
Pour vous souvenir ce qu'est un index, retournez voir le chapitre 1.
Nom_index est le nom de l'index, table est le nom de la table.
Nous avons vu dans le chapitre 1 qu'un index peut tre compos d'un ou de plusieurs
champs, la liste de ces champs est indique entre parenthses aprs le nom de la table.
Enfin, la clause UNIQUE indique SQL si l'index cr va tre unique ou s'il peut
contenir plusieurs fois la mme valeur dans la table, s'il peut contenir plusieurs fois la
mme valeur, il ne faudra pas ajouter la clause UNIQUE.
Exemple : cration d'un index sur le champ1
CREATE UNIQUE INDEX index1 ON table_test (champ1)
-
21
3. Les manipulations des bases de donnes
Une fois les tables cres, on peut commencer y insrer des donnes, les mettre jour,
les supprimer ou y faire des requtes. Toutes ces oprations sont des oprations de
manipulation des bases de donnes.
Pour effectuer ces manipulations, SQL dis pose de 5 instructions :
INSERT
UPDATE
DELETE
SELECT
CREATE VIEW (non utilis dans Access)
3.1 La commande INSERT
3.1.1 Prsentation & syntaxe
La commande INSERT est utilise pour ajouter des enregistrements ou des
parties d'enregistrements dans des tables. Elle est utilise gnralement sous deux
formes :
1re forme
INSERT
INTO table
(champ1,champ2,...) VALUES
('valeur1','valeur2',...);
Cette forme est utilise lorsqu'on veut insrer un seul enregistrement ou
une partie d'un seul enregistrement. On crera un nouvel enregistrement dont le
contenu du champ1 sera valeur1, le contenu du champ2 sera valeur2, etc...
2me forme
INSERT
INTO table
(champ1,champ2,...)
(requte);
-
22
Dans cette seconde forme, le rsultat de la requte va tre insr dans les champs
indiqus de la table. Cette mthode est utilise lorsque plusieurs enregistrements
sont ajouts simultanment. Dans les deux cas, les valeurs insres doivent
correspondre au type de donnes du champ dans lequel l'insertion va tre faite, on
ne peut pas, par exemple demander l'insertion d'une chane de caractres dans un
champ de type numrique ou montaire. Les chanes de caractres doivent
tre places entre apostrophes ( ' ), les champs numriques ou vides (NULL) ne
doivent pas tre placs entre apostrophes.
3.1.2 Insrer tout ou une partie d'un enregistrement
Si des valeurs doivent tre insres dans tous les champs de l'enregistrement de la table,
la liste des noms des champs n'a pas besoin d'tre explicitement indique dans la
commande. Les valeurs des champs insrer doivent cependant apparatre dans le mme
ordre que les noms des champs lors de la cration de la table, sans oublier un seul champ.
Faites attention en utilisant cette syntaxe, si la structure de la table change plus tard, la
commande qui tait bonne risque de ne plus fonctionner correctement. Il vaut mieux
toujours indiquer explicitement le nom des champs sur lesquels on veut agir.
La syntaxe est alors :
INSERT
INTO table
VALUES ('valeur1','valeur2','valeur3',...);
Par exemple, dans notre table Client, si nous voulons insrer un nouveau client, nous
allons entrer :
INSERT
INTO Clients
VALUES (100,'Mr','Alami','Jawad','rue de la paix',75000,
,'Rabat',NULL);
La commande ci-dessus va insrer un enregistrement dans la table 'clients' avec les
informations suivantes : Le client 100, dont le titre est 'Mr.', dont le nom est 'Alami',
dont le prnom est 'Jawad', l'adresse est 'Rue de la paix', le code postal est 75000 et la ville
est 'Rabat'.
Notez que le numro de client, qui est un champ de type 'NumroAuto' a t indiqu
explicitement. Lors d'une cration d'un enregistrement avec une commande SQL, le
numro automatique n'est pas toujours gnr automatiquement, vrifiez les possibilits
offertes par votre SGBD.
-
23
Notez aussi l'utilisation de NULL : Si on insre moins de valeurs de champ qu'il y a de
champs dans la table, soit on crit explicitement le nom des champs insrer, soit on
insre la valeur NULL dans le champ o il n'y a rien mettre, condition que la
proprit du champ "NULL interdit" soit NON, sinon, il y aura une erreur lors de la
cration de l'enregistrement.
La syntaxe est :
INSERT
INTO table (champ1,
champ3) VALUES
('valeur1','valeur 3');
Ou INSERT
INTO
table
VALUES ('valeur1',NULL,'valeur3');
Dans notre exemple, le champ 'Observations' sa proprit "NULL interdit" NON, on
n'est donc pas oblig de saisir des observations, ce qui est le cas ici, on entre donc
NULL, ce qui signifie Access que le champ est vide.
3.1.3 Insrer plusieurs enregistrements ou plusieurs parties d'enregistrements
On peut insrer simultanment plusieurs enregistrements ou parties
d'enregistrements dans une table. Dans ce cas, les donnes insres vont tre
rcupres dans une ou plusieurs autres tables.
Par exemple, si nous voulons placer dans une table nomme "Clients_stq" les
clients habitant Rabat, nous allons procder ainsi :
1) Crer une table "Clients_stq" avec Access, nous allons supposer que cette
table comporte 3 champs: le nom, le prnom et l'adresse.
2) Taper la commande :
INSERT
INTO Clients_stq(nom,prenom,adresse) (SELECT
nom,prenom,adresse
FROM Clients
WHERE ville='Rabat')
-
24
La partie entre ( ) est une requte SQL, nous verrons cela en dtail plus bas, elle
va slectionner les champs nom, prnom et adresse de la table Client pour les
enregistrements dont la ville est "Rabat". Le rsultat de cette requte va tre insr
dans la table Clients_stq.
3.2 La commande UPDATE
La commande UPDATE est utilise pour changer des valeurs dans des
champs d'une table. Sa syntaxe est :
UPDATE table
SET champ1 = nouvelle_valeur1,
champ2 = nouvelle_valeur2,
champ3 = nouvelle_valeur3
WHEREcondition;
La clause SET indique quels champs de la table vont tre mis jour et avec
quelles valeurs ils vont l'tre. Les champs non spcifis aprs la clause SET ne
seront pas modifis.
Par exemple, si nous voulons, dans la table produit, modifier le prix d'un
produit dont le nom est "prod1", nous taperons :
UPDATE produits
SET prix_unitaire = 1000
WHERE libelle = 'prod1'
La commande UPDATE affecte tous les enregistrements qui rpondent la
condition donne dans la clause WHERE. Si la clause WHERE est absente, tous les
enregistrements de la table seront affects.
Par exemple, si nous tapons :
UPDATE produits
SET prix_unitaire = 1000
Le prix unitaire de TOUS les produits de la table produit va tre modifi.
Tout comme la commande INSERT, la commande UPDATE peut contenir une
requte.
-
25
Dans ce cas la syntaxe est la suivante :
UPDATE table
SET champ1 = bnouvelle_valeur1,
champ2 = nouvelle_valeur2,
champ3 = nouvelle_valeur3
WHERE condition = (requte);
La requte est une requte faite avec la commande SELECT.
3.3 La commande DELETE
Pour supprimer des enregistrements d'une table, utilisez la commande
DELETE. La syntaxe est la suivante :
DELETE
FROM table
WHERE condition;
On ne peut pas supprimer seulement le contenu de quelques champs des
enregistrements. La commande DELETE supprime des enregistrements entiers,
c'est pour cela qu'il n'est pas ncessaire d'indiquer ici des noms de champs. La
condition spcifie aprs WHERE va dterminer quels sont les enregistrements
supprimer.
Par exemple, pour supprimer tous les clients dont la ville est Rabat:
DELETE
FROM Clients
WHERE ville='Rabat';
Pour supprimer tous les enregistrements d'une table, n'indiquez pas de clause
WHERE :
DELETE FROM table;
Cette variante de la commande DELETE ne supprime pas la table, elle
supprime seulement les enregistrements contenus dans cette table et laisse une
table vide.
-
26
On peut aussi, comme prcdemment utiliser une requte qui servira
dterminer la condition de la suppression. La syntaxe est la suivante :
DELETE
FROM table
WHERE condition =
( requte );
3.4 La commande SELECT
3.4.1 Prsentation & Syntaxe
La commande SELECT est la commande la plus complexe de SQL. Cette
commande va servir faire des requtes pour rcuprer des donnes dans les
tables. Elle peut tre associe une des commandes de manipulation de tables vues
avant pour spcifier une condition.
Sa syntaxe est :
SELECT champ1, champ2, champ3, ...
FROM table;
S'il y a plus d'un champ spcifi aprs SELECT, les champs doivent tre spars par
des virgules.
Les champs sont retourns dans l'ordre spcifi aprs la clause SELECT, et non pas
dans l'ordre qu'ils ont t crs dans la table.
Par exemple :
Pour slectionner les champs "prnom" et "nom" de tous les enregistrements
de la table Clients
SELECT prnom,nom
FROM clients
Va renvoyer les prnom et nom de tous les clients de la table Clients.
Si on veut rcuprer tous les champs des enregistrements slectionns, la syntaxe est
la suivante :
SELECT *
FROM table;
-
27
Les clauses SELECT et FROM doivent obligatoirement apparatre au dbut de
chaque requte, on peut, ensuite, indiquer des critres de slection avec la clause
WHERE :
SELECT *
FROM table
WHERE condition;
Par exemple, pour slectionner tous les Clients de la table "Clients" dont le code
postal est 75000 :
SELECT *
FROM Clients
WHERE code_postal = 75000;
3.4.2 Les oprateurs de condition
On peut utiliser les oprateurs suivants dans les conditions :
Oprateur Signification
= Egal
Diffrent (parfois not aussi != )
< Infrieur
> Suprieur
= Suprieur ou gal
Pour slectionner tous les articles dont le prix est suprieur 100 F :
SELECT *
FROM Clients
WHERE prix_unitaire > 100;
3.4.3 Oprateurs logiques
Il est possible de combiner plusieurs conditions avec des oprateurs logiques :
L'oprateur AND runit deux ou plusieurs conditions et slectionne un
enregistrement seulement si cet enregistre ment satisfait TOUTES les conditions
listes. (C'est--dire que toutes les conditions spares par AND sont vraies). Par
exemple, pour slectionner tous les clients nomms 'Alami' qui habitent Rabat:
SELECT *
FROM Clients
WHERE nom = 'Alami' AND ville = 'Rabat';
-
28
L'oprateur OR runit deux conditions mais slectionne un enregistrement si UNE
des conditions listes est satisfaite. Par exemple, pour slectionner tous les clients
nomms 'Alami' ou 'Aalami' :
SELECT *
FROM Clients
WHERE nom = 'Alami' OR nom = 'Aalami';
AND et OR peuvent tre combins :
SELECT *
FROM Clients
WHERE nom = 'Alami' AND (ville = 'Rabat' OR ville =
'Casa');
Nous slectionnons ici les clients nomms "Alami" qui habitent soit Rabat, soit
Casa. Pourquoi avons-nous plac des parenthses ? Pour rsumer, on peut dire que
l'oprateur AND a une plus grande priorit que l'oprateur OR. Ce qui signifie
que SQL va d'abord slectionner les conditions spares par des AND, puis
celles spares par des OR, si on avait omis les parenthses ici, SQL aurait cherch
les clients nomms "Alami" vivant Rabat ou les clients habitant Casa, ce qui
n'est pas le but recherch. Pour gnraliser, mettez toujours des parenthses pour
bien sparer vos conditions.
3.4.4 Clauses IN et BETWEEN
Pour slectionner des enregistrements dont la valeur d'un champ peut tre
comprise dans une liste ou entre deux valeurs, on utilise les clauses IN et
BETWEEN.
Par exemp le : Pour slectionner les clients vivant Rabat ou Casa :
SELECT *
FROM Clients
WHERE ville IN ('Rabat', 'Casa');
Ou pour slectionner les produits dont le prix est compris entre 100 et 1000 F :
SELECT *
FROM Produits
WHERE prix_unitaire BETWEEN 100 AND 1000;
-
29
Pour slectionner les produits dont le prix n'est pas dans cet intervalle :
SELECT *
FROM Produits
WHERE prix_unitaire NOT BETWEEN 100 AND 1000;
De la mme faon, NOT IN slectionne les enregistrements exclus de la liste
spcifie aprs IN.
Notez que NOT a une priorit plus grande
que AND :
NOT Condition1 AND Condition2 slectionnera les enregistrements ne satisfaisant
pas la condition1 et satisfaisant la condition2, alors que NOT (Condition1 AND
Condition2) slectionnera les enregistrements ne satisfaisant pas les deux
conditions 1 et 2. Une fois de plus, n'hsitez pas mettre des parenthses !
3.4.5 La clause LIKE
La clause LIKE permet de faire des recherches approximatives sur le contenu d'un
champ. Par exemple, pour slectionner les clients dont le nom commence par la lettre
S :
SELECT *
FROM Clients
WHERE nom LIKE 'S*';
Tout comme dans les requtes Access, le symbole * remplace un ensemble
de caractres, pour reprsenter tous les noms commenant par S, on utilisera 'S*',
tous ceux se terminant par S, on utilisera
'*S', et tous ceux comportant la lettre S : '*S*'. Le symbole ? ne remplace qu'un
seul caractre.
-
30
3.4.6 Les jointures
La jointure va nous permettre de slectionner des informations dans plusieurs tables
grce aux relations existant entre ces tables. Il va nanmoins falloir indiquer
comment se fait la relation entre ces tables.
Par exemple : rcuprer le nom et le prnom du client ayant pass la commande n1 :
SELECT nom, prnom
FROM Clients, Commande
WHERE Commande.num_client = Client.num_client AND
num_commande = 1;
La clause WHERE indique que le numro de commande doit tre gal 1 et que la
jointure va se faire sur le numro de client : une fois que SQL va trouver la
commande n 1 dans la table commande, il va prendre le numro de client contenu
dans l'enregistrement et avec ce numro, aller chercher dans la table Clients le
nom et le prnom correspondants ce numro.
Notez que lorsqu'on utilise plusieurs tables, il faut faire attention que deux tables
n'aient pas de champs ayant le mme nom, si c'est le cas, et pour les
diffrencier, on utilise, comme dans l'exemple, la notation:
table.nom_du_champ. Si on est sur que le nom ne se retrouvera pas dans plusieurs
tables, on peut l'utiliser sans le prfixer avec le nom de la table.
3.4.7 Supprimer les doubles avec DISTINCT
Supposons que nous voulions la liste des clients ayant achet quelque chose. Nous
voulons que chaque client ayant achet quelque chose ne soit affich qu'une seule
fois nous ne voulons pas savoir ce qu'a achet chaque client nous voulons juste
connatre les clients qui ont achet quelque chose. Pour cela, nous allons devoir
dire SQL de supprimer les doubles du rsultat de la slection pour n'afficher les
clients qu'une seule fois. Pour cela, nous allons utiliser la clause DISTINCT.
Nous allons d'abord faire une jointure entre les tables Clients et Commande,
et ajouter la clause DISTINCT sur le champ ou la rptition peut se produire :
-
31
SELECT Client.num_client,nom, prnom
FROM Clients, Commande
WHERE Commande.num_client = Client.num_client;
Si on excute cette requte directement, SQL va nous renvoyer une liste des
numros, prnom et nom correspondants aux noms et prnoms des clients ayant pass
chaque commande, il est clair qu'un client ayant pass plusieurs commandes va se
retrouver plusieurs fois dans cette liste.
SELECT DISTINCT Clients.num_client,nom, prnom
FROM Clients, Commande
WHERE Commande.num_client = Client.num_client AND
num_commande = 1;
En indiquant la clause DISTINCT avant le champ num_client, on indique SQL
qu'on ne veut pas voir apparatre plusieurs fois un client ayant ce numro dans la
slection renvoye.
On peut mme rendre le rsultat de la slection plus agrable la lecture en
utilisant la clause ORDERBY :
SELECT nom, prnom
FROM Clients, Commande
WHERE Commande.num_client = Client.num_client AND
num_commande = 1
ORDER BY nom,prnom;
La slection renvoye va tre classe alphabtiquement d'abord sur le nom, puis sur
le prnom
-
32
3.4.8 Les fonctions d'ensemble
SQL a cinq fonctions importantes : SUM, AVG, MAX, MIN et COUNT. On
les appelle fonctions d'ensemble parce qu'elles rsument le rsultat d'une requte
plutt que de renvoyer une liste d'enregistrements.
Fonction Signification
SUM ()
Donne le total d'un champ de tous les enregistrements satisfaisant la
condition de la requte. Le champ doit bien sur tre de type numrique
AVG ()
donne la moyenne d'un champ de tous les enregistrements satisfaisant la
condition de la requte
MAX ()
donne la valeur la plus leve d'un champ de tous les enregistrements
satisfaisant la condition de la requte
MIN ()
Donne la valeur la plus petite d'un champ de tous les enregistrements
satisfaisant la condition de la requte.
COUNT
(*)
Renvoie le nombre d'enregistrements satisfaisant la requte.
Exemples :
SELECT
MIN(prix_unitaire),MAX(prix_unitaire),AVG(prix_unitaire)
Va retourner le prix le plus petit de la table Produit, le prix le plus lev et le prix
moyen.
SELECT COUNT (*) FROM Produits
WHERE libelle LIKE 'P*';
Va retourner le nombre de produits dont le libell commence par la lettre 'P'.
-
33
3.4.9 La clause GROUP BY
Une des utilisations les plus courantes de la clause GROUP BY est son association
avec une fonction d'ensemble (le plus souvent COUNT, pour compter le nombre
d'enregistrements dans chaque groupe). Par exemple, si nous voulons la liste des
vendeurs, avec pour chaque vendeur le nombre de ventes qu'il a fait :
SELECT num_vendeur,COUNT (*) FROM Commandes
GROUP BY num_vendeur;
On peut ajouter une condition la requte, par exemple, la liste des vendeurs avec
leur nombre de vente pour le mois de janvier.
SELECT num_vendeur,COUNT (*) FROM Commandes
GROUP BY num_vendeur
HAVING mois(date)=1;
On utilisera pour cela la clause HAVING.
-
34
3.4.10 Les sous- requtes
On peut imbriquer autant de requtes que l'on veut. La condition aprs la clause
WHERE peut porter sur le rsultat d'une autre requte (ou sous-requte).
Supposons les tables suivantes :
Vente
Num_acheteur
Num_produit
Prix
Acheteurs
Num_acheteur
Nom
Prnom
Cette table contient, pour chaque acheteur, le produit qu'il a achet et le prix d'achat.
Nous voulons la liste des acheteurs ayant achet des articles chers. Nous
considrerons qu'un article cher est un article dont le prix est suprieur la moyenne
du prix des produits achets + 100 francs.
SELECT Num_acheteur
FROM Vente
WHERE prix > ( SELECT AVG (prix) + 100
FROM Vente);
Vous pouvez constater que condition de la requte est base sur le rsultat d'une
autre requte. Dans cet exemple, chaque fois qu'un acheteur aura achet un
article cher, son numro apparatra, pour viter cela, on utilise la clause DISTINCT
num_acheteur pour liminer les doubles.
Autre exemple avec ces deux tables : nous savons qu'il y a une erreur sur
l'orthographe du nom de l'acheteur du produit n 1, il devrait s'appeler 'Alami' :
-
35
UPDATE Acheteurs SET nom = 'Alami' WHERE
num_acheteur =
(SELECT num_acheteur
FROM Ventes
WHERE num_article = 1);
4. Les commandes de contrle des bases de donnes
Ces commandes ne seront pas dtailles car elles ne sont pas implmentes (ou
qu'en partie) dans Access, nanmoins, deux d'entre elles sont trs souvent utilises
dans d'autres systmes : les commandes COMIT et ROLLBACK.
La commande COMIT valide toutes les modifications faites depuis le dernier
COMIT, partir du moment o la commande COMIT a t entre, tout ce qui a t
fait sur la base est valid et ne peut plus tre modifi. La commande ROLLBACK
efface toutes les modifications qui ont t faites sur la base depuis le dernier
COMIT. C'est pour cela qu'il faut penser faire un COMIT des modifications
rgulirement.
Dmarrage de la session
Modifications de la base
de donnes
COMIT
Modifications valides
Modifications de la base
de donnes
ROLLBACK
valids, retour au
dernier COMIT
Certains systmes, comme Access, font un COMIT automatique aprs chaque
action, aucun retour en arrire n'est donc possible.