LES BASES DE DONNEES

 

Plan du cours (cliquez sur un lien pour aller directement à la partie qui vous intéresse)

I-GENERALITES SUR LES BASES DE DONNEES

II-SYSTEMES DE GESTION DES BASES DE DONNEES (SGBD)

III-LES COMMANDES DE DEFINITION DES DONNEES EN SQL

IV-LES COMMANDES DE MANIPULATION DES DONNEES EN SQL

V-RECHERCHE DE DONNEES : REQUETES

VI-CREATION D’UNE BASE DE DONNEES EN MODE COMMANDE SOUS MySQL

VII-CREATION D’UNE BASE DE DONNEES EN MODE GRAPHIQUE (MODE ASSISTE) SOUS MS ACCESS 2013

VIII-EXERCICES AVEC CORRIGES

I-GENERALITES SUR LES BASES DE DONNEES

INTRODUCTION

1-Limites de l’organisation des données en fichiers 

Un fichier (en anglais: file) est un ensemble de données structurées mémorisées sur un support de stockage permanent.

 L’organisation des données en fichiers possède des inconvénients suivants :

Lourdeur d'accès aux données. En pratique, pour chaque accès, même le plus simple, il faudrait écrire un programme.

Manque de sécurité. Si tout programmeur peut accéder directement aux fichiers, il est impossible de garantir la sécurité et l'intégrité des données de ce fichier.

Redondance de données. Etant donné que les fichiers sont généralement conçus par des équipes différentes, il y a un risque qu'un même ensemble de données figurent dans deux ou plusieurs fichiers : c'est la redondance. En plus du gaspillage de l'espace disque, il y a un risque d'incohérence dans le cas ou de la mise à jour n'a pas touché la totalité des copies.

 

2-Définition

Une base de données est une collection de données structurées et organisées qui, après avoir été saisies une seule fois, sont accessibles aux différents utilisateurs 1

Exemple :

Une Base de Données Etudiants regroupe toutes les données concernant les étudiants

