Académique Documents
Professionnel Documents
Culture Documents
ChapI - Généralités Sur Les BDD
ChapI - Généralités Sur Les BDD
I-Concepts de base :
1-Définitions
• Une base de données est un ensemble structuré de données enregistrées dans un ordinateur et accessibles de
façon sélective par plusieurs utilisateurs.
• Un logiciel qui permet d'interagir avec une base de données s'appelle un système de gestion de base de
données (SGBD).
Exemples :
• SGBD bureautiques: Access, Base, Filemaker, Paradox ;
• SGBD serveurs : Oracle, DB2, SQL Server, PostgreSQL, MySQL, MariaD.
II- Aide syntaxique du langage SQL : (Bases du langage SQL et des bases de données)
Le SQL (Structured Query Language) est un langage structuré des requêtes, il est découpé en trois types de
langages : le LDD, le LMD, le LCD.
Conventions sur la notation syntaxique :
Répétition : …. Facultatif : [ ] Obligatoire : { } Alternative : |
1- Commande CREATE :
Elle permet de créer tous les objets utilisés dans les SGBD. Les objets utilisés dans les SGBD sont :
Les bases de données, les tables, les index, les vues, les procédures, les fonctions, les utilisateurs, les
groupes d’utilisateurs, les déclencheurs.
Syntaxe de création d’une base de données : Exemples :
Create Database NomBDD Create Table T_Etudiant
[emplacement de la BDD] ( Matricule varchar(8), Noms varchar(30),
Exemple : Create Database BD_IntroAuSQL ; Prenoms varchar(30), Sexe char(8),
DateNaiss Date, Age integer)
Syntaxe de création d’une table :
Create table Nomtable NB : Cette table a été créée sans contrainte d’intégrité
(Colonne1 type1,
Colonne2 type2, ….. Syntaxe de création d’un index :
……, Create [UNIQUE] index NomIndexe
Colonnen typen) On NomTable(colonne [ASC|DESC]
Les types de données peuvent être : Exemple :
INTEGER, BIGINT, REAL, Create index MatriculeIndex
NUMERIC[(précision, [longueur])], On T_Etudiant(Matricule asc) ;
CHAR(longueur), VARCHAR(longueur)
DATE, TIMESTAMP : (Ce type de données permet de NB : Les index facilitent la recherche des données
stocker des données constituées d'une date et d'une dans une base de données.
heure), BOOLEAN, MONEY, TEXT.
2- Commande ALTER :
Elle permet de modifier la structure d’une table, d’une vue, d’une procédure stockée ou d’une fonction.
Syntaxe d’ajout d’une colonne dans une table: Syntaxe de suppression d’une colonne d’une table
Alter table NomTable ADD NomColonne Type Alter table NomTable Drop column NomColonne
Page 1 sur 8
Exemples: Exemple:
Alter table T_Etudiant ADD Adresse text Alter table T_Etudiant Drop column Ville
Alter table T_Etudiant ADD Ville varchar(15)
3- Commande DROP :
Elle permet de supprimer un objet de la base de données ou la base de données elle-même.
Syntaxe :
DROP { TABLE | VIEW|DATABASE|INDEX|USER|FUNCTION|PROCEDURE|…..} NomObjet
4- Commande Truncate :
Elle permet de vider le contenu d’une table.
Syntaxe : Truncate Table Nomtable ; Exemple : Truncate Table T_Etudiant
1- La commande Select :
Elle permet de lister les données
Syntaxe : Select [ALL|DISTINCT [ON (expression)]] * | expression| Fonctions SQL
FROM expresion
[Where (condition)]
[GROUP BY expression]
[Having (condition)]
[ {UNION | INTERSECT | EXCEPT [ALL]} requête ]
[ORDER BY col1, col2, …]
Alias sur une colonne: Alias sur une table
SELECT colonne1 AS A1, colonne2 as A2, colonne3 Select T.Colonne1, T.Colonne2
FROM NomTable From NomTable T
Jointure SQL :
Les jointures en SQL permettent d’associer plusieurs tables dans une même requête.
Types de jointures
• INNER JOIN : jointure interne pour retourner les enregistrements quand la condition est vraie dans les 2
tables. C’est l'une des jointures les plus communes.
• LEFT JOIN (ou LEFT OUTER JOIN) : jointure externe pour retourner tous les enregistrements de la table de
gauche (LEFT = gauche) même si la condition n’est pas vérifiée dans l’autre table.
• RIGHT JOIN (ou RIGHT OUTER JOIN) : jointure externe pour retourner tous les enregistrements de la table
de droite (RIGHT = droite) même si la condition n’est pas vérifiée dans l’autre table.
La requête : SELECT * FROM Employes AS E LEFT JOIN Departement as D ON D.Id_dep=E.Dep; donneras ce qui
suit :
Page 3 sur 8
+----+---------+-----+---------+------------+------+--------+--------------+
| Id | Nom | Age | Salaire | Profession | Dep | Id_dep | Nom_dep |
+----+---------+-----+---------+------------+------+--------+--------------+
| 2 | Mohamed | 30 | 8000.40 | Directeur | 1 | 1 | Informatique |
| 5 | Omar | 29 | 9000.00 | Ingenieur | 1 | 1 | Informatique |
| 1 | Ismail | 25 | 6000.00 | Assistant | 2 | 2 | RH |
| 3 | Fatima | 29 | 6000.00 | Directeur | 3 | 3 | Vente |
| 4 | Dounia | 30 | 7000.00 | Assistant | 4 | 4 | Strategies |
| 7 | Mostafa | 29 | 9000.00 | Ingenieur | NULL | NULL | NULL |
+----+---------+-----+---------+------------+------+--------+--------------+
La requête SELECT * FROM Employes AS E RIGHT JOIN Departement as D ON D.Id_dep=E.Dep;
+------+---------+------+---------+------------+------+--------+--------------+
| Id | Nom | Age | Salaire | Profession | Dep | Id_dep | Nom_dep |
+------+---------+------+---------+------------+------+--------+--------------+
| 1 | Ismail | 25 | 6000.00 | Assistant | 2 | 2 | RH |
| 2 | Mohamed | 30 | 8000.40 | Directeur | 1 | 1 | Informatique |
| 3 | Fatima | 29 | 6000.00 | Directeur | 3 | 3 | Vente |
| 4 | Dounia | 30 | 7000.00 | Assistant | 4 | 4 | Strategies |
| 5 | Omar | 29 | 9000.00 | Ingenieur | 1 | 1 | Informatique |
+------+---------+------+---------+------------+------+--------+--------------+
2- Commande insert:
permet d’insérer les données dans une table
Syntaxe1 : Syntaxe2 :
Insert into NomTable(col1,col2, …,colx) Insert into NomTable(col1,col2, …,colx)
Values( val1, val2, …., valx) Select col1, col2, …., colx
From expression
[Where (condition)]
Exemples :
Insert into T_Etudiant(Matricule,Noms,Prenoms,Sexe,Age,Adresse)
Values('Etu01','OKO','Henri','Masculin',10,'10 rue Ball Bacongo');
Insert into T_Etudiant(Matricule,Noms,Prenoms,Sexe,Age,Adresse)
Values('Etu02','SAMBA','Yvette','Feminin',10,'10 rue LOBI Moungali');
Commande Update:
Elle permet de modifier les données contenues dans une ou plusieurs lignes d’une table.
Syntaxe : Update Nomtable
Set col1=exp1, col2=exp2, …., colx=expx
[Where (condition]
Update T_Etudiant set Age=18 where Matricule=’Etu01’ ;
Update T_Etudiant set Prenoms=’Yvette Francine’ where Matricule=’Etu02’ ;
Commande Delete :
Elle permet de supprimer une ou plusieurs lignes de données d’une table.
Syntaxe : Delete from NomTable [Where condition]
Exemple:
Delete from T_Etudiant; // *** Supression de toutes les lignes de la table ***///
Delete from T_Etudiant where Matricule=’Etu02’; // ** Suppression de l’étudiant dont le matricule est Etu02 */
La Commande Revoke:
La commande REVOKE permet de retirer des droits à un utilisateur ou groupe d'utilisateurs.
Page 4 sur 8
Syntaxe de Revoke :
REVOKE {{select|insert|update|delete|trigger|…}|ALL [PRIVILEGES]
ON [table] NomTable
FROM {username|Groupname|public}
Syntaxe pour la creation d’un utilisateur en MySQL: Syntaxe pour la creation d’un utilisateur en SqlServer:
CREATE USER 'NomUtilisateur'@'NomServeur' CREATE LOGIN [commisLivraison] WITH
IDENTIFIED BY 'mot_de_passe'; PASSWORD=N'Com@2023' ;
Exemples de creation d’utilisateur et d’octroi des CREATE USER [User_commisLivraison] FOR LOGIN
droits: [commisLivraison]
Code Mysql:
GRANT SELECT ON Commande TO
CREATE USER 'nkelet'@'localhost' IDENTIFIED BY [User_commisLivraison]
'456@nkelet';
GRANT ALL PRIVILEGES ON * . * TO
GRANT SELECT, DELETE, INSERT, UPDATE ON
'nkelet'@'localhost';
Commande TO user_commisAchat
REVOKE ALL PRIVILEGES ON *.* FROM
'nkelet'@'localhost';
2- Contrainte d’Intégrité :
Une contrainte d'intégrité est une règle qui définit la cohérence d'une donnée ou d'un ensemble de données de
la BD.
Les contraintes d'intégrité sont:
PRIMARY KEY : définit l'attribut comme la clé primaire
UNIQUE : interdit que deux tuples de la relation aient la même valeur pour l'attribut.
REFERENCES <nom table> (<nom colonnes>) : contrôle l'intégrité référentielle entre l'attribut et la table
et ses colonnes spécifiées
CHECK (<condition>) : contrôle la validité de la valeur de l'attribut spécifié dans la condition dans le
cadre d'une restriction de domaine
NOT NULL : contrôle le fait qu’une colonne n’accepte pas les valeurs nulles
NULL : acceptation des valeurs nulles sur une colonne
DEFAULT : définition de la valeur par défaut d’une colonne
CONSTRAINT : ajout d’une contrainte
Exemple1 :
Create Table T_Direction( CREATE TABLE T_Employe(
Page 5 sur 8
Dir_Id integer primary key, Emp_Matricule integer identity(1,1) primary key,
Dir_Libelle varchar(20) unique not null) ; Emp_Nom char(30) NOT NULL DEFAULT ' ',
Emp_Prenom char(30),
Create Table T_Service( Emp_Age integer Default 0, check (Emp_Age < 100),
Ser_Id integer primary key, Emp_Email char(50) NOT NULL, check (Emp_Email LIKE
Ser_Libelle varchar(20) unique not null, '%@%'),
Ser_Dir_ID integer) ; Emp_Ser_Id integer foreign key(Emp_Ser_Id)
references T_Service(Ser_Id)
Alter table T_Service );
Add Constraint Ck_FK foreign key(Ser_Dir_ID)
references T_Direction(Dir_Id);
Exemple2 :
Ci-dessous le code MySQL : Ci-dessous le code SQL Server :
Page 6 sur 8
1- Définition :
Une vue est une table virtuelle dont les données ne sont pas stockées dans une table de la base de données, et
dans laquelle il est possible de rassembler des informations provenant de plusieurs tables.
Techniquement les vues sont créées à l'aide d'une requête SELECT. Elles ne stockent pas les données qu'elles
contiennent mais conservent juste la requête permettant de les créer.
2- Intérêts des vue :
Une vue permet de :
Sélectionner les données à afficher ;
Restreindre l'accès aux tables concernées par la vue pour l'utilisateur, c'est-à-dire une sécurité des
données accrue ;
Regrouper les informations au sein d'une entité ;
Centralisation des règles métier ;
Gagner du temps sur l’écriture de requêtes ;
3- Création de la vue :
La création d'une vue se fait grâce à la clause CREATE VIEW suivie du nom que l'on donne à la vue, puis des noms
des colonnes dont on désire agrémenter cette vue (il faut autant de redéfinitions de colonne qu'il y en aura en
sortie), puis enfin d'une clause AS précédant la sélection.
TD N°1 de BDA :
Page 7 sur 8
Problème : Gestion d’une compagnie de transport
Une compagnie de transports en commun désire informatiser sa gestion. Les interviews des experts métiers
ont donné ce qui suit :
- La société utilise des bus. Un bus est identifié par un numéro unique, un numéro
d’immatriculation, un libellé, la date d’acquisition et le nombre des places;
- Les chauffeurs sont identifiés par un numéro unique, leurs noms et prénoms, leur téléphone et
adresse ainsi que la catégorie du permis de conduire;
- Les chauffeurs peuvent potentiellement conduire tous les bus, mais un chauffeur n’est affecté qu’à
un seul bus par jour ;
- Les différentes lignes de bus portent un numéro, la ville de départ, la ville d’arrivée ;
- Chaque jour, différents bus sont affectés aux lignes.
Travail à faire :
1- En fonction de l’énoncé ci-dessous, créer la base de données ainsi que les différentes tables de la
base de données;
2- Ajouter une contrainte à la table bus de sorte que le nombre des places des bus ne dépasse pas 70.
3- Modifier la structure de la table ligne en ajoutant le prix du voyage ;
4- Ecrire le code SQL permettant d’insérer 2 lignes d’enregistrement dans toutes les tables de la base
de données.
5- Ecrire une requête permettant d’afficher les bus par ancienneté ;
6- Ecrire une vue permettant de lister les bus acquis il y a 15 ans de cela.
7- Créer une vue permettant d’afficher les bus ainsi que les chauffeurs affectés par jour ;
8- Ecrire une fonction permettant de compter le nombre des bus affectés sur une ligne par jour ;
9- Ecrire une procédure stockée permettant d’enregistrer un chauffeur dans la base de données ;
10- Ecrire une procédure stockée permettant d’afficher tous les bus disponibles dans la base de
données.
Page 8 sur 8