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
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.
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.
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 ;
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.
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 |
-
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 |
3è |
BP 2310
Yaoundé |
0002 |
Ada |
Paul |
15 |
4è |
BP 23 Yaoundé Tel
652838129 |
0003 |
Kamga |
David |
13 |
3è |
BP 123
Yaoundé Tel 676838129 |
0004 |
Ngo |
Blandine |
12 |
6è |
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 !
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*.
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;