(Numéro_matricule, nom, prénom, adresse, modules auxquels est inscrit l'étudiant, notes, etc.) et servira à toutes les applications.

La Base de données permet de mettre des données à la disposition d’utilisateurs pour une consultation, une saisie ou bien une mise à jour, tout en s’assurant des droits accordés à ces derniers, les données informatiques devenant de plus en plus nombreuses.

Caractéristiques :

Les données d’une Base de données doivent être :

·         non redondantes : non répétitives pour occuper moins d’espace dans les supports de stockage.

·         structurées : Les données doivent être regroupées dans une structure centrale pour éviter la redondance. En effet, les données sont saisies une seule fois et peuvent être utilisées par plusieurs programmes et plusieurs utilisateurs.

·          persistantes : C’est la capacité de mémoriser et de pouvoir retrouver une donnée. Lorsqu'une donnée n'est pas persistante, elle est volatile, c'est-à-dire qu'elle disparait au bout d’un certain temps.

·         Cohérentes : absence des contradictions.

Une base de données peut être locale, c.-à-d. utilisable sur une machine par un utilisateur, ou bien repartie, c.-à-d. que les informations sont stockées sur des machines distantes et accessibles par réseau ou dans le Cloud.

3-Modèles de base de données 

            Il existe plusieurs modèles de base de données :

-Modèle hiérarchique

-Modèle en réseau

-Modèle orienté objet

-Modèle relationnel

            Ces quatre modèles se distinguent par la façon selon laquelle les liens entre les données sont représentés.Le modèle relationnel est le plus récent et le plus utilisé. Son principe de base consiste à représenter aussi bien les objets que les liens à l'aide d'une structure appelée table. C’est ce modèle que nous allons étudier dans le cadre de ce cours.

 

NOTION DE TABLE

1-Définition

Une table est un ensemble de données relatives à un même sujet (ou entité) et structurées sous forme de tableau.

            Elle est composée horizontalement d'un ensemble de lignes et verticalement d'un ensemble de colonnes : les colonnes décrivent les propriétés relatives au sujet représenté par la table et les lignes correspondent aux occurrences du sujet. Une table est aussi appelée relation car dans une table, on trouve des données qui sont en relation avec un sujet donné.

 

Exemple :

Table VISITEURS 

Numéro

Nom

Age

Tel

1

Ada

15

677 15 44 45

2

Tene

23

698 45 77 30

3

Ousmanou

18

666 67 78 89

 

a- Lignes : Les lignes sont appelées entrées, enregistrements ou n-uplets. Elles représentent une occurrence de la relation c.-à-d. les valeurs que prennent les propriétés.

b- Colonnes : Les colonnes sont appelées champs ou attributs. Dans une table, une colonne correspond à une propriété élémentaire de l'objet décrit par cette table.

Exemples :

Dans la table  VISITEURS :

-Champs : Numéro, Nom, Age, Tel

-Enregistrements (entrées) : chaque ligne est une entrée, ligne 1, ligne 2, ligne3, Ici il n’y a que 3 entrées, mais une table peut avoir 100,1000 voire 100000 entrées et plus.

Dans une base de données relationnelle, la table constitue la structure la plus importante car la manipulation des données se fait toujours à travers les tables : création, sélection, modification et suppression. Remarques

Remarques :

_ Il ne faut pas confondre fichier et table. Les données d'un fichier sont stockées dans un même et seul fichier alors que les données d'une table peuvent être stockées sur un ou plusieurs fichiers, comme on peut regrouper dans un même fichier les données de plusieurs tables.

_ Il y a donc une indépendance entre la structure d'une table et son implémentation physique sur les supports de stockage (disque). C'est le système de gestion de base de données (SGBD) qui assure cette indépendance.

 

2-Les clés primaires

            La clé primaire d’une table est une colonne ou un groupe de colonne permettant d’identifier de façon unique chaque ligne de la table. Autrement dit, la connaissance de la valeur de la clé primaire, permet de connaitre sans aucune ambiguïté les valeurs des autres colonnes de la table.

 En général, on utilise le champ de l’identifiant comme clé primaire. Les colonnes qui constituent la clé primaire sont obligatoires. Un identifiant peut être un code, une référence d’un article, un numéro matricule, un numéro carte d’identité, un numéro de la plaque d’immatriculation d’une voiture

Exemple :

Chaque visiteur doit pouvoir être identifié de manière unique. La manière la plus simple est de lui attribuer un numéro unique ou identifiant dans un champ qui constitue la clé primaire. Il ne peut pas y avoir deux visiteurs ayant le même identifiant.

Remarques :

_ Chaque table doit comporter une et une seule clé primaire.

_ Dans certains cas, dans une même table on peut avoir deux ou plusieurs colonnes qui peuvent jouer le rôle de clés primaires. Dans ce cas on doit choisir une parmi toutes ces colonnes.

_ Pour distinguer une colonne qui fait partie de la clé primaire des autres colonnes, on la souligne.

_Une clé est dite composée lorsque les attributs non-clés dépendent de plusieurs champs.

 

3- Liens entre tables

Une base de données est généralement constituée d’une ou de plusieurs tables. Elle est la représentation d'un ou de plusieurs domaines composés chacun d'un ensemble de sujets (ou entité). Les différents sujets de chaque domaine sont généralement inters reliés par des liens (ou associations).

 

Exemple : Si nous avons une table représentant un étudiant et une autre table représentant le diplôme, la phrase suivante Un étudiant obtient un diplôme correspond à un lien (ou association) entre ces deux tables.

            Dans la pratique, un lien entre deux tables A et B est représenté par l'ajout dans la table B d'une nouvelle colonne correspondant à la clé primaire de la table A. Cette nouvelle colonne est appelée clé étrangère.

 

Table DIPLOME

Code-diplôme

Session

Année de délivrance

Centre

166-2020

Juin

2020

Yaoundé

167-2019

Septembre

2019

Douala

 

 

Table ETUDIANT                                                                                                                   

N°Matricule

Nom

Prénom

Age

Code-diplôme #

Y-12900

Penda

Claude

18

166-2020

D-13460

Kenne

Pierre

20

167-2019

 

 

Un lien entre deux tables est orienté : il part de la table contenant la clé étrangère et arrive vers la table contenant la clé primaire. La table cible (celle contenant la clé primaire) s'appelle table mère et la table source (celle contenant la clé étrangère) s'appelle table fille. On dit aussi que la table fille se réfère à la table mère.

Code-diplôme # est la clé étrangère dans la table ETUDIANT.

 

            DIPLOME  est la table mère, ETUDIANT est la table fille.

Remarques :

_ Une table peut comporter zéro, une ou plusieurs clés étrangères.

_ Une clé primaire peut être référencée par zéro, une ou plusieurs clés étrangères.

_ Il est fortement recommandé que le nom de la colonne qui est une clé étrangère soit identique au nom de la colonne clé primaire à laquelle elle se réfère.

_ Pour distinguer une colonne qui fait partie d'une clé étrangère des autres colonnes, on la double souligne ou bien on la fait suivre d’un dièse (#).

 

3-Contraintes sur les tables

3.1-Définition 

Une contrainte d'intégrité est une règle appliquée à une colonne ou à une table et qui doit être toujours vérifiée.

Les contraintes sur les tables consistent à garantir que les données stockées dans une base de données sont cohérentes entre elles, c'est-à-dire qu'elles respectent toutes les règles exigées par le concepteur de la base. La cohérence et l'intégrité des données sont assurées à l'aide d'un ensemble de règles dites contraintes d'intégrité.

 

3.2- Types de contraintes d'intégrité

·         Les contraintes de domaines :

Ce sont des contraintes appliquées à des colonnes. Elles permettent de fixer le caractère obligatoire ou pas d'une colonne et les règles de validité des valeurs qui peuvent être prises par cette colonne.

Valeur nulle : Lorsque la colonne n'est pas renseignée, on dit qu'elle contient une valeur nulle.

Valeur autorisée : une colonne peut être soumise à certaines règles tel que : les valeurs attribuées à cette colonne doivent être inférieures à une certaine valeur, supérieures à une certaine valeur ou bien comprises entre deux valeurs. Par exemple, une note doit être comprise entre 0 et 20.

Valeur par défaut : Permet d'attribuer une valeur par défaut lorsqu'aucune valeur n'a été attribuée à cette colonne.

Unicité de valeur : Toutes les occurrences d’une colonne doivent être uniques ou non.

Format de valeur : C'est le type de données prises par cette colonne. Les types de données les plus connus sont : numérique, chaîne de caractères (outexte), date et booléen.

·         Les contraintes d'intégrité de tables

Clé primaire : Elles permettent d'assurer que chaque table possède une clé primaire.

·         Les contraintes d'intégrité référentielles

Elles permettent de s'assurer que les valeurs introduites dans une colonne d’une table figurent dans une autre  table en tant que clé primaire. Elle est représentée sous forme de lien entre tables. Par exemple on n'accepte pas que le Code-diplôme saisi dans ETUDIANT  n'existe pas dans la colonne Code-Diplôme de la table DIPLOME.

4-Représentation d’une relation

4.1-Représentation textuelle

Elle consiste à décrire les tables, les colonnes et les liens entre les tables en utilisant du texte. La clé primaire est soulignée et la clé étrangère est suivie d’un dièse (#).

Exemple :

 On dispose de deux tables CLIENT et COMMANDE

CLIENT (code_client, Nom_client, Adr_client, Tel_cli)

COMMANDE (Num_comm, Date_comm, code_client#)

 

4.2 Représentation graphique

 

  

 

Dans cette représentation, les clés primaires sont en gras, Un lien est établi entre les deux tables. Le symbole ∞ est placé du côté de la clé étrangère et le 1 du côté de la clé primaire.

 

UTILITE D’UNE BASE DE DONNEES

Les avantages d’une base de données sont :

-la saisie unique

-la mise à jour unique

-le gain de place au stockage

-l’accès plus facile à l’information

-la possibilité d’évolution

-la sécurité des données.

L’avantage majeur de l’utilisation d’une base de données est la possibilité de pouvoir être accédée par plusieurs utilisateurs simultanément c.-à-d. à la fois.

 

DOMAINES D’APPLICATION    

Les bases de données sont fréquentes dans les secteurs :

·         des finances,

·         des assurances,

·          des écoles,

·          de l’administration publique et des médias.

 

II-SYSTEMES DE GESTION DES BASES DE DONNEES (SGBD)

1-Définition d’un SGBD et Rôle

1.1-Définition

Un système de gestion de base de données (SGBD) est un logiciel qui permet de décrire, de modifier, d’interroger et d’administrer les données d'une base de données.

1.2-Rôle

Un SGBD est un ensemble de services (applications logicielles) permettant de gérer les bases de données, c.-à-d. :

-Permettre l’accès aux données.

-Autoriser un accès aux informations à des multiples utilisateurs.

-Manipuler les données présentes dans la base de données (insertion, suppression, modification, etc.)

Un système de gestion de base de données (SGBD) permet donc à l'utilisateur de manipuler une ou plusieurs bases de données dans des termes abstraits, sans tenir compte de la façon dont l'ordinateur les maintient.

1.3-Composition

Il est constitué de deux composantes principales : un moteur et une interface.

_ Le moteur constitue la composante principale d'un SGBD qui assure un certain nombre de fonctions.

_ L'interface, située entre les utilisateurs d'une base de données et le moteur permet un accès facile et convivial aux données.

2-Opérations de manipulation des données d’une Base de données

La manipulation des données consiste à insérer, modifier, consulter ou supprimer des lignes dans les tables de la base de données. L’action à effectuer sur la base est exprimée comme une phrase de ce langage (requête) qui est évaluée et exécutée par le SGBD à traversle Langage de Manipulation de Données (LMD).

2.1-Insertion des données

L’insertion des données dans une table consiste à ajouter une ligne dans cette table.

Exemple : Dans une table Lycée_2020, l'insertion d'une nouvelle section (Création d'une nouvelle section commeSciences Informatique suite à une réforme du système éducatif)

2.2-Mise à jour des données

La mise à jour d’une table consiste à modifier une information contenue dans cette table.

Exemple : Dans une table élève, la modification de l'adresse d'un élève (suite à un déménagement)

 

2.3-Consultation des données

La consultation des données consiste à afficher le contenu d’une ou de plusieurs tables en fonction de certains critères.

Exemple :La recherche de l'adresse d'un élève (lui envoyer une correspondance)

 

2.4-Suppression des données

La suppression des données d’une table consiste à les éliminer du contenu de cette table.

Exemple :

La suppression d'une classe (suite à une réduction des effectifs des élèves)

Remarque : Ici on ne touche pas aux structures de la base des données (la base de données et ses tables) qui dépendent plutôt de la définition et non de la manipulation des données.

3- Fonctions de définition d’une Base de données

Elles se résument à la création de la base de données et de ses tables, de la modification ou de la suppression de ces structures. La fonction de définition des données est assurée par le Langage de Description de Données (ou LDD).

 

3.1-Création des Bases de données et des tables

            Elle consiste à créer une base de données ou une table.

Exemple : La création d’une base de données Lycee_2020 avec des tables élèves, enseignants et classe.

 

3.2-Suppresion des bases de données et des tables

            Il s’agit ici de la suppression d’une table ou de toute une base de données entière.

3.3-Ajout des colonnes

            Il s’agit ici d’ajouter des colonnes à une table d’une base de données. On peut ajouter un champ à une table pour avoir plus d’informations sur un enregistrement.

3.4-Renommer des colonnes

            Il s’agit ici de donner un nouveau nom à une base de données ou à une table. Ceci peut intervenir lorsqu’il des modifications sur la structure de l’organisation.

3.5-Modifier des types

            On peut modifier le type d’une base de données suivant l’évolution de l’organisation.

 

4-Le contrôle des données

             Le contrôle des données regroupe un ensemble de fonctions qui permettent de contrôler l'utilisation de la base de données (sécurité de la base, intégrité des données, cohérences des données). Ces fonctions sont assurées par le Langage de contrôle des données (LCD). Il s’agit de :

·         La sécurité de fonctionnement

Elle consiste à offrir des mécanismes permettant de remettre rapidement la base de données dans un état opérationnel en cas d'incident matériel ou logiciel qui en aurait altéré la qualité.

Exemple

_ Sauvegarde de la base de données une fois par semaine.

_ Restauration de la base en cas de panne.

·         Le concept d'intégrité des données est relatif à la qualité de l'information enregistrée.

Pour être fiable, celle-ci doit parfois vérifier certaines propriétés, comme l'appartenance à une liste de valeurs permises pour un attribut. Ces propriétés sont appelées contraintes d'intégrité. Certaines sont spécifiées lors de la définition du schéma de la base, le SGBD se chargeant de les préserver pendant toute la vie de la base, alors que d'autres, plus complexes, peuvent nécessiter un effort de programmation.

Exemple :

_ Lors de l'inscription d'un élève, on doit vérifier l'existence de la classe ainsi que d'autres contraintes comme l'âge et le niveau d'études.

·         La cohérence des données doit garantir que les données stockées dans une base de données sont cohérentes entre elles, c'est-à-dire qu'elles respectent toutes les règles exigées par le concepteur de la base de données.

·         La gestion des conflits lorsque plusieurs utilisateurs ont accès simultanément aux données d'une base (autorisation des accès multiples en consultation, verrouillage lors d'accès en modification).

Exemple :

Lors de la mise à jour des données relatives à un élève, le SGBD verrouille (interdire la modification) ses données pour empêcher d'autres utilisateurs de les modifier. Cependant, ces données peuvent être consultées simultanément par d'autres utilisateurs autorisés.

·         La confidentialité

La mise en commun des données sous la forme d'une base de données accroit le besoin en confidentialité. Elle est assurée par le biais de mots de passe et de privilèges d'accès.

Exemple : _Seul le directeur de l'établissement ou son adjoint peut changer l'affectation d'un élève d'une classe à une autre (droit restreint en mise à jour).

_ Tout membre de l'administration du lycée peut consulter les informations sur les élèves (droit de consultation).

 

5-Les principaux SGBD

Les SGBD les plus courants sont :

MySQL : libre et gratuit

Microsoft Access : inclus dans la suite office

PostgreSQL : libre et gratuit comme MySQL, avec plus de fonctionnalités, mais un peu moins connu.

SQLite : libre et gratuit, très léger, mais très limité en fonctionnalités

Oracle : utilisé dans les grosses entreprises, sans aucun doute un des SGBD les plus complets mais il n’est pas libre et très cher.

Microsoft SQL Server : le SGBD de Microsoft.

 

III- LES COMMANDES DE DEFINITION DES DONNEES EN SQL

Les commandes de définition de données sont des commandes qui permettent de créer, modifier et supprimer les différentes structures d’une base de données :

-Créer une base des données ou des tables

-Modifier une base des données ou des tables

-Renommer des tables

-Supprimer une base de données ou des tables.

 

1-Création d’une base de données

            La commande SQL pour créer une base de données est CREATE DATABASE.

Syntaxe :

CREATE DATABASEnom de la base de données ;

Exemple :

CREATE DATABASElycee_2020 ;

 

2-Création d’une table

La commande du langage SQL permettant de créer une table est la commande CREATE TABLE.

 

Syntaxe :

CREATE TABLEnom_de_la_table

(

Nom_colonne1 type_donnees(n) contrainte,

Nom_colonne2 type_donnees(n) contrainte,

……………………………………………….

Nom_colonne m type_donnees(n) contrainte

) ;

-Le nom de la table doit être unique au niveau de la base de données et ne doit pas être un mot-clé SQL.

-Une table doit contenir au minimum une colonne, sa clé primaire.

-Le nombre maximum de colonnes par table dépend du SGBD.

-Les noms attribués à ces colonnes doivent être uniques dans la même table, mais plusieurs tables peuvent avoir des colonnes qui ont le même nom, par exemple la clé primaire d’une table peut se retrouver dans une autre table comme clé étrangère.

-Une éventuelle contrainte d’intégrité peut être imposée à une colonne donnée.

 

v  Les principaux types de données en SQL:

INT (n) : Numérique à n chiffres

DECIMAL (n, m) : Numérique à n chiffres dont m décimales.

CHAR (n) : chaine de caractère de longueur fixe n.

VARCHAR(n) : Chaine de caractères de longueur variable dont la taille maximale est n

DATE : Date et/ou heure

v  Les principales contraintes en SQL :

NULL : veut dire que la colonne n'est pas obligatoire. On peut lors de la saisie d'une ligne de la table, laisser la valeur de cette colonne à NULL (vide).

NOT NULL : veut dire que la colonne est obligatoire. On doit absolument renseigner cette colonne lors de la saisie d'une ligne de la table. Lorsqu’une colonne est une clé primaire, on n'a pas besoin de préciser l'option NOT  NULL. Elle est implicite car la clé ne peut être vide.

DEFAULT : permet d'attribuer une valeur par défaut à cette colonne lorsqu'aucune valeur ne lui a été affectée. Cette option ne peut pas être indiquée lorsque la colonne est obligatoire (NOT NULL).

PRIMARY KEY : spécifie que la colonne est utilisée comme clé primaire.

REFERENCES : définit une contrainte d'intégrité référentielle. Le nom de la table précisé après le mot-clé REFERENCES est celui de la table mère. Le nom de la colonne est celui de la colonne vers laquelle on se réfère et il ne doit être précisé que lorsqu'il est différent du nom de la colonne courante.

FOREIGN  KEY : définit une contrainte d'intégrité référentielle relative à plusieurs colonnes.

CHECK : Mot clé associé à une condition qui doit être vérifiée pour chaque valeur insérée.

CONSTRAINT : Optionnel et sert a attribuer un nom a la contrainte.

Exemple 1 :

 

CREATE TABLE professeur(

matricule_prof VARCHAR(20) PRIMARY KEY,

nom_prof        VARCHAR (20) NOT NULL,

prenom_prof VARCHAR(30),

age_prof INT (5),

grade_prof   VARCHAR (20),

adresse_profVARCHAR (100) NOT NULL,

salaire_profDECIMAL(10,3),

matiere_ensVARCHAR (20),

nb_matieres_ensINT(5) DEFAULT 0 CHECK (nb_matieres_ens<= 3)

); I

Exemple 2 :

 

CREATE TABLE matiere(

code_matiereVARCHAR(20) PRIMARY KEY,

designation_matiere VARCHAR (50) NOT NULL,

                        coeff_matiere        INT (5),

            code_profVARCHAR (20)REFERENCES professeur (matricule_prof)

             ) ;

 

3. Modification de la structure d'une base de données en mode commande

3.1. Modifier la structure d'une table en mode commande

La commande du langage SQL permettant de modifier la structure d'une table estla commande ALTER TABLE.

Syntaxe :

ALTER TABLE nom_table  [Options] ;

 

Elle permet les modifications suivantes sur la structure d'une table existante :

• Ajout de nouvelles colonnes : ALTER TABLE nom_table ADD nom_colonne type_donnees

• Modification de colonnes : ALTER TABLE nom_table MODIFY nom_colonne type_donnees ;

• Suppression de colonnes : ALTER TABLE nom_table       DROP COLUMN nom_colonne ;

• Ajout de contraintes d'intégrité : ALTER TABLE nom_table[DROP CONSTRAINT nom_contrainte]

• Suppression de contraintes d'intégrité : ALTER TABLE nom_table[DROP CONSTRAINT nom_contrainte]

• Activation de contraintes d’intégrité : ALTER TABLE nom_table[ENABLE | DISABLE nom_contrainte]

. Désactivation de contraintes d'intégrité : ALTER TABLE nom_table[ENABLE | DISABLE nom_contrainte]

 

3.2. Suppression d'une table en mode commande

La commande du langage SQL permettant de supprimer la structure d'une table est la commande DROP TABLE. Elle permet de supprimer à la fois le contenu et la structure d'une table existante.

Syntaxe :

DROP TABLE nom_table ;

Le nom de la table doit correspondre à une table qui existe déjà.

Exemple :

DROP TABLE client ;

 

4-Renommer une base de données ou une table

On utilise la commande RENAME.

Syntaxe :

RENAME ancien nom nouveau nom ;

Exemple : La création dans le complexe scolaire d’une école primaire pousse les dirigeants à changer le nom de la table professeur en table enseignant.

Code SQL :

            RENAME professeur enseignant ;

 

IV- LES COMMANDES DE MANIPULATION DES DONNEES EN SQL

Les commandes de manipulation de données sont des commandes qui permettent de manipuler le contenu de la base de données, c'est-à-dire d'insérer, de modifier, de consulter ou de supprimer des lignes dans les tables de la base de données :

 

1. Mise à jour de données

1.1. Insertion de lignes

L'opération d'ajout de nouvelles données consiste àinsérer de nouvelles lignes dans une table dont la structure a été déjà créée dans la base. La commande du langage SQL permettant d'insérer une ligne dans une table est la commande INSERT INTO.

Syntaxe :

INSERT INTO nom_table [ liste_Nom_colonne]

VALUES (liste_valeur) ;

 

-Le paramètre liste_Nom_colonne sert à préciser la liste des colonnes dans lesquelles va s'effectuer l'opération d'insertion. Cette liste peut être omise dans le cas où l'opération d'insertion concerne toutes les colonnes de la table. Dans ce cas, l'ordre des valeurs fournies par le paramètre liste_valeur doit être le même que celui des colonnes données pour la commande CREATE TABLE.

- Pour que l'opération d'insertion puisse être exécutée, les conditions suivantes doivent être respectées :

*Les types des données de liste_valeur doivent être compatibles avec ceux des colonnes de la table.

*Unicité des lignes (contrainte de clé primaire),

*Caractère obligatoire associé à une colonne (clause NOT NULL),

*Existence de la valeur dans une autre table quand il s'agit d'une clé étrangère (contrainte d'intégrité référentielle) : nécessité de respecter un certain ordre lors de l'insertion des lignes

*Vérification d'une condition de validité (contrainte valeur : clause CHECK).

Ø  Insertion d’une ligne

Exemple :

INSERT INTO professeur (matricule_prof, nom_prof,prenom_prof,age_prof, grade_prof,adresse_prof,salaire_prof,matiere_ens ,nombre_matieres_ens )

VALUES (‘580097-Y’,'Talla', 'André’ 45, ‘PLEG’,'BP 1030 Yaoundé', ‘Maths’, 150 000,1) ;

 

Remarque : Compte tenu du fait que chaque colonne de la table professeur, reçoit une valeur et que l'ordre de ces valeurs est le même que celui des colonnes, on aurait pu dans ce cas omettre de préciser ces colonnes et écrire tout simplement :

Exemple1 :

INSERT INTO professeur

VALUES (‘580097-Y’,'Talla', 'André’,45, ‘PLEG’, 'BP 1030 Yaoundé', 150 000, ‘Maths’,1) ;

 

Ø  Exemple2: Insertion de plusieurs lignes

Il est possible d’ajouter plusieurs lignes à un tableau avec une seule requête.

INSERT INTO client (prenom, nom, ville, age)

VALUES

('Pascal', 'Amougou', 'Bp 50 yaounde', 24),

('Théophile', 'Kenne', 'Bp 490 Mbouda', 36),

('Alain', 'Kamga', 'Bp 23 Bafoussam', 27) ;

Remarque : lorsque le champ à remplir est de type VARCHAR ou TEXT il faut indiquer le texte entre guillemets simples. En revanche, lorsque la colonne est un numérique tel que INT ou DECIMAL, on n’a pas besoin d’utiliser des guillemets, il suffit juste d’indiquer le nombre.

 

1.2. Modification de lignes

L'opération de mise à jour de données consiste en la modification des colonnes, appartenant à une table, qui contiennent des données qui ne sont plus conformes à la réalité. La commande du langage SQL permettant de modifier le contenu d'une table est la commande UPDATE.

Syntaxe :

UPDATE nom_table

SET Nom_colonne1 = Nouvelle_valeur 1 [, Nom_colonne2 = Nouvelle_valeur 2 …]

[WHERE condition] ;

-La modification peut toucher une ou plusieurs colonnes.

- Les valeurs des colonnes identifiées par Nom_colonne1, Nom_colonne2, …, Nom_colonne n sont modifiées dans toutes les lignes qui vérifient la condition de la clause WHERE. Dans le cas où cette dernière est absente, toutes les lignes de la table sont mises à jour.

 

Exemple 1 : Suite à une baisse des effectifs, le Fondateur du collège, après des négociations, décide de mettre les salaires de tous les professeurs à 100 000 FRANCS. Il faut modifier le champ salaire de la table professeur. Cette modification concerne une seule colonne et plusieurs lignes.

Code SQL :

UPDATE professeur

SET salaire_prof=100000;

 

Exemple 2 : Le professeur TALLA dont le numéro matricule est égal à 580097-Y vient d’avoir un an de plus. Son âge passe de 45 à 46 ans. Cette modification concerne une seule colonne et une ligne.

Code SQL :

UPDATE professeur

SET age_prof= 46 

WHERE matricule_prof = ‘580097-Y’;

 

Exemple 3 : Suite à une reprise de l’activité, le Fondateur du Collège décide de réhausser les salaires des professeurs dont le grade est PLEG. Il faut modifier la colonne salaire. Cette modification concerne une colonne et plusieurs lignes vérifiant une condition.

Code SQL :

UPDATE professeur

SET salaire_prof=120 000 ;

WHERE grade_prof = ‘PLEG’;

 

NB : On peut bien évidemment modifier plusieurs colonnes.

 

1.3. Suppression de lignes

L'opération de suppression de données consiste à éliminer une ou plusieurs lignes existantes à partir d'une table. La commande du langage SQL permettant de supprimer des lignes d'une table est la commande DELETE.

Syntaxe :

DELETE FROM nom_table

[WHERE condition] ;

-Le paramètre condition qui apparait dans la clause WHERE sert à indiquer la condition qui doit être vérifiée par les lignes à supprimer.

-Au cas où la commande de suppression ne respecte pas une contrainte d'intégrité référentielle, elle ne peut pas aboutir.

-La suppression d'une ligne appartenant à une table donnée peut entrainer la suppression d'autres lignes appartenant à d'autres tables lorsqu'il existe des contraintes d'intégrité référentielles de suppression en cascade : utilisation de la clause ON DELETE CASCADE dans la définition des clés étrangères. ON DELETE CASCADE est une option qui permet de maintenir l'intégrité référentielle en supprimant automatiquement les valeurs d'une clé étrangère dépendant d'une valeur d'une clé primaire si cette dernière est supprimée.

Exemple 1 : On souhaite supprimer tous les professeurs de la table :

Code SQL :

DELETE FROM professeur ;

Exemple 2 :On désire supprimer le professeur  ayant le numéro matricule 456087-U.

Code SQL :

DELETE FROM professeur

WHERE matricule_prof = 456087-U

 

NB : WHERE est indispensable pour indiquer quelle(s) entrée(s) doivent être supprimés, sinon toutes les entrées seront supprimées ! Cela équivaut à vider la table.

V-RECHERCHE DE DONNEES : REQUETES

La recherche de données est une opération qui consiste à récupérer des données appartenant à la base. Cette recherche peut être réalisée en faisant référence à une ou à plusieurs tables. Elle peut se référer à une partie ou à la totalité des colonnes des tables concernées tout en étant, éventuellement, assorti d’une condition.

Une recherche peut consister à effectuer :

- Une projection sur certaines colonnes d'une table.

- Une sélection sur certaines lignes d'une table.

- Une jointure sur deux tables.

- Toute combinaison de projection, sélection et jointure.

La commande permettant d'effectuer une recherche dans une base de données est la commande SELECT.

 

1. Recherche de colonnes à partir d'une table : projection

On appelle projection une opération SQL qui permet de ne récupérer qu’un sous-ensemble des colonnes d'une table. C’est donc une instruction permettant de sélectionner un ensemble de colonnes dans une table. Elle ne concerne qu'une seule table de la base de données. Le résultat de la projection doit comporter au moins une colonne de la table. Cependant, toutes les lignes relatives à cette colonne feront partie du résultat.

Syntaxe :

SELECT liste_Nom_colonne

FROM nom_table ;

                                              

-Le paramètre liste_Nom_colonne sert à préciser la liste des colonnes, que l'on veut voir affichées.

-Le paramètre liste_Nom_colonne peut être remplace par * qui désigne toutes les colonnes de la table.

-L'ordre d'affichage du résultat donné par le contenu des colonnes est le même que celui indiqué par le paramètre liste_Nom_colonne.

-Le paramètre nom_table sert à se référer[H1]  à la table concernée par l'opération de sélection.

-Le résultat de la commande SELECT est une nouvelle table résultat de l'opération de projection de la table initiale.

-Par défaut, les colonnes de la table résultat portent les mêmes noms que ceux de la table de départ. Cependant il est possible de donner aux colonnes de la table résultat des noms différents de ceux de la table d'origine. On doit dans ce cas donner un entête de colonne juste après son nom donné par le paramètre liste_Nom_colonne. Cet entête est généralement appelé Alias.

 

Exemple1 : On souhaite afficher des colonnes appartenant à la table professeur. Donner les matricules, noms et prénoms de tous les professeurs.

Code SQL :

SELECT matricule_prof, nom_prof, prenom_prof

FROM professeur ; 

 

 

Remarque : Les colonnes demandées par la commande SELECT seront affichées avec comme entêtes des colonnes d'affichage les noms des colonnes de la table professeur.

Exemple2 : Donner les caractéristiques de tous les professeurs.

Code SQL :

SELECT *

FROM professeur;

 

 

Remarque : Le symbole (*) implique que toutes les colonnes de la table professeur seront affichées.

-Dans le cas où le paramètre * est donné, l'ordre sera celui spécifié dans la structure de la table.

 

Exemple 3 : 4Donner les chiffres différents des salaires de tous les professeurs. L'affichage d'un montant doit se faire une seule fois en cas d’égalité de certains montants. On utilise la commande DISTINCT pour éliminer les redondances.

Code SQL :

SELECT DISTINCT salaire_prof

FROM professeur ;

 

 

 

-Le paramètre DISTINCT sert à éliminer les lignes en double dans le résultat puisque la commande SELECT peut ramener des doublons si la clé primaire ne figure pas dans la liste des colonnes à afficher.

 

2. Recherche de lignes à partir d'une table : Sélection

On appelle sélection l’opération qui consiste à ne récupérer qu’un sous-ensemble des lignes d'une table. Elle ne concerne qu'une seule table de la base de données. La différence par rapport à l'opération de projection est que le résultat est composé d'un sous-ensemble de lignes de la table et de toutes ses colonnes. La sélection est souvent combinée avec la projection. Dans ce cas le résultat est un sous ensemble de lignes et de colonnes de cette table.

Syntaxe :

SELECT liste_Nom_colonne

FROM nom_table

WHERE condition

 

-Le paramètre condition sert à préciser le critère qui doit être vérifié par les lignes à afficher. Cette condition est donnée sous la forme d'une expression logique.

-Si le résultat de l'évaluation de l'expression logique est vrai, pour une ligne, celle-ci fera partie du résultat.

-Dans l'expression logique, on peut utiliser en particulier :

*Les opérateurs de comparaison : =, >, <, >=, <= et <>.

*L'opérateur BETWEEN pour les intervalles de valeurs, bornes incluses.

*L'opérateur IN pour les listes de valeurs.

*L'opérateur IS NULL et IS NOT NULL pour les valeurs indéterminées.

*L'opérateur LIKE pour filtrer une chaine de caractères.

*Les opérateurs logiques : AND, OR et NOT. Exemples

Exemple :

On souhaite afficher certaines lignes appartenant à la table professeur par exemple, donner la liste des professeurs qui ont un salaire qui atteint ou dépasse un montant de 100000 FCFA.

Code SQL :

 

SELECT *

FROM professeur

WHERE salaire_prof>= 100000;xemple

1

Remarque :(*) voudrait dire que toutes les colonnes de la table professeur sont concernées, mais seules les lignes qui vérifient la condition indiquée feront partie du résultat. Remarque

Exemple 2 : On demande la même liste que dans l’exemple précédent sauf qu'on ne s'intéresse qu'aux colonnes relatives aux noms et aux prénoms.

Code SQL :

SELECT nom_prof 'Nom du professeur', prenom_prof 'Prénom du   professeur'

FROM professeur

WHERE salaire_prof>= 100000;

 

Exemple 3 : On souhaite afficher les noms des professeurs qui commence par la lettre « b ».

Exemple

SELECT nom_prof 'Nom du professeur', prenom_prof 'Prénom du   professeur'

FROM professeur

WHERE nom_prof LIKE « b% » ;2

 

3. Recherche de données à partir de plusieurs tables : Jointure

 Lorsqu'on a plusieurs tables, il faut adapter la requête pour récupérer les informations issues de ces tables. Pour cela, on doit faire ce qu'on appelle une jointure.

Pour réaliser une jointure interne, on sélectionne les champs des deux tables et on indique les noms de ces 2 tables dans la clause FROM.

Syntaxe :

SELECT liste_Nom_colonne

FROM nom_table1 [alias1], nom_table2 [alias2] …

WHERE condition ;

-L'opération relationnelle de jointure réalise une liaison entre deux tables en se basant sur l’égalité des valeurs entre l'une des colonnes de chaque table.

-Un alias permet de donner un nom synonyme, abrégé, à une table. Il permet d'alléger l'écriture de la commande SELECT en cas d'ambiguïté.

-Le paramètre condition sert, particulièrement, à préciser la condition de jointure.

Cette condition ne doit pas être confondue avec celle indiquée pour l'opération relationnelle de sélection.

-La condition de jointure doit porter sur les colonnes en commun aux tables utilisées pour l'opération de jointure (voir contrainte d'intégrité référentielle : clé primaire – clé étrangère). Exemples

Exemple 1 : On souhaite afficher certaines lignes appartenant aux tables professeur et matière. Par exemple, donner la désignation de chaque matière ainsi que le nom et le prénom des professeurs qui les enseignent.

Code SQL :

 

SELECT nom_prof, prenom_prof, coeff_mat

FROM professeur, matiere

WHERE professeur.matricule_prof = matiere.code_prof;

-Pour lever toute ambigüité sur les noms des colonnes, nous avons précisé les noms des tables comme préfixes, mais il est possible de simplifier en utilisant des alias.

La commande devient alors :

SELECT nom_prof, prenom_prof, coeff_mat

FROM professeur p, matiere m

WHERE p.matricule_prof = m.code_prof;

-Si un même professeur enseigner plusieurs matières et qu'on ne veut pas avoir de doublons dans le résultat, la commande devient :

 

SELECT DISTINCT nom_prof, prenom_prof, coeff_mat

FROM professeur p, matiere m

WHERE p.matricule_prof = m.code_prof;

 

4. Recherche de données avec Tri

Certaines requêtes ont besoin de rechercher des données de la base et d'avoir un résultat qui soit trié  selon un ordre croissant ou décroissant des valeurs d'une ou de plusieurs colonnes.

Syntaxe :

SELECT  liste_Nom_colonne

FROM nom_table1 [alias1] [, nom_table2 [alias2] …]

[WHERE condition]

ORDER BY Nom_colonne1 [ASC / DESC] [, Nom_colonne2 [ASC / DESC] …] ;

 

 -La clause ORDER BY sert à exiger le classement (ou tri) du résultat.

-Le classement peut se faire selon un ordre croissant (ASC) ou décroissant (DESC) des valeurs d'une ou de plusieurs colonnes. Ces dernières sont données par le paramètre Nom_colonne, et elles doivent obligatoirement figurer parmi celles indiquées par le paramètre liste_Nom_colonne.

-Par défaut c'est l'ordre croissant (ASC) qui est pris en considération.

-Les éléments dont les valeurs des colonnes concernées par le tri sont indéterminées (NULL), sont donnés ensemble de manière successive.

-Le tri peut être associé à n'importe quelle opération de recherche (Projection, Sélection et Jointure).

Exemples :

On souhaite afficher certaines lignes appartenant aux tables professeur et matière. Il s’agit d’afficher le nom du professeur, le prénom du professeur et la matière enseignée en fonction du montant du salaire par ordre décroissant du montant des salaires.

Code SQL :

SELECT p. nom_prof, prenom_prof, m.matiere_ens

FROM professeur p, matiere m

WHERE p.matricule_prof = m.code_prof

ORDER BY salaire_prof  DESC;

 

On aurait pu, pour la clause ORDER BY, remplacer les noms des colonnes par leur rang dans le paramètre liste_Nom_colonne. La commande devient alors :

Code SQL :

SELECT  p. nom_prof, prenom_prof, m.matiere_ens

FROM professeur p, matiere m

WHERE p.matricule_prof = m.code_prof

ORDER BY 7 DESC;

 

5-Utilisation des fonctions de calculs dans les opérations de recherche (fonctions Agrégat)

Certaines requêtes ont besoin de faire un certain nombre de calculs sur les lignes recherchées. Pour cela, SQL offre certaines fonctions standards de calcul appelées fonctions Agrégat. Ces fonctions ne peuvent être utilisées qu'avec la commande SELECT et en dehors de la clause WHERE.

Les fonctions de calcul offertes par SQL sont les suivantes :

• La fonction COUNT qui sert à compter le nombre de lignes du résultat obtenu par la commande SELECT.     

• La fonction SUM qui sert à faire la somme des valeurs d'une colonne dont le type de données est numérique.

• La fonction MIN qui sert à déterminer la valeur minimale d'une colonne.

• La fonction MAX qui sert à déterminer la valeur maximale d'une colonne.

• La fonction AVG qui sert à déterminer la moyenne (average) des valeurs numériques d'une colonne.

Exemple 1 : Donner le nombre de matières qui existent dans la base de données matiere.

Code SQL :

SELECT COUNT(*)

FROM matiere ;

 

Exemple 2 : Donner la somme des coefficients des matières enseignées par un professeur de numéro matricule donné.

Code SQL :

SELECT SUM (coeff_matiere)

FROM matiere

WHERE matricule_prof=584097-Y;E

 

 

-

VI-CREATION D’UNE BASE DE DONNEES EN MODE COMMANDE SOUS MySQL

 

 

 

            MySQL est un gestionnaire de bases de données dont le rôle est d’enregistrer des données de manière organisée afin de les retrouver facilement plus tard.

            MySQL propose une quantité très importante de type de données. En fait, ceux-ci peuvent être classés par catégorie :

INT : ce sont les nombres.

VARCHAR : des textes courts de moins de 255 caractères.

TEXT : des textes longs.

DATE : ce sont les dates

DATETIME : donne la date et l’heure

Etc

 

1-Création de la base de donnéeslycee_2020 

Pour gérer l’établissement, le proviseur du Lycée décide de créer une base de données nommée lycee_2020 contenant les tables suivantes :

-eleves (matricule_eleve, nom_eleve, prenom_eleve, classe)

-enseignants (matricule_ens, nom_ens, prenom_ens, matiere_ens, grade)

-salles (no_salle, capacite, batiment, commentaires)

Code MySQL :

CREATE DATABASElycee_2020 ;

 

·         La création d’une base de données ne la sélectionne pas pour l’utilisation ; on doit le faire explicitement. Pour rendre une base de données courante, on utilise la commande USE DATABASE.

 

Syntaxe :

USEnom de la base de données ;

 

La base de données a besoin d’être créée juste une fois, mais on doit la sélectionner pour l’utiliser, chaque fois qu’on débute une session MySQL étant donné qu’il y a plusieurs bases de données enregistrée dans le disque dur de l’ordinateur. La commande USE  permet de désigner une base de données courante c-à-d vers laquelle seront dirigées les prochaines requêtes SQL dans le processus courant.

 

·         Pour trouver la base de données actuellement sélectionnée, on utilise la commande SELECT DATABASE (). MySQL affiche le nom de la base de données en cours d’utilisation.

Syntaxe :

            SELECT DATABASE () ;

·         Pour afficher la liste des bases de données présentes dans le disque dur, on utilise la commande SQL SHOW DATABASE.

Syntaxe :

            SHOW DATABASES ;

2-Création des tables

            Lorsqu’on crée une base de données, elle est vide ; il faut ensuite créer des tables.

La table eleves qui contient des enregistrements pour chaque élève : matricule_eleve ; nom_eleve, prenom_eleve, age, classe et adresse_parents.

Code MySQL :

CREATE TABLE eleves (matricule_eleve INT (5),

nom_eleve VARCHAR (25),

prenom_eleve VARCHAR (25),

age INT (5),

classe INT (5),

adresse_parents TEXT) ;

 

 

 

-Nom_eleve VARCHAR (25) veut dire que le nom de l’élève peut prendre jusqu’à 25 caractères. En effet on peut choisir une taille qui varie entre 1 et 255 caractères, celle qui semble raisonnable.

-TEXT est une commande réservée aux  textes longs (TEXT peut permettre d’insérer tout un roman).

-INT est une commande réservée aux entiers.

 

Remarque : Si on fait un mauvais choix et on s’aperçoit plus tard qu’on a besoin d’un champ plus long, MySQL fournit la commande ALTER TABLE. La requête ALTER TABLE permet de modifier une table existante.Elle est idéale pour ajouter une colonne, supprimer une colonne ou modifier une colonne existante, par exemple pour changer de type.

La table enseignants qui contient des enregistrements pour chaque enseignant : matricule_ens, nom_ens, prenom_ens, matiere_ens, grade.

Code MySQL :

CREATE TABLE enseignants (matricule_ensINT (5),

nom_ensVARCHAR (25),

prenom_ensVARCHAR (25),

matiere_ens VARCHAR (25),

grade VARCHAR (10)) ;

 

 

La table salle qui contient des enregistrements pour chaque salle : no_salle, capacite, batiment, commentaires.

Code MySQL :

CREATE TABLE salles (no_salleINT (5),

                        capacite INT (5),

 no_batimentINT (5),

            commentairesTEXT) ;

 

3-Afficher les tables d’une base de données

            Pour afficher les tables d’une base de données, MySQL fournit la commande SHOW TABLES.

Syntaxe :

SHOW TABLES [FROM nom_base de données];

 

Tables in Lycee-2020

Eleves

Enseignants

Salles

4-Vérifier que la structure de la table a été créée

            Pour vérifier que la table a été bien créée de la façon qu’on voulait, utiliser la commande DESCRIBE. Cette commande affiche la structure de la table.

Syntaxe :DESCRIBE eleves ;

 

Field

Type

Null

Key

Default

Extra

Nom_eleve

Prenom_eleve

Age

Classe

Adresse_parent

VARCHAR(25)

VARCHAR(25)

INT(5)

INT(5)

TEXT

YES

YES

YES

YES

YES

 

NULL

NULL

NULL

NULL

NULL

 

 

5-Charger les données dans les tables

            Après la création de la table, on a besoin de la remplir, les commandes LOAD DATA et INSERT INTO sont utiles.

Code SQL :

INSERT INTO eleves (matricule_eleve, nom_eleve, prenom_eleve, age, classe, adresse_parents)

VALUES (0001, « nana», « leon », 19,  3, « BP 2310 YAOUNDE  ») ;

INSERT INTO eleves (matricule_eleve, nom_eleve, prenom_eleve, age, classe, adresse_parents)

VALUES (0002, « ada », « paul », 15, 4, « BP 23 YAOUNDE Tel 652838129 ») ;

INSERT INTO eleves (matricule_eleve, nom_eleve, prenom_eleve, age, classe, adresse_parents)

VALUES (0003, « kamga», « David »,13,3, « BP 123 YAOUNDE Tel 676838129 ») ;

INSERT INTO eleves (matricule_eleve, nom_eleve, prenom_eleve, age, classe, adresse_parents)

VALUES (0004, « ngo », « blandine », 12, 6, « BP 89 DOUALA Tel 698998129  ») ;

NB :

i) Le champ matricule_eleve est l’identifiant (ID), il est auto- incrémenté. MySQL mettra le numéro d’id lui-même. On pouvait même se passer du champ id dans la requête ;

ii) Les chaines de caractères sont mises entre guillemets.

iii) Eviter les caratères accentués.

 

6-Recupérer des informations à partir d’une table

            La commande SELECT est utilisée pour récupérer des informations à partir d’une table.

SELECTmatricule_eleve,nom_eleve, prenom_eleve,age,classe,adresse_parents

FROMeleves

 

matricule_eleve

nom_eleve

prenom_eleve

age

Classe

adresse_parents

0001

Nana

Leon

19

BP 2310 Yaoundé

0002

Ada

Paul

15

 BP 23 Yaoundé

Tel 652838129

0003

Kamga

David

13

BP 123 Yaoundé Tel 676838129

0004

Ngo

Blandine

12

BP 89 Douala Tel 698998129

 

NB:Comme on veut afficher la totalité des colonnes, on pouvait écrire:

SELECT * FROM eleves;

Utiliser l’option DISTINCT:

La commande SELECT peut afficher des lignes en doubles. Pour éviter des redondances dans les résultats, il faut tout simplement ajouter DISTINCT après le mot SELECT.

Syntaxe :

SELECT DISTINCT nom du champ FROM nom de la table ;

 

7-Modifier les données d’une table

            La requête UPDATE permet de modifier une entrée.

 Un élève est admis en classe supérieure, il faut modifier la classe et l’âge.

Code SQL :

UPDATE eleves

SET age=16, classe= 3

WHERE matricule_eleve=0002 ;

       

8-Supprimer des données dans une table

La commande DELETE permet de supprimer une entrée.

 L’élève de matricule 0051 est exclu du lycée, il faut le supprimer.

Code MySQL :

DELETE FROM eleves

WHERE matricule_eleve=0004 

 

;NB : WHERE est indispensable pour indiquer quelle(s) entrée(s) doivent être supprimés, sinon toutes les entrées seront supprimées !

VII- CREATION D’UNE BASE DE DONNEES EN MODE GRAPHIQUE (MODE ASSISTE)

  SOUS MS ACCESS 2013

MS ACCESS est le SGBD de la suite Microsoft Office utilisé pour créer une base de données. Il permet d’utiliser des requêtes en langage SQL (Structured Query Language ou langage d’interrogation) pour la gestion des bases de données. Il dispose d’une interface permettant de saisir les requêtes. Grâce à des assistants, des formulaires ou des sous-formulaires, il permet de configurer un regroupement de données en prenant compte plusieurs critères.

 

1-Créer une base de données

            Lorsqu’on démarre Access, une première page présente « Base de données vide ».Cliquez sur « Base de données vide ».Vous obtenez la page suivante :

 

Saisir le nom de la Base de données, puis cliquer sur « Créer ».

La fenêtre de MS Access s’ouvre :

 

 

2- Créer une table

Pour créer une table en mode création, on doit suivre les étapes suivantes.

-Dans la fenêtre Base de données, sélectionner l'option Créer>> puis << table>>.

- Dans le tableau qui s'affiche, saisir pour chaque colonne de la table son nom, son type de données et sa description. MS Access2013 présente plusieurs types de données : texte court, texte long, nombre, date et heure, monétaire etc.

·         Cliquer sur la flèche à droite de « Cliquer pour ajouter » pour sélectionner un type de données

·         Saisir un nom de champ

·         Saisir la valeur du champ du champ tout en respectant le type de données.

NB : Le champ N° est autoincrémenté.Un clic droit sur table permet de nommer une table

On obtient pour la table ARTICLE, la page suivante :

 

 

                                                                                      Fenêtre « Table » en mode création

 

Une fois que toutes les colonnes ont été décrites, pour enregistrer la table, cliquer sur le menu Fichier, puis sur Enregistrer sous. Cliquer sur Base de données Access pour sélectionner la base de données dans laquelle la table va être enregistrée. Saisir le nom de la table puis cliquer sur OK. Enfin sélectionner un nom de fichier dans lequel la table doit être enregistrée, puis cliquer sur Enregistrer.

 

                                                                                                            Fenêtre « Enregistrer table »

            La nouvelle table est maintenant rajoutée à la liste des tables existantes dans la base de données courante.

On peut rajouter les propriétés de la table en allant dans le menu TABLE, puis propriétés de la table.

 

 

 

                                                                                                                  Propriétés table

 

4-Indiquer la clé primaire d'une table

Pour préciser la clé primaire d'une table, il faut procéder comme suit :

-Clic droit sur le nom de la table dans le volet gauche de la page

-Choisir mode création

-Sélectionner le champ qui doit être la clé primaire

-Dans le menu Création, Cliquez sur Clé primaire

L'icône d’une clé apparaitra à gauche de la colonne constituant de la clé primaire.

 

 

 

                                                                                                                  Ajout de clé primaire

Remarque :

Si la clé primaire est composée de plusieurs colonnes, il faut sélectionner toutes les colonnes qui constitueront la clé primaire avant de cliquer sur le bouton droit de la souris.

 

5-Établir un lien entre deux tables (clé étrangère)

Lorsque toutes les tables ont été créées, on doit rajouter les liens entre ces tables. La procédure à suivre pour établir un lien entre deux tables est la suivante :

Sélectionner l'option Relations dans le menu Outils . Une fenêtre contenant la liste des tables s'affiche.

 

                                                                                                            Fenêtre « Afficher tables »

 

Sélectionner les tables pour lesquelles vous souhaitez établir un lien puis cliquer sur le bouton Ajouter. Maintenir la touche Ctrl pour pouvoir sélectionner plus d'une table.

En fermant la fenêtre, une nouvelle fenêtre contenant les tables sélectionnées s'affiche. Les colonnes constituant les clés primaires sont affichées en gras.

 

 

 

A l'aide de la souris, cliquer sur la colonne constituant la clé étrangère, maintenir le bouton de la souris enfoncé et pointer sur la colonne constituant la clé primaire dans l'autre table puis lâcher le bouton de la souris. La fenêtre suivante va s'afficher :

 

Fenêtre « Propriétés relation »

Il est à noter que les colonnes servant à établir le lien entre les deux tables sont affichées dans le tableau. Dans le cas où le lien se base sur plus qu'une colonne dans chaque table, on peut utiliser les lignes vierges de ce tableau pour rajouter les autres colonnes.

Le type du lien est ici un a plusieurs , signifiant qu'à une ligne de la table mère, peut correspondre une ou plusieurs lignes de la table fille.

 Cocher les options affichées en fonction du comportement que vous souhaitez appliquer à ce lien.

_ Appliquer l'intégrité référentielle : Signifie que lorsqu'on insère une ligne dans la table fille, le SGBD vérifie que la valeur saisie dans la colonne clé étrangère existe dans la colonne clé primaire de la table mère. Dans notre exemple, il s'agit de vérifier qu'une commande est relative à un client qui existe dans la table Client.

_ Mettre à jour en cascade les champs correspondants : Cette option permet de modifier automatiquement la valeur de la clé étrangère dans la table fille lorsqu'on modifie la valeur de la clé primaire dans la table mère. Par exemple, si on modifie le code d'un client dans la table Client, ce code sera modifié dans toutes les lignes de la table Commande correspondant aux commandes de ce client.

_ Effacer en cascade les enregistrements correspondants : Cette option permet de supprimer automatiquement toutes les lignes dans la table fille correspondant à une ligne supprimée dans la table mère. Par exemple, si on supprime un client dans la table Client, toutes les lignes de la table Commande correspondant aux commandes de ce client seront supprimées.

 

Cliquer sur le bouton Créer. Les deux tables sont maintenant liées.

                                                                                                        Relation Article-Commande

 

Remarque :

Lorsque les deux colonnes servant à établir le lien entre deux tables sont des clés primaires, le lien crée est de type un à un . Ce qui signifie qu'à une ligne de chacune des tables correspond une et une seule ligne de l'autre table. Bien qu’autorisé par certains SGBD, ce cas ne doit pas se produire si on a respecté les règles de conception de la base de données. Il faut essayer donc d'éviter ce type de lien.

 

6- Démarche de création d'une requête

Dans la fenêtre d’Access 2013, sélectionnez l'onglet Créer, cliquer sur<<Création de requête>>. La fenêtre Afficher table apparait

 

 

                                                                                                              Fenêtre « Afficher tables »

 

3.  Une boite de dialogue apparait : cliquez sur le nom de la table à insérer, puis appuyez sur le bouton <<Ajouter>>. Répétez cette opération si une autre table doit être ajoutée.

 

7. Dans la grille d'interrogation en bas de la page, sélectionnez les champs que vous voulez voir apparaitre dans l'affichage de la requête ou que vous utiliserez pour classer, filtrer les lignes.

Vous définissez éventuellement :

• Les tris (ordre croissant, décroissant)

• Les critères de filtre

• Les formules de calcul

• Une propriété pour la requête ou pour des colonnes affichées.

 

Choix de colonnes à afficher dans une requête

Pour afficher une colonne dans une requête, il faut cliquer sur la colonne, tout en maintenant le bouton de gauche enfoncé, amenez la colonne sur la grille du bas et relâchez le bouton ou double cliquer sur la colonne.

 

 

8. Enregistrement d'une requête

Après avoir bien rempli la grille d’interrogation, il faut enregistrer la requête. Pour enregistrer la requête, cliquez sur le bouton<<Enregistrer sous>> et donnez-lui un nom. Une fois enregistrée, le nom de la requête apparait à la suite des tables.

 

9. Visualisation du résultat d'une requête

Pour visualiser le résultat de la requête, faites un double-clic sur le nom de cette requête. Le résultat apparait sous la forme d'une feuille de données. Sa présentation peut être modifiée (Même principe que dans un tableur).

 

 

Remarque :

1. La grille d'interrogation des colonnes et de définition des critères génère automatiquement des ordres de programmation SQL qui permettent d'obtenir le résultat souhaité. La requête sauvegardée mémorise les lignes de programmation et non pas le résultat affiche.

Dans le cas précédent, la requête SQL générée est la suivante :

Code SQL :

SELECT N°,Code_article, Désignation, Prix unitaire, Quantité

FROM ARTICLES

WHERE Code_article=C60

2. Pour afficher toutes les colonnes d'une ligne, vous sélectionnez le champ *. Dans l'exemple ci-dessous, la sélection du caractère * affiche dans la zone champ le terme ARTICLE*.

 

EXERCICES

CONTROLE DE CONNAISSANCES :

1. Définir : base des données, table, attribut.

2. Citer 04 modèles de base de données.

3. Comment appelle-t-on le modèle qui consiste à représenter aussi bien les objets que les liens à l'aide d'une structure appelée table.

4. Comment appelle-t-on une colonne ou un groupe de colonne permettant d’identifier de façon unique chaque ligne de la table.

5. Comment appelle-t-on une règle appliquée à une colonne ou à une table qui doit être toujours vérifiée.

6. Que signifie l’expression « clé étrangère » entre deux tables d’une base de données ? quel est son rôle ?

 

EXERCICE  I:

La base de données d’un complexe des salles de cinéma, contenant des informations sur les films et les séances, est composée des tables suivantes :

FILM (Code_film, Nom_film, Producteur, Année_sortie,)

SALLE (N°Salle, Nom_Salle, Nb_places)

SEANCE (Code_film, N°Salle, Date, Heure_debut,)

1-Identifier pour chaque table la clé primaire.

2-Identifier les liens éventuels entre les tables.

3-Donner la représentation graphique de la base de données finale.

 

EXERCICE II:

On souhaite créer une base de données concernant une entreprise. Une première étude a mis en évidence trois relations. Pour chacune des relations, la clé est soulignée.

EMPLOYE (NumEmp, Nom, Prénom, Adresse, Téléphone, Qualification)

SERVICE (NomService, Responsable, Téléphone)

PROJET (NumProjet, NomProjet, DateDeb, DateFin, NumEmp)

Travail demandé :

En considérant les possibilités offertes par ce schéma, répondre aux questions suivantes en justifiant vos réponses par rapport à la sémantique intuitive des relations :

1 - Un employé peut-il avoir plusieurs qualifications ?

2 - Un employé peut-il faire plusieurs projets en même temps ?

3 - Une personne peut-elle être responsable de plusieurs services ?

4 - Un service peut-il avoir plusieurs responsables ?

 

EXERCICE III :

Soit la description textuelle d’une base de données :

Professeur (CodeProf, NomProf, Tel)

Matière (CodeMat, Libellé#, Coef, NbHeure)

Enseigne (CodeProf#, Codematiere#)

Libelle_matiere(libellé)

 

Travail demandé :

1) Déduire à partir de ces tables, la description graphique de la base.

2) En considérant les possibilités offertes par ce schéma, répondez aux questions suivantes 

2-1 Un professeur peut-il enseigner plusieurs matières ?

2-2 Une matière possède elle plusieurs libellés ?

2-3 Une matière peut-elle être enseignée par plusieurs professeurs ?

 

EXERCICE IV:

Pour décrire les employés d’une entreprise et leurs répartitions entre les différents

Services, on présente le contenu de deux tables « Employé » et « Service » comme suit :

table : Service

Num_service

Nom_service

 

10

Administratif

 

20   

Financier

30    

Juridique

 

Table : Employe

code_emp

nom     

salaire 

num_serv

123

Abanda

756,500

 20

426

Tsafack  

987,900

 10

456

Tounsi

     400,000            

 40

123

Mbede           

798,322

 30

456

Tounsi Léon

380,500           

20

 

NB : On suppose qu’un employé est affecté à un seul service

 

Questions :

1) Définir le terme « contrainte d’intégrité » :

2) En se basant sur les contenus de ces tables, il apparait que des contraintes d’intégrité n’ont pas été respectées. Lesquelles ?

