Cours_SGBDR_chap1&2

35
1 Université Mohammed V- Rabat Faculté des Sciences Juridiques, Economiques et Sociales- Agdal Professeur : Karim DOUMI Matière : Informatique appliquée Niveau : Semestre 4 Les systèmes de Gestion de Bases de Données relationnels Niveau 1 Année universitaire 2014-2015

description

informatique

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.