3) On désire mettre en place un logiciel permettant d’assurer le respect des contraintes d’intégrité lors de la manipulation d’une base de données.

       a-Comment appelle-t-on ce logiciel ?

       b- Quels sont ses composants ?

       c- Quel est son rôle ?

       d- Quels sont ses fonctions.

 

EXERCICE V:

Pour décrire les élèves du lycée inscrits dans le club « musique », la table suivante a été créée :

musique

N°Elève

Nom

Prénom

Date_ de_ naissance

Code_ classe

Désignation

Nombre_ d’élèves

Mat 0090

Maffo

Paul

22/11/90

3M3

3ème moderne3

28

Mat 0055

Ada

Pierre

11/12/88

2nde C

Seconde C

29

Mat 0053

Tene

Marc

30/10/92

4M2

4ème moderne 2

30

Mat 0054

Ngo

Jeanne

01/01/89

3M3

3ème moderne3

30

Mat 0055

Bisseck

Blandine

12/12/90

3M3

3ème moderne3

28

Mat 0056

Kamga

Alice

11/09/87

PD

Première D

30

Mat 0057

Vobam

Adrien

13/12/85

Tle C

Terminale C

30

Mat 0058

Talla

André

14/10/86

Tle C

Terminale C

30

 

1-Identifier les anomalies de cette structure

2-Pour éviter les redondances, proposez une autre façon de structurer cette table. (Représentation textuelle).

 

 

EXERCICE  VI: Soit la base de données nommée EXAMENS, constituée d’une seule table.

Table : candidats

Code_candidat

Nom

Prénom

Examen

Moyenne

Décision

Etablissement

14OBC001

ELIMBI

Gustave

BAA4

14,42

ADMIS

Lycée d’Akwa

14OBC014

AMADOU

Ibrahim

BAD

10,25

ADMIS

Collège de Mazenod

14OBC094

WAMBA

Paulin

BAA4

9 ,02

REFUSE

Collège Jean Tabi

 

1-Dans un SGBD, comment appelle-t-on le langage utilisé pour établir une interaction entre le logiciel et l’utilisateur.

2-Que signifie le sigle SGBD ? Citer un exemple de logiciel permettant de créer cette base de données.

3-Citer deux avantages que peut procurer l’utilisation d’une base de données.

4-Compléter la requête ci-dessus permettant de sélectionner les établissements des candidats admis :

Select (…………) from …….…..where…………..=…………….. ;

 

EXERCICE VII : Soit la table candidat suivante :

Nom

Prénom

Classe

Age

EKASSI

Jean Blaise

6ème 2

10

AKOA

Pierre Paul

Tle C

17

FOTSO

Jean

2 C

15

 

1-Donner le résultat de la requête suivante :

               SELECT  Nom FROM Liste WHERE Age=17 ;

2-Donner la commande SQL permettant de récupérer les informations concernant FOTSO Jean

3-On considère la requête suivante : CREATE TABLE client (Numéro INT(5),  Nom VARCHAR(20), ville VARCHAR(10), Sexe VARCHAR(10))

         a-Que fait cette requête ?

         b-Présenter le résultat de cette requête sous forme de table client sachant que :

            - le client numéro 1, Eboutou Yvan, homme, habite la ville de Yaoundé ;

            -le client numéro 2, Embolo Valérie, femme, habite la ville de mbalmayo ;

            -le client numéro 3, Fossi Alain, homme, habite la ville de Bafoussam ;

            - le client numéro 4, Kesseng Laure, femme, habite la ville de Yaoundé.

        c-Donner une requête pour récupérer des informations sur Kesseng Laure.

 

EXERCICE IX: Soit la base de données relative à l'exploitation des chambres d'un hôtel définie comme suit :

Chambre (Num_Chambre, Prix, Nbr_Lit, Nbr_Pers, Confort, Equ)

Client (Num_Client, Nom, Prenom, Adresse)

Reservation (Num_Client#, Num_Chambre#, Date_Arr, Date_Dep)

 

Table Chambre

Num_Chambre

Prix

Nbr_Lit

Nbr_Pers

Confort

Equip

10

80

1

2

WC

Non

20

100

2

2

Douche

Non

25

180

3

3

Bain

TV

 

Table Client

Num_Client

Nom

Prénom

Adresse

1000

Sahli

Mohamed

Sousse

1001

Chatti

Saleh

Tunis

 

Table Réservation

Num_Client

Num_Chambre

Date_Arr

Date_Dép

1000

20

25/12/2006

01/01/2007

1001

10

01/01/2007

 

 

Exprimer les requêtes suivantes en SQL :

1. Les numéros de chambres avec TV.

2. Les numéros de chambres et leurs capacités.

3. La capacité théorique d'accueil de l'hôtel.

4. Le prix par personne des chambres avec TV.

5. Les numéros des chambres et le numéro des clients ayant réservé des chambres pour le 25/12/2006.

6. Les numéros des chambres coûtant au maximum 80 euros ou ayant un bain et valant au maximum 120 euros.

7. Les noms, prénoms et adresses des clients dont les noms commencent par SA

8. Le nombre de chambres dont le prix est entre 85 et 120 euros.

9. Les noms des clients n'ayant pas fixé la date de départ.

 

EXERCICE X:

Soit le code SQL de la table client ci-dessous :

CREATE TABLE client (

code_client       VARCHAR(20) PRIMARY KEY,

nom_client       VARCHAR (20) NOT NULL,

prenom_client  VARCHAR(30),

adr_client         VARCHAR (100) NOT NULL,

tel_client          INT (10),

email_client     VARCHAR (50),

chiffre_affaire_annee_encours     DECIMAL(10,3),

cumul_chiffre_affaire       DECIMAL(12,3)); IPPARTIE A

PARTIE A :

1-Insérer en précisant explicitement toutes les colonnes, le client suivant :

code_client =1000, nom_client=Ndende, prénom_client=Paul, adr_client =BP 123 Yaoundé, tel_client=676 14 00 34, email_client=ndende@gmail.com, chiffre_affaire_annee_encours=0, cumul_chiffre_affaire=0.

2-Refaire la même chose sans préciser explicitement toutes les colonnes.

3-Insérer un client sachant qu’on ne dispose que de valeurs relatives à certaines colonnes de cette table. Ces colonnes sont par exemple : code_client =1020, nom_client=SCB Cameroun et  adr_client=BP 345 Douala.

4-Insérer une ligne au sein de la table client, en précisant explicitement les valeurs relatives à son code =1040,nom=tatio, son prénom=alphonse.

5-Insérer une ligne au sein de la table Client, en précisant explicitement les valeurs relatives à son nom=Socsuba SA et son adresse=BP 2367 Yaoundé.

6-Insérer une ligne au sein de la table Client, en précisant explicitement les valeurs relatives au code client=1040, à son nom=BICEC et à son adresse=BP987 Yaoundé.

7-Modifier le prénom d’Alphonse par Pierre-Alphonse.

PARTIE B :

1-Donner une requête qui permet d’afficher des colonnes appartenant à la table client de : codes, noms et prénoms de tous les clients.

2-Donner une requête qui permet de donner les caractéristiques de tous les clients.

3-Donner une requête qui permet d’afficher les codes, noms et prénoms de tous les clients. Au moment de l'affichage, les entêtes des colonnes doivent être respectivement 'Code du Client', 'Nom du Client' et ‘Prénom du Client'.

4-Donnerune requête qui permet d’afficher les chiffres d'affaires de l'année en cours de tous les clients.

5-Donnerune requête qui permet d’afficher les chiffres d'affaires de l'année en cours de tous les clients. L'affichage d'un montant doit se faire une seule fois en cas d’égalité de certains montants.

6-Donner une requête qui permet d’afficher la liste des clients qui ont un cumul des chiffres d'affaires compris entre 500000 et 800000.

 

EXERCICE XI : On donne les codes des tables article et commande suivants :

Table article

CREATE TABLE article (

code_art VARCHAR(20) PRIMARY KEY,

des_art   VARCHAR (50) NOT NULL,

PU          DECIMAL (8, 3) CHECK (PU > 0),

qte_stock INT(5) DEFAULT 0

);

Table commande

CREATE TABLE commande(

num_comm  VARCHAR(20) PRIMARY KEY,

date_comm  DATE NOT NULL,

ref_art            VARCHAR(20) REFERENCES article(code_art),

qte_comm     INT(5)

);

PARTIE A :

On suppose, que les commandes suivantes ont été exécutées :
INSERT INTO Article VALUES (7050,'Informatique 4ème Année Mathématiques',4000,500);
INSERT INTO Article VALUES (1020,'4 Stylos Feutres Pointes Fines : Rouge, Jaune, Vert et Bleu',1500,3000);

INSERT INTO Commande VALUES (50010,'09/05/2007',’8050’,1010);
INSERT INTO Commande VALUES (70150,'20/07/2007',’1020’,1000);

1-Donner une requête qui permet d’afficher la liste des produits et pour chacun calculer la valeur du stock.

2-Donner une requête qui permet d’afficher le numéro et la date des commandes d’un article donné.

 

 

EXERCICE XI : On donne les codes des tables article et commande suivants :

Table article

CREATE TABLE article (

code_art VARCHAR(20) PRIMARY KEY,

des_art   VARCHAR (50) NOT NULL,

PU          DECIMAL (8, 3) CHECK (PU > 0),

qte_stock INT(5) DEFAULT 0

);

Table commande

CREATE TABLE commande(

num_comm  VARCHAR(20) PRIMARY KEY,

date_comm  DATE NOT NULL,

ref_art            VARCHAR(20) REFERENCES article(code_art),

qte_comm     INT(5)

);

PARTIE A :

On suppose, que les commandes suivantes ont été exécutées :
INSERT INTO Article VALUES (7050,'Informatique 4ème Année Mathématiques',4000,500);
INSERT INTO Article VALUES (1020,'4 Stylos Feutres Pointes Fines : Rouge, Jaune, Vert et Bleu',1500,3000);

INSERT INTO Commande VALUES (50010,'09/05/2007',’8050’,1010);
INSERT INTO Commande VALUES (70150,'20/07/2007',’1020’,1000);

1-Donner une requête qui permet d’afficher la liste des produits et pour chacun calculer la valeur du stock.

2-Donner une requête qui permet d’afficher le numéro et la date des commandes d’un article donné.

 

PARTIE B :

1-Donner une requête qui permet d’afficher le nombre d’articles dont la quantité en stock est supérieure à 1000.

2- Donner une requête qui permet d’afficher la somme des quantités en stock de tous les articles.

3-Pour l'ensemble des articles, donner une requête qui permet d’afficher la plus grande et la plus petite quantité en stock ainsi que la moyenne des quantités en stock.

 

CORRIGES

CONTROLE DE CONNAISSANCES :

1. Une base de données est une collection de données structurées et organisées qui, après avoir été saisies une seule fois, sont accessibles aux différents utilisateurs.

- Une table est un ensemble de données relatives à un même sujet (ou entité) et structurées sous forme de tableau. On l’appelle aussi relation.

 

 - Dans une table, un attribut est une colonne correspondant à une propriété élémentaire de l'objet décrit par cette table. On l’appelle aussi champ.

2. Il existe plusieurs modèles de base de données :

-Modèle hiérarchique

-Modèle en réseau

-Modèle orienté objet

-Modèle relationnel

3. C’est le modèle relationnel

4. C’est la clé primaire

5. C’est une contrainte d’intégrité

6. C’est une colonne d’une table fille qui se trouve être clé primaire dans une autre table dite table mère.

Son rôle est d’assurer le lien entre les deux tables.

 

EXERCICE I:.

1-Code-film pour la table FILM

  -N°Salle pour la table SALLE

 -Code_film, N°Salle, pour la table SEANCE (ici la clé primaire est composée)

 

2. Liens entre les tables

- FILM → est lié à SEANCE par Code_film (clé étrangère dans SEANCE).

- SALLE → est lié à SEANCE par N°Salle (clé étrangère dans SEANCE). 

→ Cela forme deux relations 1,n :

  - Un film peut avoir plusieurs séances.

  - Une salle peut accueillir plusieurs séances

3.

EXERCICE II:

1-Non

//La colonne Qualification est un attribut simple de la table EMPLOYE, donc un seul champ par employé. 

→ Si un employé pouvait avoir plusieurs qualifications, on aurait une relation à part comme : 

EMPLOYE_QUALIFICATION (NumEmp, Qualification)

 

2 – non

//Dans PROJET, il y a un champ NumEmp, ce qui signifie que chaque projet est affecté à un seul employé, mais un employé n’est pas lié à plusieurs projets dans ce sens. 

→ Pour gérer plusieurs employés sur un projet, on aurait une table intermédiaire : 

PARTICIPATION(NumEmp, NumProjet)

3 –oui : 

//Dans la table SERVICE, le champ Responsable (probablement une référence à NumEmp) n’est pas unique, donc un même NumEmp peut apparaître dans plusieurs lignes. 

→ Donc un même employé peut être responsable de plusieurs services.

4 – non

//Le champ Responsable est un attribut unique par service, donc un seul responsable par service est prévu. 

→ Pour gérer plusieurs responsables, il faudrait une relation : 

RESPONSABILITE(NumEmp, NomService)

 

 

 

EXERCICE III :

1)

2)

 2-1 oui

 

//L’association Enseigne (CodeProf, CodeMat) permet à un même CodeProf d’apparaître avec plusieurs CodeMat → un prof peut enseigner plusieurs matières

     2-2 non

//Le champ Libellé est un attribut de Matière, donc chaque matière à un seul libellé.

 La ligne "Libelle_matiere(libellé)" semble redondante ou confuse, à moins qu’elle soit une entité séparée (ce qui n’est pas clair ici).

      2-3 oui

//L'association Enseigne permet que plusieurs CodeProf soient liés à un même CodeMat. 

Donc plusieurs professeurs peuvent enseigner la même matière.

 

EXERCICE IV:

1. Une contrainte d'intégrité est une règle appliquée à une colonne ou à une table et qui doit être toujours vérifiée.

2. Le service 40 n’est pas créé, l’employé 456 et 123 se trouvent deux fois chacun dans la clé primaire, Tounsi est dans deux services différents.

3.a-le système de gestion des bases de données.

   b- Le SGBD est constitué de deux composantes principales : un moteur et une interface.

   c- Un SGBD a pour rôle de :

          -Permettre l’accès aux données.

          -Autoriser un accès aux informations à des multiples utilisateurs.

          -Manipuler les données présentes dans la base de données (insertion, suppression, modification, etc.)

Il permet ainsi à l'utilisateur de manipuler une ou plusieurs bases de données dans des termes abstraits, sans tenir compte de la façon dont l'ordinateur les maintient.

   d-Fonctions de définition de définition des données

       -Fonctions de manipulation des données

       -Fonctions de contrôle des données

 

EXERCICE V:

1-Incohérences :

- Pour la classe de 3M3, le nombre d’élèves diffèrent pour les élèves 28 et 30.

-le matricule Mat0055 est attribué à deux élèves différents ada et bisseck.

Redondance : lorsque plusieurs élèves font la même classe, il y a beaucoup de répétitions qui occupent inutilement la place dans les supports de stockage.

Transitivité : il n’y a pas dépendance directe entre le numéro de l’élève (clé primaire) et le nombre d’élèves par exemple.

2-Il faut éclater cette table en deux

          ELEVES (N°Elève, Nom,Prénom,Date de naissance, code_Classe)

          CLASSE (Code_Classe , Désignation,Nombre_d’eleves)

EXERCICE VI :

1-Langage de manipulation des données (LMD)

2-Système de Gestion des Bases de Données,

Access, MySQL, Oracle, SQL server, Inter base, Sybase, PostgreSQL, etc.

3-Avantages :

       -les données ne sont pas redondantes

-       Les données sont structurées

-       L’accès distant aux données par réseau ou Cloud

-       L’accès aux mêmes données par plusieurs utilisateurs simultanément

-       Contrôler l’intégrité entre plusieurs utilisateurs et la confidentialité des données

-       Assurer l’indépendance entre les données et les traitements

-       Assurer la sécurité des accès aux données

-       La possibilité d’actualiser les données

4-SELECT (Etablissement) FROM EXAMENS WHERE Décision= « ADMIS » ;

EXERCICE VII :

1-AKOA

2-SELECT (nom, prenom, classe, age) FROM candidat WHERE Nom=”FOTSO” ;

3-a) cette requête crée une table nommée client contenant les colonnes Numero, Nom, ville et Sexe.

b)Client

Numéro

Nom

Ville

Sexe

1

Eboutou Yvan

Yaoundé

homme

2

EmboloValerie

Mbalmayo

Femme

3

Fossi   Alain

Bafoussam

homme

4

Kesseng Laure

Yaounde

femme

c)

SELECT (nom, ville,sexe,) FROM candidat WHERE Nom =”Kesseng Laure ” ;

 

EXERCICE VIII:

1. Select Num_Chambre

From Chambre

Where Confort = 'TV' ;

2. Select Num_Chambre, Nbr_Pers

From Chambre ;

3. Select Sum(Nbr_Pers)

From Chambre ;

4. Select Prix/Nbr_Pers, Num_Chambre

From Chambre

Where Equ = 'TV'

5. Select Num_Chambre, Num_Client

From Réservation

Where Date_Arr = '25/12/2006'

6. Select Num_Chambre

From Chambre

Where Prix<='80' Or (Confort='bain' And Prix <='120');

7. Select Nom

From Client

 Where Nom like 'RA%';

8. Select Count(Num_Chambre)

From  Chambre

Where Prix between 85 and 120;

9. Select Nom

From Reservation R, Client C

Where Date_Dep is Null And R.Num_Client = R. Num_Client

 

EXERCICE IX:

PARTIE A :

1-INSERT INTO client

(code_client, nom_client, prenom_client, adr_client, tel_client, email_client, chiffre_affaire_année_encours, cumul_chiffre_affaire)

VALUES (1000,'NDENDE', 'Paul','BP 123 Yaoundé',

676 14 00 34, ‘ndende@gmail.com‘, 0, 0);

Remarque : il faut tenir compte de l’ordre des colonnes.

2-Compte tenu du fait que chaque colonne de la table Client, reçoit une valeur et que l'ordre de ces valeurs est le même que celui des colonnes, on aurait pu dans ce cas omettre de préciser ces colonnes. La commande devient :

Code SQL :

INSERT INTO Client

VALUES (1000,'NDENDE', 'Paul','BP 123 Yaoundé',

676 14 00 34, ‘ndende@gmail.com ‘, 0, 0);

3-INSERT INTO client (nom_client, code_client, adr_client)

VALUES ('SCB Cameroun',1020, 'BP 345 Douala');

Remarque : Les colonnes, de la table Client, qui sont absentes ne sont soumises à aucune des contraintes d'intégrité. Ces colonnes recevront une valeur NULL au moment de l'insertion de la ligne.

4-. Code SQL :

INSERT INTO client (nom_client, prenom_client, code_client)

VALUES ('Tatio','Alphonse',1040);

Remarque : Cette commande ne peut pas être exécutée à cause de la contrainte d'intégrité

NOT NULL pour la colonne Adr_client qui n'a pas été respectée ici.

5- INSERT INTO client (nom_client, adr_client)

VALUES ('Socsuba SA','BP 2367 Yaoundé’);

Remarque : Cette commande ne peut pas être exécutée à cause de la contrainte d'intégrité

PRIMARY KEY qui est violée. Les attributs constituant la clé primaire doivent obligatoirement être présents.

6- INSERT INTO client (nom_client, code_client, adr_client)

VALUES ('BICEC’, 1040, 'BP 987 Yaoundé');

Remarque : Cette commande ne peut pas être exécutée à cause de la contrainte d'intégrité d'unicité de la clé primaire qui n'a pas été respectée. Le code client 1040 à été déjà attribué.

7- UPDATE client

SET prenom_client= « Pierre-Alphonse »

WHERE code_client=1040 ;

 

PARTIE B :

1- Code SQL :

SELECT code_client, nom_client, prenom_client

FROM client ; 

2- Code SQL :

            SELECT *FROM client ;

3- SELECT code_client 'Code Client', nom_client 'Nom Client',prenom_client 'Prénom Client'

FROM client;

4- SELECT chiffre_affaire _annee_encours

FROM client;

5- SELECT DISTINCT chiffre_affaire _année_encours

FROM Client;

6- SELECT *FROM Client

WHERE cumul_chiffre_affaires

BETWEEN 500000 AND 800000;

 

EXERCICE X :

PARTIE A :

1- SELECT des_art 'Désignation Produit', PU 'Prix Unitaire', Qte_stock 'Quantité Stock', PU*Qte_stock 'Valeur Stock'

FROM Article;xemple 6marque

Remarque : La colonne résultat, relative à la valeur du stock, sera calculée à partir du prix unitaire et la quantité en stock.

2- SELECT date_comm, code_art,

FROM commande c, article a

WHERE (c.ref_art = a.code_art);

 

PARTIE B 

1-SELECT COUNT(*)

FROM article

WHERE qte_stock > 1000;

2-. SELECT SUM (qte_stock)

FROM article;

3-SELECT MIN (qte_stock) 'stock Min',

MAX (qte_stock) 'stock Max',

AVG (qte_stock) 'stock Moyen'

FROM article;

 

 

 

 

 

 

Avez-vous un exercice à proposer ? Cliquez-ici


 [H1]